Fast/Faster RCNN 한눈에 비교
이 글을 읽기 전에,2021.04.25 - [Computer Vision/Object Detection] - RCNN(Regions with CNN)을 읽어오시면 더 쉽게 이해할 수 있습니다 ㅎㅎ
2-stage object detection 모델의 시초가 되는 RCNN의 문제점을 나열하자면 다음과 같습니다.
- CNN, Bounding Box Regression, SVM세가지 모델을 end-to-end로 학습시키지 않고 따로따로 학습을 진행하므로 SVM과 Regression의 결과가 CNN의 학습에 반영되지 않습니다.
- Region proposal로 추출된 약 2000개의 영역에 대해서 각각 CNN을 통과시켜야 하므로 매우 긴 연산시간을 요구합니다.
- Selective search를 CPU로 연산하여 계산 효율이 매우 떨어집니다.
이 모든 문제를 해결한 모델이 Faster RCNN이고 그 중간 단계가 Fast RCNN이라고 할 수 있습니다.
RCNN, Fast RCNN, Faster RCNN의 방식은 아래와 같습니다.
RCNN
입력 이미지에 대해 selective search를 진행하여 약 2000개의 물체가가 있을 만한 후보 영역을 찾습니다. 그리고 찾은 영역을 Crop하고 일정한 사이즈로 리사이즈하여 CNN에 입력합니다. 이렇게 CNN으로 부터 추출된 특징들을 모두 저장합니다. 최종적으로 저장된 특징들을 가지고 Regression과 Classification with SVM을 진행합니다.
Fast RCNN
위에서 언급한 1, 2번의 문제점을 해결하기 위해, 입력 이미지에 바로 CNN에 입력하는 방법을 취합니다. 추출된 특징 맵에 Selective search를 통해 선택된 지역을 Projection합니다. 그 후 ROI pooling을 통해 일정한 사이즈의 특징으로 연산해서 Fully connected layer를 통과시킵니다. 통과한 feature들을 Regression과 Softmax하여 물체 검출을 진행합니다.
RCNN과 달리 Bounding Box Regression과 Classification을 출력결과를 CNN과 함께 end-to-end로 학습이 가능해졌습니다. 이는 연산속도와 성능면에서 모두 좋게 작용하였습니다.
Faster RCNN
위에 언급한 3번 문제점인 Selective search를 GPU에서 연산을 하게끔하면 더 빠른 속도로 연산할 수 있다는 아이디에서 출발하였습니다. CNN로부터 추출된 특징을 Region Proposal Network라고하는 모델이 물체가 있을 만한 지역을 예측합니다. 나머지 방법은 Fast RCNN과 동일합니다.
모든 프로세스를 GPU상에서 End-to-End로 학습하여 성능과 속도면에서 모두 좋아졌습니다.
구체적 방법 (예를 들어 anchor box)에 대해서는 추후에 자세히 다루도록 하겠습니다. 여기서는 전체적인 흐름을 파악하면 좋을 거 같습니다!!