computer vision/object detection

Rich feature hierarchies for accurate object detection and semantic segmentation

loosiu 2023. 7. 13. 16:19

Abstract

가장 성능이 좋은 방법은 고차원 context와 많은 저차원 image feature를 결합하는 복잡한 앙상블 시스템이다.

이 논문은 voc 2012에서 53.3%의 mean average precision(mAP)을 달성한 이전의 가장 최고 결과와 비교하여 mAP를 30% 더 많이 향상시키는 간단하고 scalable한 detection 알고리즘을 제안함

 

Combine two key insight

  1. object를 localize와 segment하기 위해 bottom up region proposal로 고성능 cnn에 적용하는 것
  2. label된 training data가 부족할 때, 보조 task에 대한 supervised pretraining은 domain에 상당한 성능을 올려주는 fine tuning을 적용시킴

cnn과 region proposal을 결합하기 때문에 cnn feature을 가진 region이라는 뜻으로 위의 detection 알고리즘을 R-CNN이라고 불렀음

 

우리는 비슷한 cnn architecture에 기반한 silding window detector를 최근에 제안한 overfeat과 R-CNN에 비교했다

200개 class를 가진 ILSVRC 2013 detection dataset에서 R-CNN이 큰 차이로 overfeat을 능가했다.

 

 

 

Introduction

지난 10년동안 다양한 visual recognition task에서 sift와 hog를 사용했고, sift와 hog는 blockwise orientation histogram이다.

 

이 논문에서 cnn은 더 간단한 hog같은 feature에 기반된 시스템과 비교해서 pascal voc에서 더 높은 object detection 성능을 보여줄 수 있다고 최초로 말했다. 이 결과를 달성하기 위해, 우리는 deep network를 가진 object를 localize하는 것과 적은 annotated detection data를 가지고 고용량 모델에 학습하는 것에 집중한다.

 

한가지 방법은 regression 문제로서 localization을 하는 것이다.

하지만 잘 되지 않았고 그 대안으로 sliding window detector가 있었다.

그래서 sliding window 방법을 채택했지만 5개의 convolutional layer를 가진 network 상위에 있는 unit은 silding window paradigm에서 localization을 정확하게 만든 input image에서 매우 큰 receptive field와 stride를 가졌다.

 

object detection system overview

대신에, 우리는 object detection과 semantic segmentation 둘 다 성공적으로 된 region을 사용한 recognition paradigm을 사용함으로써 cnn localization 문제를 해결했다.

 

  • "recognition using regions" paradigm
  1. 테스트에서 우리는 input image에 약 2000개 카테고리 indepent region proposal을 만든다.
  2. cnn을 사용하는 각 proposal로부터 고정된 길이의 feature vector를 추출한다.
  3. 범주별 linear svm으로 각 region을 분류한다.
  4. 우리는 region 모양 상관없이 각 region proposal로부터 고정된 크기의 cnn input을 계산하기 위해 간단한 기술을 사용한다.

 

overfeat은 detection을 위해 cnn으로 sliding window을 사용했고 지금까지 ILSVRC 2013 detection에서 가장 성능이 좋은 방법이였다. 하지만 우리는 31.4%의 mAP인 R-CNN이 24.3%인 overfeat보다 상당히 성능이 더 좋았다는 것을 보였다.

 

detection의 두번째 문제는 label된 data가 부족하고 현재 cnn에 학습되는 양이 부족하다는 것이다.

이 문제의 전통적인 해결책은 supervised fine tuning을 하고 나서 unsupervised pretraining을 하는 것이다.

이 논문의 두번째 기여는 PASCAL(작은 dataset)에 domain별 구체적인 fine tuning을 하고 나서 ILSVRC(큰 dataset)에 supervised pretrain하는 것이 data가 부족할 때 고성능 cnn을 학습하기 위해 효과적인 paradigm이라는 것이다.

 

실험에서 detection에 대한 fine tuning은 mAP 성능을 8% 향상시켰다.

그리고 fine tuning 후에, 우리의 system은 deformable part model(DPM)에 기반된 hog의 33%와 비교해서 VOC 2010에서 54%의 mAP를 달성했다.

 

클래스 별 계산은 합리적으로 작은 matrix vector 곱과 greedy non maximum suppression으로 했다.

우리는 간단한 bounding box regression 방법이 mislocalization을 상당히 줄인다는 것을 입증했다.

약간의 수정으로, 우리는 VOC 2011 test set에서 pascal voc segmentation task로 47.9%의 평균 segmentation 정확도를 달성했다.

 

 

 

Object detection with R-CNN

우리의 object detection system은 세 개의 모듈로 구성된다.

 

  1. category independent region proposal을 만든다. $ \rightarrow $ 이 proposal은 detector가 사용할 수 있는 후보 detection의 set을 정의했다.
  2. 각 region으로부터 고정된 길이의 feature vector를 추출하는 큰 cnn
  3. 클래스별 linear svm의 set

