RCNN
Region with CNN features
- 논문 링크: https://arxiv.org/pdf/1311.2524.pdf
- 참조: https://jamiekang.github.io/2017/05/28/faster-r-cnn/
- 참조: https://zzsza.github.io/data/2018/05/09/Faster-RCNN-review/
- 참조: https://gist.github.com/aisolab/46f73657c7fcbec91004708e01a67ba0
mAP: mean average precision
- 각 클래스에 대해 average precision 계산
- 이것을 mean한 값.
Object detection의 세 가지 task
- 물체가 있을만한 곳에 바운딩 박스를 치는 것(Region Proposal)
- 바운딩 박스에 무엇이 있는지 분류하는 것
- 비운딩 박스를 옮기는 것
- 중심점을 얼마나 옮길것인지
- 종횡비를 얼마나 바꿀것인지
초기 RCNN은 2000개 정도 박스를 추출해서, 해당 박스에 어떤 물체가 있는지 CNN으로 feature를 추출한 뒤 linear SVM으로 분류하는 방식으로 detection을 수행했다.
때문에 이미지 하나당 2000번이나 inference해야해서 시간이 매우 오래 걸렸음.
Abstract & Introduction
CNN에 대한 간략한 소개
- 이전의 비전 테스크는 SIFT와 HOG에 많이 의존해있었음. 2010-12년도 사이에 큰 진보가 없었다. (SIFT와 HOG:https://darkpgmr.tistory.com/116)
- CNN은 “neocognition” 즉 생물학적 영감을 받은 계층적이고 shift-invariant한 모델을 발전시킨 것인데 1990년대에 유행하다가 SVM이 나타나면서 쓰이지 않게 되었음.
이 논문의 contribution은 다음과 같다.
- 고성능의 CNN모델을 bottom-up region proposal방식으로
object detection
과 segmentation
에 사용할 수 있다.
Domain-specific fine tuning
기법을 가지고 적은 데이터를 가지고도 높은 capacity를 가지는 모델을 만들 수 있음을 보인다.
Localization(Region proposal)
- Object detection의 가장 큰 문제중 하나는 localization(Region proposal)이다.
- 기존 방법론에서는 sliding-window방식으로 풀기도 한다.
- 그러나 네트워크가 깊어지면 리셉티브 필드가 너무 커져서 쓸모가 없는 것으로 드러남.
우리는 대신에 “recognition using regions”패러다임을 제시한다.
- Object detection과 semantic segmentaiton에 둘다 유용하다.
- 순서는 다음과 같다.
- region 제안-> affine image warp -> CNN분류 -> linear SVM
bounding box label이 있는 데이터가 많이 없을 때 어떻게 다룰 것인지 역시 제시하였다.(fine-tuning기법)
unsupervised pre-training
-> supervised fine-tuning
- 대량의 보조 데이터에 대해서 감독학습으로 pre-trianing (이미지넷 데이터셋)
- 적은 데이터셋에 대해 fine-tuning(PASCAL)
R-CNN Network
1. module design
(1) Region Proposal(카테고리와 무관하게)
- selective search 방법(논문에서는 설명하지 않았음)
(2) Feature extraction
- 먼저 reshape함. 바운딩 박스 주변에 16픽셀이 존재하도록.
- 그리고 cnn사용.
(3) bounding-box regression
- 위치를 보정해 줄 수 있는 bounding-box regression제안.
- Bounding-box regressor의 학습 목표는 region proposal 와 정답 위치 가 존재할 때, 를 로 mapping할 수 있는 변환을 학습하는 것.(localization 성능 개선)
- 추출된 피처 맵을 넣고, X,Y,W,H를 뽑는 regression 네트워크를 만들어서 트레이닝.
(4) Linear-svm 모듈
- fixed-length feature vector를 인풋으로 받아 분류함
2. Test-time detection
Inference 단계에서 R-CNN은 다음의 과정으로 동작.(CPU에서 60초, GPU 13초가 걸린다.)
- Region proposal algorithm (eg. selective search) 로 2,000개 가량의 region 생성
- 각각의 region을 input으로 CNN이 fixed-length feature vector 들을 추출
- 각각의 fixed-length feature vector 를 input으로 각 class 별 Linear svm 이 score를 계산
- non-maximum suppresion을 이용, class score가 높은 region과 IoU (Intersection over Union)가 정해준 threshold 보다 큰 region들을 제거
- Boundig-box regression 을 하는 경우, 3과 4사이에서 이루어지며, 이 때 fixed-length feature vector 를 input으로 bouding box의 (x, y, w, h)를 계산
3. Training
(1) Supervised pre-training
- 이미지넷 데이터로 프리트레이닝 카페 사용(알렉스넷)
(2) Domain-specific fine-tuning(중요)
fine tuning은 classification을 하는 네트워크에 적용하였음.
stage1
에서는 이미지넷 데이터로 CNN레이어를 train 함.(feature를 잘 뽑아낼 수 있도록)
stage2
에서는 PASCAL데이터셋(bounding box 존재)에서 selective search가 제안한 여러 window중, 실제 IOU가 50%이상인 데이터들을 레이블링해서 다시 트레이닝함.
- 이는 네트워크에게 이미지의 일부만 보고도 classificaiton할 수 있는 능력을 부여하기 위함이다.
- 만약 IOU가 40%가 안되면 레이블을
background
로 주고, 40~50%사이의 데이터는 쓰지 않았음.
- FC레이어를 (N+1)개짜리 (class N + background 1)로 바꿈.
- train시점에 32개의 positive window와 96개의 background window로 128개 짜리 배치를 만들어서 썼다.
- 클래스당 하나의 linear SVM을 최적화 시켰다.
4. Consquence
- PASCAL 데이터셋에서 mAP가 기존 방법론 대비 35.1%에서 53.7%로 증가
- 바운딩박스 regerssion쓰면 추가적으로 성능 증가
2019
3 분 소요
1. Introduction
Faster-RCNN은 multi object detection문제를 풀기 위한 모델을 제시한 논문이다. 이 문제를 푸는 방법은 이전에도 RCNN, SPNN, Fast-RCNN이 존재했지만
속도와 계산 비용에 문제점이 있었고, 논문에서는 이를 개선하기 ...
2 분 소요
Region with CNN features
Back to Top ↑