[논문 리뷰] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

PROLCY·2024년 3월 20일
0

인공지능

목록 보기
23/37

오늘은 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks에 대한 간단한 리뷰이다.

Faster R-CNN

Faster R-CNN은 두 가지 모듈로 구성되어 있는데, 첫 번째는 region을 propose하는 cnn 모델이고, 두 번째는 Fast R-CNN detector이다.
참고로 논문에 attention이 언급되어있다!

Region Proposal Networks


RPN은 이미지를 입력으로 받아서, objectness score와 함께 여러 개의 object proposal을 아웃풋으로 낸다. region proposal을 생성하기 위해, feature map 위를 슬라이드하며 feature를 뽑아내고, 이 feature가 두 개의 fc layer에 들어가 bounding box regression과 classification을 수행한다.
또한 슬라이딩을 할 때마다, 여러 개의 region proposal을 예측한다. 이것을 anchor라고 하며, 3개의 크기와 3개의 비율을 적용해 총 9개의 anchor를 사용하여 RPN을 구성하였다.

이러한 접근은 translation invariant한 특성을 가지고 있고, multi-scale anchors를 사용하면서 파라미터 소모가 많지 않은 장점을 가진다.

Loss Function


Fast R-CNN과 똑같은 loss를 사용한다.

Training RPNs

RPN을 학습하는데, 한 이미지에 대해서 256개의 sample anchor를 뽑고, 그것을 통해 loss를 계산한다. 이때 positive와 negative anchor의 비율은 1대1로 맞춘다.

Sharing Features for RPN and Fast R-CNN

각각 학습된 RPN과 Fast R-CNN이 feature를 공유하기 위해, 세 가지 방법을 소개한다.
1. RPN을 먼저 학습하고, proposals을 Fast R-CNN을 학습하는데 사용하기(논문에서는 이걸 사용)
2. 결합해서 한꺼번에 학습하기(구현하기 쉽지만, 학습 시간이 오래 걸림)
3. RPN에서 나온 bouding box를 Fast R-CNN의 ROI Pooling layer의 input으로 넣기(backprop을 하기 위해서는 differentiable 해야하는데 쉽지 않음)

그래서 1번을 사용한다.
4-step Alternating Training을 사용하여 학습했다고 한다.
1. RPN 학습
2. RPN에서 나온 proposal로 Fast R-CNN 학습시키기.
3. Fast R-CNN으로 RPN 학습 initialize, 이때 공유되는 layer는 얼림
4. Fast R-CNN에만 있는 layer 학습

Implementation Details


anchor로는 128x128, 256x256, 512x512의 크기와 1:1, 1:2, 2:1 비율 총 9가지의 박스를 사용하였다. 추론 결과는 위와 같다.
또한 이미지 경계를 ㄴ머어서는 박스는 제거하였고, 20000개의 anchor를 6000개로 줄였다. 또한 심하게 겹치는 이미지에 대해서는 non-maximum suppression(NMS)를 적용하여 2000개로 또다시 줄였고, 정확도는 그대로이면서 속도는 더 빨라지도록 하였다.

Experiments



표를 보면 알 수 있듯이, 좋은 성능을 보여주고 있고 속도 또한 빠르다.
다른 성능표도 많은데, 생략하였다.

후기

오늘은 R-CNN 시리즈 세 번째인 Faster R-CNN을 살펴보았다. RPN을 Fast R-CNN과 결합하여 정확도와 속도를 증가시킨 것이 특징인 모델이었다. 이걸 구현하는 과제를 한 적이 있는데, 쉽지 않았었다. 논문을 읽고 나니 어느 정도 이해가 되는 것 같다. 성능표가 많아서 비교하는 맛이 있었고, Fast R-CNN 논문과 다르게 실제 추론 사진도 많이 있었다. 다음은 내가 구도 가이드 모델을 구현할 때도 사용했던 Spatial Pyramid Pooling을 사용한 SPPNet이 될 것 같은데, 기대가 된다.

0개의 댓글