1. Introduction
최근 ConvNet은 이미지 classification과 detection에서 성능을 크게 향상시켰습니다. 하지만 object detection은 이미지 분류보다 복잡하기 때문에 이를 해결하기 위해 더 정교한 방법이 필요합니다. 이전 모델 R-CNN, SPPnet 등은 multi-stage로 이루어진 파이프라인으로, 속도가 느리고 구조적으로도 비효율적입니다. object detection이 어려운 이유는 크게 두 가지입니다.
- 처리해야할 후보 객체 위치가 매우 많다
- 후보들은 대략적인 위치 정보만 제공하므로 정확한 위치로 보정이 필요하다
이 두 문제를 해결하기 위해서는 속도, 정확도, 단순성 중 하나를 잃게 됩니다. 본 논문에서는 이를 단순화하고 객체 분류와 위치 보정을 동시에 학습하는 single-stage 알고리즘을 제안합니다. Fast R-CNN은 end-to-end로 학습 가능하고, VGG16 기반 R-CNN보다 9배 빠르게 학습할 수 있으며, PASCAL VOC 2012에서 66% mAP를 달성해 높은 정확도를 보였습니다.
2. Related Work
RCNN
이 모델은 deep ConvNet을 이용해 객체 제안을 분류하여 높은 정확도를 달성했지만 단점이 있었습니다.
multi-stage 구조 : object proposal으로 ConvNet fine-tunig -> convNet 특징을 이용해 SVM 학습 -> bbox regressor 학습
매우 큰 학습 비용 : VGG16 사용 시 GPU 기준 2.5일 소요, 수백 GB 저장 공간 필요
매우 느린 속도 : 각 object proposal 마다 ConvNet forward pass 수행. 연산 공유 X
SPPnet
이 모델은 연산 공유를 통해 RCNN을 가속화하기 위해 제안된 모델입니다. 전체 이미지를 한 번 convNet에 통과시켜 feature map을 생성하고, 각 object proposal 영역에 대해 공유된 feature map에서 특징을 추출합니다. SPP을 이용해 고정 크기로 변환합니다. 여러 크기의 풀링 결과를 이어 붙입니다. 하지만 이 과정 역시 multi-stage 구조이고, SPP layer 이전의 convolution layer를 fine-tuning할 수 없기 때문에 VGG16처럼 깊은 네트워크에서는 정확도가 제한됩니다. 또한 ROI가 서로 다른 이미지에서 오기 때문에 forward pass 시 항상 전체 이미지를 처리해야 하며, 학습 입력이 매우 커져 back-propagation이 비효율적입니다.
* SPP : spatial pyramid pooling
3. Architecture
이제 Fast R-CNN의 구조를 살펴보겠습니다.

Fast R-CNN의 입력은 전체 이미지 하나와 object proposals의 집합입니다. 먼저 전체 이미지를 여러 개의 Conv층과 max pooling층을 통해 처리하여 하나의 Conv feature map을 생성합니다. 그 다음, 각 region proposals에 대해 RoI pooling layer가 feature map에서 고정 길이의 특징 벡터(feature vector)를 추출합니다. 이렇게 얻어진 각 RoI의 feature vector는 fc들을 통과하여 두 개의 sibiling output layer로 분기됩니다.
- softmax : K개의 객체 클래스 + 1개 background에 대한 softmax 확률 -> "제안된 영역이 무엇인지" 분류
- bbox regressor : 각 클래스 별 bounding box 보정값 4개 (x, y w, h) -> "위치를 더 정확하게" 조정
ROI Pooling layer에 대해 더 자세히 다뤄보겠습니다. 이 레이어는 max pooling을 사용하여, 어떤 크기의 RoI든지 고정된 공간 크기 H × W를 가지는 feature map으로 변환합니다. 고정된 크기로 변환해야 하는 이유는 이후에 연결되는 fully connected layer가 입력 feature의 공간 크기가 일정하다는 가정 하에 동작하기 때문에, 크기가 제각각인 RoI를 그대로 처리할 수 없습니다.
여기서 중요한 점은 ROI의 실제 크기와는 무관합니다. 논문에서 ROI는 conv feature map 위의 직사각형 영역이며, (r, c) 좌측 상단 좌표, (h, w) 높이와 너비, 이와 같은 4개 값으로 정의됩니다.

