[object detection] Fast R-CNN의 구조

지난 시간에 소개한 R-CNN에 이어서 오늘은 Fast R-CNN에 대해 다루도록 하겠습니다. 이름만 봐도 R-CNN과 연관이 있고, 더 빠른 모델임을 알 수 있겠죠? 그러면 어떤 이유도 더 빨라졌는지 확인해보도록 하겠습니다. Fast R-CNN의 original 논문은 ICCV 2015에서 발표된 "Fast R-CNN"입니다. 

 

출처: Fast R-CNN의 original 논문

 

R-CNN의 경우 입력 이미지에서 selective search를 통해 물체가 존재할 가능성이 있는 약 2000개의 관심영역(region of interest, ROI)을 찾은 후에, 각 ROI를 CNN에 입력해서 특성을 도출하기 때문에 약 2000개의 CNN이 사용됩니다. 그러다보니 자연스럽게 모델이 무거울 수 밖에 없었죠. 

 

이와 달리 Fast R-CNN은 단 하나의 CNN만 사용합니다. 여기서 시간을 확 줄이게 되는 것이죠. 이미지를 CNN에 통과시킴을 통해 도출된 특성맵에서 ROI들을 찾아줍니다(이 ROI들은 입력 이미지에서 selective search를 통해 찾은 것을 특성맵에 적용한 것입니다). 그 다음에 특성맵을 각 ROI로 잘라줍니다. 그러면 특성맵이 ROI에 따라 각각 다양한 크기로 잘라집니다. 그것들을 ROI pooling을 통해 고정된 사이즈의 특성맵으로 변환해준 다음에 fully-connected(FC) 층에 각각 입력해줍니다. FC 층들을 거쳐서 얻은 특성벡터를 두 개의 자녀 출력층에 각각 입력해줍니다. 하나는 softmax를 통해 객체의 클래스를 예측하고, 또 다른 하나는 Bbox regressor를 통해 객체의 위치를 좀 더 정확하게 찾아줍니다. 이 과정이 이해가 안되시는 분들은 좀 더 자세하게 Fast R-CNN의 구조를 그려놓은 아래 그림을 참고하세요.^^ 

 

 

다음 표는 R-CNN과 Fast F-CNN의 성능을 비교해주고 있습니다. (VOC 2012 test 데이터셋) 

  

출처: Fast R-CNN의 original 논문

 

표에서 알 수 있듯이 Fast R-CNN이 R-CNN보다 좀 더 높은 정확한 물체 검출을 시행합니다. mAP는 물체 검출 알고리즘의 성능을 나타내는 지표입니다. 

 

그리고 다음 그림은 R-CNN과 Fast R-CNN의 속도를 비교해놓은 것입니다. 

 

출처: [1]

속도가 획기적으로 빨라졌음을 알 수 있습니다. 속도도 빨라졌는데 더 정확해졌으니 금상첨화죠. 하지만 사람의 욕심은 끝이 없습니다. 여전히 실시간으로 물체를 검출하기에는 느립니다. 더 빠른 모델이 필요합니다. 그래서 나온 것이 Faster R-CNN입니다. fast의 비교급인 faster를 사용해서 Fast R-CNN보다 더 빠르다는 것을 나타냈죠.

 

다음 시간에는 이 Faster R-CNN에 대해 다루도록 하겠습니다. 항상 질문과 지적은 환영합니다. 빠르게 답변해드리고 있으니 댓글 남겨주세요.^^ 

 

 

<참고자료>

[1] https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e, Rohith Gandhi, "R-CNN, Fast R-CNN, Faster R-CNN, YOLO - Object Detection Algorithms"

[2] https://nuggy875.tistory.com/33?category=860935, 제이스핀, "[Object Detection] 3. Fast R-CNN & Faster R-CNN 논문 리뷰"

댓글()