이 부분에서 우리는 각 모듈에 대한 우리의 design decision을 제시하고, 그들의 test time 사용에 대해 설명하고, parameter가 어떻게 학습되는지 자세히 설명하며, pascal voc 2010~2012와 ILSVRC 2013에서 detection 결과를 증명했다.

 

 

-  Module design

  • region proposal

다양한 최근 논문은 category independent region proposal을 만드는 것에 대한 방법을 제공한다.

ex) 대상성, selective search, category independent object proposal, constrained parametric min cuts(cpmc) 등

 

R-CNN이 특정한 region proposal 방법에 구애받지 않을 동안에, selective search를 사용한다.

 

  • feature extraction

우리는 krizhevsky et al에 의해 설명된 cnn 구현을 caffe를 사용해서 각 region proposal로 4096차원의 feature vector을 추출한다. 그리고 feature는 5개의 convoulutional layer, 2개의 fc layer를 지나서 평균값을 뺀 227x227 RGB image를 forward propagation함으로써 계산되어졌다.

 

region proposal에 대한 feature를 계산하기 위해, 우리는 먼저 그 지역의 image data를 cnn과 호환되는 형태로 바꿔야됩니다. 그리고 임의의 모양을 가진 region의 가능한 많은 변형 중에서, 우리는 가장 간단한 것을 골랐다.

후보 region의 가로, 세로 비나 크기에 상관없이 우리는 bounding box에 있는 모든 pixel을 필요한 크기로 외곡했다.

왜곡 이전에, 우리는 왜곡된 크기에서 원래 box 근처에 왜곡된 image context의 p pixel이 있도록 bounding box를 확장한다.

 

warped training samples from voc 2007 train

윗 그림은 왜곡된 학습 region의 random sampling이다. 

 

 

- Test-time detection

테스트할 때, 우리는 약 2000개의 region proposal을 추출하기 위해서 test image에서 selective search를 한다.

우리는 각 proposal을 왜곡하고 feature를 계산하기 위해서 cnn을 통해 region proposal을 forward propagate한다.

그 후에 우리는 class에 대해 학습된 svm을 사용해서 추출된 feature vector에 점수를 매긴다.

 image에서 모든 scored region을 고려했을 때, 우리는 학습된 threshold보다 더 높은 score인 선택 region과 겹친다면 region을 거부하는 greedy non maxium suppression을 적용한다.

 

  • run-time analysis

효율적인 detection을 만드는 두가지 특징

  1. 모든 cnn parameter는 모든 카테고리에 공유되어진다.
  2. cnn으로 계산되는 feature vector는 다른 일반적인 접근법과 비교했을 때, 낮은 차원이다.

 

결과를 공유하는 것은 region proposal을 계산하는데 시간이 걸리고, feature는 모든 class에서 상각되어진다.

class별 계산은 feature와 svm 가중치와 non maxium suppression 간에 내적이다.

실제로는, image에 대한 모든 내적이 단일 행렬에 행렬 곱으로 batch되어진다.

feature matrix는 전형적으로 2000 x 4096이고 svm 가중치 matrix는 4096 * N(class 개수)이다.

 

이 분석은 R-CNN이 hassing같은 기술과 비슷하게 재정렬없이 수천개의 object class로 확장가능한 것을 보여주고 100k class라도, 행렬 곱 결과는 10초 걸린다.

 

10k distractor class를 쓸 때, image당 5분의 실행시간으로 voc 2007에서 약 16%의 mAP를 보고했다.

우리의 방법으로 cpu를 써서 10k detector를 1분만에 돌아가게 하고 근사치가 없기 때문에 mAP가 59%를 유지한다. 

 

 

- Training

  • supervised pretraining

image label annotation을 사용하는 ILSVRC 2012 classification dataset에서 cnn을 차별적으로 pretrain했다.

pretrain은 open source caffe cnn library를 사용한다

우리의 cnn은 ILSVRC 2012 classification validation set에서 더 높은 top1 error rate 2.2%를 얻은 krizhevsky et al과 성능과 거의 비슷하다. $ \rightarrow $ 학습 과정이 단순화됐기 때문이다.

 

  • domain specific fine tuning 

new task(detection)와 new domain(wraped proposal window)을 우리의 cnn에 채택하기 위해서, 우리는 warped region proposal을 사용하는 cnn parameter의 sgd학습을 계속한다.

무작위로 초기화되는 (N+1)개의 classification layer를 cnn의 imagenet 특정 1000개의 classification layer로 대체하는 것을 제외하고 cnn architecture는 바뀌지않았다.

우리는 box의 class가 ground truth box와 0.5 IOU이상으로 겹치는 것은 positive로 나머지는 negative로 모든 region proposal을 다룬다.

우리는 초기화를 방해하지 않는 동안에 fine tuning을 하도록 하는 0.001 learning rate로 SGD를 한다.

각 SGD iteration에서 우리는 한결같이 32개의 positive window와 batch size가 128인 96개의 background window를 샘플링한다.

