2021. 2. 24. 15:04ㆍComputer Vision
Fast R-CNN
Ross Girshick
Microsoft Research
Abstract
이 논문은 물체 감지를 위한 Fast Region 기반 Convolutional Network 방법 (Fast R-CNN)을 제안합니다.
Fast R-CNN은 이전 작업을 기반으로 딥 컨볼루션 네트워크를 사용하여 객체 제안을 효율적으로 분류합니다.
이전 작업과 비교하여 Fast R-CNN은 몇 가지 혁신을 사용하여 학습 및 테스트 속도를 향상시키는 동시에 탐지 정확도를 높입니다.
Fast R-CNN은 매우 깊은 VGG16 네트워크를 R-CNN보다 9배 더 빠르게 훈련시키고, 테스트 시간에 213배 더 빠르며, PASCAL VOC 2012에서 더 높은 mAP를 달성합니다.
SPPnet에 비해 Fast R-CNN은 VGG16을 3배 더 빠르게 훈련시키고 10배 더 빠르게 테스트하며 더 정확합니다.
1. Introduction
최근에 Deep ConvNets [14, 16]은 이미지 분류 [14]와 객체 감지 [9, 19] 정확도를 크게 향상 시켰습니다.
이미지 분류에 비해 물체 감지는 더 복잡한 해결 방법이 필요한 더 어려운 작업입니다.
이러한 복잡성으로 인해 현재의 접근 방식 (예 : [9, 11, 19, 25])은 느리고 우아하지 않은 다단계 파이프 라인에서 모델을 학습시킵니다.
탐지에는 개체의 정확한 위치 파악이 필요하므로 두 가지 주요 문제가 발생하기 때문에 복잡성이 발생합니다.
첫째, 수많은 후보 객체 위치 (종종 "제안"이라고 함)를 처리해야 합니다.
둘째, 이러한 후보는 정확한 현지화를 달성하기 위해 수정해야하는 대략적인 현지화만 제공합니다.
이러한 문제에 대한 솔루션은 종종 속도, 정확성 또는 단순성을 손상시킵니다.
이 논문에서는 최첨단 ConvNet 기반 객체 감지기 [9, 11]에 대한 학습 과정을 간소화합니다.
객체 제안을 분류하고 공간 위치를 구체화하는 방법을 공동으로 학습하는 단일 단계 훈련 알고리즘을 제안합니다.
그 결과 매우 깊은 탐지 네트워크 (VGG16[20])를 R-CNN[9]보다 9배, SPPnet[11]보다 3배 빠르게 훈련 할 수 있습니다.
런타임시 감지 네트워크는 0.3초 (객체 제안 시간 제외)에서 이미지를 처리하는 동시에 PASCAL VOC 2012 [7]에서 mAP 66% (R-CNN의 경우 62%)에서 최고의 정확도를 달성합니다.
1.1. R-CNN and SPPnet
지역 기반 Convolutional Network 방법 (RCNN)[9]은 심층 ConvNet을 사용하여 객체 제안을 분류함으로써 뛰어난 객체 감지 정확도를 달성합니다.
그러나 R-CNN에는 주목할만한 단점이 있습니다.
1. 학습은 다단계 파이프 라인입니다.
R-CNN은 먼저 로그 손실을 사용하여 객체 제안에서 ConvNet을 미세 조정합니다.
그런 다음 SVM을 ConvNet 기능에 맞춥니 다.
이러한 SVM은 미세 조정을 통해 학습된 소프트 맥스 분류기를 대체하는 객체 감지기 역할을 합니다.
세 번째 훈련 단계에서는 경계 상자 회귀자가 학습됩니다.
2. 학습은 공간과 시간에 비싸다.
SVM 및 경계 상자 회귀 훈련의 경우 각 이미지의 각 객체 제안에서 특징이 추출되어 디스크에 기록됩니다.
VGG16과 같은 매우 딥 네트워크에서 이 프로세스는 VOC07 trainval 세트의 5k이미지에 대해 2.5GPU 일이 걸립니다.
이러한 기능에는 수백 기가 바이트의 스토리지가 필요합니다.
3. 물체 감지가 느립니다.
테스트 시간에 각 테스트 이미지의 각 개체 제안에서 기능이 추출됩니다.
VGG16으로 감지하면 이미지 당 47초가 걸립니다(GPU에서).
R-CNN은 계산을 공유하지 않고 각 객체 제안에 대해 ConvNet 포워드 패스를 수행하기 때문에 느립니다.
공간 피라미드 풀링 네트워크 (SPPnets)[11]는 계산을 공유하여 R-CNN의 속도를 높이기 위해 제안되었습니다.
SPPnet 방법은 전체 입력 이미지에 대한 convolutional feature map을 계산한 다음 공유된 feature map에서 추출된 feature vector를 사용하여 각 객체 제안을 분류합니다.
제안 내의 feature map 부분을 고정 크기 출력 (예 : 6x6)으로 최대 풀링하여 제안에 대한 기능을 추출합니다.
여러 출력 크기가 풀링된 다음 공간 피라미드 풀링에서처럼 연결됩니다 [15].
SPPnet은 테스트 시간에 R-CNN을 10배에서 100배까지 가속화합니다.
더 빠른 제안 기능 추출로 인해 훈련 시간도 3배 단축됩니다.
SPPnet에는 또한 눈에 띄는 단점이 있습니다.
R-CNN과 마찬가지로 훈련은 기능 추출, 로그 손실이 있는 네트워크 미세 조정, SVM 훈련, 마지막으로 경계 상자 회귀 자 피팅을 포함하는 다단계 파이프 라인입니다.
기능도 디스크에 기록됩니다.
그러나 R-CNN과 달리 [11]에서 제안한 미세 조정 알고리즘은 공간 피라미드 풀링에 선행하는 컨볼루션 레이어를 업데이트 할 수 없습니다.
당연히 이 제한(고정 컨볼루션 레이어)은 매우 깊은 네트워크의 정확도를 제한합니다.
1.2. Contributions
R-CNN 및 SPPnet의 단점을 수정하고 속도와 정확도를 향상시키는 새로운 학습 알고리즘을 제안합니다.
훈련과 테스트가 비교적 빠르기 때문에 이 방법을 Fast R-CNN이라고합니다.
Fast R-CNN 방법에는 몇 가지 장점이 있습니다.
1. R-CNN, SPPnet보다 높은 검출 품질 (mAP)
2. 학습은 다중 작업 손실을 사용하는 단일 단계입니다.
3. 훈련은 모든 네트워크 계층을 업데이트 할 수 있습니다.
4. 기능 캐싱에 디스크 스토리지가 필요하지 않습니다.
2. Fast R-CNN architecture and training
그림 1은 Fast R-CNN 아키텍처를 보여줍니다.
Fast R-CNN 네트워크는 전체 이미지와 일련의 객체 제안을 입력으로받습니다.
네트워크는 먼저 여러 컨볼루션 (conv) 및 최대 풀링 레이어를 사용하여 전체 이미지를 처리하여 conv 피처 맵을 생성합니다.
그런 다음 각 객체 제안에 대해 RoI (Region of Interest) 풀링 계층이 피처 맵에서 고정 길이 피처 벡터를 추출합니다.
각 피처 벡터는 최종적으로 두 개의 형제 출력 레이어로 분기되는 일련의 완전 연결 (fc) 레이어에 공급됩니다: 하나는 K 객체 클래스에 대한 소프트 맥스 확률 추정값과 포괄적인 "배경" 클래스를 생성하는 레이어와 각각의 K 개체 클래스에 대한 값을 갖는 4개의 실수를 출력하는 레이어입니다.
4개 값의 각 세트는 K클래스 중 하나에 대해 정제된 경계 상자 위치를 인코딩합니다.
2.1. The RoI pooling layer
RoI 풀링 계층은 최대 풀링을 사용하여 유효한 관심 영역 내부의 특징을 고정된 공간 범위가 HxW (예 : 7x7)인 작은 피처 맵으로 변환합니다. 여기서 H와 W는 특정 RoI 항목과 독립적인 계층 하이퍼 매개 변수입니다.
이 논문에서 RoI는 conv feature map에 대한 직사각형 창입니다.
각 RoI는 왼쪽 상단 모서리 (r, c)와 높이 및 너비 (h, w)를 지정하는 4개의 튜플 (r, c, h, w)로 정의됩니다.
RoI max 풀링은 h x w RoI 창을 대략적인 크기 h/H x w/W의 하위 창의 H x W 그리드로 나눈 다음 각 하위 창의 값을 해당 출력 그리드 셀에 최대 풀링하는 방식으로 작동합니다.
풀링은 표준 최대 풀링에서와 같이 각 피처 맵 채널에 독립적으로 적용됩니다.
RoI 레이어는 피라미드 수준이 하나뿐인 SPPnets[11]에서 사용되는 공간 피라미드 풀링 레이어의 특수한 경우입니다.
[11]에 주어진 풀링 하위 창 계산을 사용합니다.
2.2. Initializing from pre-trained networks
우리는 각각 5개의 최대 풀링 레이어와 5개에서 13개 사이의 전환 레이어가 있는 3개의 사전 훈련된 ImageNet [4] 네트워크로 실험합니다 (네트워크 세부 정보는 섹션 4.1 참조).
사전 훈련된 네트워크가 Fast R-CNN 네트워크를 초기화 할 때 세 가지 변환을 거칩니다.
첫째, 마지막 최대 풀링 계층은 H 및 W를 네트워크의 첫 번째 완전 연결 계층과 호환되도록 설정하여 구성된 RoI 풀링 계층으로 대체됩니다 (예 : VGG16의 경우 H=W=7).
둘째, 네트워크의 마지막 완전 연결 계층과 소프트 맥스 (1000-way ImageNet 분류를 위해 훈련됨)는 앞서 설명한 두 형제 계층 (K+1 범주 및 범주 별 경계 상자 회귀자에 대한 완전 연결 계층 및 소프트 맥스)으로 대체됩니다).
셋째, 네트워크는 이미지 목록과 해당 이미지의 RoI 목록이라는 두 가지 데이터 입력을 받도록 수정됩니다.
2.3. Fine-tuning for detection
역전파로 모든 네트워크 가중치를 훈련하는 것은 Fast R-CNN의 중요한 기능입니다.
먼저 SPPnet이 공간 피라미드 풀링 계층 아래의 가중치를 업데이트 할 수 없는 이유를 설명하겠습니다.
근본 원인은 각 훈련 샘플(예 : RoI)이 다른 이미지에서 나올 때 SPP 계층을 통한 역전파가 매우 비효율적이라는 것입니다. 이는 정확히 R-CNN 및 SPPnet 네트워크가 훈련되는 방식입니다.
비효율성은 각 RoI가 종종 전체 입력 이미지에 걸쳐 매우 큰 수용 필드를 가질 수 있다는 사실에서 기인합니다.
포워드 패스는 전체 수용 필드를 처리해야 하므로 훈련 입력이 큽니다 (종종 전체 이미지).
훈련 중 특성 공유를 활용하는 보다 효율적인 훈련 방법을 제안합니다.
Fast R-CNN 훈련에서 확률적 경사 하강 법 (SGD) 미니 배치는 먼저 N개의 이미지를 샘플링한 다음 각 이미지에서 R/N RoI를 샘플링하여 계층적으로 샘플링됩니다.
비판적으로 동일한 이미지의 RoI는 정방향 및 역방향 패스에서 계산과 메모리를 공유합니다.
N을 작게 만들면 미니 배치 계산이 감소합니다.
예를 들어 N=2 및 R=128을 사용하는 경우 제안된 훈련 방식은 128개의 서로 다른 이미지에서 하나의 RoI를 샘플링하는 것보다 약 64배 빠릅니다 (예, R-CNN 및 SPPnet 전략).
이 전략에 대한 한 가지 우려는 동일한 이미지의 RoI가 상관 관계가 있기 때문에 학습 수렴 속도가 느려질 수 있다는 것입니다.
이 문제는 실질적인 문제로 보이지 않으며 R-CNN보다 더 적은 SGD 반복을 사용하여 N=2 및 R=128에서 좋은 결과를 얻습니다.
계층적 샘플링 외에도 Fast R-CNN은 세 가지 개별 단계에서 소프트 맥스 분류기, SVM 및 회귀자를 훈련하는 대신 소프트 맥스 분류기와 경계 상자 회귀자를 공동으로 최적화하는 하나의 미세 조정 단계가 있는 간소화된 훈련 프로세스를 사용합니다[9 , 11].
이 절차의 구성 요소 (손실, 미니 배치 샘플링 전략, RoI 풀링 레이어를 통한 역전파 및 SGD 하이퍼 매개 변수)는 아래에 설명되어 있습니다.
Multi-task loss.
Fast R-CNN 네트워크에는 두 개의 형제 출력 계층이 있습니다.
첫 번째는 K+1 범주에 대해 이산 확률 분포 (RoI 당), p=(p0, ..., pK)를 출력합니다.
평소와 같이 p는 완전 연결 계층의 K+1 출력에 대한 소프트 맥스로 계산됩니다.
두 번째 형제 계층은 k로 인덱싱된 K 객체 클래스 각각에 대해 경계 상자 회귀 오프셋 t^k = (tx^k, ty^k, tw^k, th^k)를 출력합니다.
우리는 [9]에 주어진 t^k에 대한 매개 변수화를 사용하는데, 여기서 t^k는 객체 제안에 상대적인 스케일 불변 변환 및 로그 공간 높이/폭 이동을 지정합니다.
각 훈련 RoI는 ground-truth class u와 ground-truth bounding-box regression target v로 표시됩니다.
분류 및 경계 상자 회귀를 위해 공동 학습하기 위해 레이블이 지정된 각 RoI에서 다중 작업 손실 L을 사용합니다:
여기서
는 진정한 클래스 u에 대한 로그 손실입니다.
두 번째 작업 손실인 Lloc은 클래스 u, v=(vx, vy, vw, vh) 및 예측된 튜플 t^u=(tx^u, ty^u, tw^u, th^u)에 대한 실제 경계 상자 회귀 대상 튜플에 대해 정의됩니다.
Iverson 브래킷 표시기 함수 [u≥1]는 u≥1 일 때 1로 평가되고 그렇지 않으면 0으로 평가됩니다.
관례적으로 포괄 백그라운드 클래스는 u=0으로 표시됩니다.
배경 RoI의 경우 실측 경계 상자에 대한 개념이 없으므로 Lloc이 무시됩니다.
경계 상자 회귀의 경우
손실을 사용합니다.
는 R-CNN 및 SPPnet에서 사용되는 L2 손실보다 특이치에 덜 민감한 강력한 L1 손실입니다.
회귀 목표가 제한되지 않은 경우 L2 손실이 있는 훈련은 급증하는 기울기를 방지하기 위해 학습률을 신중하게 조정해야 할 수 있습니다.
식 3은 이 감도를 제거합니다.
식 1의 하이퍼 파라미터 λ는 두 작업 손실 간의 균형을 제어합니다.
실측 회귀 목표 vi를 평균과 단위 분산이 0이 되도록 정규화합니다.
모든 실험은 λ=1을 사용합니다.
우리는 [6] 관련 손실을 사용하여 분류 불가지론적 객체 제안 네트워크를 훈련 시킨다는 점에 주목합니다.
우리의 접근 방식과는 달리, [6]은 지역화와 분류를 분리하는 두 네트워크 시스템을 옹호합니다.
OverFeat [19], R-CNN [9] 및 SPPnet [11]도 분류기 및 경계 상자 로컬 라이저를 훈련하지만, 이러한 방법은 단계적 훈련을 사용합니다. 이는 Fast R-CNN (5.1 절)에 적합하지 않다는 것을 보여줍니다.
Mini-batch sampling.
미세 조정 중에 각 SGD 미니 배치는 무작위로 균일하게 선택된 N=2 이미지로 구성됩니다 (일반적인 관행과 마찬가지로 실제로 데이터 세트의 순열을 반복합니다).
R=128 크기의 미니 배치를 사용하여 각 이미지에서 64 RoI를 샘플링합니다.
[9]에서와 같이 우리는 최소 0.5의 groundtruth 경계 상자와 겹치는 IoU (Intersection Over Union)가 있는 객체 제안에서 RoI의 25%를 가져옵니다.
이러한 RoI는 전경 객체 클래스 (예 : u≥1)로 레이블이 지정된 예제로 구성됩니다.
나머지 RoI는 [11]에 따라 간격 [0.1, 0.5)에서 Ground Truth가있는 최대 IoU를 갖는 객체 제안에서 샘플링됩니다.
이들은 배경 예제이며 u=0으로 레이블이 지정됩니다.
0.1의 낮은 임계값은 하드 예제 마이닝의 휴리스틱 역할을 하는 것으로 보입니다[8].
훈련 중에 이미지는 확률 0.5로 수평으로 뒤집힙니다.
다른 데이터 증가는 사용되지 않습니다.
Back-propagation through RoI pooling layers.
역전파는 RoI 풀링 계층을 통해 파생물을 라우팅합니다.
명확성을 위해 미니 배치 (N=1) 당 하나의 이미지만 가정하지만 N>1로의 확장은 간단합니다. 왜냐하면 순방향 패스는 모든 이미지를 독립적으로 처리하기 때문입니다.
xi∈R을 RoI 풀링 레이어에 대한 i번째 활성화 입력으로, yrj를 r번째 RoI에서 레이어의 j번째 출력으로 설정합니다.
RoI 풀링 계층은 yrj = xi*(r, j)를 계산합니다. 여기서 i*(r, j)=argmax i'∈R(r, j) xi'입니다.
R(r, j)는 출력 단위 yrj 최대 풀링하는 하위 창에 있는 입력의 인덱스 집합입니다.
하나의 xi가 여러 다른 출력 yrj에 할당될 수 있습니다.
RoI 풀링 계층의 backwards 함수는 argmax 스위치를 따라 각 입력 변수 xi에 대한 손실 함수의 편미분을 계산합니다:
즉, 각 미니 배치 RoI r 및 각 풀링 출력 단위 yrj에 대해 i가 최대 풀링에 의해 yrj에 대해 선택된 argmax이면 편미분 ∂L/∂yrj가 누적됩니다.
역전파에서 편도 함수 ∂L/∂yrj는 이미 RoI 풀링 레이어 위에있는 레이어의 backwards 함수에 의해 계산됩니다.
SGD hyper-parameters.
소프트 맥스 분류 및 경계 상자 회귀에 사용되는 완전 연결 계층은 각각 표준 편차가 0.01 및 0.001인 0 평균 가우스 분포에서 초기화됩니다.
편향은 0으로 초기화됩니다.
모든 계층은 가중치에 대해 1의 계층 당 학습률을 사용하고 편향에 대해 2를 사용하며 전역 학습률은 0.001입니다.
VOC07 또는 VOC12 trainval에 대한 교육을 수행할 때 30k 미니 배치 반복을 위해 SGD를 실행한 다음 학습률을 0.0001로 낮추고 또 다른 10,000회 반복을 위해 학습합니다.
더 큰 데이터 세트에 대해 학습할 때 나중에 설명하는 것처럼 더 많은 반복을 위해 SGD를 실행합니다.
0.9의 모멘텀과 0.0005의 매개 변수 감쇠(가중치 및 편향)가 사용됩니다.
2.4. Scale invariance
스케일 불변 물체 감지를 달성하는 두 가지 방법을 탐구합니다. (1) "brute-force" 학습을 통한 방법과 (2) 이미지 피라미드를 사용하는 방법입니다.
이러한 전략은 [11]의 두 가지 접근 방식을 따릅니다.
brute-force 방식에서 각 이미지는 학습 및 테스트 중에 미리 정의된 픽셀 크기로 처리됩니다.
네트워크는 훈련 데이터에서 스케일 불변 객체 감지를 직접 학습해야합니다.
반면에 다중 스케일 접근 방식은 이미지 피라미드를 통해 네트워크에 대략적인 스케일 불변성을 제공합니다.
테스트 시간에 이미지 피라미드는 각 객체 제안을 대략적으로 스케일 정규화하는 데 사용됩니다.
다중 스케일 훈련 동안, 우리는 데이터 증가의 한 형태로 [11]에 따라 이미지가 샘플링될 때마다 피라미드 스케일을 무작위로 샘플링합니다.
GPU 메모리 제한으로 인해 소규모 네트워크에 대해서만 다중 규모 훈련을 실험합니다.
3. Fast R-CNN detection
Fast R-CNN 네트워크가 미세 조정되면 탐지는 순방향 패스를 실행하는 것보다 약간 더 많은 양입니다 (객체 제안이 미리 계산되었다고 가정).
네트워크는 입력으로 이미지 (또는 이미지 목록으로 인코딩된 이미지 피라미드)와 점수를 매길 R 개체 제안 목록을 사용합니다.
테스트 시점에서 R은 일반적으로 약 2000이지만 더 큰 경우 (≒ 45k)를 고려합니다.
이미지 피라미드를 사용할 때 각 RoI는 스케일에 할당되어 스케일링된 RoI가 영역에서 224^2 픽셀에 가장 가깝습니다[11].
각 테스트 RoI r에 대해 순방향 패스는 클래스 사후 확률 분포 p 및 r에 대한 예측된 경계 상자 오프셋 세트를 출력합니다 (각 K 클래스는 고유한 경계 상자 예측을 가집니다).
추정 확률 Pr(class = k | r)≡pk를 사용하여 각 객체 클래스 k에 대해 r에 탐지 신뢰도를 할당합니다.
그런 다음 R-CNN[9]의 알고리즘과 설정을 사용하여 각 클래스에 대해 독립적으로 비 최대 억제를 수행합니다.
3.1. Truncated SVD for faster detection
전체 이미지 분류의 경우 완전 연결 계층을 계산하는 데 소요되는 시간은 conv 계층에 비해 적습니다.
반대로, 탐지를 위해 처리할 RoI의 수가 많고 순방향 통과 시간의 거의 절반이 완전히 연결된 계층을 계산하는 데 소비됩니다 (그림 2 참조).
완전히 연결된 큰 레이어는 잘린 SVD로 압축하여 쉽게 가속화 할 수 있습니다 [5, 23].
이 기술에서 u x v 가중치 행렬 W에 의해 매개 변수화 된 레이어는 SVD를 사용하여 대략
로 분해됩니다.
이 분해에서 U는 W의 첫 번째 t개의 왼쪽 특이값 벡터를 포함하는 u x t 행렬이고, ∑t는 W의 상위 t개의 특이값을 포함하는 t x t 대각 행렬이고, V는 W의 첫 번째 t개의 오른쪽 특이값 벡터를 포함하는 v x t 행렬입니다.
잘린 SVD는 매개 변수 수를 uv에서 t(u+v)로 줄이며, t가 min(u, v)보다 훨씬 작으면 중요할 수 있습니다.
네트워크를 압축하기 위해 W에 해당하는 단일 완전 연결 계층은 두 계층간에 비선형성 없이 완전 연결 계층 2개로 대체됩니다.
첫 번째 레이어는 가중치 행렬 ∑tV^T(편향 없음)를 사용하고 두 번째 레이어는 U(원래 편향이 W와 연관됨)를 사용합니다.
이 간단한 압축 방법은 RoI 수가 많을 때 좋은 속도 향상을 제공합니다.
4. Main results
세 가지 주요 결과가 이 논문의 기여를 뒷받침합니다.
1. VOC07, 2010 및 2012에 대한 최신 mAP
2. R-CNN, SPPnet에 비해 빠른 교육 및 테스트
3. VGG16에서 conv 레이어를 미세 조정하여 mAP 향상
4.1. Experimental setup
우리의 실험은 온라인에서 사용할 수 있는 세 가지 사전 훈련된 ImageNet 모델을 사용합니다.
첫 번째는 R-CNN[9]의 CaffeNet (본질적으로 AlexNet [14])입니다.
이 CaffeNet을 "작은"모델 S라고도합니다.
두 번째 네트워크는 [3]의 VGG_CNN_M_1024로 S와 깊이는 같지만 더 넓습니다.
이 네트워크 모델을 "중간"이라고합니다.
마지막 네트워크는 [20]의 매우 깊은 VGG16 모델입니다.
이 모델이 가장 크기 때문에 모델 L이라고 부릅니다.
이 섹션에서 모든 실험은 단일 규모 학습 및 테스트를 사용합니다 (s=600; 자세한 내용은 섹션 5.2 참조).
4.2. VOC 2010 and 2012 results
이러한 데이터 세트에서 공개 리더 보드(표 2, 표 3)의 comp4 (외부 데이터) 트랙에 있는 상위 메서드와 Fast R-CNN (FRCN, 줄여서)을 비교합니다.
NUS_NIN_c2000 및 BabyLearning 방법의 경우 현재 관련 출판물이 없으며 사용된 ConvNet 아키텍처에 대한 정확한 정보를 찾을 수 없습니다: 이들은 Network-in-Network 설계의 변형입니다 [17].
다른 모든 방법은 동일한 사전 훈련된 VGG16 네트워크에서 초기화됩니다.
Fast R-CNN은 mAP가 65.7% (추가 데이터가 있는 경우 68.4%)로 VOC12에서 최고의 결과를 달성합니다.
또한 "느린" R-CNN 파이프 라인을 기반으로 하는 다른 방법보다 훨씬 빠릅니다.
VOC10에서 SegDeepM[25]은 Fast R-CNN보다 더 높은 mAP를 달성합니다 (67.2% vs. 66.1%).
SegDeepM은 VOC12 trainval 및 세분화 주석에 대해 훈련되었습니다; O2P [1] 시맨틱 분할 방법에서 R-CNN 탐지 및 분할을 추론하기 위해 Markov 랜덤 필드를 사용하여 R-CNN 정확도를 높이도록 설계되었습니다.
Fast R-CNN은 R-CNN 대신 SegDeepM으로 교체할 수 있으므로 더 나은 결과를 얻을 수 있습니다.
확대된 07++12 훈련 세트 (표 2 캡션 참조)를 사용하면 Fast R-CNN의 mAP가 68.8%로 증가하여 SegDeepM을 능가합니다.
4.3. VOC 2007 results
VOC07에서는 Fast R-CNN을 R-CNN 및 SPPnet과 비교합니다.
모든 방법은 동일한 사전 훈련된 VGG16 네트워크에서 시작하며 경계 상자 회귀를 사용합니다.
VGG16 SPPnet 결과는 [11]의 저자에 의해 계산되었습니다.
SPPnet은 훈련 및 테스트 중에 5가지 척도를 사용합니다.
SPPnet을 통한 Fast R-CNN의 개선은 Fast R-CNN이 단일 규모 훈련 및 테스트를 사용하더라도 conv 레이어를 미세 조정하면 mAP가 크게 향상된다는 것을 보여줍니다 (63.1%에서 66.9%로).
R-CNN은 66.0%의 mAP를 달성합니다.
사소한 점으로, SPPnet은 PASCAL에서 "어려움"으로 표시된 예제 없이 훈련되었습니다.
이러한 예를 제거하면 Fast R-CNN mAP가 68.1%로 향상됩니다.
다른 모든 실험은 "어려운" 예를 사용합니다.
4.4. Training and testing time
빠른 학습 및 테스트 시간이 두 번째 주요 결과입니다.
표 4는 Fast RCNN, R-CNN 및 SPPnet 간의 VOC07에 대한 훈련 시간 (시간), 테스트 속도 (이미지 당 초) 및 mAP를 비교합니다.
VGG16의 경우 Fast R-CNN은 잘린 SVD 없이 R-CNN보다 146배 빠르게 이미지를 처리하고 213배 더 빠르게 이미지를 처리합니다.
훈련 시간이 84시간에서 9.5시간으로 9배 단축되었습니다.
SPPnet에 비해 Fast RCNN은 VGG16을 2.7배 빠르게 (9.5시간 vs. 25.5시간) 훈련시키고 SVD를 자르지 않고 7배 더 빠르게 또는 10배 더 빠르게 테스트합니다.
Fast R-CNN은 기능을 캐시하지 않기 때문에 수백 기가 바이트의 디스크 스토리지를 제거합니다.
Truncated SVD.
잘린 SVD는 모델 압축 후 추가 미세 조정을 수행할 필요 없이 mAP의 작은 (0.3% 포인트) 감소만으로 감지 시간을 30% 이상 줄일 수 있습니다.
그림 2는 VGG16의 fc6 레이어에 있는 25088x4096 매트릭스의 상위 1024개 특이값과 4096x4096 fc7 레이어의 상위 256개 특이값을 사용하여 mAP 손실이 거의 없이 런타임을 줄이는 방법을 보여줍니다.
압축 후 다시 미세 조정하면 mAP의 작은 드롭으로 추가 속도 향상이 가능합니다.
4.5. Which layers to fine-tune?
SPPnet 논문 [11]에서 고려한 덜 심도있는 네트워크의 경우, 완전히 연결된 계층만 미세 조정하는 것만으로도 정확도가 높은 것으로 나타났습니다.
우리는 이 결과가 매우 심층적인 네트워크에 적용되지 않을 것이라고 가정했습니다.
VGG16에서 conv 레이어를 미세 조정하는 것이 중요하다는 것을 확인하기 위해 Fast R-CNN을 사용하여 미세 조정하지만 완전히 연결된 레이어만 학습하도록 13개의 conv 레이어를 고정합니다.
이 절제는 단일 규모 SPPnet 훈련을 에뮬레이트하고 mAP를 66.9%에서 61.4%로 감소시킵니다 (표 5).
이 실험은 우리의 가설을 검증합니다: RoI 풀링 계층을 통한 훈련은 매우 깊은 그물에 중요합니다.
이것은 모든 전환 레이어가 미세 조정되어야 함을 의미합니까?
요컨대, 아닙니다.
소규모 네트워크 (S 및 M)에서 conv1은 일반적이고 작업 독립적이라는 것을 알 수 있습니다 (잘 알려진 사실 [14]).
conv1이 학습하도록 허용하는지 여부는 mAP에 의미있는 영향을 주지 않습니다.
VGG16의 경우 conv3_1 이상의 레이어 (13개 전환 레이어 중 9개)만 업데이트하면됩니다.
이 관찰은 실용적입니다: (1) conv2_1에서 업데이트하면 conv3_1에서 학습하는 것에 비해 학습 속도가 1.3배 (12.5시간 대 9.5시간) 느려집니다. (2) conv1_1 오버런 GPU 메모리에서 업데이트합니다.
conv2_1에서 학습할 때 mAP의 차이는 +0.3점에 불과했습니다 (표 5, 마지막 열).
모든 Fast R-CNN 결과는 VGG16 미세 조정 레이어 conv3_1 이상을 사용하는 이 논문의 결과입니다; 모델 S 및 M을 사용한 모든 실험은 conv2 이상의 레이어를 미세 조정합니다.
5. Design evaluation
우리는 Fast R-CNN이 R-CNN 및 SPPnet과 어떻게 비교되는지 이해하고 설계 결정을 평가하기 위해 실험을 수행했습니다.
모범 사례에 따라 PASCAL VOC07 데이터 세트에서 이러한 실험을 수행했습니다.
5.1. Does multi-task training help?
다중 작업 학습은 순차적으로 학습된 작업의 파이프 라인을 관리하지 않기 때문에 편리합니다.
그러나 작업이 공유된 표현 (ConvNet)을 통해 서로 영향을 미치기 때문에 결과를 개선할 수 있는 잠재력도 있습니다 [2].
다중 작업 훈련이 Fast R-CNN에서 물체 감지 정확도를 향상합니까?
이 질문을 테스트하기 위해 식 1에서 분류 손실 Lcls만 사용하는 기준 네트워크를 훈련합니다 (즉, λ=0 설정).
이러한 기준선은 표 6의 각 그룹의 첫 번째 열에 모델 S, M 및 L에 대해 인쇄됩니다.
이러한 모델에는 경계 상자 회귀자가 없습니다.
다음으로 (그룹당 두 번째 열), 다중 작업 손실 (식 1, λ=1)로 훈련된 네트워크를 가져오지만 테스트시 경계 상자 회귀를 비활성화합니다.
이렇게 하면 네트워크의 분류 정확도가 격리되고 기준 네트워크와의 비교가 가능합니다.
세 가지 네트워크 모두에서 다중 작업 훈련이 분류만을 위한 훈련에 비해 순수한 분류 정확도를 향상시키는 것을 관찰합니다.
개선 범위는 +0.8~+1.1mAP 포인트로, 다중 작업 학습에서 일관된 긍정적인 효과를 보여줍니다.
마지막으로 기준 모델 (분류 손실로만 훈련됨)을 가져와 경계 상자 회귀 계층에 고정하고 다른 모든 네트워크 매개 변수를 고정한 상태로 Lloc으로 훈련합니다.
각 그룹의 세 번째 열은 이 단계적 훈련 계획의 결과를 보여줍니다: mAP는 1열보다 향상되지만 단계적 훈련은 다중 작업 훈련 (그룹당 앞 열)보다 성능이 떨어집니다.
5.2. Scale invariance: to brute force or finesse?
스케일 불변 객체 감지를 달성하기 위한 두 가지 전략: 즉 brute-force 학습 (단일 스케일)과 이미지 피라미드 (다중 스케일)를 비교합니다.
두 경우 모두 이미지의 축척 s를 가장 짧은 면의 길이로 정의합니다.
모든 단일 규모 실험은 s=600 픽셀을 사용합니다; s는 가장 긴 이미지 면을 1000픽셀로 제한하고 이미지의 종횡비를 유지하므로 일부 이미지의 경우 600보다 작을 수 있습니다.
이 값은 미세 조정 중에 VGG16이 GPU 메모리에 맞도록 선택되었습니다.
작은 모델은 메모리 제한이 없으며 더 큰 s 값의 이점을 누릴 수 있습니다; 그러나 각 모델에 대한 s를 최적화하는 것은 우리의 주요 관심사가 아닙니다.
PASCAL 이미지는 평균 384x473 픽셀이므로 단일 스케일 설정은 일반적으로 1.6배로 이미지를 업샘플링합니다.
따라서 RoI 풀링 레이어에서 평균 유효 보폭은 ≒ 10 픽셀입니다.
다중 스케일 설정에서는 SPPnet과의 비교를 용이하게 하기 위해 [11] (s ∈ {480, 576, 688, 864, 1200})에 지정된 동일한 5개의 스케일을 사용합니다.
그러나 GPU 메모리를 초과하지 않도록 가장 긴 면을 2000픽셀로 제한합니다.
표 7은 1개 또는 5개의 척도로 훈련 및 테스트한 모델 S 및 M을 보여줍니다.
아마도 [11]에서 가장 놀라운 결과는 단일 스케일 검출이 거의 다 스케일 검출만큼이나 수행된다는 것입니다.
우리의 연구 결과는 그 결과를 확인시켜줍니다: 심층 ConvNet은 규모 불변을 직접 학습하는 데 능숙합니다.
다중 규모 접근 방식은 컴퓨팅 시간의 큰 비용으로 mAP를 약간만 증가시킵니다 (표 7).
VGG16 (모델 L)의 경우 구현 세부 사항에 따라 단일 스케일 사용으로 제한됩니다.
그러나 각 제안이 표준 크기로 왜곡된다는 점에서 R-CNN이 "무한"척도를 사용하더라도 R-CNN [10]에 대해보고 된 66.0%보다 약간 높은 66.9%의 mAP를 달성합니다.
단일 스케일 처리는 특히 매우 깊은 모델의 경우 속도와 정확도 사이에서 최상의 균형을 제공하므로 이 하위 섹션 외부의 모든 실험은 s=600 픽셀로 단일 스케일 훈련 및 테스트를 사용합니다.
5.3. Do we need more training data?
좋은 물체 감지기는 더 많은 학습 데이터가 제공될 때 개선 되어야합니다.
Zhu 등 [24]은 DPM [8] mAP가 몇 백에서 수천개의 훈련 예제 후에 포화된다는 것을 발견했습니다.
여기서는 VOC12 trainval 세트로 VOC07 trainval 세트를 확대하여 Fast R-CNN을 평가하기 위해 이미지 수를 약 3배로 16.5k로 늘립니다.
트레이닝 세트를 확대하면 VOC07 테스트의 mAP가 66.9%에서 70.0%로 향상됩니다 (표 1).
이 데이터 세트에서 훈련할 때 40k 대신 60k 미니 배치 반복을 사용합니다.
VOC10 및 2012에 대해 유사한 실험을 수행하여 VOC07 trainval, test 및 VOC12 trainval의 조합에서 21.5k 이미지의 데이터 세트를 구성합니다.
이 데이터 세트에서 학습할 때 100k SGD 반복을 사용하고 학습 속도를 40k 반복마다 0.1배씩 낮춥니다 (각 30k 대신).
VOC10과 2012의 경우 mAP는 각각 66.1%에서 68.8%로, 65.7%에서 68.4%로 향상되었습니다.
5.4. Do SVMs outperform softmax?
Fast R-CNN은 R-CNN 및 SPPnet에서 수행된 것처럼 사후 one vs. 나머지 선형 SVM을 훈련하는 대신 미세 조정 중에 학습 된 소프트 맥스 분류기를 사용합니다.
이 선택의 영향을 이해하기 위해 Fast R-CNN에서 하드 네거티브 마이닝으로 사후 SVM 훈련을 구현했습니다.
우리는 R-CNN에서와 동일한 훈련 알고리즘과 하이퍼 파라미터를 사용합니다.
표 8은 소프트 맥스가 세 네트워크 모두에서 SVM을 +0.1~+0.8mAP 포인트로 약간 능가하는 성능을 보여줍니다.
이 효과는 작지만 "원샷" 미세 조정이 이전의 다단계 교육 접근 방식에 비해 충분하다는 것을 보여줍니다.
소프트 맥스는 one vs. 나머지 SVM과 달리 RoI 점수를 매길 때 클래스 간의 경쟁을 유발합니다.
5.5. Are more proposals always better?
객체 감지기에는 (광범위하게) 두 가지 유형이 있습니다: 즉, 희소한 객체 제안 세트 (예 : 선택적 검색 [21])를 사용하는 것과 조밀한 세트를 사용하는 것 (예 : DPM [8])입니다.
희소 제안을 분류하는 것은 제안 메커니즘이 먼저 평가할 작은 세트로 분류자를 떠나는 수많은 후보를 거부하는 캐스케이드 유형입니다 [22].
이 캐스케이드는 DPM 탐지에 적용될 때 탐지 정확도를 향상시킵니다 [21].
제안 분류자 캐스케이드가 Fast R-CNN 정확도를 향상시킨다는 증거를 찾습니다.
선택적 검색의 품질 모드를 사용하여 모델 M을 재학습하고 다시 테스트할 때마다 이미지 당 1k에서 10k개의 제안을 스윕합니다.
제안이 순전히 계산 역할을 수행하는 경우 이미지 당 제안 수를 늘려도 mAP에 해를 끼치지 않습니다.
제안 개수가 증가함에 따라 mAP가 상승했다가 약간 하락하는 것을 발견했습니다 (그림 3, 파란색 실선).
이 실험은 더 많은 제안으로 심층 분류기를 습격하는 것이 정확도에 도움이 되지 않으며 약간의 피해를 입힌다는 것을 보여줍니다.
이 결과는 실제로 실험을 실행하지 않고는 예측하기 어렵습니다.
객체 제안 품질을 측정하는 최신 기술은 평균 리콜 (AR) [12]입니다.
AR은 이미지 당 고정된 수의 제안을 사용할 때 R-CNN을 사용하는 여러 제안 방법에 대해 mAP와 잘 연관됩니다.
그림 3은 이미지 당 제안 수가 다양하기 때문에 AR (빨간 실선)이 mAP와 잘 관련이 없음을 보여줍니다.
AR은 주의해서 사용해야합니다; 더 많은 제안으로 인해 더 높은 AR이 mAP가 증가한다는 것을 의미하지는 않습니다.
다행히 모델 M을 사용한 학습 및 테스트에는 2.5시간 미만이 소요됩니다.
따라서 Fast R-CNN을 사용하면 프록시 메트릭보다 선호되는 객체 제안 mAP를 효율적이고 직접적으로 평가할 수 있습니다.
또한 약 45k 상자/이미지의 속도로 조밀하게 생성된 상자 (크기, 위치 및 종횡비 초과)를 사용할 때 Fast R-CNN을 조사합니다.
이 조밀한 집합은 각 선택 검색 상자가 가장 가까운 (IoU에서) 조밀한 상자로 대체될 때 mAP가 1포인트 (57.7%, 그림 3, 파란색 삼각형)만 떨어질 정도로 풍부합니다.
밀집된 상자의 통계는 선택적 검색 상자의 통계와 다릅니다.
2k 선택적 검색 상자로 시작하여 1000x{2, 4, 6, 8, 10, 32, 45} 밀도 상자의 무작위 샘플을 추가할 때 mAP를 테스트합니다.
각 실험에 대해 모델 M을 다시 훈련하고 다시 테스트합니다.
이러한 밀집된 상자를 추가하면 더 많은 선택적 검색 상자를 추가할 때보다 mAP가 더 강하게 떨어져 결국 53.0%에 도달합니다.
또한 고밀도 상자(45k/이미지)만 사용하여 Fast R-CNN을 훈련하고 테스트합니다.
이 설정은 52.9% (파란색 다이아몬드)의 mAP를 산출합니다.
마지막으로 고밀도 박스 분포에 대처하기 위해 하드 네거티브 마이닝이있는 SVM이 필요한지 확인합니다.
SVM은 더 나빠집니다 : 49.3% (파란색 원).
5.6. Preliminary MS COCO results
Fast R-CNN (VGG16 포함)을 MS COCO 데이터 세트 [18]에 적용하여 예비 기준선을 설정했습니다.
우리는 240k 반복을 위해 80k 이미지 훈련 세트에 대해 훈련하고 평가 서버를 사용하여 "test-dev"세트에서 평가했습니다.
PASCAL 스타일의 mAP는 35.9%입니다; IoU 임계값을 초과하는 평균이기도 한 새로운 COCO 스타일 AP는 19.7%입니다.
6. Conclusion
이 논문은 R-CNN과 SPPnet에 대한 깨끗하고 빠른 업데이트인 Fast R-CNN을 제안합니다.
최첨단 탐지 결과를 보고하는 것 외에도 새로운 통찰력을 제공할 수 있는 상세한 실험을 제시합니다.
특히, 희소 객체 제안은 탐지기 품질을 향상시키는 것으로 보입니다.
이 문제는 과거에 조사하기에는 너무 비용이 많이 들었지만 Fast R-CNN에서는 실용적이 되었습니다.
물론 조밀한 상자가 희소 제안을 수행할 수 있도록 하는 아직 발견되지 않은 기술이 있을 수 있습니다.
이러한 방법이 개발되면 물체 감지 속도를 더욱 높일 수 있습니다.