Author: Joseph Redmon∗, Santosh Divvala∗†, Ross Girshick¶, Ali Farhadi∗† University of Washington∗, Allen Institute for AI†, Facebook AI Research¶
PDF: Rich%20Feature%20hieerarchies%20for%20accurate%20object%20dete%20ee4bd97191754c1a8bac550a018c82a1/Redmon_You_Only_Look_CVPR_2016_paper.pdf
https://www.youtube.com/watch?v=W0U2mf9pf8o
이 영상이 야무짐
C 6.0 | RCNN - Problem Statement | CNN | Machine Learning | Object Detection | EvODN
https://herbwood.tistory.com/5
: 사진에서 이 객체는 무엇이다 라고 판별된 데이터라는 것을 의미
과거 : visual recognition task(10년간)는 주로 SIFT 와 HOG(radient 기반의 특징점 추출 알고리즘)이 많이 사용되었다.
변화 : SGD(Stochastic Gradient Descent)기반의 CNN(Convolutional Neural Networks)이 등장
객체 탐지 시스템 개요: 입력 이미지에서 2000개의 하위 영역 제안을 추출하고, CNN을 사용하여 각 제안의 특징을 계산한 다음, 각 영역을 클래스별 선형 SVM을 사용하여 분류.
CNN의 부활: 1990년대에 CNN이 널리 사용되었으나, 서포트 벡터 머신의 등장으로 관심이 줄어듦.
ImageNet Large Scale Visual Recognition Challenge에서 높은 이미지 분류 정확도를 보여주며 CNN에 대한 관심을 재점화.ImageNet 결과의 중요성: ILSVRC 2012 워크숍에서 ImageNet 결과의 중요성에 대한 활발한 토론.
RCNN 문제 해결: 이미지 분류와 객체 탐지 사이의 격차를 해소.
탐지 문제 해결: 탐지는 이미지 내 여러 객체를 국부화하는 것을 요구.
Sol1) 국부화(localizing)를 회귀 문제(regression)로 설정하는 것.
→ 실전에서 잘 작동하지 않을 수 있음을 보여줌.
Sol2) 슬라이딩 윈도우 탐지기를 구축하는 것.(sliding-window detector)
→ large receptive field : 고해상도를 유지하기 위해 두 개의 합성곱 및 풀링 층만 가지며, 높은 공간 해상도를 유지하는 것이 어려움.
R-CNN 접근: "영역을 이용한 인식 (recognition using regions)" 패러다임을 통해 CNN 국부화 문제 해결.
테스트 시 입력 이미지에 대해 약 2000개의 범주에 구애받지 않는 영역 제안을 생성하고, CNN을 사용하여 각 제안에서 고정 길이의 특징 벡터를 추출한 다음, 클래스별 선형 SVM을 사용하여 각 영역을 분류.
단순한 기법(아핀 이미지 왜곡)을 사용하여 영역 제안의 형태에 관계없이 고정 크기의 CNN 입력을 계산.
→ R-CNN과 OverFeat 비교: R-CNN이 ILSVRC2013 탐지 데이터셋에서 OverFeat를 큰 차이로 능가.
R-CNN의 mAP는 31.4%로 OverFeat의 24.3%보다 높음.
R-CNN 작동 순서
- 이미지를 입력한다.
- 약 2000개의 bottom-up region proposals를 추출한다.
- CNN을 이용해 각각 region proposal의 특징을 계산한다.
- linear SVMs를 이용해 각각의 label을 분류한다.
Warped Region의 역할은?
warped region은 각각의 region proposal의 크기가 다르므로 이를 CNN에 입력으로 넣어주기 위해 크기를 맞춰주는 역할을 한다.
라벨링 데이터 부족 문제 해결: 탐지에서 직면하는 두 번째 문제는 라벨링된 데이터의 부족.
→ 세부 조정 후 탐지 성능이 8% 포인트 향상, VOC 2010에서 54%의 mAP 달성.
R-CNN 시스템 : 세 가지 모듈로 구성
- 첫 번째 모듈 : 범주에 구애받지 않는 영역 제안을 생성
- 두 번째 모듈 : 큰 CNN을 사용하여 각 영역에서 고정 길이의 특징 벡터를 추출
- 세 번째 모듈 : 클래스별 선형 SVM
영역 제안 : R-CNN에서는 선택적 검색(Selective Search)을 사용하여 이전 작업과의 비교
Selective search란?
: Selective search 알고리즘은 색상, 무늬, 명암 등의 다양한 기준으로 픽셀을 grouping하고, 점차 통합시켜 객체가 있을법한 위치를 bounding box 형태로 추천한다. 단일 이미지에서 2000개의 후보 영역을 추출한 뒤, CNN 모델에 입력하기 위해 227x227 크기로 `warp(=resize)`시켜준다.
- 색상, 질감, 영역 크기 등을 이용해 non-object-based segmentation을 수행
→ 이 작업을 통해 small segmented areas들을 얻는다.
Bottom-up 방식으로 small segmented areas들을 합쳐 더 큰 segmented area들을 만든다.
2번 작업을 반복해 최종적으로 2000개의 region proposal을 생성한다. (R-CNN에서)
2000장의 region proposals를 얻게 되면 warp를 통해 이미지를 227x227로 사이즈를 통합시켜준다.(CNN arichitecture는 고정된 227x227 pixel size의 입력을 요구한다.)
Warped Region의 역할은?
warped region은 각각의 region proposal의 크기가 다르므로 이를 CNN에 입력으로 넣어주기 위해 크기를 맞춰주는 역할을 한다.
Feature extraction(특징 추출)
CNN을 사용하여 각 영역 제안(Proposal Region)에서 4096차원의 특징 벡터를 추출.
227x227크기의 2000개 영역 제안.Fine-Tuned AlexNet을 통한 특징 추출.2000x4096크기의 특징 벡터.Fine-Tuning Pre-Trained AlexNet
Fine-Tuning Pre-Trained AlexNet란?
- Fine-Tuned AlexNet 사용
- 2000개의 후보 영역을 Fine-Tuned된 AlexNet에 입력.
- 결과적으로 2000(후보 영역 수) x 4096(특징 벡터 차원) 크기의 특징 벡터 추출.
- 도메인 맞춤형 Fine-Tuning
- 객체 탐지 시 도메인에 맞는 클래스를 예측하기 위해 ImageNet 데이터셋을 통해 사전 학습된 CNN 모델을 도메인에 맞게 Fine-Tuning.
- Fine-Tuned된 모델을 사용하면 도메인에 맞는 적합한 특징 벡터 추출 가능.
Fine-Tuning Pre-Trained AlexNet의 단계
- 모델 설계
- 예측하려는 객체 수가 N개일 때 배경을 포함하여 (N+1)개의 클래스를 예측하도록 모델 설계.
- 객체와 배경을 모두 포함한 학습 데이터 구성.
- Selective Search 알고리즘 적용
- PASCAL VOC 데이터셋에 Selective Search 알고리즘을 적용하여 후보 영역 추출.
- 후보 영역(바운딩 박스)과 실제 박스(ground truth box)의 IoU 값 계산.
- IoU 값이 0.5 이상인 경우 Positive Sample(객체), 0.5 미만인 경우 Negative Sample(배경)로 분류.
- Mini-Batch 구성
- Positive Sample: 32, Negative Sample: 96로 Mini-Batch(128)를 구성하여 학습.
- 학습을 통해 Fine-Tuned된 AlexNet을 사용하여 R-CNN 모델은 추론 시 특징 벡터 추출.
이 과정을 통해 R-CNN 모델은 객체 탐지 시 높은 성능을 발휘할 수 있다. Fine-Tuning된 AlexNet을 사용하여 도메인에 맞게 보다 적합한 특징 벡터를 추출함으로써 객체 탐지의 정확도를 높인다. Selective Search 알고리즘을 통해 후보 영역을 생성하고, 이를 Fine-Tuned된 모델에 입력하여 학습 및 추론을 수행하는 방식으로 동작한다.
비최대 억제 (Non-Maximum Suppression, NMS)?
: 비최대 억제는 객체 탐지 및 이미지 처리에서 겹치는 박스를 제거하여 최종 검출 결과를 얻기 위한 기법입니다. 주로 객체 탐지에서, 동일한 객체를 여러 번 검출한 결과를 하나로 통합할 때 사용됩니다.
동작 원리
- 예측 박스 점수화:
- 모델이 객체를 탐지하면 각 예측 박스(바운딩 박스)에 대한 신뢰도 점수(confidence score)를 계산.
- 내림차순 정렬:
- 모든 예측 박스를 신뢰도 점수에 따라 내림차순으로 정렬.
- 최고 점수 박스 선택:
- 가장 높은 신뢰도 점수를 가진 박스를 선택하고, 이를 최종 검출 결과에 추가.
- 겹치는 박스 제거:
- 선택된 박스와 겹치는 다른 모든 박스를 제거한다. 이때 겹치는 정도는 Intersection over Union (IoU) 값으로 측정된다.
- IoU가 사전 정의된 임계값(threshold)보다 큰 경우, 해당 박스를 제거한다.
- 반복:
- 남은 박스 중 다음으로 높은 신뢰도 점수를 가진 박스를 선택하고, 동일한 과정을 반복한다.
- 더 이상 선택할 박스가 없을 때까지 이 과정을 반복.
예시
- 입력:
- 모델이 여러 개의 객체를 탐지하여, 여러 개의 바운딩 박스와 신뢰도 점수를 반환
- 비최대 억제 적용:
- 예를 들어, 3개의 박스 A, B, C가 있다고 가정하고, 신뢰도 점수는 각각 0.9, 0.8, 0.7이다.
- 박스 A를 선택하고, 박스 A와 겹치는 박스 B와 C의 IoU를 계산한다.
- 만약 IoU가 임계값 0.5보다 크다면, 박스 B와 C를 제거한다.
- 박스 B와 C를 제거한 후, 다음으로 높은 점수를 가진 박스를 선택하여 과정을 반복한다.
장점
- 중복된 검출 결과를 효과적으로 제거하여, 최종 결과의 정확도를 높인다.
- 객체 검출의 신뢰성을 높여준다.
단점
- IoU 임계값 설정에 따라 성능이 민감하게 변할 수 있다.
- 임계값을 너무 높게 설정하면, 중복된 결과를 완전히 제거하지 못할 수 있으며, 너무 낮게 설정하면, 중요한 검출 결과를 놓칠 수 있다.
비최대 억제는 객체 탐지 시스템에서 중요한 후처리 단계로, 중복된 검출을 제거하고 최종 검출 결과의 품질을 향상시키는 데 필수적인 역할을 한다.
실행 시간 분석
효율성 및 확장성
: 새로운 작업(탐지)과 도메인(왜곡된 제안 창)에 CNN을 적응시키기 위해 SGD 학습을 계속 진행.
: 특정 객체를 탐지하기 위해 이진 분류기 훈련.
참고!
Q1) 왜 AlexNet을 fine tune할 때와 linear SVM을 학습시킬 때와 양성/음성의 정의가 서로 다른가요?
논문의 저자는 AlexNet을 fine tune할시, 모델이 overfitting되지 않도록 많은 데이터가 필요하다고 말합니다. IoU 값이 0.5 이상인 경우를 positive sample로 정의할 경우, 오직 ground truth box만을 positive sample로 정의할 때보다 30배 이상 많은 학습 데이터를 얻을 수 있다고 합니다.
Q2) 왜 AlexNet 마지막 layer에 softmax 함수를 추가하는 대신 별도의 linear SVM 모델을 학습시켰나요?
Softmax 함수를 사용하여 class를 분류할 경우, mAP 수치가 54.2%에서 50.9%로 떨어진다고 합니다. 이러한 이유는 위에서 언급한 모델에 따른 서로 다른 양성/음성 정의에서 기인합니다. AlexNet을 fine tune할 때, 많은 데이터를 포함하는 과정에서 상대적으로 정확하지 않은 예측 bounding box(IoU 값이 0.5~1 사이, 논문의 저자는 jitered example이라고 언급함)를 positive sample에 포함시키게 됩니다.
이로 인해 상대적으로 엄밀한 학습 데이터를 사용하는 linear SVM 모델에 비해 성능 하락하게 됩니다. 논문의 저자는 만약 적절한 방식으로 AlexNet을 fine tune한다면 linear SVM 모델을 사용할 때와 비슷한 성능을 보일 것이라고 전망합니다.
학습된 linear SVM에 2000x4096 크기의 feature vector를 입력하면 class와 confidence score를 반환합니다.
이 과정은 객체 탐지 시 높은 정확도를 보장하며, R-CNN의 효율성과 확장성을 극대화한다. Fine-Tuning된 AlexNet을 사용하여 도메인에 맞는 적합한 특징 벡터를 추출하고, Linear SVM을 통해 클래스를 정확히 예측한다. Selective Search 알고리즘을 통해 후보 영역을 생성하고, 이를 Fine-Tuned된 모델에 입력하여 학습 및 추론을 수행하는 방식으로 동작한다.
첫번째 층을 시각화하는것은 쉽다. (모서리나 색상등을 인식하기 때문)
그러나 subsequent 층을 이해하는것은 어렵다.
이를 해결하기 위해 논문에서는 region proposal을 selective search를 통해 찾아내면 그것을 sorting을 해서 non maximum suppression즉 스코어링을 한것에 대한 큰값을 빼고 중복된 값을 빼는 방식 후에 top-scoring regions 만 남겨둔다.
논문에서는 어떤 층이 critical한지 판별하기 위해 VOC 2007데이터셋의 각 CNN의 마지막 3개의 층을 분석하였다.
FC5는 9216차원으로 reshape된 pool5의 특징 맵이다.
FC6은 pool5의 fully connected layer이다.
FC7은 네트워크의 마지막 층이다.
여기서 놀라운점은 FC6이나 FC7이 없어져도 괜찮은 성능을 발휘한다는 점이었다. 즉 CNN의 표현의 힘은 CNN자체에 있지 FULLY CONNECTED LAYER에 의존하지 않는다는 점을 알 수 있다.