우리는 배경과 비교해서 positive window가 극도로 부족하기 때문에 sampling을 positive window쪽으로 편향시킨다.

 

  • object category classifiers

car를 detect하기 위해 binary classifier를 훈련하는 것을 고려한다.

차를 tight하게 맞추는 image region은 positive example이 되고 유사하게 차와 관계가 없는 background region은 negative example이 되는 것이 분명하다.

 

 

  • 차를 부분적으로 겹치게 하는 region을 label하는 방법

아래 region이 negative로 정의되는 IOU overlap threshold로 issue를 해결한다.

 

ex) threshold 0.5으로 설정 $ \rightarrow $ mAP 5 point 감소

    threshold 0으로 설정 $ \rightarrow $ mAP 4 point 감소

threshold를 잘 선택하는 것이 중요하다

 

positive example은 각 class에 있는 ground truth bounding box를 간단하게 정의했다.

 

feature가 추출되어졌고 학습 label이 적용되어졌을 때, 우리는 class당 하나의 linear svm을 최적화했다.

training data가 너무 커서 memory가 가득 찼기때문에 우리는 일반적으로 어렵고 negative한 mining 방법을 채택한다.

hard negative mining은 빠르게 수렴하고 모든 image를 한번만 통과시킨 후에는 실제 mAP가 증가하는 것을 멈춘다.

 

 

 

Visualization, ablation, and modes of error

- Visualizing learned features

우리는 학습된 network가 무엇인지를 직접적으로 보여주는 간단한 non parametric 방법을 제안한다.

 

 idea는 network에서 특정한 unit을 선정하는 것이고 object detector인 것처럼 non parametric 방법을 사용한다.

즉, 우리는 큰 dataset에 지속되는 region proposal에서 unit의 활성화 함수를 계산하고, 최고의 활성화함수에서 가장 안 좋은 활성화함수로 proposal을 분류하고, nms(non maxium suppression)을 사용한다.

그리고 가장 높은 점수를 얻은 region을 나타낸다.

우리의 방법은 선택된 unit이 어떤 input에서 실행되는지 정확하게 보임으로써 자명하다.

우리는 다양한 visual 방법을 보기위해서 평균화하지 않고 unit에 의해 계산된 invariance에서 통찰력을 얻었다.

 

우리는 network의 5번째와 마지막 convolutional layer의 max pooling된 output의 pool5 layer로부터 unit을 시각화한다.

pool5 feature map은 9216차원이다.

boundary effect를 무시할 때, 각 pool5 unit은 227x227 pixel인 input에서 195x195 pixel의 receptive field를 가진다.

edge 근처에 있는 것은 더 작고 잘린 지지대가 있는 반면에 중앙에 있는 pool5 unit은 거의 global view를 가진다. 

 

Top regions for pool5 units

위 그림에서 각 행은 우리가 voc 2007 trainval에서 fine tuning했던 cnn의 pool5 unit에 대한 상위 16개의 활성화 함수를 나타낸다. 

256개의 기능적으로  고유한 unit 중에서 6개가 시각화되어졌다.

이 unit은 network가 학습한 것의 대표적인 sample을 보여주는 것을 선택했다.

network는 모양, 질감, 색깔, 물질적 속성의 분산 표현으로 소수의 class에 맞춰진 feature와 결합하는 representation을 학습하는 것을 나타낸다.

그 다음의 fc layer인 fc6은 좋은 feature의 거대한 set의 구성을 모델링 할 수 있습니다.

 

 

- Ablation studies

  • performance layer-by-layer, without finetuning

layer는 detection 성능에 중요한 것을 알기 위해, 우리는 각각의 cnn의 마지막 3개 layer에 대한 voc 2007 dataset에 결과를 분석했다.

 

layer fc6는 pool5에 의해 완전히 연결되어졌다.

 feature를 계산하기 위해, layer fc6는 pool5 feature map에 의해 4096x9216 weight matrix를 곱하고, 그 후에 vector의 bias를 더한다.

중간의 vector는 구성요소별 half wave rectified이다.

 

layer fc7은 network의 마지막 layer이다.

layer fc7은 4096x4096 weight matrix에 있는 fc6로 계산된 feature를 곱하므로써 구현되고, 마찬가지로 vector의 bias를 추가하고 half wave rectification을 적용하는 중이다.

 

Detection average precision on VOC 2007 test

우리는 pascal에 fine tuning없이 cnn에 나온 결과를 찾음으로써 시작한다.

즉, 모든 cnn parameter는 ILSVRC 2012에서 pretrain되어졌다.

layer별로 성능을 분석하는 것은 fc7에 있는 feature가 fc6에 있는 feature보다 더 안 좋게 일반화한다는 것을 드러냈다.

더 안 좋게 일반화하는 것은 29%인 약 16.8 million의 cnn parameter가 mAP를 저하시키지 않고 삭제될 수 있다는 것을 의미한다.

