Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
1. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
IEEE transactions on pattern analysis and machine intelligence 39.6 (2017): 1137-1149.
발표자 : 오유진
2. Related Work
Object Detection
• 입력 영상이 주어졌을 때 영상 내에
존재하는 모든 카테고리에 대해
classification과 localization을 수행
하는 것
• 여러 개의 object를 대상으로 수행
• 입력 영상에서 물체의 영역을 찾아냄
Region Proposals
Selective Search
• 처음에는 조각조각 잘라낸 것을 조금씩 merge 해서 그 boundary를
이용해 initial 한 bounding box를 뽑아냄
• 영역들의 크기, 공간 관계 등의 많은 요인들을 확인해서 merge
3. Related Work
R-CNN
• CNN 을 Object detection 에 적용한 첫 번째 연구
(1) Input image를 받아서
(2) selective search 로 2000개의 region proposal 을 추출한 다음,
(3) CNN 으로 각 proposal 의 feature 를 계산하고
(4) 각 region 의 classification 결과와 bounding box regression
을 계산 (Classifier 로는 SVM 사용)
• R-CNN 특징
‒ Regional Proposal + CNN
‒ Regional proposal 을 얻기 위해 selective search 사용
‒ CNN 을 사용한 첫 번째 object detection method
‒ 각 proposal 을 독립적으로 계산 (→ 계산이 많이 생김)
‒ Bounding box regression 으로 detection 정확도 향상
• R-CNN 의 문제점
‒ 속도가 느림
• 모든 region proposal 에 대해 전체 CNN path 를 다시 계산
‒ 학습과정이 복잡함 : 여러 단계의 training pipeline
4. Related Work
Fast R-CNN → R-CNN 의 속도를 개선한 연구
• Fast R-CNN 도 처음에 initial RoI(Regions of Interest → region proposal) 를 찾는 것은 selective search 사용
• 각 RoI 를 매번 convolution 하는 것이 아니라, 전체 image 를 한 번만 convolution 수행
• 그 결과로 나온 convolution feature map 에서 RoI 에 해당하는 영역을 추출해 pooling 해 fully connected layer 에 넣음
‒ R-CNN 에서는 다른 크기의 region 들을 모두 동일하게 만들기 위해 warping 을 통해 같은 크기의 이미지로 변환한 뒤 CNN 연산
‒ Warping 은 사이즈를 줄이고 ratio 를 변경하기 때문에 정보의 손실이 생김
‒ 따라서 특정 영역에 대해 일정한 고정된 개수의 bin 으로 영역을 나눈 뒤, 각 bin 에 대해 max pooling 또는 average pooling 을 취함으로 고정된 길이의
feature vector를 가져오는 RoI Pooling 수행
5. Related Work
Fast R-CNN
• Fast R-CNN 특징
‒ 같은 image 의 proposal 들이 convolution layer 를 공유
‒ ROI Pooling 도입
‒ 전체 network 가 End to end 로 한 번에 학습
‒ R-CNN 보다 빠르고 더 정확한 결과
• Fast R-CNN 의 문제점
‒ Region proposal 계산이 전체 성능의 bottleneck 이 됨
6. Faster R-CNN
• Region proposal network
최상위 convolutional feature map 에서 convolution filter 를 더 사용
Image 를 입력 받아 해당 영역에 물체가 존재하는지에 대한 binary classification 과 regress box location
• 기존 Fast R-CNN 속도의 bottleneck 이었던 region proposal 생성을 CNN 내부에
region proposal 을 생성할 수 있는 network 를 설계해 더 빠르고 정확한 region
proposal 생성 → region proposal network 추가
7. Faster R-CNN
3*3 conv 를 256개 더 쓰고 하나는 1*1 classify 하나는 1*1 regress bounding box
이 모델을 슬림하게 만들기 위해 classification 을 두개로 함
정해진 bounding box안에 물체가 있는지 없는지 classify 하나
Bounding box regression 을 위해 initial 한 bounding box 필요
따라서, Anchor 라는 개념 도입 – pre-defined 된 reference boxes
• 기존 Fast R-CNN 속도의 bottleneck 이었던 region proposal 생성을 CNN 내부에
region proposal 을 생성할 수 있는 network 를 설계해 더 빠르고 정확한 region
proposal 생성 → region proposal network 추가
1 x 1 conv 1 x 1 conv
3 x 3 conv
ZF : 256-d, VGG : 512-d
8. Faster R-CNN
• Anchor box
이미지의 대상을 해석하려면 proposal이 해석되어야 하고
같은 function 이 어느 위치에서나 proposal 을 예측할 수 있어야 함
이러한 조건이 논문에서 제안된 anchor box 에서 중요한 역할
K개의 anchor box 준비
가로 세로 개수, 가로 세로 비율에 따라 달라짐
→ scale (1238*123, 256*256, 512*512) 3가지, aspect rations (2:1, 1:1, 1:2) 3가지
논문에서는 k = 9 사용
각각의 anchor box 에 대해서 classification 함 object/ non-object 분류 – 2k 개의 score
각각의 k개 bounding box에 대해서 regression – 4k 개의 coordinate
9. Faster R-CNN
IoU 는 특정 데이터 집합에서 object detector 정확도 검출을
할때 사용되는 평가 지표
예측된 경계 상자와 실제 참값(ground truth) 경계 상자의
IoU를 해당 경계 상자의 ‘정확도’로 사용
이때, IoU 가 0.7 이상이면 positive, 0.3 이하면 negative
Pi* 는 안에 물체가 있으면 1 없으면 0 없으면 계산 안함
Normalization term은 별로 상관없음
• Loss Function
10. Faster R-CNN
• Training RPNs
End-to-end 로 back-propagation 사용
모든 anchor에 대해서 loss function 이 최적화 될 수는 있지만 negative sample 이 많아서 편향됨
따라서 256 개의 random 한 anchor 를 mini-batch 로 loss function 을 계산할 때 positive, negative anchor 를 1:1 비율로 조정
한 이미지에서 128 개 이하의 positive sample 이 존재하면 negative 로 mini-batch 를 채움
imageNet classification 으로 fine-tuning
11. Faster R-CNN
• Sharing Features for RPN and Fast R-CNN
Alternating training : RPN 을 학습시켜서 Fast RCNN 학습시키기 위한 proposal 로 사용하고 Fast RCNN 으로 조정된 network는 다음 RPN initialize에 사용 → 반복
Approximate join training : RPN 과 Fast R-CNN 을 한 network 로 합침
forward pass 로 만든 region proposal 값은 고정, backward propagation 은 usual, RPN loss 와 Fast RCNN loss 의 결합
→ alternate training 보다 25~50% 시간 단축
Non-approximate joint training : 본 논문의 범위를 넘어간 방법… RoI warping 방법 이용 (?)
12. Faster R-CNN
1. 이미지 넷으로 pre train 된 network VGG 등을 가져와서 학습된 conv feature map M0를 이용해 RPN 학습 → M1
2. RPN M1 network 이용해 region proposal RoI 뽑음 : P1
3. M0 기반으로 P1이용해 Fast RCNN인 Fast RCNN(오른쪽 부분) 학습 M2
4. Fast RCNN 모델 M2 를 이용해 region proposal network 학습 : M3 → M2(아래쪽 conv layer)는 fix 시키고 region proposal network 학습
5. RPN M3에서 새로운 region proposal 뽑음 : P2
6. RPN 모델 M3의 conv feature 고정시키고 P2 를 이용해 Fast RCNN 학습 M4 생성
7. M4 가 최종 결과
RPN 과 Fast RCNN 이 서로 convolution feature 를 공유한 상태에서 번갈아 가면서 학습하는 형태
13. Faster R-CNN
Region proposal 과 detection network 를 single scale 이미지들에 대해 학습하고 테스트
Multi-scale feature extraction 이 성능을 향상시키지만 속도를 떨어뜨리는 문제가 있음
Stride 는 16으로 PASCAL VOC 이미지 보다 크지만 (작게 했을 때 성능이 더 좋음) 이 정도의 큰 stride에서도 좋은 결과를 나타냄
어떤 RPN proposal 들에서는 높은 중복 현상이 나타남
중복을 줄이기 위해 non-maximum suppression(NMS) 도입 → IoU threshold 를 0.7로 고정
NMS 는 정확도에는 영향주지 않고 proposal 수만 줄임, 테스트 할 때는 다른 개수의 proposal 로 계산
• Implementation Details
14. Faster R-CNN
• Results
9가지 종류의 anchor box 를 ZF net 사용해서 실제로 bounding box 를 regressor 했을 때 average
기초가 되는 field 보다 큰 예측 값이 사용됨
Object 의 중간 부분만 사용하면 object 의 범위의 추측이 가능
- Mean average precision
Bounding box 가 많아지면 이것들을 합치는 non-maximum suppression
두개의 bounding box 에도 IoU 를 구해서 threshold 가 0.7 이상이면 정답
에 더 가까운 것으로 합침 → 차이가 별로 없기때문에 NMS 사용하는 것이
더 효과적
Regression 이 조금 더 중요
아래쪽 CNN을 share 하지않으면 떨어짐
15. Faster R-CNN
• Results
Scale, ratio 조절
왼쪽의 두개의 경우가 차이가 별로 없음
확장성을 고려해서 9개로 사용
• Conclusion
RoI pooling 을 하거나 Fast-RCNN 수행 시 7의 배수로 계산하게 되는데 7의 배수가 아닌 RoI 로 계산 시 버림을 해야 하는데 이때 오차가 발생
→ 정확도가 필요한 것에서 문제가 생김 → Mask RCNN