Rich feature hierarchies for accurate object detection and semantic segmentation
0. Summary
기본 정보 : ArXiv,2013.11.11 (CVPR 2014), Rich feature hierarchies for accurate object detection and semantic segmentation
연구 배경
PASCAL VOC 객체 검출 성능은 2010~2012년 동안 정체되어 있었다. 최고 성능 시스템들은 SIFT·HOG 같은 저수준 특징 여러 개와 고수준 문맥을 결합한 복잡한 앙상블이었고, 작은 변형으로 미세한 개선만 얻고 있었다. 2012년 Krizhevsky 등이 ImageNet 분류에서 CNN으로 큰 격차를 보이자, “ImageNet 분류 결과가 PASCAL VOC 검출로 얼마나 일반화되는가”가 핵심 논쟁이 되었다. 검출에는 분류에 없는 두 가지 난제가 있었다. 첫째, 위치 결정(localization) 이다. 회귀로 푸는 접근은 성능이 낮았고(동시기 Szegedy 등의 VOC 2007 mAP 30.5%), sliding window는 5개 conv 층을 가진 네트워크의 상위 유닛이 195×195 픽셀의 수용 영역과 32픽셀 stride를 가져 정밀한 위치 결정이 어려웠다. 둘째, 라벨된 검출 데이터의 부족으로 큰 CNN을 학습하기에 데이터가 모자랐다.
제안 방법
“recognition using regions” 패러다임 안에서 CNN을 쓰는 R-CNN(Regions with CNN features) 을 제안한다. 테스트 시 Selective Search로 약 2000개의 클래스 무관 region proposal을 뽑고, 각 영역을 16픽셀 문맥을 포함해 227×227로 affine warp한 뒤 AlexNet 구조 CNN으로 4096차원 특징을 추출하고, 클래스별 선형 SVM으로 점수를 매기고 클래스별 greedy NMS를 적용한다. 데이터 부족 문제는 ILSVRC2012 분류 데이터로 지도 사전학습한 뒤 PASCAL의 warp된 proposal로 도메인 특화 fine-tuning 하는 것으로 해결한다. 여기에 pool5 특징으로 박스를 보정하는 클래스별 bounding-box regression을 더하고, 같은 틀을 CPMC 영역 위의 semantic segmentation에도 적용한다.
발견 사실
VOC 2010 test에서 mAP 53.7%로 같은 Selective Search proposal을 쓰는 UVA 시스템(35.1%)과 당시 리더보드 1위 SegDPM(40.4%)을 크게 앞섰고, VOC 2012에서는 53.3%로 이전 최고 대비 30% 이상의 상대 개선을 보였다(Table 1). 200 클래스 ILSVRC2013 검출에서는 mAP 31.4%로 sliding-window CNN인 OverFeat(24.3%)를 큰 차이로 이겼다. Fine-tuning은 VOC 2007 mAP를 46.2%(fc6)에서 54.2%(fc7)로 8.0 포인트 올렸고, fine-tuning 없이는 fc7보다 fc6이 더 좋아 파라미터의 29%를 제거해도 성능이 떨어지지 않으며, 파라미터의 6%만 쓰는 pool5만으로도 44.2%가 나와 표현력의 대부분이 conv 층에서 온다는 것이 드러났다(Table 2). Bounding-box regression은 mAP를 3~4 포인트(54.2 → 58.5%) 올렸고, VGG-16(O-Net)으로 바꾸면 66.0%까지 오르지만 forward 시간이 약 7배 든다(Table 3). 오류 분석에서는 DPM과 달리 배경·타 클래스 혼동보다 부정확한 위치 결정이 지배적 오류였다. Semantic segmentation에서는 fine-tuning 없이 VOC 2011 test 평균 정확도 47.9%로 O2P(47.6%)와 대등했다(Table 6).
핵심 기여
- Region proposal + CNN 검출 패러다임 : bottom-up 영역 제안에 고용량 CNN을 적용해 물체를 위치 결정하고 분할하는 틀을 세워 PASCAL VOC 검출 성능을 한 번에 30% 이상 끌어올렸다. 이후 SPPnet, Fast/Faster R-CNN, Mask R-CNN으로 이어지는 two-stage 검출기 계보의 출발점이다.
- 지도 사전학습 → 도메인 특화 fine-tuning 패러다임 : 라벨이 부족할 때 대규모 보조 과제(ImageNet 분류)로 사전학습하고 소규모 목표 과제로 fine-tuning하는 것이 비지도 사전학습 대신 효과적임을 처음 보였고, 이것이 8 포인트의 mAP 개선을 설명한다.
- 철저한 분석과 보조 기법 : 층별 ablation, pool5 유닛 시각화, Hoiem 류 오류 분석을 통해 CNN 특징의 성질과 실패 양상을 밝히고, 그 결과로 bounding-box regression·hard negative mining·문맥 패딩 등 이후 표준이 되는 요소를 정립했다.
관련 개념
검출을 위한 CNN 위치 결정의 세 가지 선택지
Localization 문제는 이미지 분류와 검출의 가장 큰 차이입니다. 분류는 이미지 하나에 라벨 하나지만, 검출은 이미지 안의 (아마도 여러) 물체를 각각 찾아 박스를 그려야 합니다. 논문은 CNN으로 이를 푸는 세 가지 길을 검토합니다.
🧭 1. 세 가지 접근 비교 (Sec. 1)
| 접근 | 내용 | 논문의 판단 |
|---|---|---|
| 회귀(regression) | 박스 좌표를 직접 회귀 | 동시기 Szegedy 등은 VOC 2007 mAP 30.5%로 실용적이지 않음 |
| Sliding window | 모든 위치·크기에 CNN 적용 (얼굴·보행자 검출에서 20년 이상 사용) | 고해상도를 유지하려면 conv·pooling 2층 정도의 얕은 망만 가능. 5 conv 층 망은 수용 영역 195×195, stride 32로 정밀 위치 결정이 어려움 |
| Recognition using regions | 클래스 무관 영역 제안 → 각 영역 분류 | 검출(UVA)과 분할(CPMC)에서 성공한 패러다임. 채택 |
📦 2. Region proposal의 선택
Objectness, Selective Search, category-independent object proposals, CPMC, multi-scale combinatorial grouping 등 여러 방법이 있으며, R-CNN은 특정 방법에 종속되지 않습니다. 실험에서는 기존 검출 연구(UVA 등)와 통제된 비교를 위해 Selective Search(fast mode)를 써서 이미지당 약 2000개의 영역을 만듭니다. 논문은 Cireşan 등이 유사분열 세포 검출에 규칙적 정사각 crop을 CNN에 넣은 것도 region proposal의 특수 경우로 봅니다.
🔁 3. OverFeat와의 관계 (Sec. 4.6)
OverFeat는 sliding-window CNN 검출기로 ILSVRC2013 검출에서 R-CNN 이전 최고였습니다. 논문은 OverFeat를 R-CNN의 특수 경우로 볼 수 있다고 설명합니다. Selective Search 영역을 정사각 영역의 다중 스케일 피라미드로 바꾸고, 클래스별 박스 회귀기를 단일 회귀기로 바꾸면 두 시스템은 매우 비슷해집니다(학습 방식의 차이는 제외). 대신 OverFeat는 window를 이미지 수준에서 warp하지 않아 겹치는 window 간 계산을 공유할 수 있고, 이미지당 2초로 R-CNN보다 약 9배 빠릅니다. 이 속도 격차를 메우는 것이 후속 연구(SPPnet, Fast R-CNN)의 출발점이 됩니다.
💡 Key Takeaway R-CNN의 첫 번째 통찰은 “CNN을 어디에 적용할 것인가”에 대한 답입니다. 모든 위치가 아니라 bottom-up 영역 제안에 적용하면 깊은 망의 큰 수용 영역과 stride가 문제가 되지 않습니다.
R-CNN의 세 모듈과 테스트 시 동작
R-CNN은 세 모듈로 이루어집니다. (1) 클래스 무관 region proposal 생성, (2) 각 영역에서 고정 길이 특징 벡터를 뽑는 큰 CNN, (3) 클래스별 선형 SVM 집합입니다. 이 절은 각 모듈의 설계와 테스트 시 흐름을 다룹니다.
🖼️ 1. 특징 추출과 warp (Sec. 2.1, Appendix A)
- CNN은 Caffe로 구현한 Krizhevsky 등의 구조로, 평균을 뺀 227×227 RGB 입력을 5개 conv 층과 2개 fc 층에 통과시켜 4096차원 특징을 얻습니다.
- 입력 크기가 고정이므로 임의 모양의 영역을 변환해야 합니다. 논문은 가장 단순한 warp를 택합니다. 영역의 크기·종횡비와 무관하게 tight bounding box 안의 모든 픽셀을 필요한 크기로 비등방 스케일링합니다.
- Warp 전에 박스를 넓혀, warp된 크기에서 원래 박스 주위에 정확히 $p=16$ 픽셀의 문맥(context padding) 이 포함되게 합니다. 이미지 밖으로 나가는 부분은 이미지 평균으로 채웁니다(평균 차감 후 0이 됨).
| 변환 (Fig. 7) | 설명 |
|---|---|
| (B) tightest square with context | 가장 작은 정사각형으로 감싸 등방 스케일링 |
| (C) tightest square without context | (B)에서 원 영역 밖 내용 제거 |
| (D) warp | 비등방 스케일링 (채택) |
파일럿 실험에서 문맥 패딩 16픽셀을 포함한 warp가 대안들보다 3~5 mAP 포인트 높았습니다.
🚦 2. 테스트 시 검출 흐름 (Sec. 2.2)
- Selective Search(fast mode)로 약 2000개 영역 추출
- 각 영역을 warp해 CNN forward → 4096차원 특징
- 클래스마다 해당 SVM으로 모든 특징 벡터에 점수 부여
- 클래스별로 독립적으로 greedy NMS : 더 높은 점수로 선택된 영역과 IoU가 학습된 임계값을 넘는 영역 제거
⚡ 3. 실행 시간 분석
| 항목 | 값 |
|---|---|
| Proposal + 특징 계산 | GPU 13초/이미지, CPU 53초/이미지 (모든 클래스에 분할 상각) |
| 특징 행렬 | 2000×4096 |
| SVM 가중치 행렬 | 4096×N (N = 클래스 수) |
| 특징 차원 비교 | UVA 360k 대 R-CNN 4k (두 자릿수 차이) |
| 100k 클래스 선형 예측기 저장 | UVA 134GB 대 R-CNN 1.5GB |
효율의 근거는 두 가지입니다. 모든 CNN 파라미터가 클래스 간에 공유되고, 특징이 spatial pyramid + bag-of-visual-words보다 두 자릿수 저차원이라는 점입니다. 클래스별 계산은 특징과 SVM 가중치의 내적과 NMS뿐이며, 실제로는 이미지당 모든 내적이 하나의 행렬곱으로 묶입니다. 10만 클래스라도 행렬곱은 최신 다중 코어 CPU에서 10초면 끝나므로, 해싱 같은 근사 없이 수천 클래스로 확장할 수 있습니다. Dean 등의 DPM + 해싱 방식이 1만 개 방해 클래스를 넣을 때 VOC 2007 mAP 약 16%, 이미지당 5분이 걸리는 것과 대조됩니다.
💡 Key Takeaway R-CNN의 병목은 영역마다 CNN을 2000번 돌리는 특징 추출(13초)이지 분류가 아닙니다. 클래스 수에 대한 확장성은 좋고 이미지 수에 대한 확장성은 나쁘다는 구조가 이후 개선의 방향을 정합니다.
학습: 지도 사전학습, Fine-tuning, SVM
학습은 세 단계로 나뉩니다. ImageNet 분류로 CNN을 사전학습하고, 검출 도메인으로 fine-tuning한 뒤, 추출한 특징 위에 클래스별 SVM을 학습합니다. 각 단계의 positive/negative 정의가 다르다는 점이 이 논문의 미묘한 지점입니다.
📚 1. 지도 사전학습 (Supervised pre-training)
ILSVRC2012 분류 데이터셋(이미지 수준 라벨만 있음, 박스 라벨 없음)으로 CNN을 판별적으로 사전학습합니다. Caffe로 학습했으며, 학습 절차의 단순화 때문에 ILSVRC2012 분류 검증셋 top-1 오류가 Krizhevsky 등보다 2.2 포인트 높습니다. 당시 관례는 비지도 사전학습 후 지도 fine-tuning이었는데, 논문은 대규모 보조 데이터셋에서의 지도 사전학습이 효과적인 패러다임임을 보이는 것을 두 번째 주요 기여로 꼽습니다.
🔧 2. 도메인 특화 fine-tuning
| 항목 | 설정 |
|---|---|
| 데이터 | warp된 region proposal만 사용 |
| 구조 변경 | ImageNet 1000-way 분류 층을 무작위 초기화된 $(N+1)$-way 층으로 교체 (VOC $N=20$, ILSVRC2013 $N=200$, +1은 배경) |
| 라벨 | ground-truth 박스와 IoU $\ge 0.5$인 proposal은 그 클래스의 positive, 나머지는 negative |
| 학습률 | 0.001 (사전학습 초기 학습률의 1/10) → 초기화를 망가뜨리지 않으면서 진전 가능 |
| 미니배치 | 128 = positive 32 (모든 클래스에서 균일 샘플링) + 배경 96 |
Positive가 배경에 비해 극히 드물기 때문에 샘플링을 positive 쪽으로 편향시킵니다. v2 개정판에서 fine-tuning 학습률을 0.0001에서 0.001로 올린 것이 성능 향상의 한 원인이었습니다(Appendix G).
🎯 3. 클래스별 SVM과 hard negative mining
- 차를 검출하는 이진 분류기를 생각하면, 차를 꽉 감싼 영역은 positive, 차와 무관한 배경은 negative가 분명하지만 부분적으로 겹치는 영역의 라벨이 문제입니다. 논문은 IoU 임계값 0.3 미만을 negative로 정의합니다. 이 값은 검증셋에서 ${0,0.1,\dots,0.5}$ grid search로 골랐으며, UVA처럼 0.5로 두면 mAP가 5 포인트, 0으로 두면 4 포인트 떨어졌습니다.
- Positive는 각 클래스의 ground-truth 박스만입니다. 0.3 이상이지만 ground truth가 아닌 “회색 지대” proposal은 무시합니다.
- 학습 데이터가 메모리에 들어가지 않으므로 표준 hard negative mining을 씁니다. 빠르게 수렴하며 실제로는 전체 이미지 한 번 순회 후 mAP가 더 오르지 않습니다.
❓ 4. 왜 fine-tuning과 SVM의 라벨 정의가 다른가, 왜 SVM을 따로 쓰는가 (Appendix B)
- 역사적 이유 : 처음에는 ImageNet 사전학습 CNN 특징 위에 SVM만 학습했고, 그 설정에서 위 라벨 정의가 최적이었습니다. 이후 fine-tuning을 도입하며 같은 정의를 썼더니 결과가 훨씬 나빴습니다.
- 가설 : 차이는 본질적이지 않고 fine-tuning 데이터가 부족한 데서 옵니다. IoU 0.5~1의 “jittered” 예시를 positive로 넣으면 positive 수가 약 30배 늘어 전체 망을 fine-tuning할 때 과적합을 막습니다. 다만 이런 예시는 정밀한 위치 결정에는 최적이 아닙니다.
- softmax 대신 SVM인 이유 : fine-tuning된 망의 21-way softmax를 그대로 검출기로 쓰면 VOC 2007 mAP가 54.2%에서 50.9% 로 떨어졌습니다. fine-tuning의 positive 정의가 정밀 위치를 강조하지 않고, softmax는 hard negative가 아닌 무작위 negative로 학습되기 때문으로 추정합니다. 논문은 fine-tuning을 손보면 이 격차를 메워 SVM 없이 학습을 단순화할 수 있을 것이라고 전망하는데, 이것이 Fast R-CNN에서 실현됩니다.
💡 Key Takeaway “ImageNet으로 사전학습하고 목표 과제로 fine-tuning한다”는 지금의 상식이 이 논문에서 검출 성능 8 포인트라는 수치로 처음 확인되었습니다. 라벨 정의와 SVM 분리는 데이터 부족 시대의 흔적이며, 논문 스스로 임시방편임을 인정합니다.
실험 결과: PASCAL VOC와 ILSVRC2013
실험 프로토콜은 PASCAL VOC 관례를 따라 모든 설계 결정과 하이퍼파라미터를 VOC 2007에서 검증하고, VOC 2010-12 최종 결과는 VOC 2012 train으로 fine-tuning, VOC 2012 trainval로 SVM을 학습해 평가 서버에 (박스 회귀 유무) 두 번만 제출했습니다.
🏆 1. Table 1: VOC 2010 test mAP
| 방법 | mAP (%) | 비고 |
|---|---|---|
| DPM v5 | 33.4 | 문맥 재채점 사용 |
| UVA | 35.1 | 같은 Selective Search, 4단계 spatial pyramid + SIFT 계열, 히스토그램 교차 커널 SVM |
| Regionlets | 39.7 | Selective Search 사용 |
| SegDPM | 40.4 | 당시 리더보드 1위, DPM + 분할 + 문맥 |
| R-CNN | 50.2 | |
| R-CNN BB | 53.7 | bounding-box regression 포함 |
가장 직접적인 비교 대상은 같은 region proposal을 쓰는 UVA입니다. 다중 특징·비선형 커널 SVM 접근 대비 35.1%에서 53.7%로 오르면서 속도도 훨씬 빠릅니다. VOC 2011/12 test에서도 비슷한 53.3% 를 얻었습니다. 클래스별로 보면 bird(53.0), cat(69.9), dog(70.0)처럼 DPM이 어려워하던 변형 가능한 동물 클래스에서 개선 폭이 특히 큽니다.
🌐 2. ILSVRC2013 검출 (Sec. 2.5, Sec. 4)
PASCAL과 동일한 하이퍼파라미터로 200 클래스 ILSVRC2013 검출을 수행했습니다.
| 방법 | mAP (%) |
|---|---|
| UIUC-IFP / Delta / GPU_UCLA / SYSU_Vision / Toronto A | 1.0 / 6.1 / 9.8 / 10.5 / 11.5 |
| OverFeat (1) | 19.4 |
| NEC-MU | 20.9 |
| UvA-Euvision | 22.6 |
| OverFeat (2, 대회 후) | 24.3 |
| R-CNN BB | 31.4 |
경쟁 제출물 다수가 CNN을 썼음에도 결과가 크게 갈린다는 점에서, 논문은 CNN을 검출에 어떻게 적용하느냐에 상당한 미묘함이 있다고 지적합니다.
ILSVRC2013은 PASCAL보다 덜 균질해 데이터 사용 선택이 필요했습니다(Sec. 4). train(395,918장)은 분류 분포에서 온 것으로 완전 주석이 아니어서 hard negative mining에 쓸 수 없고, val(20,121)과 test(40,152)는 완전 주석입니다. 그래서 val을 클래스 균형을 맞춰 val1/val2로 나누고(최대 상대 불균형 약 11%), train에서는 클래스당 최대 $N$개 ground-truth 박스만 positive로 가져옵니다. 이미지는 폭 500으로 리사이즈해 Selective Search를 돌렸고, val에서 이미지당 평균 2403개 영역, IoU 0.5 기준 재현율 91.6%였습니다(PASCAL은 약 98%). Fine-tuning은 Tesla K20 한 장에서 50k 반복, 13시간이 걸렸습니다.
| SVM 학습셋 | fine-tuning 셋 | bbox 회귀 | 층 | val2 mAP |
|---|---|---|---|---|
| val1 | 없음 | 없음 | fc6 | 20.9 |
| val1+train1k | 없음 | 없음 | fc6 | 24.1 |
| val1+train1k | val1 | 없음 | fc7 | 26.5 |
| val1+train1k | val1+train1k | 없음 | fc7 | 29.7 |
| val1+train1k | val1+train1k | val1 | fc7 | 31.0 |
| val+train1k (test) | val1+train1k | val | fc7 | 31.4 |
val2의 mAP가 test와 거의 일치해 val2가 좋은 지표임을 확인했고, $N=500$과 $N=1000$ 사이에는 차이가 없었습니다(Table 4).
🧩 3. 네트워크 구조의 영향: Table 3 (VOC 2007 test)
| 구조 | mAP | + BB |
|---|---|---|
| T-Net (Krizhevsky 등, AlexNet) | 54.2 | 58.5 |
| O-Net (Simonyan & Zisserman, VGG-16) | 62.2 | 66.0 |
O-Net은 3×3 conv 13층과 max pooling 5개, fc 3층의 균질한 16층 구조입니다. Caffe Model Zoo의 공개 가중치를 받아 같은 프로토콜로 fine-tuning했고(GPU 메모리 때문에 미니배치 24), mAP가 58.5%에서 66.0%로 크게 오릅니다. 대신 forward pass가 약 7배 느립니다. 구조 선택이 R-CNN 성능에 큰 영향을 준다는 것이 v5 개정판에서 추가된 결과입니다.
💡 Key Takeaway R-CNN은 PASCAL, ILSVRC 두 벤치마크 모두에서 10 포인트 안팎의 격차로 선두에 섰습니다. 그리고 backbone을 바꾸는 것만으로 다시 8 포인트가 오른다는 결과는, 검출 성능이 분류 망의 발전에 직접 연동된다는 것을 처음 보여 준 사례입니다.
특징 분석: 시각화, 층별 ablation, 오류 분석
분석 절(Sec. 3) 은 이 논문이 단순한 성능 보고를 넘어서는 이유입니다. 네트워크가 무엇을 배웠는지, 어느 층이 중요한지, 어디서 틀리는지를 분리해 보입니다.
👁️ 1. pool5 유닛의 비모수적 시각화 (Sec. 3.1, Fig. 4)
첫 층 필터는 방향 에지와 보색을 포착한다고 직접 볼 수 있지만 그 다음 층은 어렵습니다. 논문은 Zeiler & Fergus의 deconvolution과 상보적인 단순한 방법을 제안합니다. 특정 유닛을 그 자체로 하나의 검출기처럼 취급해, 약 1000만 개의 held-out proposal에서 활성값을 계산하고 내림차순 정렬 후 NMS를 거쳐 상위 영역을 보여 줍니다. 평균을 내지 않으므로 유닛이 반응하는 여러 시각적 모드를 볼 수 있습니다.
- pool5는 5번째 conv 층의 max-pool 출력으로 $6\times6\times256=9216$차원이며, 각 유닛의 수용 영역은 227×227 입력에서 195×195입니다.
- 사람 얼굴, 글자, 개 얼굴과 점 배열, 빨간 덩어리, 창문이 있는 삼각 구조, 반사광 등에 반응하는 유닛이 관찰됩니다. 네트워크는 소수의 클래스 특화 특징과 모양·질감·색·재질의 분산 표현을 함께 학습하며, fc6이 이들의 조합을 모델링한다고 해석합니다.
📊 2. Table 2: VOC 2007 층별 ablation
| 설정 | mAP (%) |
|---|---|
| pool5 (fine-tuning 없음) | 44.2 |
| fc6 (fine-tuning 없음) | 46.2 |
| fc7 (fine-tuning 없음) | 44.7 |
| FT pool5 | 47.3 |
| FT fc6 | 53.1 |
| FT fc7 | 54.2 |
| FT fc7 + BB | 58.5 |
| DPM v5 (HOG) | 33.7 |
| DPM ST (HOG + sketch token) | 29.1 |
| DPM HSC (histograms of sparse codes) | 34.3 |
- Fine-tuning 없이 : fc7이 fc6보다 일반화가 나쁩니다. CNN 파라미터의 29%(약 1680만 개)를 제거해도 mAP가 떨어지지 않습니다. 더 놀랍게도 파라미터의 6%만 쓰는 pool5가 꽤 좋은 결과를 내어, 표현력의 대부분이 conv 층에서 온다는 것을 보여 줍니다. 이는 conv 층만으로 HOG처럼 임의 크기 이미지의 dense feature map을 계산해 sliding-window 검출기(DPM 포함)를 돌릴 수 있다는 가능성을 시사합니다.
- Fine-tuning 후 : mAP가 8.0 포인트 올라 54.2%가 됩니다. 개선 폭은 pool5보다 fc6·fc7에서 훨씬 크므로, ImageNet에서 배운 pool5 특징은 일반적이고 개선의 대부분은 그 위의 도메인 특화 비선형 분류기를 배우는 데서 옵니다.
- DPM 계열과 비교 : HOG만 쓰는 최신 DPM(33.7%) 대비 20 포인트 이상, 61%의 상대 개선입니다. 특징 학습을 더한 DPM ST, DPM HSC도 자체 baseline 대비 2.5·4 포인트 개선에 그칩니다.
🔬 3. Hoiem 류 오류 분석 (Sec. 3.4, Fig. 5·6)
- False positive 유형(Fig. 5) : Loc(IoU 0.1~0.5의 부정확한 위치 또는 중복), Sim(유사 클래스 혼동), Oth(비유사 클래스 혼동), BG(배경)로 나누면, DPM과 비교해 R-CNN의 오류는 배경·타 클래스 혼동보다 위치 오류가 훨씬 많습니다. CNN 특징이 HOG보다 판별력이 높다는 뜻이며, 느슨한 위치는 bottom-up proposal과 전체 이미지 분류 사전학습에서 배운 위치 불변성에서 온다고 봅니다. Bounding-box regression이 이 위치 오류를 상당 부분 고칩니다.
- 물체 특성 민감도(Fig. 6) : 가림, 잘림, 박스 크기, 종횡비, 시점, 부분 가시성 여섯 특성에 대해 최고·최저 부분집합의 정규화 AP를 보면, fine-tuning은 민감도(최대-최소 차)를 줄이지는 않지만 거의 모든 특성에서 최고·최저 부분집합을 함께 끌어올립니다. Warp 때문에 종횡비·크기만 개선될 것이라는 추측과 달리, 가림·잘림·시점에 대한 강건성도 함께 좋아집니다.
💡 Key Takeaway “무엇을 틀리는가”를 보면 다음에 무엇을 고쳐야 하는지가 보입니다. R-CNN은 인식이 아니라 위치가 문제였고, 그 진단이 곧바로 bounding-box regression이라는 처방으로 이어졌습니다.
Bounding-Box Regression
Bounding-box regression은 오류 분석의 직접적 결과로 도입된 단순한 선형 회귀 단계입니다. 클래스별 SVM으로 proposal에 점수를 매긴 뒤, pool5 특징으로 새 박스를 예측합니다. DPM의 박스 회귀와 정신은 같지만, DPM의 part 위치 기하 특징 대신 CNN 특징에서 회귀한다는 점이 다릅니다.
📐 1. 변환의 매개변수화 (Eq. 1–4)
Proposal $P=(P_x,P_y,P_w,P_h)$(중심 좌표, 폭, 높이)와 ground-truth $G=(G_x,G_y,G_w,G_h)$에 대해 네 함수 $d_x(P),d_y(P),d_w(P),d_h(P)$를 학습합니다. 앞의 둘은 스케일 불변 중심 이동, 뒤의 둘은 로그 공간의 폭·높이 변화를 나타냅니다.
\[\hat G_x=P_w\,d_x(P)+P_x,\qquad \hat G_y=P_h\,d_y(P)+P_y\] \[\hat G_w=P_w\exp\!\big(d_w(P)\big),\qquad \hat G_h=P_h\exp\!\big(d_h(P)\big)\]🧮 2. 학습: 능형 회귀 (Eq. 5–9)
각 $d_\star(P)$는 pool5 특징 $\phi_5(P)$의 선형 함수 $d_\star(P)=\mathbf{w}_\star^{T}\phi_5(P)$이며, 정규화된 최소제곱으로 학습합니다.
\[\mathbf{w}_\star=\arg\min_{\hat{\mathbf{w}}_\star}\sum_{i}^{N}\big(t^{i}_\star-\hat{\mathbf{w}}_\star^{T}\phi_5(P^{i})\big)^2+\lambda\lVert\hat{\mathbf{w}}_\star\rVert^2\]회귀 목표는
\[t_x=\frac{G_x-P_x}{P_w},\quad t_y=\frac{G_y-P_y}{P_h},\quad t_w=\log\frac{G_w}{P_w},\quad t_h=\log\frac{G_h}{P_h}\]이며 닫힌 형식으로 풀립니다.
⚠️ 3. 구현상의 두 가지 주의점
| 쟁점 | 설정 |
|---|---|
| 정규화 | $\lambda=1000$ (검증셋 기준). 정규화가 중요함 |
| 학습 쌍 선택 | $P$가 모든 ground truth에서 멀면 변환 학습이 무의미하므로, 최대 IoU가 0.6을 넘는 ground truth에만 배정하고 나머지는 버림 |
| 클래스별 | 클래스마다 별도의 회귀기 학습 |
| 반복 | 테스트 시 한 번만 예측. 새 박스를 다시 채점·회귀하는 반복은 개선 없음 |
효과는 Table 1·2에서 mAP 3~4 포인트(VOC 2007 54.2 → 58.5%, VOC 2010 50.2 → 53.7%)이며, ILSVRC2013에서는 29.7 → 31.0%로 상대 이득이 더 작았습니다.
💡 Key Takeaway 중심은 폭·높이로 정규화하고 크기는 로그로 매개변수화하는 이 식은, Fast/Faster R-CNN을 거쳐 지금의 anchor 기반 검출기까지 그대로 쓰이는 박스 회귀의 표준 형식이 되었습니다.
Semantic Segmentation으로의 확장
영역 분류는 semantic segmentation의 표준 기법이므로 R-CNN을 PASCAL VOC 분할 과제에 쉽게 적용할 수 있습니다. 당시 선두 시스템 O2P(second-order pooling) 와 직접 비교하기 위해 그들의 공개 프레임워크 안에서 작업했습니다. O2P는 CPMC로 이미지당 150개 영역을 만들고, 클래스마다 support vector regression(SVR)으로 영역 품질을 예측합니다. 학습셋은 Hariharan 등의 추가 주석으로 확장했고, VOC 2011 검증셋에서 교차검증했습니다.
🎨 1. 세 가지 특징 계산 전략 (Sec. 5)
모두 영역을 둘러싼 직사각 window를 227×227로 warp하는 것에서 시작합니다.
| 전략 | 내용 |
|---|---|
| full | 영역 모양을 무시하고 warp된 window 전체에서 특징 계산 (검출과 동일) |
| fg | 영역의 전경 마스크에서만 계산. 배경을 입력 평균으로 치환해 평균 차감 후 0이 되게 함 |
| full+fg | 두 특징을 이어 붙임 |
Full만 쓰면 박스는 비슷하지만 실제 겹침이 거의 없는 두 영역을 구분하지 못하므로 fg가 필요하고, 반대로 full은 문맥을 제공합니다.
📊 2. 결과: Table 5 (VOC 2011 val), Table 6 (VOC 2011 test)
| 방법 (val) | fc6 | fc7 |
|---|---|---|
| O2P | 46.4 | |
| full R-CNN | 43.0 | 42.5 |
| fg R-CNN | 43.7 | 42.1 |
| full+fg R-CNN | 47.9 | 45.7 |
- 모든 전략에서 fc6이 fc7보다 좋습니다.
- fg가 full을 약간 앞서 마스크된 영역 모양이 더 강한 신호임을 보이고, full+fg는 4.2 포인트 차이로 최고가 되어 fg가 있어도 full의 문맥이 매우 유익함을 보입니다.
- 20개 SVR 학습이 full+fg 특징에서는 단일 코어 1시간, O2P 특징에서는 10시간 이상 걸립니다.
VOC 2011 test에서 full+fg fc6은 평균 정확도 47.9% 로 R&P(40.8%)와 O2P(47.6%)를 넘어 21개 범주 중 11개에서 최고였습니다(합리적 오차 범위 안에서 O2P와 동률로 봅니다). 이 결과는 fine-tuning 없이 얻은 것이므로, fine-tuning하면 더 오를 여지가 있습니다.
💡 Key Takeaway 사전학습된 CNN 특징은 영역만 주어지면 검출이든 분할이든 그대로 통했습니다. “영역 기반 인식 + CNN 특징”이라는 조합의 범용성이 분할 실험으로 한 번 더 확인됩니다.
한계와 열린 방향
R-CNN의 결론은 고전적 컴퓨터 비전 도구(bottom-up 영역 제안)와 딥러닝(CNN)이 대립하는 노선이 아니라 자연스러운 동반자라는 것입니다. 그러나 논문 안에 이미 다음 세대가 풀어야 할 문제들이 명시되어 있습니다.
⚠️ 1. 논문이 스스로 밝힌 한계
- 속도 : 이미지당 GPU 13초, CPU 53초. 영역 2000개마다 CNN을 독립적으로 돌리며 겹치는 영역 간 계산을 공유하지 못합니다. OverFeat가 약 9배 빠른 이유가 바로 이 공유이며, 논문은 R-CNN 가속을 향후 과제로 남깁니다.
- 다단계 학습 : fine-tuning, SVM, bounding-box regression이 분리되어 있고 라벨 정의도 서로 다릅니다. 특징을 디스크에 저장해야 하며, softmax로 SVM을 대체하면 3.3 포인트 손실이 납니다. 논문은 fine-tuning을 손보면 SVM 없이 갈 수 있을 것이라 전망합니다.
- Warp의 왜곡 : 비등방 스케일링은 물체를 왜곡합니다. 대안(복제 패딩 등)의 전수 평가는 미래 과제입니다.
- Proposal 품질의 상한 : ILSVRC에서 Selective Search 재현율이 91.6%에 그쳐 proposal 단계에 큰 개선 여지가 있습니다.
- Fine-tuning의 위치 정밀도 : jittered positive로 학습된 망은 정밀한 위치 결정에는 최적이 아닙니다.
- 분할의 fine-tuning 부재 : segmentation 결과는 fine-tuning 없이 얻은 것입니다.
🔭 2. 후속 연구가 해결한 순서
| 한계 | 해결한 연구 | 방법 |
|---|---|---|
| 영역마다 CNN 반복 | SPPnet | 전체 이미지 conv 특징 한 번 계산 후 영역별 spatial pyramid pooling |
| 다단계 학습, 디스크 특징 저장 | Fast R-CNN | RoI pooling + softmax + 박스 회귀를 multi-task loss로 end-to-end 학습 |
| 외부 proposal 의존 | Faster R-CNN | RPN으로 proposal도 네트워크가 학습 |
| 단일 스케일 특징 | FPN | 다중 스케일 특징 피라미드 |
| 검출 + 분할 통합 | Mask R-CNN | RoIAlign과 mask head |
🧭 3. 데이터셋 중복 검증 (Appendix F)
보조 데이터셋으로 학습할 때 테스트셋과의 중복이 우려되므로 논문은 이를 정량화했습니다. Flickr 이미지 ID 일치로 VOC 2007 test 4952장 중 31장(0.63%), GIST 기술자 최근접 이웃으로 38장의 근중복을 찾았습니다. VOC 2012는 GIST 기준 1.5%입니다. 중복은 1% 안팎으로 작아 결과에 영향을 주지 않는다고 결론짓습니다. 이런 검증 자체가 “대규모 사전학습 데이터와 벤치마크의 오염”이라는 이후 중요한 문제를 일찍 다룬 사례입니다.
💡 Key Takeaway R-CNN은 완성된 시스템이 아니라 방향을 정한 논문입니다. 느리고 번거롭지만, 그 느림과 번거로움이 어디서 오는지를 논문이 정확히 적어 두었기 때문에 이후 3년 동안 SPPnet → Fast → Faster → Mask R-CNN으로 한 단계씩 해소될 수 있었습니다.