AI/컴퓨터비전(CV)

[CV 논문] Rich feature hierarchies for accurate object detection and semantic segmentation

CSE 2026. 1. 9. 09:00

 

 

아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.

읽은 논문들 정리

 

읽은 논문들 정리

[목차]1. Computer Vision 분야 논문2. Natural Language Processing 분야 논문3. 유명한 딥러닝 논문들 지속적으로 업데이트 중1. Computer Vision1. AlexNet [2012년]대규모 CNN을 GPU로 학습해 ImageNet 성능을 크게 끌어올

april2901.tistory.com

 

 

이때까지 리뷰했던 논문들의 흐름은 classification의 발전과정을 따라가는 순서였다.

아래 모델이름을 누르면 해당 논문을 리뷰한 포스팅으로 연결된다.

AlexNetVGGNetGoogLeNetResNetSENetViTSwin Transformer

 

이제부터는 다시 과거로 돌아가 classification이 아닌 detection 분야의 발전 과정을 하나씩 살펴보자.


1. 서론

당시에는 객체 탐지 분야에서 성능이 정체되어 있었다.

저자들은 이 문제를 해결하기 위해 두 가지 방법을 결합했다.

Region Proposals + Deep CNN
"이미지 내에서 물체가 있을 법한 영역(Bottom-up region proposals)을 먼저 찾고, 그 영역마다 강력한 CNN(Convolutional Neural Network)을 적용하자"는 아이디어이다.
이 방식 때문에 모델 이름이 R-CNN(Regions with CNN features)이 되었다.

Supervised Pre-training & Fine-tuning
객체 탐지는 레이블링된 데이터가 부족하다는 고질적인 문제가 있었다.
이를 해결하기 위해, 먼저 거대 데이터셋(ImageNet)으로 모델을 사전 학습시킨 후,

적은 양의 탐지 데이터로 해당 도메인에 맞게 Fine-tuning하는 방식을 제안했다.

이 전략이 성능 향상의 결정적 요인이 되었다.

 


2. R-CNN

아래와 같은 흐름을 가지고 있다.

Region Proposals → Feature Extraction → Classification

 

Region Proposals

이는 객체가 존재할 가능성이 높은 영역을 대략 2000개를 뽑아내는 것이다.

이 논문에서는 selective search의 fast mode라는 방법을 사용했다.

 

Feature Extraction

CNN 아키텍처는 고정된 크기($227 \times 227$ 픽셀)의 입력을 요구하기 때문에,

저자들은 각기 다른 크기의 region proposal들을 이 크기에 맞추기 위해 Anisotropic warping을 사용했다.

Context Padding: 영역을 와핑하기 전, 원래 박스 주위에 $p=16$ 픽셀만큼의 주변 배경을 포함하도록 확장한 뒤 와핑했을 때 성능이 가장 좋았기 때문에 이 방법도 같이 사용한다.

이 $227 \times 227$의 이미지가 AlexNet(T-Net) 구조의 CNN을 통과한다.

5개의 컨볼루션 층과 2개의 FC층이 있다.

마지막 컨볼루션 층을 통과하면 $6\times 6\times 256$이 되고, FC층에서 4096차원으로 flatten된다.

 

 

Classification

추출된 2000개의 구역에 대해 4096차원의 특징 벡터($2000\times 4096$)를 입력받아 각 클래스에 대해 독립적으로 학습된 Linear SVM이 점수를 계산하여 객체를 분류한다.

$N$이 클래스개수일 때 SVM행렬은 $4096 \times N$이 된다.

소프트맥스가 아니기 때문에 확률은 아니고 점수(이 클래스라고 확신하는 정도)이다.

 

후처리 과정

특정 클래스에서 점수가 가장 높은 박스를 먼저 선택한다.

그 다음, 선택된 박스와 IoU(Intersection-over-Union) 임계값 이상으로 겹치는 다른 모든 박스들은 중복되었다고 생각해 제거한다.

 

실행속도

만약 $N$이 10만, 즉 클래스가 10만개여도 이를 저장하는데는 1.5GB만 필요하고 연산도 현대 CPU에서 약 10초 정도로 매우 빠르게 끝난다. 기존 방식은 134GB가 필요한것과 비교하면 엄청나게 메모리를 아낄 수 있다.


3. 학습

Supervised Pre-training

거대한 ILSVRC2012 분류 데이터셋을 사용해 CNN(AlexNet)을 먼저 학습시킨다.

 

Domain-specific Fine-tuning

입력을 227x227로 맞추고, detection에 특화시키기 위해 파인튜닝을 한다.

