Rich feature hierarchies for accurate object detection and semantic segmentation 2014 (R-CNN)

Dr.Pepper·2024년 11월 12일
0

3주차 스터디

목록 보기
2/7
post-thumbnail

1. introduction

Object Detection 모델은 객채의 위치를 찾고(Localization), class를 분류(Classification) 하는 작업을 진행합니다. R-CNN 모델은 이를 순차적으로 진행하는 대표적인 2 stage detector로, 딥러닝을 적용한 최초의 Object Detection 모델입니다.

작동방식

Object detection system

  1. input image가 들어감
  2. 2000개의 객체가 있을 법한 위치인 후보영역(region proposal)을 추출 (selective search 알고리즘)
  3. Large CNN을 사용해서 각 후보영역을 계산.
  4. 추출된 특징을 사용하여 SVM을 통해 각 영역을 클래스별로 분류. 예를 들어, 제안된 영역이 사람인지 아닌지 등을 판단

Selective Search 알고리즘은 이미지에서 객체가 있을 가능성이 높은 영역을 효율적으로 제안하기 위해 사용되는 영역 제안 방법

2. Object detection with R-CNN

R-CNN의 detection system은 세 개의 module로 구성되어 있습니다.

  1. category-independent region proposals 생성하는 module (독립적인 카테고리 region proposal) - 객체가 위치할 가능성이 있는 여러 영역을 후보로 생성

  2. 각 region으로부터 CNN network를 통해 feature vector를 추출하는 module - 추출할 때 고정된 길이의 vector를 추출

  3. 클래스별 선형 SVM 분류기 - 추출한 특징 vector를 바탕으로 각 proposal을 특정 class로 분류 (사람, 자동차 등)

2.1. Module design

A. Region proposal

R-CNN은 다양한 최근 연구에서 제안된 기법들을 참고하여 카테고리 독립적인 region proposal을 생성합니다. 이 논문에서는 Selective Search 알고리즘을 사용하여 각 이미지에서 약 2000개의 제안된 영역을 만들어 냅니다.
이 때 각 영역(region)은 위 사진처럼 227x227 크기의 사이즈로 warp(=resize)됩니다. (AlexNet을 기반으로 만들었기 때문에)
-> 그럼 사진이 찌그러질텐데 괜찮은건가요?
괜찮다! 왜?
1. CNN은 강력한 특징 학습 능력을 가지고 있다.
2. 고정된 입력 크기를 통해서 일관된 처리 흐름을 유지하기 때문에 계산 비용도 저렴해진다.
3. *주변 여백을 추가하여 객체의 맥락을 유지한다. (밑에서 추가적으로 설명)
4. Fine-tuning 과정을 거친다. (Fine-tuning은 왜곡된 객체들이 포함된 데이터를 학습하는 과정)

Selective search 알고리즘은 색상, 무늬, 명암 등의 다양한 기준으로 픽셀을 grouping하고, 점차 통합시켜 객체가 있을법한 위치를 bounding box 형태로 추천합니다.
(1)이미지를 작은 segment 형태로 분할하고,
(2)유사한 색상, 텍스처, 크기를 가진 픽셀들을 그룹화하는 방식으로 작동합니다.
bounding box란 object가 들어있다고 판단되는 임의의 사각형을 말합니다. 사진의 파란색, 초록색 박스는 모두 bounding box이고, 이 중 초록색 박스는 ground truth box라고 합니다.

B. Feature extraction

각 region proposal에서 고정된 길이의 4096차원 특징 벡터를 생성하기 위해, Krizhevsky 등이 설계한 CNN 아키텍처(AlexNet)를 사용합니다. 이 CNN 모델은 5개의 합성곱 계층과 2개의 완전 연결 계층을 가지고 있습니다.

제안된 영역의 크기나 비율에 관계없이 모든 영역을 CNN 입력 크기인 227x227 픽셀로 변환하기 위해 Affine Image Warping 기법을 사용합니다. 이 변환은 영역을 확대 또는 축소하여 CNN이 처리 가능한 고정 크기로 만듭니다. (bounding box를 확장(delite)할 때 추가할 픽셀 수 p=16)

*16 pixel의 여백을 추가함으로써 CNN이 학습할 때 객체 주변의 맥락 정보를 더 많이 포함할 수 있습니다. 이 추가된 여백은 CNN이 객체를 탐지하는 데 있어 더 많은 주변 정보를 활용할 수 있도록 돕습니다.

2.2. Test-time detection

Test time에선 새로운 이미지에서 Selective Search를 통해 약 2000개의 region proposal을 생성하고, 각 제안된 영역을 CNN에 입력하여 특징 벡터를 추출합니다.

