2021. 2. 21. 00:37ㆍ관심있는 분야
Fast R-CNN
기존의 R-CNN의 proposal 단계로 인해 굉장히 느린것을 보안하기 위하여 기존의 proposal단계와 Conv Net에 넣어서 돌리는 단계의 순서를 바꾸었다. 이것이 Fast R-CNN이다.
맨 처음 하는 ConvNet이 AlexNet에서 따지자면 convolution을 하는 자리이고 위에서 proposal된 부분을 cnn돌리는 부분이 fully connected부분이라고 할 수 있다. 따라서 계산량이 많은 부분을 딱 한번만 처리하기에 속도를 개선시킬 수 있었다.
RoI Pool
여전히 proposal method를 이용하여 bounding box를 유추하는데 이번에는 original image가 아닌 ConvNet을 돌린 결과인 Image feature로 box를 옮겨야한다.
위의 Input Image와 Image feature는 size가 다르기때문에 정확히 맞지가 않고(왼쪽) 이로인해 snap을 시켜 Image feature에 맞추어야 한다(오른쪽). 그리고 crop단계는 이를 2*2로 쪼개는것이다. 이때 Max-pool을 사용하게 된다.
이 방법으로 인해 input region이 다른 크기를 가져도 항상 crop된 결과는 같은 크기를 유지할 수 있게 된다.
RoI Align
하지만 RoI Pool의 문제는 두가지의 문제점이 있다.
1) 맞지 않는 부분을 억지로 snapping하는 것이여서 실제 proposal된 box와 정확히 일치하지 않는다.
2) proposal된 부분을 가지고 계산하는 것이 아니기에 back prop을 할수가 없다.
따라서 이를 극복하기 위해 snapping부분을 없엔 RoI Align이 나왔다. bilinear iterpolation을 이용한다.
위의 애매하게 걸친 점의 값을 주변의 값을 이용해서 구하는데 그 수식은 아래와 같다.
즉 주변 칸의 값 * x,y에 대해 떨어진 정도를 통해 계산을 하는 것이다. 위의 경우에는
로 값을 구할 수 있고 모든 점들의 값을 구하면 이것을 max-pool을 이용해 crop을 할 수 있다. 이 방식으로는 실제 proposal box의 값을 이용하여 구한 것이기 때문에 back prop을 할 수 있게 된다.
위의 결과에 따르면 Fast R-CNN이 R-CNN에 비해 월등하게 빠르다는 것을 알 수 있다. 하지만 Fast R-CNN의 문제는 Region propsal(파랑)부분이 굉장한 시간을 잡아먹는다는 것이다.
Faster R-CNN
Fast R-CNN의 region proposal이 실제 작동의 대부분의 시간을 잡아먹음으로 이부분을 보완한 것이 Faster R-CNN이다. 이는 Region proposal을 CNN 단계 이후에 실행하는 것이다. 그리고 이를 Region Proposal Network(RPN)이라고 한다.
Region Proposal Network(RPN)
RPN은 backbone CNN에서 나온 Image feature에서 수행한다.
1) 1st stage
image feature에 여러가지 고정된 크기의 anchor box를 넣은 뒤에 Convolution을 통해 Anchor box에 object가 들어있는지를 확인한다. 이렇게 여러개의 anchor box에 대하여 object가 있는지만 확인한뒤에 높은 확률의 K개의 앵커들에 대해 Bounding box regression을 진행한다.그래서 anchor box를 proposal box로 변환한다. 그리고 그 결과로 나온 여러개의 box들을 NMS로 정리한다.
2)2nd stage
이렇게 나온 proposal들을 RoI Pooling을 한뒤에 그 결과를 Fast R-CNN처럼 classification과 bounding box regression을 진행한다. 이때 Bounding box regression은 proposal box를 object box로 transform하는 것이다.
이렇게 두개의 stage를 가지고 있기에 Two-stage object detector라고 한다.
Single-Stage Object Detection
위에서는 1st stage에서는 object 확인만하고 2nd stage에서 classification을 하였는데 이를 하나의 단계로 묶어버린 것이 아래의 방법이다.
바로 anchor별로 classification을 진행하고 box transform도 진행하는 것이다.
'관심있는 분야' 카테고리의 다른 글
Object detection 3 (0) | 2021.02.21 |
---|---|
Object Detection 1 (0) | 2021.02.20 |