테이블2를 보면 파인튜닝을 적용했을경우 성능이 향상되는 것을 볼 수 있다.

테이블 3에서는 당시 좋은성능을 발휘하는 VGG16의 구조를 그대로 가져와서 R-CNN에 적용한것을 O-NET이라고 하고 기본이 된는 것을 T-NET이라고 정했다. 테이블에서 볼 수 있듯이 O-NET이 성능이 더 좋은것을 알 수 있다.
하지만, O-NET의 경우 T-NET에 비해 7배 오래걸린다는 단점이 있다.
deconvolutional 방법을 참고하여, 네트워크가 학습한 내용을 직접 보여주는 간단한 비모수적 방법 제안.세부 조정 없이 계층별 성능 분석: VOC 2007 데이터셋에서 CNN의 마지막 세 계층에 대한 성능 분석.
→ CNN의 대표적인 성능은 합성곱 층에서 나오며, 밀집 연결 층은 덜 중요함을 시사.
세부 조정 후 계층별 성능 분석: 세부 조정 후 성능 향상.
→ fc6와 fc7에서의 세부 조정이 pool5보다 큰 성능 향상 유발.
최근 특징 학습 방법과의 비교: DPM을 기반으로 한 두 가지 최신 방법과 비교.
ILSVRC2013 탐지 데이터셋에 대한 결과를 제시한다. 이 데이터셋은 PASCAL VOC보다 더 이질적이며, val2 세트를 사용하여 검증 및 평가를 수행한다. 또한, 다양한 학습 데이터 양, 세부 조정 및 경계 상자 회귀의 효과를 평가한다.
R-CNN을 사용하여 PASCAL VOC 분할 과제에서 의미적 분할을 수행한다. CPMC(Constrained Parametric Min-Cuts)를 사용하여 각 이미지에서 150개의 영역 제안을 생성하고, 각 클래스에 대해 SVR(Support Vector Regression)을 사용하여 영역의 품질을 예측합니다. 저자들은 R-CNN을 사용하여 의미적 분할 성능을 높일 수 있음을 보여준다.
논문은 간단하고 확장가능한 object detection 알고리즘을 소개한것이고 이는 PASCAL VOC2012에서 가장 좋은 결과를 냈던 것보다 30%향상된 성능을 보인다.
이것은 두가지 인사이트를 통해서 가능했으며 두가지는 아래와 같다.
이 논문은 객체 탐지 성능이 정체된 상황에서 단순하고 확장 가능한 탐지 알고리즘을 제안합니다. 주요 통찰은 고용량 CNN을 하위 영역 제안에 적용하고, 라벨링된 데이터가 부족할 때 지도 학습 전이를 통해 성능을 향상시키는 것입니다. 이 방법은 PASCAL VOC 2012에서 30% 이상의 성능 향상을 달성합니다. 저자들은 이 방법이 데이터가 부족한 다양한 비전 문제에 효과적일 것이라 기대합니다.