이 특징 벡터들은 각 클래스의 SVM을 통해 분류되고, greedy non-maximum suppression을 사용해 겹치는 영역 중 높은 점수의 제안을 남깁니다.

greedy non-maximum suppression?

객체 탐지(Object Detection)에서 중복된 탐지 결과를 줄이기 위해 사용되는 알고리즘입니다. 이는 여러 객체 후보 영역에서 가장 신뢰도가 높은 탐지 결과만을 남기고 나머지는 제거하는 역할을 합니다.

2.3. Training

A. Supervised pre-training - AlexNet architecture (2012)

기본적으로 R-CNN은 Fine-tuning된 AlexNet 모델을 기반으로 만들어졌습니다. AlexNet은 연산속도를 높이기위해 2대의 GPU를 이용해 (본격적으로 딥러닝에 GPU 가속 방식을 사용했다고 함.) 병렬연산을 진행하고 5개의 convolutional layer, 3개의 fully-connected layer로 구성되어있습니다.

B. Domain-specific fine-tuning

Domain-specific fine-tuning 과정은 R-CNN이 객체 탐지에서 높은 성능을 발휘할 수 있도록 하는 중요한 학습 과정입니다.
Pascal VOC 객체 탐지 데이터셋을 통해 AlexNet 모델을 Pre-train합니다.
그리고 Simgle image에서 약 2000개의 region proposal를 추출하고,
IoU가 0.5 이상이면 positive sample, 0.5 미만이면 negative sample로 분류합니다. positive sample을 32개, negative sample을 96개로 해서 Mini batch들을 만들어 사전학습된 AlexNet을 추가로 학습시킵니다.

IoU(Intersection over Union)란?

IoU (Intersection over Union)객체 탐지(Object Detection)와 같은 컴퓨터 비전 작업에서 예측한 경계 상자(predicted bounding box)실제 경계 상자(ground truth bounding box)가 얼마나 잘 겹치는지를 측정하는 지표입니다.

C. Object category classifiers - Linear SVMs

위 사진은 Linear SVMs을 통해 object category를 classification 하는 과정입니다.
AlexNet을 Fine-tuning하는 과정과 유사하지만, 몇 가지 차이점이 있습니다.
먼저 (1) IoU의 기준을 0.5에서 0.3으로 낮추었습니다. (validation set에서 0.01부터 0.5까지의 값에 대해 grid search를 진행한 결과) 여기서, IoU가 0.3이 넘는 sample들을 모두 Positive sample로 사용하지 않고, selective search를 통해 찾은 ground truth bounding box만을 Positive sample로 사용합니다.
(2) Hard negative mining 방식을 사용했습니다.

Hard negative mining 이란?
위 사진처럼 초기에 학습된 모델은 정확히 객체를 판별하지 못합니다.
Hard negative mining 방식은 학습된 모델을 토대로 모든 데이터셋을 테스트하고, 잘 못 분류된 예시(Hard negatives)들을 찾아냅니다. 그리고 식별된 hard negative를 추가하여 모델을 재학습시킵니다. 필요에 따라 여러번 반복합니다.

R-CNN 요약

R-CNN은 크게 4가지 과정을 거친다.
1. input image가 들어감
2. 2000개의 객체가 있을 법한 위치인 후보영역(region proposal)을 추출 (selective search 알고리즘)
3. Large CNN(AlexNet)을 사용해서 각 후보영역을 계산.
4. 추출된 특징을 사용하여 SVM을 통해 각 영역을 클래스별로 분류. 예를 들어, 제안된 영역이 사람인지 아닌지 등을 판단

사용된 알고리즘? 모델?

  1. Selective search를 사용해 객체 추출 (bounding box)
  2. Pre-trained(Fine-tuning) AlexNet을 IoU 0.3을 기준으로 retrain 시킨다.
  3. Hard negative mining 방식으로 잘 못 분류된 bounding box를 찾아내고, 이를 negative sample에 추가시켜 재학습 시킨다.
  4. SVM을 통해 classification을 수행하고, Greedy Non-Maximum Suppression을 적용하여 가장 신뢰도가 높은 bounding box를 선택하고 이 box와 IoU(겹침)이 높은 다른 box는 제거한다.

R-CNN 의의/한계

의의

  1. CNN을 객체 탐지에 성공적으로 적용
  2. Region proposal(객체 추출)을 활용하는 새로운 접근 방식을 제시

한계

  1. 각 resion proposal에 대해 개별적으로 CNN을 수행하기 때문에 계산 비용이 매우 높고, 속도가 느려 실시간 탐지에는 부적합
  2. 기본적으로 고비용 알고리즘인 selective search algoritm에 의존적
profile
GDG Gachon Ai 스터디입니다.

0개의 댓글