더 놀라운 것은 pool5 feature가 cnn parameter의 6%를 사용해서 계산되었음에도 불구하고 fc7과 fc6 둘 다 제거하는 것이 꽤 좋은 결과를 냈다는 것이다.

cnn의 대표적인 힘은 많이 dense하게 연결된 layer보다 convolutional layer에서 나온다.

이 결과는 cnn의 convolutional layer를 사용함으로써 HOG 감으로 임의적인 size를 가진 image의 dense한 feature map을 계산하는 것에서 잠재적인 활용을 제안한다.

이 표현은 상위 pool5의 feature에서 DPM을 포함하는 sliding window detector로 실험을 가능하게 한다.

 

  • Performance layer by layer, with fine-tuning

위의 표는 voc 2007 trainval에서 parameter를 fine tuning하고난 후의 cnn결과이다.

fine tuning으로 mAP가 54.2%에서 8% 더 증가했다.

fine tuning으로 향상은 일반적인 imagenet에서 학습된 pool5 feature과 pool5 layer의 상위층에 있는 domain별 non linear classifier을 학습해서 얻은 향상을 나타내는 pool5보다 fc6와 fc7이 더 컸다.

 

  • Comparision to recent featrue learning methods

상대적으로 작은 feature를 학습하는 방법을 pascal voc detection으로 시도했고, 일반적인 HOG에 기반된 dpm으로 결과를 냈다.

 

  • DPM model을 만드는 두개의 최근 방법
  1. 최초로 dpm feature를 학습하는 방법인 DPM ST으로 histogram의 sketch token 확률을 가진 HOG feature를 증가시켰다.  
  2. dpm hsc는 histograms of sparse codes(hsc)로 HOG를 대체한다.

모든 R-CNN의 변종은 feature learning을 사용하는 두가지 방법을 포함하는 세개의 DPM baseline을 능가했다.

HOG feature만 쓰는 최근 vision dpm과 비교해서 우리의 mAP는 33.7%에서 54.2%로 20% 더 증가했다.

hsc 방법은 hog보다 mAP가 4% 더 향상된 반면에 hog와 sketch token의 결합은 hog만 사용한 것보다 2.5% mAP를 증가시켰다.

 

첫번째 방법은 29.1%, 두번째 방법은 34.3% mAP를 달성했다.

 

 

- Network architectures

Detection average precision on VOC 2007 test for two different cnn architectures

structure 선택이 R-CNN detection 성능에 큰 효과를 보인다.

위 표는 최근에 제안된 16 layer deep network를 사용하는 voc 2007 test data의 결과이다.

이 network는 최근 ILSVRC 2014 classification challenge에서 가장 높은 결과 중 하나이다.

network는 5개의 max pooling layer와 3개의 fc layer로 13개의 layer의 3x3 convolution kernel을 구성한다.

 

R-CNN에 O-net을 사용하기 위해, caffe model zoo에서 vgg_ILSVRC_16_layers model의 pretrain된 가중치를 다운했다.

그리고 같은 protocol을 사용하는 network를 fine tuning했다.

GPU memory를 맞추기 위해, 더 작은 minibatch(24)를 사용했다.

 

위 표에서 O-Net을 사용한 R-CNN이 T-Net을 사용한 R-CNN보다 상당히 능가해서 mAP가 58.5%에서 66.0%로 증가한 것을 보여준다.

하지만, T-Net보다 7배 더 걸리는 O-Net의 forward pass를 사용해서 계산 시간면에서는 상당히 결점이다.

 

 

- Detection error analysis

Sensitivity to object characteristics

우리의 방법의 error 방식을 찾기 위해서 훌륭한 detection 분석 tool을 적용했다.

 

- Bounding-box regression

Distribution of top-ranked false positive(FP) types

  • localization error를 줄이기 위한 방법

selective search region proposal에 대한 pool5 feature에 주어진 새로운 detection window를 예측하기 위해 linear regression model을 학습한다.

 

이 방법으로 많은 양의 오탐지를 고쳐서 mAP가 3~4% 올랐다.

 

 

- Qualitative results

Example detections on the val2 set from the configuration that acieved 31% mAP on val2

 

More randomly selected examples

각 image는 val2 set으로부터 랜덤 샘플되어있고 모든 detector로부터 0.5보다 큰 precision을 가진 모든 detection이 나타난다. 

 

Curated examples
More curated examples

위 그림도 0.5보다 높은 precision을 가진 모든 detection이 나타났다.

 

 

 

The ILSVRC 2013 detection dataset

- Dataset overview

ILSVRC 2013 detection data를 train(395918), val(20121), test(40152)로 나눴다.

val, test split은 전체 200개의 class가 bounding box로 label되어지므로 각 image의 모든 instance를 의미하기 위해 annotate되었다.

하지만 val, test와 달리 train image는 annotate되지 않았다.

train image에는 annotation이 되어 있는 것도 있고 안 되어 있는 것도 있었다.

게다가 image set의 각 class에 negative image의 대량 set이 있는데 연관된 class의 instance에 포함되지 않은 것을 직접 입증하기 위해 확인했다.

 

