Object Detection에서 핵심역할을 하고 있는 부분은 RPN(Region Proposal Network)이다.
RPN은 Faster R-CNN에서 활용되었는데, Faster R-CNN의 목표는 selective search 없이 RPN을 학습하는 구조로 모델을 만드는 것이다. RPN은 feature map을 input으로, RP를 output으로 하는 네트워크라고 할 수 있고, selective search의 역할을 온전히 대체한다.
요약하자면,
RPN의 input 값은 이전 CNN 모델에서 뽑아낸 feature map이다. Region proposal을 생성하기 위해 feature map위에 nxn window를 sliding window시킨다.
(앵커 박스 : 미리 정의된 형태를 가진 경계박스 수)
: Fast R-CNN에서는 3개의 스케일과 3개의 비율을 사용하여 k=9개의 앵커를 사용하였다.
: 기본 Anchor의 크기와 위치를 조정하기 위한 값들이다.
모델을 통해 학습된다. Anchor하나에 Delta가 하나씩 대응한다. Anchor하나의 값의 구성은 (Y1,X1,Y2,X2)처럼 Bounding Box형식의 구조를 갖고, Delta하나의 값의 구성은 (deltaCenterY, deltaCenterX, deltaHeight, deltaWidth) 로 구성된다.
각 Anchor 내부에 객체가 존재할 확률이다.
RPN의 output 값은 객체가 존재할 것이라는 확률이 높고, 중복이 제거된 Bounding Box들이다.(ROI라고 함)
: 3가지의 정보를 입력
: Anchor는 Delta와 결합해서 값들을 조정해야 한다. Delta값이 Deep Network을 통해 산출된 값이므로, 이 조정 과정을 거쳐야 실제 객체의 위치를 정확하게 표현하게 된다.
: 입력으로 설정된 Anchor Box는 갯수도 너무 많고 확률이 0에 부분도 Bounding Box정보를 가지고 있다. 따라서 계산과정은 확률이 높은 객체에 대해서만 작업을 진행할 필요가 있다. 그래서 2번에서 산출된 Bounding Box들 중에서 확률이 높은 객체를 사용한다.
아래의 첫번째 이미지는 NMS를 시행하기 전, 두번째 이미지는 이를 실행한 후 결과이다.
: NMS의 결과는 메모리 상에서 구멍이 뚫린 형태가 된다.연속된 형태로 모아 주어야 다음에 이어지는 Convolution과 같은 표준화된 절차를 진행할 수 있다.
이후 이과정을 통해 ROI를 구할 수 있다.
참고 링크 :
1. https://yamalab.tistory.com/113
2. https://blog.naver.com/nostresss12/221404569501