기존에 마지막 1000층 softmax를 없애고 $4096 \times (N+1)$크기를 갖는 softmax FC층을 하나 붙여 학습시킨다.

+1은 특별한 객체가 없이 배경만 있을 때 이를 분류하기 위한 것이다.

정답으로 주어진 박스와 넓이가 반 이상 겹칠 때 정답으로 취급해 학습시킨다.

학습률을 초기값의 1/10인 0.001로 설정하여 기존 지식을 보존한다.
각 미니배치(사이즈 128)는 긍정 샘플 32개와 배경 샘플 96개로 구성하여, 매우 희귀한 긍정 샘플에 편향되도록 샘플링한다.

 

Object category classifiers

CNN 학습이 끝난 후, 위의 $4096 \times (N+1)$층을 떼고, 선형 SVM을 붙인다.

추출된 특징을 바탕으로 각 클래스별 선형 SVM을 학습시킨다.

 

Q. 왜 잘 학습시킨 층을 갖다 버리는가?

이 버린 층의 역할은 해당 층 자체에 있는 것이 아니고, CNN의 몸통 부분들의 가중치를 학습시키는 목적이었기 때문에 무의미한 짓이 아니다.


샘플 정의 :
Positive: 오직 해당 클래스의 정답 박스만을 정답으로 사용힌다.
Negative: 해당 클래스의 모든 인스턴스와 겹치는 넓이 비율 < 0.3인 영역만 오답으로 사용힌다.
Ignore: 0.3 이상이지만 정답 박스가 아닌 영역은 무시한다.
Hard Negative Mining: 2000개의 제안은 너무 많아 메모리에 담을 수 없으므로, 정답은 배경인데 모델이 객체라고 강하게 얘기한 어려운 문제들(hard negative)을 찾아 기존 데이터 셋에 추가한다.

 


4. 결과들

PASCAL VOC 2010-12

PASCAL VOC라는 테스트 셋에서 53.7%의 mAP(mean Average Precision)를 달성했다.

전통적인 시스템들은 35%대로 엄청난 차이가 있었다.

당시 가장 높은 40%와도 큰 차이가 있다.

 

ILSVRC2013 detection

ILSVRC2013 탐지 대회 데이터셋에서도 이 R-CNN은 31.4% mAP로 그 시절 가장 높았던 OverFeat(24.3% mAP)를 넘겼다.

OverFeat는 슬라이딩 윈도우를 사용했지만 R-CNN은 Region proposals을 사용했다.

또 PASCAL VOC에서 사용했던 파라미터를 그대로 사용해서 이런 결과를 내므로써 범용성을 입증했다.

 

Q. 왜 두 대회에서 mAP가 이렇게 차이나는가?
VOC는 20개, ILSVRC2013은 200개의 클래스 분류를 하기 때문에 난이도가 높아져 mAP는 줄어든다.


5. 분석

Visualizing learned features : CNN 내부의 유닛들이 어떤 특징에 반응하는지 분석

1.방법: 특정 유닛의 활성화(activation) 값을 기준으로 약 1,000만 개의 region proposals을 정렬하고, 가장 높은 점수를 기록한 영역들을 표시한다.

2.결과: 5번째 컨볼루션 레이어($pool_5$)의 유닛들이 사람의 얼굴, 텍스트, 강아지 얼굴, 혹은 특정 질감과 같은 구체적인 개념에 반응한다는 것을 발견했다.(아래 그림)

 

Ablation studies : 어떤 레이어가 성능에 결정적인지 알아보기 위해 레이어별로 성능을 분석

아래 표를 보면 FT(fine tuning)을 했을 때와 안했을 때의 mAP차이를 볼 수 있다.

FT를 안했을 때는 오히려 fc6이후의 결과가 fc7의 결과보다 성능이 좋았다.

이는 CNN의 전체 파라미터 중 상당수가 쓸모없는 것이므로 성능 저하 없이 제거될 수 있다는 뜻이다.

반면, FT를 하면 mAP가 많이 상승한다.

특히 fc6와 fc7 레이어에서 성능 향상이 두드러지는데, 이는 conv5에서 배운 특징은 일

반적인 반면, 상위 레이어에서 도메인 특화된 분류 능력을 습득했음을 의미한다.

 

Network architectures : 사용하는 CNN의 구조가 성능에 미치는 영향을 분석

T-Net (AlexNet): 기본 모델로 사용되었으며, 빠르지만 성능이 상대적으로 낮다.

O-Net (VGG-16): 16층 레이어 구조인 VGGNet을 적용했을 때 mAP가 58.5%에서 66.0%로 크게 향상되었다.

