Paper URL : https://arxiv.org/pdf/1311.2524.pdf
원본 논문은 위 링크를 참고하면 된다.
깊게 논문을 읽으며 하나하나 파악하기 보다는 간단하게 다룰 예정이므로, 더 궁금한 내용이 있다면 직접 논문을 읽어보는 것을 추천한다.
🤔 들어가기 전에…
Object detection에는 1-stage detector, 2-stage detector가 있다.
2-stage detector는 Selective search, Region proposal network와 같은 알고리즘을 및 네트워크를 통해 object가 있을만한 영역을 우선 뽑고( 이 영역을 RoI 라고 함) , 각 영역을 Conv를 통해 classification, box regression(localization)을 수행한다.
1-stage detector는 2-stage와 다르게 RoI영역을 먼저 추출하지 않고 전체 image에 대해서 convolution network로 classification, box regression(localization)을 수행한다.
굳이 장단점을 애기하자면 object 하나만 담고있는 RoI에서 classification, localization을 수행하는 것보다 여러 noise 즉, 여러 object가 섞여있는 전체 image에서 이를 수행하는게 더 정확도는 떨어지지만, 간단하고 쉬운만큼 속도가 빠르다는 장점이 있다.
갑자기 이런 이야기를 꺼내는 이유는 2-stage Detector 중 대표적인 R-CNN, Fast R-CNN, Faster R-CNN중에 먼저 R-CNN계열의 시초이자 근본이 R-CNN이기 때문이다.
📝 R-CNN 요약
RCNN은 Region Proposals + CNN을 결합한 모델을 말한다.
- Region Proposals : 카테고리와 무관하게 물체의 영역을 찾는 모델
RCNN은 아래와 같은 과정을 거친다.
- 입력 이미지에서 Selective Search 알고리즘 적용하여 bounding box(bbox) 2000개 추출
- Selective Search : bbox들을 random하게 많이 생성하고 이들을 조금씩 merge해나가면서 물체를 인식해나가는 방식
- 추출된 bbox를 warp(resize)하여 CNN에 입력
- fine tuning 되어 있는 pre-trained CNN을 사용하여 특징 벡터 추출
- fine tunning : 모델 파라미터를 미세하게 조정하는 것
- pre-trained : 이미 학습된 모델
- 추출된 특징 벡터를 SVM을 이용하여 class를 분류
- bbox regression을 적용하여 bbox 위치를 조정
- bbox regression 의 목표 : predicted box 와 ground truth box와 유사하도록 학습하는 것
RCNN 논문의 핵심은 아래와 같다.
✔︎ Region Proposal(영역찾기)
RCNN에서 랜덤하게 영역을 찾는 이유는 sliding window 방식의 비효율성을 극복하기 위해 랜덤하게 다양한 비율로 모든 영역을 탐색하기 위해서다.
이렇게 색상, 질감, 다양하게 이용하여 segmentation을 수행하고, Bottom-up 방식으로 small segmented areas들을 합쳐서 더 큰 segmented areas들을 만들 수 있다.
✔︎ CNN
위에서 찾은 영역을 224x224 크기로 CNN 모델에 넣는다
✔︎ SVM
CNN모델로부터 feature가 추출되면 LinearSVM을 통해 classification을 진행한다. SVM은 CNN으로부터 추출된 각각의 feature vector들의 점수를 class별로 매기고, 객체인지 아닌지, 객체라면 어떤 객체인지 등을 판별하고 Selective search로 만든 bounding box는 정확하지 않기 때문에 물체를 정확히 감싸도록 조정해주는 bounding box regression(선형회귀 모델)을 이용하여 조정한다.
- bounding box regression: Selective search를 통해 찾은 박스 위치는 정확하지 않아서, predicted box가 ground truth box와 유사하도록 학습하는 것이 목표다.
🤔 R-CNN이 classifier로 Softmax를 쓰지 않고 SVM을 사용한 이유
VOC2007 데이터셋 기준으로 Softmax를 사용했을 때 mAP값이 54.2%에서 50.9%로 떨어졌기 때문이다.
🥲 단점
- 오래걸린다.
- 인풋 이미지마다 2000개의 bbox를 추출하여 CNN모델에 넣기 때문에 오래걸린다.
- 모델이 생각보다 복잡하다.
- CNN, SVM, BBOX Regression 총 3가지 모델을 필요로 하는 모델이다.
- back Propagation이 안된다.
- SVM, BBOX Regression 에서의 학습결과가 CNN을 업데이트 시키지 못한다.
그럼 이러한 단점에도 R-CNN논문이 왜 유명한가?
2-stage detector들의 구조에 많은 영향을 주었고, Obejct Detection에 CNN을 적용시켰다는 점에서 아주 의미가 있기 때문에 유명하다.