train data는 annotation이 제대로 안되어있어서 hard negative mining에 사용하지 못했다.

 

우리의 전략은 val set에 의존하는 것이고 보조 positive example로 몇개의 train image를 사용한다.

training과 validation 둘다 val을 사용하기 위해서 동등하게 val1과 val2를 나눴다.

몇몇 class에서는 val에서 가장 작은 example을 가지기때문에 class의 균형을 잘 맞게 분할하는 것이 중요하다.

class의 균형이 잘 맞게 분할하기 위해서, maximum relative imbalance에서 가장 작은 것들 중 하나를 선택한다.

각 후보의 split은 split balance를 향상시키는 무작위된 local search를 쓰는 feature로서, 그들의 class 개수를 사용하는 군집된 val image에 의해 발생한다.

특정한 split은 11%의 a maximum relative imbalance와 4%의 median relative imbalance를 가진다.

 

 

- Region proposals

pascal에서 detection으로 사용되는 같은 region proposal 방법을 썼다.

selective search는 val1, val2, test에 있는 각 image에 fast mode를 실행했다.

한가지 약간의 수정은 selective search가 scale invariant이 아닌 것이 쓰이는게 필수고, region의 수는 image 해상도에 따라 만들어져야한다.

ILSVRC image 크기는 매우 작은 것에서 소량 mega pixel까지 범위이고, 우리는 selective search를 하기 전에 고정된 넓이(500픽셀)로 각 image를 조절했다.

val에서 selective search는 모든 ground truth bounding box의 recall이 91.6%로 image당 2403개의 region proposal의 평균 결과이다.

recall은 region proposal 단계에서 개선을 위해 상당한 개선을 나타내는 대략적으로 98%인 pascal보다 더 낮다.

 

 

- Training data

학습데이터의 경우, 우리는 모든 selective search와 학습에서의 class당 N개의 groud-truth box와 val1에서의 ground-truth box에 포함하는 image와 box의 set로 구성했다.

ablation study에서는 val2에 N이 {0,500,1000}인  mAP이다.

 

  • 학습 데이터가 R-CNN에 필요한 세가지 절차
  1. cnn fine tuning
  2. detector svm training
  3. bounding box regressor training

cnn fine tuning은 pascal에 사용됐던 같은 setting을 사용하기 위해 val1+$train_N$에서 50k SGD iteration으로 했다.

하나의 NVIDIA Tesla K20으로 fine tuning을 하는 것은 Caffe로 13시간이 걸린다.

SVM training 경우, val1+$train_N$의 모든 ground truth box는 각 class에 대한 positive example로 사용되어진다.

hard negative mining은 val1에서 랜덤하게 선택된 subset의 5000개의 image로 수행된다.

최초의 실험은 svm의 학습시간을 반으로 줄이는 동안 mAP를 0.5% 감소하는 5000개의 image subset에 비해 val1 전체로 negative를 mining하는 것을 나타낸다.

negative가 아닌 예는 annotion이 잘 안 되어 있기 때문에 학습 data에서 가져왔다.

입증된 negative image의 여분 set은 사용되지 않는다.

bounding box regressor는 val에 학습되어졌다.

 

 

- validation and evaluation

모든 시스템 하이퍼파라미터는 pascal에 사용하는 같은 값을 썼다.

광범위한 dataset tuning없이 ILSVRC로 예비 R-CNN 결과를 만들기 위해 val2에서 최고의 선택을 고른 후에, 우리는 ILSVRC 2013 평가 서버에 두가지 결과 파일을 제출했다.

첫번째 제출은 bounding box regression없이 하는 것이고 두번째 제출은 bounding box regression있이 하는 것이다.

두번째 제출경우에는 val+$train_1k$와 val 각각 사용하는 svm과 bounding box regressor training set을 확장시켰다.

우리는 fine tuning과 feature 계산을 다시 하는 것을 피하기 위해 val1+$train_1k$에 fine tuning된 cnn을 사용한다.

 

 

- Ablation study

ILSVRC 2013 ablation study of data usage choices, fine-tuning and bounding box regression

위 표는 다른 양의 training data, fine tuning, bounding box regression의 영향에 대한 ablation study를 보여준다.

첫번째 관측은 val2에서 mAP가 test에서 mAP와 매우 근접하게 일치한다.

20.9%인 첫번째 결과는 R-CNN이 ILSVRC 2012 classification dataset에서 pretrain된 cnn을 사용해서 달성하고, val의 소량의 training data에 접근할 수 있다.

training set을 val1+$train_N$으로 확장하면 성능이 24.1%로 향상되며, 기본적으로 N이 500일 때와 1000일 때 차이가 없다.

val1로부터 example을 사용하는 cnn은 fine tuning하는 것은 26.5%로 약간의 개선을 했다.

그러나 작은 양의 positive training example 때문에 상당한 overfitting이 있을 가능성이 높다.

