Region Proposal을 이용하는 객체 인식 알고리즘인 R-CNN 계열의 모델들을 정리해보겠습니다.
R-CNN은 Selective Search를 통해 Region Proposal
을 진행합니다.
그 결과로 나온 영역들 2000개를 각각 CNN 모델의 입력으로 사용합니다.
그 후 마지막에는 Softmax가 아닌 SVM classifer를 사용하여 classification을 합니다.
즉, 2000개의 Region Proposal들이 각각의 사이즈를 갖고 있으므로, 모델의 입력으로 사용하기 전에 Crop이나 Warp을 적용하여 동일한 사이즈로 만들어주어야 합니다.
기존 R-CNN의 문제점을 개선하기 위해서, Region Proposal을 입력으로 넣는 것이 아니라, 이미지 자체를 모델의 입력으로 사용하고,Region Proposal은 따로 진행하여 모델의 아웃풋으로 나온 Feature Map에 적용
이 방법의 문제점은 각자 다른 크기의 이미지들을 1차원으로 Flatten을 할 수 없다는 것입니다.
따라서 SPP Layer
라는 것을 Flatten 전에 적용합니다.
Fast R-CNN은 SPP layer를 ROI pooling Layer로 바꾼 것입니다.
또한, SVM을 Softmax로 바꾸었습니다.
Faster R-CNN은 Selective Search를 RPN으로 바꾸어 딥러닝 모델 내부에서 Region Proposal을 할 수 있게 만든 것입니다. 따라서, GPU 사용으로 빠른 학습/Inference 가 가능해졌습니다.
Selective Search를 대체를 위한 Region Proposal Network를 구현하기 하려면 anchor box라는 것이 필요합니다.
anchor box는 Object가 있는지 없는지의 후보 Box입니다.
Anchor box의 구성은 3개의 다른 크기 3개의 다른 ratio로 총 9개로 구성되어 있습니다.
Ground Truth와 IOU가 가장 높은 Anchor는 Positive
로 분류하고, IOU가 0.7이상이면 Positivie
로 분류, 0.3보다 낮으면 Negative
로 분류합니다.
0.3~0.7의 IOU는 아예 사용하지 않습니다. (애매하기 때문에??)