Proposal-based Object Detection
-
Deep Neural Network를 이용한 Object Detection
- Naive idea: 가능한 모든 상자를 Classification network를 이용해서 분류하기
- All possible boxes = region proposal
- 문제점: 수많은 box를 분류해야 한다.
- 개선: 2-stage proposal-based object detector
- Detect: 2k 개의 후보 box가 object를 포함할 것이다.
(2k 개로 Quantize)
객체를 찾기에 충분한 box이면 선택한다.
- Classify and refine: Deep Nueral Network를 이용한 box의 위치를 분류하고 세분화한다.
2-stage: Classification and Regression
-
한정된 box 집합을 이용한 근사치는 quantization error로 이어진다.
-
Location offset을 regressing 하여 위치 정확도 loss를 복구한다.
-
Non-maximum-suppression을 이용하여 불필요한 예측을 제거한다.
R-CNN: Region Based Convolutional Neural Netowrk
Per Image Computation
- 하나의 이미지 당 2K 개의 Proposals
- Box의 x, y, scale 모두 랜덤
Per Region computation
- 각 Proposal Image Window를 고정된 Network의 input 크기로 crop & warp
- Feature Representation(Vector)을 얻기 위해 고정된 크기의 Network 입력을 전달한다.
- Linear Classifier를 이용한 Object Classification
- Bounding-box regression을 이용하여 Proposal 위치를 개선한다.
시간 소요가 매우 크다.
Generalized Framework
Per Image Computation
- Pre-trained Model을 이용해서 Input Image를 Featurized Representation으로 변환한다.
- CNN에 넣기 전에 feature를 벡터화 한다.
- 각 이미지에 대해 Proposal을 계산한다.
- 각 Proposal에 대해 Featurized representation을 계산한다.
- Proposal과 Featurized Representation의 공통 영역을 뽑는다.
- 각 Proposal feature에 대해 추가적인 연산을 적용한다.
- 다양한 'head'를 적용하여 task-specific prediction을 도출한다.
- SVM이 아닌 softmaw, end-to-end
R-CNN in Generalized Framework
Image를 Crop하고 Warp 하던 과정이 Image Feature Vector를 Crop하고 Warp 하는 과정으로 바뀌어 더 간단해졌다.
R-CNN의 문제점
- Region 당 연산량이 매우 크다.
- 2000번의 Full Network Evaluations
- Computation, Feature를 sharing 할 수 없다.
- 느린 Region Proposal Method는 소요시간을 늘린다.
- 일반적인 Region proposal techniques이 모든 객체를 탐지하지 못할 수 있다. 제안된 영역이 충분히 포괄적이지 않을 수 있다.
Fast R-CNN
대표적인 Generalized Framework
Per Image Computation
- 이미지를 Fully Connected Network로 저해상도의 공간적 Feature Map으로 변환한다.
- FCN은 Pre-trained Backbone이다.
Per Region Computation
- 관심 영역 ROI Pooling은 각 영역을 고정된 차원의 출력으로 변환한다.
- 이미지 내에서 객체가 있을 가능성이 높은 다양한 크기의 여러 영역(Region of Interest, ROI)을 제안받은 후, 일정한 크기로 변환한다.
- 이를 통해 후속 네트워크(Classifier나 Box Regressor)가 입력으로 받을 수 있는 고정된 크기의 피처 맵을 생성한다.
- 이 과정은 신경망의 연산 효율성을 높이고, 고정된 차원의 입력을 요구하는 신경망 구조에 적합하도록 한다.
- 고정된 차원의 Feature map으로 변환된 각 ROI는 간단한 구조의 MLP에서 처리된다.
- Classification Head와 Box Regression Head가 작동한다.
- Softmax를 이용한 Classification
- Box Regressor를 이용한 객체 좌표 계산
Summary
Backbone(FCN)
- 표준 CNN을 backbone architecture로 사용하여 Feature로 표현한다.
- ex) AlexNet, VGG, ResNet, Inception, ResNeXt, DenseNet, ...
- Remove Global Pooling
- 전역적인 pooling을 제거하여 Output의 공간 차원이 입력의 공간 차원과 비례하도록 한다.
- 입력 이미지에서 중요한 공간적 세부사항이 특징 맵에 유지되어, 후속 처리 단계에서 객체의 위치와 경계를 보다 정밀하게 파악할 수 있게 된다.
- 좋은 Network는 가장 강력한 Recognition Backbone을 활용한다. (특징이 하다.)
- 효과적인 객체 인식 네트워크를 구축하기 위해서는 유용한 특징을 추출하는 강력한 Backbone 네트워크를 사용하는 것이 중요하다.
RoI Pool
서로 다른 크기의 RoI를 동일한 크기의 피처 맵으로 변환하여, 이후 단계의 Classifier나 Regressor가 처리할 수 있도록 한다.
- RoI 스케일링: 제안된 각 RoI를 CNN 특징 맵의 좌표로 변환해야 합니다.
- 예를 들어, 원래 이미지 크기가 H×W이고, CNN 특징 맵 크기가 H′×W′라면, RoI의 좌표도 이에 맞춰 조정된다.
- 고정된 크기로 변환: 각 RoI를 고정된 크기(예: 7×7 또는 14×14)의 그리드로 나눈다.
- 각 그리드 셀 내에서 최대 풀링(Max Pooling)을 수행하여 해당 영역의 대표 값을 선택합니다. 이를 통해 RoI의 크기와 상관없이 고정된 크기의 출력 특징 맵을 생성한다.
Fast R-CNN의 문제점
Region 당 연산량이 매우 크다.
Computation, Feature를 sharing 할 수 없다.
- 느린 Region Proposal Method는 소요시간을 늘린다.
- 일반적인 Region proposal techniques이 모든 객체를 탐지하지 못할 수 있다. 제안된 영역이 충분히 포괄적이지 않을 수 있다.
Faster R-CNN
Paper: Toward Real time Object Detection
Per Image Computation
- FCN
- Region Proposal Network: Learned Proposals
- 전체 Image network에서 계산을 공유한다.
- FCN을 거쳐 추출된 전체 이미지의 특징 맵을 사용하여, 이미지 내에서 객체가 있을 가능성이 높은 여러 후보 영역(Region of Interest, RoI)을 제안한다.
- RPN은 전체 이미지의 특징 맵을 재사용하여 RoI를 제안하므로, 별도로 이미지를 다시 처리할 필요가 없다.
Per Region Computation
- 제안된 RoI는 RoI Pooling을 통해 고정된 크기의 특징 맵으로 변환된다.
- MLP
- Softma Classificaion & Box Regressor
Summary
Region Proposal Network
- Sliding Window: 특징 맵 위에서 일정한 크기의 창으로 일정 간격으로 이동시키며 탐색한다.
- Window의 크기를 바꾸어가면서 다양한 형태로 확인 가능하다.
- 특징 맵의 각 위치에서 여러 앵커 박스를 생성하여 객체가 있을 가능성이 높은 영역을 제안한다.
- Anchor box: 객체 탐지 모델이 다양한 크기와 비율의 객체를 탐지할 수 있도록 도와주는 사전 정의된 박스(Sliding Window와 구분)
- 다양한 크기와 비율: 각 슬라이딩 윈도우 위치에서 여러 크기와 비율을 가진 앵커 박스를 생성한다. 예를 들어, 3개의 크기와 3개의 비율을 사용하여 총 9개의 앵커 박스를 생성할 수 있다. 이는 객체의 다양한 크기와 형태를 효과적으로 포괄할 수 있게 한다.
- 객체 탐지: 각 앵커 박스는 RPN에 의해 평가되어 객체가 있을 가능성을 계산한다. 필요한 경우 Bounding Box를 조정한다다. RPN은 각 앵커 박스에 대해 객체의 존재 여부와 클래스, 그리고 박스의 위치와 크기를 예측한다.
- 제안 영역 생성: 앵커 박스가 RPN에 의해 평가된 후, 높은 점수를 받은 앵커 박스들은 객체가 있을 가능성이 높은 후보 영역으로 선택된다. 이 후보 영역들은 이후 단계에서 RoI 풀링과 분류, 경계 상자 조정에 사용된다.
- Object Classifier: 0과 1로 구분한다.
- Box Regressor: dx, dy, dh, dw를 예측한다.
- Objectness score: Regression을 통하여 결과를 반환한다.