fine tuning set을 val1+$train_1k$로 확장하면 class당 1000개의 positive example을 추가할 수 있어 mAP가 29.7%로 크게 향상된다.

bounding box regression은 pascal에서 관찰되는 것보다 상대적 이득이 더 적은 31.0%의 결과로 향상된다.

 

 

- Relationship to OverFeat

만약에 r-cnn이나 overfeat이 multi scale pyramid의 직사각형 region로 selctive search region proposal을 대체하고 하나의 bounding box regressor에 class별 bounding box regressor를 바꾼다면, 시스템은 매우 비슷하게 된다.

overfeat은 R-CNN을 넘어 상당한 속도 이점을 가진다.

이 속도는 overfeat의 sliding window가 image level에서 뒤틀리지 않는다. 그러므로 연산은 overlapping window에서 쉽게 공유된다. 

공유는 임의의 크기 input에 convolutional 방식으로 전체 network를 돌림으로써 진행된다.

R-CNN이 빨라지는 것은 다양한 방법에서 가능해야하고 향후의 숙제로 남아있다.

 

 

 

Semantic segmentation

region classification은 pascal voc segmentation challenge에서 R-CNN을 쉽게 적용하기 위해 하는 기본적인 기술이다.

현재 선도하는 semantice segmentation 시스템을 가지고 직접적인 비교가 가능하게 하기 위해 open source framework에 적용한다.

second order pooling($O_2$P)는 image당 150개의 region proposal을 생성하는 CPMC를 사용하고 support vector regression(SVR)을 사용하는 각 class에 대한 각 region의 품질을 예측한다.

이 방법의 높은 성능은 CPMC region과 multiple feature type의 강력한 second order pooling의 품질때문이다.

최근에 pixel당 multiscale classifier로서 cnn을 사용하는 몇몇 dense한 scene labeling dataset에서 좋은 결과를 보여준다.

 

디자인 결정과 하이퍼파라미터는 voc 2011 validation set에서 cross validation되어졌다.

마지막 테스트 결과는 한번만 평가되어진다.

 

  • cnn feature for segmentation

CPMC region의 feature를 계산하기 위한 세가지 전략

  1. warp된 window에 직접적으로 cnn feature를 계산한다. $ \rightarrow $ 이 feature는 region의 직사각형 모양이 아닌 것을 무시한다,
  2. region의 foreground mask에만 있는 cnn feature를 계산한다. $ \rightarrow $ background region에 평균을 뺀 후에 0이 되도록 하기 위해서 평균 input을 가진 background로 대체한다.
  3. full과 fg feature를 합친다.

 

  • result on voc 2011

segmentation mean accuracy on voc 2011 validation

위 표는 $O_2$P와 비교되는 voc 2011 validation set에 결과의 요약이다.

각 feature 계산 전략에서 layer fc6은 항상 fc7을 능가한다.

fg전략은 masked region shape이 우리의 직관과 일치하는 더 강한 신호를 제공하는 것을 나타내는 full을 약간 능가한다.

그러나 full+fg는 47.9%의 정확도를 달성해서 4.2% 차이로 최고의 결과를 얻었으며, fg feature를 고려하더라도 full feature가 제공하는 context가 매우 유용하다는 것을 보여준다.

특히, full+fg feature로 20개의 SVR을 학습하는 것은 $O_2$P feature에 학습하기 위해 10시간보다 더 걸리는 것에 비교하면 하나의 core로 한시간 걸린다.

 

segmentation accuracy on voc 2011 test

위 표에서 우리는 강력한 baseline에 반대하여 가장 성능이 좋은 방법인 fc6와 비교해서 voc 2011 test set에서 결과를 제시한다.

우리의 방법은 21개의 카테고리 중 11개 카테고리에 대한 가장 높은 segmentation 정확도를 달성하고 47.9%인 가장 높은 종합적인 segmentation 정확도가 카테고리에 평균을 냈다.

아직 더 좋은 성능은 fine tuning으로 달성할 것 같다.

 

 

 

Conclusion

최근에 object detection 성능이 정체되었는데 가장 좋은 성능을 보인 시스템은 object detector과 scene classifier로 높은 level의 context와 다양한 low level image feature를 결합하는 복잡한 앙상블이였다.

이 논문은 pascal voc 2012에서 가장 좋은 이전 결과에 비해 30%의 상대적인 개선을 제공하는 간단하고 확장가능한 object detection 알고리즘을 제시한다.

 

  • 제시된 object detection 알고리즘의 두가지 통찰력
  1. object를 localize와 segment하기 위해 고용량 cnn 작업에  bottop up 방식으로 region proposal을 적용하는 것
  2. label된 training data가 부족할 때, 큰 cnn에 학습하는 것에 대한 패러다임

풍부한 data를 가진 보조 task에 대해 supervision으로 network를 pretrain하는 것과 데이터가 부족한 target task에 대한 network를 fine tuning하는 것이 아주 효과적인 것을 보인다.

우리는 supervised pretraining/domain별 fine tuning 패러다임이 다양한 data가 부족한 미래의 문제에 대해 아주 효과적이라고 추측한다.

 

