Introduction
cv에서의 주요 task에 대한 설명은 다음과 같다.
- Classification : Single obeject에 대해서 object의 클래스를 분류하는 문제.
- Classification + Localization : Single object에 대해서 object의 위치를 bounding box로 찾고 (Localization) + 클래스를 분류하는 문제. (Classification)
- Object Detection : Multiple objects에서 각각의 object에 대해 Classification + Localization 수행.
- Instance Segmentation : Object Detection과 유사하지만, 다른점은 object의 위치를 bounding box가 아닌 실제 edge로 찾는 것이다.
object detection은 다시 1-stage detector와 2-stage detector로 나뉜다.
1-stage detector
object가 있을 만한 영역을 RoI(Region of Interest)라고 하는데, 1-stage detector는 전체 image에 대해서 convolution network로 classification과 box regressioin(localization)을 수행한다. 특정 object만 담고있는 image에서 classification과 localization을 수행하는 것보다 확실히 정확도는 더 떨어진다. 하지만 간단하고 쉬우면서 속도가 빠르다는 장점이 있다.
2-stage detector
2-stage detection은 Selective search, Region proposal network와 같은 알고리즘 및 네트워크를 통해 RoI를 뽑아내고, 각 영역들을 convolution network를 통해 classification, box regression(localization)을 수행한다.
본 논문에서는 2-stage detection의 대표적인 R-CNN계열의 시초인 R-CNN에 대해 다룬다
Process
R-CNN은 image classification을 수행하는 CNN과 localization을 위한 regional proposal알고리즘을 연결한 모델이다.
- Image를 입력받는다.
- Selective search 알고리즘에 의해 regional proposal output 약 2000개를 추출한다. 또한 추출한 regional proposal output을 모두 동일 input size로 만들어주기 위해 wrap해준다.
- 2000개의 wrapped image를 각각 CNN 모델에 넣는다.
- 각각의 Convolution 결과에 대해 classification을 진행하여 결과를 얻는다.
위 과정을 위해 R-CNN은 세가지 모듈로 나누어져있다.
- Region Proposal : RoI를 찾는 모듈
- -> 기존의 sliding window방식의 비효율성 극복
- CNN : 각각의 영역으로부터 고정된 크기의 Feature Vector를 뽑는다.
- -> 고정된 크기의 output을 얻기위해 wrap 작업을 통해 동일한 input size를 만든다.
- SVM : Classification을 위한 선형 지도학습 모델
- -> 시기상 학습데이터가 많지 않아 softmax를 적용시키면 성능이 낮아졌음
-
1. Region Proposal
R-CNN에서는 가장 먼저 Region Proposal 단계에서 "물체가 있을 법한 영역"을 찾는다. 이는 위에서 말했듯이 기존의 Sliding window방식의 비효율성을 극복하기 위한 것이다.
R-CNN에서는 가장 먼저 Region Proposal 단계에서 "물체가 있을 법한 영역"을 찾는다. 이는 위에서 말했듯이 기존의 Sliding window방식의 비효율성을 극복하기 위한 것이다.
Sliding window 방식
Sliding window방식은 이미지에서 물체를 찾기 위해 window의 (크기, 비율)을 임의로 마구 바꿔가면서 모든 영역에 대해서 탐색하는 것이다. 모든 영역에 대해 탐색한다는 점에서 비효율성을 띈다.
Selective search
- 색상, 질감, 영역크기 등.. 을 이용해 non-object-based segmentation을 수행한다. 이 작업을 통해 좌측 제일 하단 그림과 같이 많은 small segmented areas들을 얻을 수 있다.
- Bottom-up 방식으로 small segmented areas들을 합쳐서 더 큰 segmented areas들을 만든다.
- (2)작업을 반복하여 최종적으로 2000개의 region proposal을 생성한다. Selective search알고리즘에 의해 2000개의 region proposal이 생성되면 이들을 모두 CNN에 넣기 전에 같은 사이즈로 warp시켜야한다.
2. CNN
Warp작업을 통해 region proposal 모두 224x224 크기로 되면 CNN 모델에 넣는다. 여기서 CNN은 AlexNet의 거의 구조를 그대로 가져다 썼다. 최종적으로 CNN을 거쳐 각각의 region proposal로부터 4096-dimentional feature vector를 뽑아내고, 이를 통해 고정길이의 Feature Vector를 만들어낸다.
3. SVM
CNN모델로부터 feature가 추출되면 Linear SVM을 통해 classification을 진행한다.
여기서의 SVM은 CNN으로부터 추출된 각각의 feature vector들의 점수를 class별로 매기고, 객체인지 아닌지, 객체라면 어떤 객체인지 등을 판별하는 역할을 하는 Classifier이다.
R-CNN의 단점
- Selective search로 2000개의 Region proposal을 뽑아 각 영역마다 CNN을 수행하기 때문에 2000번의 CNN연산(들)이 수행되어 매우 느리다.
- CNN, SVM, Bounding Box Regression 총 세가지의 모델이 multi-stage pipelines으로 한 번에 학습되지 않는다.
- -> 따라서 SVM, bounding box regression에서 학습한 결과가 CNN을 업데이트 시키지 못한다.
- -> 각 region proposal 에 대해 ConvNet forward pass를 실행할때 연산을 공유하지 않기에 end-to-end 로 학습할 수 없다.
'DL > Object detection' 카테고리의 다른 글
FPN (Feature Pyramid Networks for Object Detection) (0) | 2024.01.17 |
---|---|
YOLO v2 (1) | 2024.01.15 |
YOLO v1 (1) | 2024.01.05 |
Faster R-CNN (1) | 2024.01.05 |
Fast R-CNN (0) | 2024.01.05 |