동작 방식은 다음 순서로 동작합니다.
- ROI 영역을 H × W 개의 작은 격자(sub-window)로 나눕니다.
- 각 sub-window 안에서 maxpooling을 수행해 출력 feature map의 한 칸에 하나의 값만 남깁니다.
- 이 과정은 일반적인 max pooling과 동일하게 채널별로 독립적으로 수행됩니다.
여기서 중요한 점은, Fast R-CNN의 RoI pooling은 SPPnet의 spatial pyramid pooling의 특수한 경우라는 것입니다.
- SPPnet: 여러 pyramid level 사용 - 한 영역을 1x1, 2x2, 4x4 등 여러 해상도로 나눠서 pooling 후 요약
- Fast R-CNN: 단 하나의 pyramid level만 사용 - 7x7 한 해상도만 쓰는 경우 <- Conv feature map 자체가 이미 여러 층을 거쳐 다중 스케일 정보를 포함하고 있기 때문에 하나만 써도 가능
* 객체가 있을 법한 위치 후보 : Region Proposal
* x,y 위치 이동 / w, h 크기 변화
Fast RCNN은 ImageNet으로 사전 학습된 네트워크를 사용해 초기화합니다. 본 논문에서는 5개의 max pooling 층과 5~13개의 conv 층을 가진 3가지 네트워크를 사용했습니다. 그러나 다른 점은 아래와 같습니다.
- 마지막 max pooling -> ROI pooling 교체
- 분류기 구조를 softmax, bbox regressor 2개의 sibiling layer로 교체
- 이미지 리스트와 ROI 리스트 입력 2개로 변경
이 모델에서 SGD 미니배치는 N개의 이미지를 샘플링 후 각 이미지에서 R/N개의 ROI를 샘플링하여 구성됩니다. 이 방식이 같은 이미지에서 나온 ROI들은 forward / backward 연산을 공유하는 학습 방식이기 때문에 모든 네트워크 가중치를 back-propagation으로 학습할 수 있습니다.


여기서 i*(r,j)는 ROI r의 j번째 bin에서 최댓값을 만든 입력 인덱스입니다. 역전파 시 gradient가 위 식처럼 max로 선택된 위치에만 gradient가 전달되고 나머지 위치에는 0이 전달되는 겁니다. ROI pooling은 spatial warping처럼 값을 재샘플링하지 않고 기존 feature map 위에서 pooling만 수행합니다. 따라서 좌표 왜곡(distortion)이 없고 정보 손실이 적습니다.
Multi-task loss

Fast R-CNN은 두개의 출력 레이어를 가지므로 두 가지 정답이 주어지며, 이를 통해 분류 + 위치 보정을 동시에 학습하게 됩니다. 각 ROI에 대해 정의되는 손실 함수는 위와 같습니다.

먼저 정답 클래스에 대한 softmax log loss입니다. u가 1일때는 객체 클래스, u가 0일 때는 배경을 뜻합니다. 그래서 배경 ROI일 때는 bounding box 손실을 적용하지 않습니다. 논문에서는 λ = 1 사용하여 분류 손실과 회귀 손실의 균형을 조절했습니다.

bounding box regression loss는 위와 같이 정의됩니다. 여기서는 smooth L1 loss를 사용하게 됩니다.