우리는 computer vision과 deep learning에서 나온 고전적인 tool의 결합을 사용함으로써 이 결과를 달성한 것이 중요하다고 결론냈고 computer vision과 deep learning은 본질적이고 불가피한 파트너이다.

 

 

 

Appendix

A) object proposal transformations

 

Different object proposal transformations

이 작업에 사용되는 cnn은 고정된 크기인 227x227 pixel이 필요하다

detection 경우에, 임의의 image에서 직사각형인 object proposal을 고려한다

 

  • 유효한 cnn input에 있는 object proposal을 변환하기 위한 두가지 방법
  1. 가장 tight한 square에 있는 각각의 object proposal을 둘러싸고 cnn input size가 정사각형이므로 억제된 image를 맞춘다.
  2. cnn input size에 각각의 object proposal을 이방성으로 맞춘다.

 

context padding(p): 변형된 input 좌표 frame에서 기존 object proposal 주위의 테두리 크기

 

위 그림에서 제일 위에 있는 행이 context padding(p)가 0이고 제일 아래에 있는 행은 p가 16이다.

모든 방법에서 직사각형 source가 image 아래로 확장된다면, missing data는 image 픽셀의 평균으로 대체된다.

실험에서 pilot set은 context padding을 사용한 warping이 큰 차이로 대안을 능가한다는 것을 보여준다.

 평균 패딩 대신에 사본을 사용하는 것이 가능하다.

 

 

B) Positive vs negative examples and softmax

1. positive와 negative example이 svm에 object detection을 학습하는 것에 비해 cnn을 fine tuning하는 것에 대해 왜 다르게 정의될까?

 

fine tuning의 경우, IOU가 적어도 0.5보다 크다면 groud truth instance가 positive로서 가장 많이 겹친 IOU와 label을 가진 ground truth instance에 각 object proposal을 map한다

모든 다른 proposal은 back ground로 label되어진다.

반대로, svm을 학습하는 경우, class가 negative로서 class의 모든 instance들을 가지고 IOU가 0.3보다 작은 각 class와 label에 positive example로서 ground truth box를 가진다.

grey zone에 빠지는 proposal은 무시되어졌다. 왜냐하면 imagenet에 pretrain된 cnn에 의해 계산되는 feature에 svm을 학습함으로써 시작했고 fine tuning은 적절한 시점에 하지 않았기 때문이다.

이 설정에서, 우리는 svm을 학습에 대한 우리의 특정한 label 정의는 우리가 평가한 옵션의 세트에 최적인 것을 알았다.

우리가 fine tuning을 사용했을 때, 우리는 우리가 svm으로 학습하기 위해 사용함으로써 같은 positive와 negative example 정의를 처음으로 사용했다. 

하지만 결과는 현재 정의의 positive와 negative를 사용하는 것을 얻는 것보다 훨씬 안 좋았다는 것을 알았다.

 

우리의 가설은 정의된 positive와 negative가 어떻게 근본적으로 중요하지 않는지와 fine tuning data가 제한되어졌다는 것에서 나왔다.

우리의 현재 계획은 대략적으로 30배 많은 positive example을 확장하는 많이 jittered example을 소개한다.

전체 network를 fine tuning할 때, 우리는 overfitting을 피하기 위해 큰 set이 필요로 했다고 추측한다.

그러나 우리는 network가 정확한 위치로 fine tuning된 것이 아니기 때문에 jittered example을 사용하는 것에 주목한다.

 

2. 왜 fine tuning 하고 나서 svm을 학습할까?

object detector로 21개의 softmax regression classifier인 fine tune된 network의 마지막 layer에 간단하게 적용하는 것에 더 깔끔해졌다.

voc 2007에서 성능이 54.2%에서 50.9% mAP로 떨어졌다

이 성능은 fine tuning에 사용된 positive example의 정의가 정확한 localization을 강조하지 않고 softmax classifier은 svm 학습에 사용된 hard negative의 부분집합보다 랜덤으로 sample된 negative example에 학습되어졌다.

 

이 결과는 fine tuning 후에 svm 학습 없는 것과 같은 수준의 성능에 가깝게  얻을 수 있었다.

우리는 남은 성능의 격차를 fine tuning 하기 위해서 추가적인 수정된 채 끝났을지도 모른다고 추측한다.

만약 맞다면, 이것은 detection 성능에서 loss없이 R-CNN 학습을 간단하고 빠르게 한다는 것이다.

 

 

C) Bounding box regression

우리는 localization 성능을 향상시키기 위해 간단한 bounding box regression stage를 사용한다.

class별 detection을 하는 svm과 각 selective search proposal로 점수를 낸 후에, 우리는 class별 bounding box regressor을 사용하는 detection에 대한 새로운 bounding box를 예측한다.

이것은 DPM에 사용하는 bounding box regression과 비슷하다.

 

  • DPM에 사용하는 bounding box regression과 다른점

