[3주차 / 신인섭/ 논문리뷰] Rich feature hierarchies for accurate object detection and semantic segmentation
mAP : mean Average Precision, 객체 탐지의 성능 측정 지표
Object Detection 알고리즘의 핵심
이전에 가장 성능이 좋았던 Sliding-Window Detector 기반 객체 탐지 알고리즘보다 RCNN이 더 뛰어남
RCNN은 두 단계를 거치는 hierarchical 모델
첫 번째는 Classification, 두 번쨰는 Bbox Regression으로
분류와 회귀 문제의 결합이다.
지금까지의 CNN은 이미지 분류에서 우수한 성능을 보였는데, 객체 탐지에도 좋은 성능을 낼 수 있음
→ localizing object를 deep network를 활용하는 가
→ 적은 annotation 데이터를 가지고 모델을 학습할 수 있는가
(annotation : 객체 레이블 정보, 경계 박스 위치 정보 등 의 메타 정보)
이미지 분류와는 다르게, 객체 탐지는 분류하는 작업 말고도 객체의 위치 좌표를 찾는 일까지 해야함
Region proposal 절차
다음 문제로는 레이블된 데이터가 부족하다는 것
깊은 CNN 구조를 가진 RCNN을 훈련시키기에는 부적한 데이터의 한계
→ 많은 양의 ILSVRC의 데이터로 pre-training
→ 적은 양의 PASCAL 데이터로 도메인에 맞게 fine-tuning 수행
⇒ 다량의 보조 데이터를 사용해 사전 훈련을 진행하기 때문에, annotation이 된 PASCAL 데이터가 적어도 fine-tuning 만으로도 좋은 성능 취득
R-CNN은 세가지 모듈로 구성
첫 번째는 region proposal 하는 모듈이고, 여기서 제안한 후보 영역을 바탕으로 객체를 찾는다.
두 번째는 후보 영역에서 크기가 고정된 피처를 추출하는 거대 CNN layer
세 번째는 선형 SVM 이다.
RCNN은 Selective Search를 기반을 사용한다.
Selective Search는 비슷한 영역을 그룹핑하며 후보영역을 제안하는 방법이다.
AlexNet을 활용하여 제안된 각 후보 영역별로 4096개의 피처를 추출
이렇게 추출한 피처를 기반으로 svm에서 최종 분류한다.
제안된 후보 영역에서 피처를 추출하려면 먼저 후보 영역 이미지를 고정된 크기로 바꿔야 한다.
길쭉한 직사각형 모양이더라도 모든 후보 영역을 고정된 정사각형 모양으로 반환해야한다.
→ Warping
Warping하기 전에, 객체 영역만 자르지 않고, 후보영역 주변 배경을 조금 살린다.(실험 결과 16 픽셀만큼 살렸을 때 성능이 제일 좋았음)
테스트 단계에서 각 테스트 이미지 별로 2000개의 후보 영역 추출
이후 warping - CNN - SVM 수행하여 점수 계산
이 점수로 Non-Maximum Suppression(NMS) 수행
점수가 가장 높은 후보 Bbox 기준으로 IoU가 특정 기준치를 넘는 다른 Bbox는 모두 제거
⇒ 2000개 중에 꽤나 많은 Bbox가 사라짐
NMS : Bbox 중에 가장 확실한 하나만 남기고 나머지는 지우기
RCNN이 객체 탐지 효율을 높이는 두 가지 특징
⇒ 확장 가능성
ILSVRC로 사전 훈련 진행, 이 데이터 셋에는 경계 박스 정보가 없으니, 이미지 분류수준의 사전 훈련 진행
사전 후련한 CNN 모델을 새로운 객체 탐지 영역에 적용하기 위해, 도메인에 맞게 fine tuning 진행
warping 한 후보 영역 이미지만 사용해서 cnn 파라미터 갱신
가지고 있는 데이터 셋의 레이블보다 하나 더 추가하여 최종 출력층 사이즈를 정해야하는 데, 이는 배경 때문이다.
실제 경계 박스와의 IoU가 0.5 이상인 후보군 → Positive (나머진 Negative)
positive 는 해당 객체를 표시하는 경계 박스, negative는 배경
객체에 애매하게 걸친 경계 박스는 pos인지 nega인지 구분이 어렵다.
이 문제를 IoU 임계값을 실험하여 해결 → 0.3일 때 성능이 가장 좋았다고 함.
cf) 파인 튜닝 할 때는 임계를 0.5로 설정했었음
데이터가 너무 크기에 hard negative mining 기법을 사용했다고 함
(hard negative mining : positive ,negative 샘플의 개수를 균일하게 맞추는 법
배경(nega)가 너무 많은 원본은 모델의 성능이 많이 떨어지게 됨)
PASCAL VOC 2010 데이터셋, 다른 모델과 배교해서 성능이 꽤 높았음.
기존에 가장 성능이 좋던 SegDPM은 mAP 40.4%를 기록
경계 박스 회귀를 사용하지 않은 R-CNN은 50.2%, 경계 박스 회귀를 사용한 R-CNN은 53.7%의 mAP
PASCAL VOC에서 사용한 파라미터를 동일하게 사용,
mAP 31.4%로 가장 높은 성능을 보임
CNN 첫 번째 계층의 필터 → 경계와 보색을 찾기
두 번째 계층 → 네트워크의 흐름은 다음과 같다
여러 후보 영역 점수 계산 - 높은 점수순으로 나열하여 NMS 수행 - 객체식별이 가능한 점수 높은 후보영역 남음
이런 일련의 과정을 통해 각 CNN 계층마다 후보 영역을 어떻게 학습하는지 볼 수 있다.
CNN 모델에서 어떤 layer가 객체 탐지 성능 향상에 도움이 되는지 접근
PASCAL 데이터로 파인 튜닝하지 않은 CNN의 분석 결과
결과를 보면 fc7이 fc6보다 성능이 좋지 않음
앞선 파인 튜닝 없을 때의 결과와 다르게 fc7이 fc6보다 성능이 좋음
파인 튜닝을 하지 않았을 때에 비해 성능이 향상 됨.
T-net은 토론토 대학교의 AlexNet이고, O-net은 옥스포드 대학교의 VGG 이다.
표를 보면 VGG16 기반 모델이 더 성능이 좋았음을 알 수 있다.
하지만 연산시간이 T-net에 비해 7배나 길었다.
검증 데이터와 테스트 데이터는 이미지 분포가 서로 비슷하며, annotation 되어 있다.
검증 데이터와 테스트 데이터는 모든 객체에 경계 박스가 표시돼 있고, 클래스명도 기재돼 있음
하지만 훈련 데이터는 완벽히 annotation되어 있지 않음
때문에 훈련 데이터에 hard negative mining을 적용하기 어렵다.
완벽히 annotation되어 있어야 hard negative mining을 적용할 수 있다.
완벽히 annotation되어 있지 않으면, negative 샘플이라고 판단한 경계 박스에 positive 샘플을 포함할 수 있게 된다.
→ 해결을 위해 검증 데이터의 일부를 훈련 데이터로 활용
val 1(for training), val 2(for validatation)
PASCAL에서와 동일한 방식으로 영역 추정한다. 훈련 데이터를 제외한 검증데이터와 테스트 데이터에 Selective search로 영역 추정을 진행
다른 점으로는 Selective search에는 이미지 크기에 따라 후보 영역의 갯수가 다르기에, 이미지 크기가 다른 ILSVRC 데이터셋의 크기를 고정해야 했다.
훈련데이터에서 뽑은 실제 경계 박스 N개와 val 1을 합쳐 훈련 데이터 셋 사용했다.
이 데이터로 RCNN은 CNN 파인 튜닝, SVM 훈련, 경계박스 회귀로 학습한다.
CNN 파인 튜닝은 val 1과 train_N을 이용해 5만번의 SGD 수행
SVM 훈련을 위해 val 1과 train_N(hard negative mining으로 5000개 이미지 선별)의 실제 경계박스 사용
테스트 전에, val2(찐 검증 데이터)로 파인튜닝과 경계 박스 회귀의 효과를 시험해보고, 가장 좋은 성능을 보인 모델을 최종 테스트 데이터로 평가해보았다.
두 가지를 평가했는데, 첫째는 경계 박스 회귀를 하지 않은 모델이고, 둘째는 경계 박스 회귀를 사용한 모델이다.
val2와 테스트 데이터의 mAP가 거의 비슷한 것으로 보아, val2가 본 모델의 성능을 보기에 좋은 검증 데이터라는 점을 알 수 있다.
훈련 데이터를 늘릴 수록 성능이 좋아지는것을 볼 수 있고,
파인튜닝과 FC 층을 늘리니 더 늘어났고, 경계박스 회귀까지 적용하니 31.0%까지 늘어났다.
⇒ 훈련 데이터가 많을 수록, 파인튜닝을 위한 데이터가 많을수록, 경계 박스 회귀를 할수록, CNN 계층이 늘 수록
댓글 영역