Image processing/Object Detection

[객체 탐지] Fast-RCNN

유니디니 2020. 1. 8. 14:35
728x90
반응형


참고 자료


youtube : https://www.youtube.com/watch?v=kcPAGIgBGRs&feature=youtu.be

Github(Caffe) : https://github.com/rbgirshick/fast-rcnn 


[1] https://blog.lunit.io/2017/06/01/r-cnns-tutorial/


[2] https://m.blog.naver.com/PostView.nhn?blogId=laonple&logNo=220776743537&proxyReferer=https%3A%2F%2Fwww.google.com%2F


[3] http://openresearch.ai/t/fast-r-cnn/240




Fast R-CNN은 기존의 R-CNN 계열에서의 문제점이였던 속도를 개선하고자 하였다. 




기존의 R-CNN의 방법과 Fast R-CNN의 방법


R-CNN의 방법은 이미지 당 2,000회의 컨볼루션 신경망을 거치지만, Fast-RCNN에서는 이미지당 한 번만 컨볼루션 신경망을 실행하여 관심있는 영역(ROI)을 추출하는 것이다. R-CNN에 대한 몇가지 측면에서, 효율적인 개선으로 인해 속도가 향상되었다.



  • 속도 : Fast R-CNN에서는 학습 시간이 8.75 Hours, 테스트 시간 : 2.3 seconds
    R-CNN 84 Hours, 테스트 시간 : 49 seconds

  • 복잡도 : Fast R-CNN = ~600 * 1000 * 1 vs R-CNN = ~224*224*2000

  • 학습 방식 : Fast R-CNN에서는 컨볼루션 신경망에 의해 추출된 특징맵을 활용, R-CNN에서는 ROI를 추출하고 난 후 각각의 ROI에 대하여 컨볼루션 신경망 적용


1. Fast R-CNN



  • 입력이미지에 대하여 Proposal algorithm(Selective Search)을 적용하여, ROI에 대한 정보를 유지

  • 전체 이미지를 컨볼루션 신경망을 통해 처리하고, ROI 정보를 투영(Projection)

  • ROI Pooling 방법을 이용하여, FC-layer를 거치기 전에 크기를 일정하게 조정

  • 기존의 객체 클래스 판별을 위한 SVM+ Regressor를 Softmax + Regressor로 변경

    • 두개의 branch(객체의 클래스를 판별하는 softmax, 경계상자의 Localization)로 나누어 multi-task 학습을 진행  


2. Roi Pooling layer




이미지에서 ROI 내부의 특징들에 대하여, H X W의 고정된 범위로 작은 특징맵을 반환하며 논문에서는 (7X7)로 설정되어있다. 각각의 ROI는 (r,c,h,w)로 표현되며, (r,c)는 좌측 상단을 나타내며 (h,w)는 높이와 넓이를 의미한다. 이러한 연산은 각각의 ROI에 대하여 일정한 FC Layer를 적용하기 위함이다. 



3. 실험 결과(VOC 2007, 2010, 2012)





VOC 2007, 2010, 2012에서 mAP가 향상되었으며, 속도 또한 향상되었다. 


 

Fast R-CNN에서 Softmax와 SVM을 비교해본 결과 다소 향상되었으며, 기존의 Two stage R-CNN에서 활용된 SVM과 Fast R-CNN을 비교해본 결과 크기가 큰 물체에 대해서만 향상된 것으로 나타났다. Softmax layer로 대체하여 "one-shot" 학습에 의해 속도가 대폭 향상되었으니 훨씬 효율적이라 할 수 있다. 


 

반응형