카테고리 없음

2. 2 Stage Detectors

끵뀐꿩긘 2022. 11. 15. 05:22

- R-CNN

딥러닝을 적용한 최초의 2 stage detector이자 Object Detection 모델

1. selective search 알고리즘(또는 sliding window)을 통해 객체가 있을 법한 위치인 후보 영역(region proposal)을 2000개 추출하여, 각각을 227*227 크기로 warp 시켜준다

2. warp( FC layer의 입력 사이즈가 고정이므로 강제 resize --> ) 된 모든 region proposal을 Fine tune 된 AlexNet에 입력하여 2000*4096 크기의 feature vector를 추출한다

3. 추출된 feature vector를 binary linear SVM과 Bounding Box regressor에 입력하여 각각 class + 배경 예측값, confidence score와 조정된 bounding box 좌표(중심점 x,y 좌표, 너비, 높이)를 얻는다

4. Non Maximum Suppression 알고리즘을 적용하여 최소한의 최적의 bounding box를 출력한다.

 

* Non Maximum Suppression:

1. bounding box별로 지정한 confidence score threhold 이하의 box를 제거합니다. 

2. 남은 bounding box를 confidence score에 따라 내침차순으로 정렬합니다. 그 다음 confidence score가 높은 순의 bounding box부터 다른 box와의 IoU 값을 조사하여 IoU threshold 이상인 box를 모두 제거합니다. 

3. 남아있는 box만 선택

 

단점:

2000개의 region이 각각 CNN 통과 -> 학습 시간이 매우 느림

강제 warping -> 성능 하락 가능성

CNN, SVM classifier, bounding box regressor 따로 학습 -> 각각이 독립적으로 학습되어 가중치 공유가 안된다

not END-to-END

 

- fast R-CNN

 - ROI projection / pooling

원본 이미지를 CNN 모델에 통과시켜 feature map을 얻고, selective search를 활용하여 region proposals를 얻는다.

ROI Projection을 통해 feature map에서 각 region proposals에 해당한 영역을 추출한다.

ex. 원본 이미지 (400,400), region proposals (300,300)

-> feature map(40,40), ROI Projection (30,30)

region proposal에 상관없이 고정된 사이즈의 feature map을 얻기 위해서 적절한 크기의 grid로 나누어 max pooling을 수행한다 => ROI pooling

- multi-task loss

multi-task loss를 사용하여  classifier(CE loss)와 Bounding Box Regressor(Smooth L1 loss)를 동시에 학습시킨다. => 각 모델을 독립적으로 학습시킬 필요 없이, Backpropagation을 통해 두 모델이 한번에 학습된다.

- Hierarchical sampling

한 배치에 하나의 이미지에서 추출한 region proposals(ROI)만으로 배치를 구성하기 때문에, forward, backward propagation시에 연산과 메모리를 공유할 수 있다.

(실제로는 2장의 이미지에서 각각 64개의 ROI를 뽑음)

 

단점:

완전한 END-to-END가 아니다. (selective search가 cpu에서 돌아가기 떄문)

 

- faster R-CNN

  - anchor box

selective box를 사용하지 않는 대신, 원본 이미지를 일정 간격의 grid로 나눠 각 grid cell을 bounding box로 간주한다

고정된 크기의 bounding box로는 다양한 크기의 객체를 포착하지 못한다는 문제를 해결하기 위해 사전에 정의한 다양한 크기와 비율의 anchor box를 생성한다.

 - RPN(Region Proposal Network)

2k개 정도의 region proposal을 생성하는 selective box에 비해, anchor box를 생성하는 방식은 굉장히 많은 region proposal을 생성한다.

 

전체 anchor box 중에서 1) ground truth box와 가장 큰 IoU 값을 가지는 경우 2) ground truth box와의 IoU 값이 0.7 이상인 경우에 해당하는 box를 positive sample로 선정한다.

반면 ground truth box와의 IoU 값이 0.3 이하인 경우에는 negative sample로 선정한다..

 IoU 값이 0.3~0.7인 anchor box는 무시하여 RPN을 학습시킨다.

 

RPN은 class score를 계산하여 수 많은 region proposal 중 top N개의 후보군을 선정한다.

 

cls prediction: 9개의 anchor box type * 객체가 있다 없다(2) = 9*2

box prediction: 9개의 anchor box type * 박스 미세조정을 위한 좌표 (4) = 9*4

 

 

- NMS

유사한 RPN proposals를 제거하기 위해서 GT와 가장 많이 겹치는 anchor box를 positive로 구분하고, 그와 0.7이상 겹치면 제거한다.

 

RPN과 NMS 과정을 거쳐서 선정된 region proposal을 fast RCNN에 넣어 학습시킨다.

 

결과적으로, 이전 모델들보다 정확하고 속도면에서 월등한 END-to-END 모델을 학습시키는 것이 가능해졌다.