Image processing/Object Detection

[객체 탐지] Two-stage Detection

유니디니 2020. 3. 9. 19:12
728x90
반응형

참고 자료 : [1] Deep Learning for Generic Object Detection : A survey, https://arxiv.org/pdf/1809.02165.pdf




1. Region based (Two-stage) Frameworks




R-CNN : Girshick et al은 일반 객체 탐지를 위하 CNN을 처음으로 도입하여 RCNN을 개발하였고, AlexNet에서 Region Proposal Selective  Search와 통합되었다. 영역 제안 계산, CNN 모델 파인튜닝, SVM 분류기를 이용한 객체 클래스 분류, 클래스 특정 bbox 회귀 학습의 과정을 거친다. 


1. Region Proposal Computation : 객체를 포함 할 수 있는 후보 영역 제안 방법은 Selective Search를 통해 얻어진다. 


2. CNN Model fine-tuning : Region Proposals, 영상으로부터 영역을 추출하고 같은 크기로 조정하여 ImageNet 대량 데이터 셋을 통해 사전학습된 모델에 재학습을 수행한다. 이 단계에서는 모든 영역들은 IoU 0.5이상의 값을 가지며, GT box와 overlap되는 영역은 Positive로 정의되고, 나머지는 Negative로 분류된다.


3. 클래스 별 SVM 분류기 학습 : 클래스별 선형 SVM 분류기 셋은 CNN에 의해서 추출된 같은 크기의 이미지 features으로 학습되며, Fine-Tuning을 통해 얻은 Soft-Max 분류기를 대체합니다. SVM 분류기를 학습하기 위해, Positive 예시들은 각 클래스에 대한 GT box에 의해 분류됩니다. IoU 0.3미만의 영역 제안들은 각 클래스의 GT에 대하여 Negative로 분류되며, SVM 분류기를 학습시키기 위한 Positives와 Negatives는 CNN을 fine-tuning하기 위한 것과는 다르다.


4. 클래스 특정 bbox 회귀 학습 : bbox 회귀는 각 객체 클래스에 대한 CNN feature로 학습되어 진다. 


당시 높은 정확도에도 불구하고, R-CNN은 다양한 단점들을 가지고 있다.


1. 학습은 Multi-stage pipeline 방법으로 각 단계마다, 개별적으로 학습해야 하므로 느리고 최적화하기 어렵다.

2. SVM 분류기 및 bbox 회귀 학습의 경우 디스크 공간과 시간이 많이 소요된다. 각 이미지의 feature들에 대하여 CNN을 적용해야 하기 때문에 계산 비용이 많이든다. 

3. CNN feature들은 공유 계산 없이 테스트 이미지에서 각 객체별로 추출되므로, 테스트 시 속도가 느립니다. 향후 SPPNet, Fast R-CNN, Faster R-CNN 등과 같은 여러가지 향상된 탐지 프레임워크로 이어집니다. 


SPPNet : R-CNN에서 테스팅시, 영상으로부터 RPN을 거치며 생성된 임의의 크기의 feature들을 동일한 크기로 조절(Warp) 함으로써 계산비용이 많이 드는 bottleneck 구간으로 여겨져 왔다. 이에, He et al은 Fully-Connected Layer로 인해 입력으로 고정된 크기의 feature을 요구하는 문제를 해결하고자 Spatial Pyramid Pooling 방법이 CNN의 마지막 층에 포함시켰다. 


"입력 이미지의 크기에 관계 없이 Conv-Layer를 통과시키고, Fully connected 계층에 입력으로 들어가기전에 동일한 크기로 만들어 주자"



R-CNN에 비해서 훨씬 빠르지만, 여전히 학습과정에서 3단계 파이프 라인을 거치기 때문에 한계가 생긴다. (Fine-tuning, SVM Training, bbox Regression) 또한, fine-tuning시에 SPP를 거치기 이전의 Conv 레이어들은 학습 시키지 못한다. 단지 그 뒤에 Fully-Connected layer를 학습시킬 뿐이다.