작은 오차 구간에서는 L2처럼 부드럽게, 큰 오차 구간에서는 L1처럼 안정적으로 적용하여 이상치에 덜 민감하고 gradient explosion을 완화할 수 있습니다. 위 loss를 쓸 때는 학습률을 아주 조심스럽게 조절해야 합니다.
SGD hyper-parameters
분류용 fc layer는 가중치를 표준편차 0.01의 Gaussian을 사용하고, 회귀용 fc layer는 가중치를 표준편차 0.001로 사용했습니다. Bias는 모두 0으로 초기화했고, VOC07 / VOC12를 쓸 때 30k iteration, learning rate 0.0001로, 추가 10k iteration을 돌렸습니다. momentum 0.9, weight decay 0.0005로 진행했습니다.
Scale invariance
객체 크기 변화 문제를 해결하기 위해 두 가지 방법을 실험했습니다. 본 논문에서는 GPU 메모리 제한으로 작은 네트워크에서만 multi-scale 학습을 실험했습니다.
1 brute-force 방식(single-scale) : 학습과 테스트 모두에서 각 이미지를 미리 정해진 하나의 해상도로만 처리하여 네트워크가 데이터를 통해 직접 스케일 불변성을 학습하도록 맡깁니다.
2 이미지 파라미드 방식(multi-scale) : 이미지 피라미드를 생성해 서로 다른 해상도의 이미지를 함께 사용함으로써 네트워크에 근사적인 스케일 정규화 효과를 제공합니다. 이미지가 샘플링될 때마다 피라미드 스케일 중 하나를 무작위로 선택합니다. -> 데이터 증강 효과
4. Fast R-CNN Detection
Fast R-CNN 네트워크가 fine-tuning을 마치고 나면, 실제 detection은 거의 forward pass 한 번으로 이루어집니다.
입력으로 하나의 이미지나 여러 이미지 리스트와 R개의 proposal 영역을 받습니다. 각 RoI r에 대해 클래스 posterior 확률 분포와 각 클래스별 bounding box 보정값을 출력합니다. softmax 확률 자체를 detection score로 사용합니다.
Non-Maximum Suppression (NMS)
- 각 클래스별로 독립적으로 NMS 수행
- R-CNN에서 사용한 것과 동일한 알고리즘과 설정 사용
- 중복된 bounding box를 제거해 최종 검출 결과를 얻는다
Truncated SVD for faster detection
- fc layer 계산을 줄이고 더 빠른 검출을 위한 방법
- 기존 fc layer의 가중치 행렬을 SVD로 근사하여 파라미터 수를 줄이는 과정
- W ≈ UΣ_tV^T
- 압축 후 비선형 없이 두 개의 fc layer로 대체
- 검출 시간 30% 이상 감소, mAP 감소는 약 0.3%p
5. Result

VOC 2012 test 데이터셋 사용했을 때 그 당시 SOTA 수준으로 65.7% maP를 달성했고, 추가 데이터 사용 시 68.4%를 보였습니다. 속도를 크게 개선했는데도 정확도가 떨어지지 않고 향상되었다는 점에서 속도-정확도 trade-off를 깬 구조였습니다.
속도는 VGG16 기준 R-CNN 대비 약 9배 빨랐고, SPPnet 대비 3배 빨랐습니다. single-stage end-to-end 학습이고 계층적 미니배치 샘플링을 사용하여 Conv 연산 공유 + ROI pooling 구조 덕분에 속도를 개선했습니다.
6. Conclusion
Fast R-CNN은 RoI Pooling과 feature 공유를 통해 기존 R-CNN 계열의 비효율적인 구조를 크게 개선한 객체 검출 모델로서 중요한 의의를 가집니다. 특히 합성곱 연산을 한 번만 수행하면서도 여러 RoI를 처리할 수 있도록 설계하여, 학습과 추론 속도를 획기적으로 향상시키면서도 정확도를 유지하거나 오히려 개선한 점이 인상적이었습니다. 이는 객체 검출에서 속도와 정확도 간의 trade-off가 반드시 존재하지 않음을 보여준 사례라고 생각됩니다.
한편, Fast R-CNN은 여전히 외부 객체 제안 알고리즘에 의존하고 있어 완전한 end-to-end 구조라고 보기는 어렵고, RoI Pooling의 정수 양자화로 인한 위치 정밀도 한계도 존재합니다. 그럼에도 불구하고 본 연구는 이후 Faster R-CNN 및 Mask R-CNN으로 이어지는 two-stage 객체 검출 프레임워크의 기반을 확립했다는 점에서 매우 의미 있는 연구라고 평가할 수 있습니다.
https://arxiv.org/abs/1504.08083
Fast R-CNN
This paper proposes a Fast Region-based Convolutional Network method (Fast R-CNN) for object detection. Fast R-CNN builds on previous work to efficiently classify object proposals using deep convolutional networks. Compared to previous work, Fast R-CNN emp
arxiv.org