1. Faster R-CNN :
Towards Real-Time Object
Detection with Region Proposal
Networks
NIPS 2015
Microsoft Research
2018.03.26
신호해석특론
김정훈 jhkim@dilab.co.kr
4. Naïve Approach
Sliding window approach
모든 크기의 영역(different scale & ratio)에 대해
sliding window 방식으로 이미지를 모두 탐색하면서
classification을 수행
비효율적
신호해석특론 4
5. Region Proposals
Region proposal algorithm
물체가 있을 법한 영역을 찾아내는 알고리즘
Search space를 줄임
SlidingWindow, SelectiveSearch, EdgeBoxes, ..
신호해석특론 5
6. Selective Search
Goal
영상은 계층적 구조를 가지므로 적절한 알고리즘을 사용하여
크기에 상관없이 대상을 찾아낸다.
컬러, 무늬, 질감, 명암 등 다양한 기준에 따라 segmentation
신호해석특론 6
8. Selective Search
Greedy algorithm
여러 영역으로부터 가장 비슷한 영역을 고르고,
이것들을 좀 더 큰 영역으로 통합을 하며,
1개의 영역이 남을 때까지 반복한다.
초기의 작은 영역들이 유사도에 따라 점점 통합이 되는 것을 확
인할 수 있다.
신호해석특론 8
9. Selective Search
Region of Interest (ROI)
통합된 영역들을 바탕으로 후보 영역들을 만들어 낸다.
이 과정을 통합적으로 보여주는 과정은 아래와 같다.
신호해석특론 9
11. R-CNN
문제점
Localization 성능이 취약
CNN이 positional invariance한 특성을 가지고 있음
Region proposal 내에서 물체가 중앙이 아닌 다른 곳에
위치하고 있어도 CNN이 높은 classification score을 예
측하기 때문
신호해석특론 11
12. R-CNN
해결 : bounding-box regression
위치 보정
region proposal P, 정답 위치 G
P를 G로 mapping할 수 있는 변환을 학습
Kind of a refinement step.
신호해석특론 12
15. R-CNN
문제점
Test 속도가 느림
모든 region proposal에 대해 CNN을 계산
GPU(K40)에서 13s / image
SVM과 bounding box regressor의 학습이 분리
CNN학습 과정 후, SVM과 bounding box regressor의 학습이
나중에 진행됨(post-hoc)
학습 과정이 복잡함
다단계 training pipeline
GPU(K40)에서 84시간 (VOC2007, 5000 images)
신호해석특론 15
16. Fast R-CNN
특징: 속도개선
같은 image의 proposal들이 convolution layer를 공유
ROI Pooling 도입
전체 network가 End-to-end로 한번에 학습
~160x faster than R-CNN
신호해석특론 16
17. Fast R-CNN
R-CNN과 feature 추출방법 비교
R-CNN은 각각의 region마다 crop하여 cnn연산
Fast R-CNN은 cropping을 image level이 아닌
feature map level에서 수행
CNN연산 2,000번 ~> 1번
신호해석특론 17
18. Fast R-CNN
ROI pooling
Selective Search통해 찾은 ROI영역
전체 image를 convolution해 나온 feature map에서
ROI영역만 pooling하여 fc layer에 넣는다.
신호해석특론 18
20. Fast R-CNN
문제점
Region proposal 계산이 NN밖에서 일어난다.
Region proposal(Selective Search)이
전체 성능의 bottleneck이 된다.
SS가 느린 이유 중 하나는 GPU가 아니라
CPU로 계산하기 때문.
=>GPU연산을 사용하자(Faster R-CNN)
신호해석특론 20
21. Faster R-CNN
RPN: Region Proposal Network
Fast R-CNN에서 Bottleneck이었던
region proposal 생성을 CNN내부에 설계.
신호해석특론 21
22. Faster R-CNN
Region Proposals from Feature Map
Classification 또는 detection을 수행하는 CNN이 가진 feature
map이 대략적인 물체의 위치정보를 가지고 있다면, 이를 잘 학습
하면 물체의 대략적인 위치를 잡아낼 수 있을것.
feature map activation 시각화
신호해석특론 22
23. Faster R-CNN
RPN: Region Proposal Network
feature map 정보를 활용해 물체가 존재하는 위치를 출력으로 가
지는 네트워크인 region proposal network(RPN)를 학습해보자는
아이디어
입력: N x N 크기의 작은 window영역
출력: binary classification
Bounding-box regression또한 사용
신호해석특론 23
24. Faster R-CNN
RPN: Region Proposal Network
하지만, object들의 크기와 비율은 다양.
미리 정의된 여러 크기와 비율의 reference box k
물체/배경 x, y, w, h
신호해석특론 24
25. Faster R-CNN
Anchor 개수
feacher map의 크기가 W x H일때
총 W x H x K 개의 anchor를 가진다.
논문에서는 3가지 크기(128, 256, 512), 3가지 비율(2:1, 1:1, 1:2)
K = 9
신호해석특론 25
26. Faster R-CNN
Alternating Optimization
RPN과 Fast R-CNN이 서로 convolution feature를
공유한 상태에서 번갈아 가며 학습을 진행하는 형태
복잡한 학습 과정
논문 마감일 때문
신호해석특론 26
27. Faster R-CNN
Joint Optimization
RPN의 loss function과 Fast R-CNN의 loss function을 합쳐
multi-task loss로 둔 뒤 한번에 학습.
동일하거나 높은 성능이 나올 수 있음을 실험적으로 증명
신호해석특론 27
30. Faster R-CNN
Performance
R-CNN, Fast R-CNN, Faster R-CNN의 성능 비교
object detection system to run at
near real-time frame rates
신호해석특론 30
31. SUMMARY
R-CNN
Region proposal과 Classification CNN을 결합하여 높은 성능의
Object detection을 수행
Fast R-CNN
ROI Pooling을 사용해 연산을 줄이고 속도를 올림
신호해석특론 31
32. SUMMARY
Faster R-CNN
Region proposal 알고리즘으로 생기는 bottleneck을 개선
Conv feature map으로부터 region proposal을 직접 생성할 수
있는 RPN(region proposal network)를 제안
신호해석특론 32
33. Furthermore
YOLO(You Only Look Once)
https://youtu.be/VOC3huqHrssDetection문제를
regression문제로 접근
하나의 convolution network사용
전체 image를 한 번에 처리하므로 매우 빠르다.
신호해석특론 33
34. Furthermore
SSD(Single Shot Detector)
Faster R-CNN 보다 빠르고 YOLO 만큼 정확하다.
Category와 box offset을 prediction한다.
Feature map을 사용해 prediction한다.
신호해석특론 34
36. Reference
How Good are Detection Proposals, really?, J. Hosang et al, BMVC14.
Selective Search for Object Recognition, J. R. R. Uijings et al, IJCV13.
Edge boxes: Locating Object Proposals from Edges, L. Zitnick et al,
ECCV14.
Fast R-CNN, R. Girshick, ICCV15.
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal
Networks, S. Ren et al, NIPS15.
Mask R-CNN, K. He et al, arXiv17.
Rich Feature Hierarchies for Accurate Object Detection and Semantic
Segmentation, R. Girshick et al, CVPR14.
“Lecture 6: CNNs for Detection, Tracking, and Segmentation”
https://blog.lunit.io/2017/06/01/r-cnns-tutorial/
신호해석특론 36
“Rich feature hierarchies for accurate object detection and semantic segmentation”
“Fast R-CNN”
“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”
Selective Search for Object Recognition, J. R. R. Uijings et al, IJCV13.
Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation, R. Girshick et al, CVPR14.
“Rich feature hierarchies for accurate object detection and semantic segmentation”
“we demonstrate that a simple bounding-box regression method significantly reduces mislocalizations, which are the dominant error mode.” (More detail in the paper)
The PASCAL VOC project.
Visual Object Classes challenge
SPP-net(SPP-net. Spartial Pyramid Pooling) RCNN의 아이디어를 사용
공간 풀링을 통해 계산.
/*생략한 내용*/
R-CNN에서는 Softmax classifier와 linear bounding-box regressor를 따로 학습했습니다.⇒ 반면, Fast R-CNN에서는 두 함수의 loss를 더한 multi-task loss를 기반으로 동시에 두 가지 task를 학습합니다.
바운딩 박스들 사이에 겹치는 영역이 많은데 이들을 따로따로 CNN을 통과시키는 것은 비용 낭비다.
Fast R-CNN도 처음에 initial ROI( region proposal)를 찾는 것은 SS를 사용합니다.
하지만 각 ROI를 매번 conv하는게 아니라 한번에 해서 결과로 나온 피쳐맵에서 ROI영역만 추출해
Pooling(=subsampling)과정을 거쳐 Fully Connected layer에 넣는것입니다.
Fast R-CNN에서 남은 한가지 성능의 병목은 바운딩 박스를 만드는 리전 프로포잘 단계입니다. Faster R-CNN은 리전 프로포잘 단계를 CNN안에 넣어서 마지막 문제를 해결했습니다. CNN을 통과한 특성 맵에서 슬라이딩 윈도우를 이용해 각 지점anchor마다 가능한 바운딩 박스의 좌표와 이 바운딩 박스의 점수를 계산합니다. 대부분 너무 홀쭉하거나 넓은 물체는 많지 않으므로 2:1, 1:1, 1:2 등의 몇가지 타입으로도 좋다고 합니다.
classification을 위해 학습한 CNN이 어느 정도 localization 역할을 수행할 수 있음을 확인해 볼 수 있습니다. 그 이유는 바로 classification 학습 과정에서 학습되는 convolution filter들이 중요한 정보는 보존하고 불필요한 정보는 손실하는 방향으로 형성되기 때문입니다. 위 그림에서도 볼 수 있듯이, 학습된 classification CNN에 특정 이미지를 입력하고 해당 이미지로부터 얻어낸 feature map을 시각화 해 보면, 물체를 구별하는데 불필요하다고 판단되는 배경은 무시하고 실제 물체가 존재하는 위치에 대부분의 filter가 반응함을 볼 수 있습니다
Faster R-CNN에서는 feature map 정보를 활용해 물체가 존재하는 위치를 출력으로 가지는 네트워크인 region proposal network(RPN)를 학습해보자는 아이디어를 제시합니다. 이를 위해 feature map 위의 크기의 작은 window 영역을 입력으로 받고, 해당 영역에 물체가 존재하는지/존재하지 않는지에 대한 binary classification을 수행하는 작은 classification network를 만들어 볼 수 있습니다. R-CNN, Fast R-CNN에서 사용되었던 bounding-box regression 또한 위치를 보정해주기 위해 추가로 사용됩니다. 하나의 feature map에서 모든 영역에 대해 물체의 존재 여부를 확인하기 위해서는 앞서 설계한 작은 영역을 sliding window 방식으로 탐색하면 될 것입니다. 이러한 작동 방식은 크기의 convolution filter, 그리고 classification과 regression을 위한 convolution filter를 학습하는 것으로 간단하게 구현할 수 있습니다.
ImageNet 데이터로 미리 학습된 CNN M0를 준비합니다.
M0 conv feature map을 기반으로 RPN M1를 학습합니다.
RPN M1을 사용하여 이미지들로부터 region proposal P1을 추출합니다.
추출된 region proposal P1을 사용해 M0를 기반으로 Fast R-CNN을 학습하여 모델M2를 얻습니다.
Fast R-CNN 모델M2 의 conv feature를 모두 고정시킨 상태에서 RPN을 학습해 RPN 모델 M3을 얻습니다.
RPN 모델M3 을 사용하여 이미지들로부터 region proposal P2을 추출합니다.
RPN 모델 M3의 conv feature를 고정시킨 상태에서 Fast R-CNN 모델 M4를 학습합니다.
그 밖의 최근 연구
R-CNN 계열 : 2stage detection -> SPP-net, R-FCN, Mask-CNN
딥러닝 기반 FAST 객체 탐색 기법
딥러닝 기반 FAST 객체 탐색 기법
Mask R-CNN
Faster R-CNN에 각 픽셀이 오브젝트에 해당하는 것인지 아닌지를 마스킹하는 네트워크(CNN)를 추가한 것입니다. 이를 바이너리 마스크binary mask라고 합니다. 페이스북 팀은 정확한 픽셀 위치를 추출하기 위해 CNN을 통과하면서 RoIPool 영역의 위치에 생기는 소숫점 오차를 2D 선형보간법bilinear interpolation을 통해 감소시켰다고 합니다. 이를 RoIAlign이라고 합니다.