Fast R-CNN : Girshick는 R-CNN과 SPPnet의 단점을 해결하면서, 탐지 속도와 성능을 향상시키는 방법을 제안하였다.

 


Fast R-CNN은 Region Proposal(Selective Search) 과정과 Conv layer를 병렬적으로 수행한다는 아이디어를 가지고 있다. 또한, 마지막 Conv Layer과 첫번째 FC layer 사이에 고정된 길이의 특징으로 추출하기 위해 RoI Pooling 방법을 적용하였다. R-CNN과 SPPnet과 비교하여, 학습에 3배 정도 빠르고, 테스트시에는 10배정도 빠르다. 요약하자면, 더 높은 탐지율과 single-stage 학습과정에 의해 feature-caching에 필요한 storage가 없다는 점이다. 


Faster R-CNN : Fast R-CNN은 탐지 속도를 높였지만, Region-Proposal 단계에서 여전히 bottle-neck 구간으로 여겨져 왔습니다.



이에, Selective Search의 과정을 Convolution layer로 대체하여 해결하고자 한다. Faster-RCNN에서, RPN과 Fast-RCNN의 많은 컨볼루션 과정을 공유시킵니다. 마지막 공유된 Convolution Layer를 거친 feature들은 별도의 branch에서 객체 클래스 분류와 영역 제안에 사용됩니다. 요약하자면, Selective Search 와 같은 영역 제안 방법을 CNN기반의 탐지기로 대체하였으며, FC Layer를 Convolution Layer로 대체하여 속도를 높이고, 충분히 기하학적 정보를 바탕으로 높은 객체 탐지율을 달성할 수 있음을 발견하였다.


R-FCN(Region-based Fully Convolutional Network) : 각 영역당 Sub-Network를 수백번 적용하는 Fast/Faster R-CNN과 같은 이전의 영역 기반 검출기와 달리, R-FCN의 방법에서는 전체 이미지에 대해 공유되는 Fully-Convolutional 입니다.



이에, 이미지 분류에서의 이동 불변함(Translation-Invariance)과 객체 탐지에서의 이동-변환(Translation-variance) 사이의 딜레마를 해결하기 위해 Position-Sensitive Score maps를 제안하였다.



여기서 Position의 의미는 RoI box를 기준으로 Top Left, Top-Center, Top-Right .. 등으로 나누어지는 영역을 말한다. 즉, Score Maps의 각 채널들은 Average Pooling을 통해 처리되어, position에 대한 해당 클래스 Confidence 정보로 변환된다. 이후, 얻어진 C+1개의 Class별 정보는 SoftMax를 통해 각 클래스 별 Confidence 정보로 변환되며 손실함수에 의해 최종적으로 학습된다. 



요약하자면, FCN layer를 통해 나온 결과로 특수화된 Convolution Layer를 활용하여 Position-Sensitive Score Maps을 구성하였으며, 일반적인 RoI Pooling layer와 달리 Position Sensitive RoI Pooling layer를 활용하여 각 Position에 실제 클래스가 존재하는지, 어떤 클래스인지 판단하였다.


Mask R-CNN : 효율성, 유연성을 고려하여 R-CNN을 확장하여 픽셀-단위 객체 인스턴스 분할을 처리하기 위해 Mask-RCNN의 방법을 제안하였다.



Mask R-CNN은 클래스와 bbox offset을 동시에 예측할수 있는 branch를 더했고, binary mask를 출력하는 branch를 더했다. 기존의 RoI Pooling layer에서 문제가 되었던, mis-alignments를 피하고 픽셀 수준의 공간적 정보를 유지하기 위해 RoI-Align 계층을 적용하였다. 학습이 비교적 단순하고, Faster RCNN에 작은 오버헤드만 추가하여 5-Fps에서 실행된다. 백본 네트워크로 Resnext 101-FPN을 통해 COCO 객체 인스턴스 단위 Segmentation에서 높은 정확도를 달성하였다.

반응형