Object Detection 정리
요약
-
Object Detection에 사용되는 Architecture들을 살펴보며 어떤식으로 객체를 검출하는지에 대해서 다룰 예정
-
가장 많이 사용하는 검출 방법으로는 One-Stage & Two-Stage 방식이 존재함.
-
One-Stage는 속도면에서 높은 성능을 얻을 수 있으며 Two-Stage경우에는 속도보다는 정확성면에 높은 비중을 두고 학습을 함.
Two-Stage Detectors
- Two-stage detectors는 2개의 구역으로 나눌 수 있다.
- Proposal generation 구역 생성
- making predictions for these proposals 해당 구역을 통한 예측
R-CNN
-
R-CNN은 two-stage object detection의 기반을 다진 구조이다.
-
과거의 object detection 방식(SegDPM)의 경우 Pascal VOC2010에서 40.4% mAP(mean Average Precision)을 얻은 반면 R-CNN의 경우에는 53.7% mAP를 획득하였다.
-
R-CNN은 다음과 같이 나눠진다.
- Proposal generation 제안 생성
- Feature extraction 특징 추출
- Region Classification 구역 분류
- Proposal generation
- Class는 신경쓰지 않고 이미지에서 region을 추출하는 작업.
- 해당 R-CNN에서는 SS(Selective Search)방법을 사용하여 해결.
- SS는 비슷한 질감이나 색,감도를 가진 인접한 픽셀들을 연결하여 Bounding Box를 생성
- 이를 통해 나온 Bounding Box를 1개씩 CNN에 입력.
- Feature extraction
- 1단계를 통해 proposal 된 region을 CNN의 input값으로 넣어 feature extract를 진행.
- R-CNN에서는 AlexNet, VggNet등을 모델로 사용함.
- Region Classification
- 2단계를 통해 도출된 Feature map을 사용하여 객체여부 판별 및 객체 분류를 한다.
- R-CNN에서는 SVM (Support Vector Machine)을 활용하여 객체 분류를 함.
- 정리
- 결과론적으로 기존에 존재한 Object detection들 보다 높은 성능을 이끌어 내었다.
- 하지만 속도면에 있어서 너무 느린 점이 존재. ( Region proposal을 통해서 2000개의 region을 생성한다면 총 CNN을 2000번 학습시켜야함. )
Fast R-CNN
-
기존의 R-CNN의 느린 속도를 보완하고자 등장
-
기존에는 Region Proposal이 CNN 이전에 시행되어 총 2000번의 Image를 CNN 작업을 따로 했지만, Fast R-CNN은 Region Proposal 작업을 CNN에서 처리함으로써 연산량을 급격히 줄임.
-
Region을 생성한 후 모든 다른 크기의 Region을 Classfication을 하기 위해서는 각 Region의 이미지크기를 통일시켜야함. 이 부분을 R-CNN의 경우에는 warp을 활용하여 해결했지만 Fast R-CNN은 Spatial Pyramid Pooling을 사용함.
-
Fast R-CNN은 SPP layer의 single level pyramid만 사용하여 이를 ROI pooling layer이라함.
-
R-CNN에서는 softmax classifier 와 linear bounding box regressor을 따로 학습.
-
Fast R-CNN은 두 함수의 loss를 더한 multi-task loss기반으로 두가지를 동시에 학습.
Faster R-CNN
-
Feature Extract Network의 마지막에 Region을 잡아주는 network ( Region Proposal Network)를 추가하여 Bounding Box를 추출
-
Anchor Box개념 도입 ( But K-means 알고리즘을 사용하지는 않았음. (2:1 , 1:1 , 1:2 비율 총 9개의 Anchor Box사용 ) )
-
RPN에서는 Non-object / Object & Bounding Box proposal 두가지 작업을 진행
-
RPN을 통해서 추출된 BB는 object score에 영향을 받아서 추출됨. Non-object일 경우에는 Bounding box = X
-
RPN을 통해 추출된 ROI를 가지고 최종적으로 ROI pooling을 통해서 정보 추출
-
최종적으로 추출된 BB의 정보를 통해 Classification과 BB를 도출해냄
-
다음과 같이 모델이 진행되므로 모든 부분이 back propagation이 가능하며 하나의 모델로 통일되었기에 속도 또한 매우 높아짐