다만, 연산 시간은 AlexNet보다 약 7배 더 소요되었다.

 

Detection error analysis : Hoiem 등의 분석 도구를 사용하여 R-CNN의 실패 원인을 분석

주요 결과: R-CNN의 가장 큰 에러 원인은 배경과의 혼동이 아니라, 물체의 위치를 부정확하게 잡는 Poor Localization임이 밝혀졌다.

이는 CNN 특징이 매우 구별력이 높기 때문에 발생하는 현상이다.

 

Bounding-box regression : 위의 에러 분석을 바탕으로 위치 오차를 줄이기 위한 기법

방법: $pool_5$ 특징을 입력으로 받아 제안된 영역의 좌표를 정답(ground-truth) 좌표로 보정해주는 선형 회귀 모델을 학습시켰다.

효과: 이 간단한 기법만으로도 mAP를 3~4%p 가량 추가로 향상시켰다.

 

Qualitative results : 데이터셋에서 랜덤하게 샘플링된 이미지들에 대한 실제 탐지 결과

특징: 큐레이팅되지 않은(un-curated) 결과들을 통해 모델이 실제 환경에서 어떻게 작동하는지 현실적인 결과를 제공한다.


6. Bounding-box regression

CNN이 물체 분류는 잘하지만, 박스를 정밀하게 치지 못하는 문제(Poor Localization)를 해결하는 기법이다.

위에서 모델들 이름에 BB가 붙어있는 것들은 이 기법이 적용된 모델들이다.

논문의 부록 C에 있는 내용이다.

 

Selective Search가 준 박스 $P = (P_x, P_y, P_w, P_h)$와 정답 박스 $G = (G_x, G_y, G_w, G_h)$가 있을 때, 우리는 $P$$G$로 이동시키는 Transformation을 찾는것 이 목적이다.

하지만 모델이 직접 좌표 $(G_x, G_y, G_w, G_h)$를 예측하게 만드는 것은 매우 어렵다.

이미지마다 물체의 크기와 위치가 제각각이기 때문이다.

그래서 R-CNN은 상대적인 변화량인 $t$를 예측하도록 설계되었다.

 

우리가 모델에게 학습시키고자 하는 변화량$t$은 다음과 같이 계산된다.

중심점의 상대적 이동량:

$$t_x = (G_x - P_x) / P_w$$

$$t_y = (G_y - P_y) / P_h$$

(현재 박스의 너비/높이에 대비해서 얼마나 옆으로/위아래로 이동해야 하는가?)

 

너비와 높이의 비율 변화:

$$t_w = \log(G_w / P_w)$$

$$t_h = \log(G_h / P_h)$$

($\log$를 취함으로써 크기 변화량을 선형적으로 다룰 수 있게 한다. $\exp$를 씌우면 다시 원래 비율이 된다.)

 

CNN feature → 선형 회귀층을 거쳐

$\hat{t}=(\hat{t}_x,\hat{t}_y,\hat{t}_w,\hat{t}_h$)

 

Loss는 L2 loss를 사용한다.

$L=\sum_i(\hat{t}_i−t_i)^2$

 

클래스별로 다른 값들을 학습한다.

이렇게 학습을 시키고, 테스트 할 때는 아래 방법으로 박스를 조정한다.

$\hat{G}_y = P_y + \hat{t}_y \times P_h$

$\hat{G}_w = P_w \times exp(\hat{t}_w)$

$\hat{G}_h = P_h \times exp(\hat{t}_h)$


<요약>

강력한 딥러닝(CNN)을 통한 특징 추출과 정교한 Region Proposal방식을 결합하여, 기존의 한계를 뛰어넘는 압도적인 객체 탐지 성능을 보여준 논문


핵심 포인트

1. Region Proposals

Selective Search 알고리즘을 사용하여 이미지 내에서 물체가 있을 법한 후보 영역 2,000개를 먼저 추출한다.

 

2. CNN Fine-tuning

ImageNet으로 사전 학습된 모델을 객체 탐지와 와핑된 이미지 크기에 맞게 재교육하여 특징 추출 능력을 극대화한다.

 

3. Linear SVM

CNN이 추출한 고차원 특징 벡터를 바탕으로, 각 클래스에 대해 학습된 독립적 이진 분류기를 통해 물체의 종류를 최종 판별한다.

 

4. BB Regression

CNN의 $pool_5$ 특징을 활용한 선형 회귀 모델로, 제안된 박스의 위치와 크기를 정답에 가깝게 미세하게 조정한다.