추론된 DPM 부분의 위치에 계산된 기하학 feature보다 cnn에 의해 계산된 feature로부터 퇴행함

 

학습 알고리즘 input: 픽셀에 $P_i$의 넓이와 높이와 같이 proposal $P_i$의 bounding box의 center 픽셀 좌표를 구체화하는 $ P_i = (P_x,P_y,P_w,P_h) $에서 N개의 학습 pair의 set

 

ground truth bounding box: G = ($ G_x,G_y,G_w,G_h $)

 

우리의 목표는 proposed box P를 ground truth box G로 만드는 변환을 학습하는 것이다.

 

우리는 네가지 함수인 $d_x$(p),$d_y$(p),$d_w$(p),$d_h$(p) $에 관한 변화를 파라미터로 나타낸다.

$d_x$(p),$d_y$(p): bounding box의 center의 scale invariant 변환

$d_w$(p),$d_h$(p): P의 bounding box의 넓이와 높이의 log space 변환

 

이 함수를 학습한 후, 우리는 변환을 적용하기 위해 예측된 ground truth box G에 있는 input proposal P로 변환할 수 있다.

각 함수 d(p)는 proposal P의 $pool_5$ feature의 선형 함수로 모델링되고, $\phi_5$(p)로 표시된다.

그러므로 우리는 d(p) = $w{_*}{^T}$$\phi_5$(p)를 가진다.

 

$w_*$:  학습 가능한 model parameter의 vector

 

우리는 정규화된 최소 제곱 목적 함수를 최적화함으로써 $w_*$을 학습한다.

 

학습 pair(P,G)에 대한 regression target $t_*$은 정의된다.

일반적인 정규화된 최소 제곱 문제에서 이 식은 closed form으로 효율적으로 풀 수 있다.

 

  • bounding box regression하는 동안에 깨달은 두 가지
  1. 정규화가 중요하다(valdiation set에서 $\Lambda$ 1000으로 설정)
  2. 사용할 학습 pair(P,G)을 선택할 때 주의해야함

 

직관적으로, P가 모든 groud truth box와 멀다면, p에서 ground truth box G로 변환하는 task가 말이 안돼서 P를 쓸 이유가 없다. 

그러므로 적어도 하나의 ground truth box와 가깝다면 proposal P를 학습한다.

우리는 겹치는 것이 threshold보다 더 크다면 최대 IOU가 겹치는 ground truth box G에 P를 할당하여 근접성을 구현한다.

할당되지 않은 모든 proposal은 버려진다.

우리는 class별 bounding box regressor의 set을 학습하기 위해 각 object class에 대해 한번씩 학습한다.

 

test에서는 각 proposal을 채점하고, 새로운 detection window로 단 한번만 예측한다.

원칙적으로, 이 절차를 반복할 수 있지만 결과를 향상시키지 않다는 것을 안다.

 

 

D) Additional feature visualizations

위 그림은 20개의 pool5 unit에 대한 추가적인 visualization을 나타낸다.

각 unit에 대해, 우리는 voc 2007 test data에 있는 full set의 10 million region 중에서 unit을 최대로 활성화하는 24개의 region proposal을 나타낸다.

 

우리는 6x6x256차원의 pool5 feature map에서 y,x,channel 자리에 있는 unit을 label한다.

각 channel 안에, cnn은 receptive field를 바꾸는 (y,x) 자리를 가진 같은 함수의 input region을 계산한다.

 

 

E) Per-category segmentation results

Per-category segmentation accuracy on the VOC 2011 validation set

위 표에서 우리는$ O_2$P 방법뿐만 아니라 6개의 segmentation 방법에 대한 voc 2011 val data의 카테고리별 segmentation 정확도를 나타낸다.

이 결과는 background class를 추가한 20개의 pascal class들이 가장 좋다는 것을 나타낸다.

 

 

F) Analysis of cross-dataset redundancy

보조 dataset으로 학습할 때 한가지 염려는 보조 dataset과 test set에서 중복될지도 모른다는 것이다

object detection의 task와 전체 image classification은 상당히 달라서 교차 세트의 중복성이 훨씬 덜 우려되지만 우리는 pascal test image가 ILSVRC 2012 training과 validation set에 포함되어 있는 정도를 정량화하는 조사를 수행한다.

 

  • 복제된 image에 대한 두가지 check
  1. voc 2007 test annotation에 포함되는 flickr image ID들의 정확한 일치에 근거되어지는지 $ \rightarrow $ 4952개 중에서 31개 일치(0.63%) 
  2. 큰 image collection에서 중복된 image detection에 가까운 훌륭한 성능을 보이는 GIST descriptor matching을 사용하는 것 

GIST descriptor에 euclidean 거리를 사용한 nearest neighbor matching은 38개에 가까운 중복된 image를 드러냈다.

하지만 JPEG의 압축 수준과 해상도, 더 작은 크기로 자르는 것에 달라지는 경향이 있다.

그 결과 중복된 image 개수가 1%보다 작았다