[Survey]CNN Features off-the-shelf: an Astounding Baseline for Recognition

この論文は、**CNN**で抽出されたFeatureを他のタスクに使用した時のPerformanceについて調べた[論文](http://arxiv.org/pdf/1403.6382v3.pdf)です。

CNNは、**OverFeat Network**を使用しています。

taskは、下記の通りです。
下記Taskは、OverFeatのOriginal TaskとDataからどんどん離れるようになっています。

1. **image classification**
2. **scene recognition**
3. **fine grained recognition**
4. **attribute detection**
5. **image retrieval**

![範囲を選択_156.png](https://qiita-image-store.s3.amazonaws.com/0/100523/7d44335a-9526-a257-03f6-4ccdec265f7f.png)

# CNN
CNNは[OverFeat Network](http://arxiv.org/pdf/1312.6229v4.pdf)を使用している。

２つあるうちのこちらの方を使用。
Architectureは[ここ](http://cilvr.nyu.edu/doku.php?id=code:start)を参照した。

'accurate' network (table 2 in http://arxiv.org/abs/1312.6229):
input 3x221x221
stage 1: convo: 7×7 stride 2×2; ReLU; maxpool: 3×3 stride 3×3; output (layer 3): 96x36x36
stage 2: convo: 7×7 stride 1×1; ReLU; maxpool: 2×2 stride 2×2; output (layer 6): 256x15x15
stage 3: convo: 3×3 stride 1×1 0-padded; ReLU; output (layer 9) 512x15x15
stage 4: convo: 3×3 stride 1×1 0-padded; ReLU; output (layer 12) 512x15x15
stage 5: convo: 3×3 stride 1×1 0-padded; ReLU; output (layer 15) 1024x15x15
stage 6: convo: 3×3 stride 1×1 0-padded; ReLU; maxpool: 3×3 stride 3×3; output (layer 19) 1024x5x5
stage 7: convo: 5×5 stride 1×1; ReLU; output (layer 21) 4096x1x1
stage 8: full; ReLU; output (layer 23) 4096x1x1
stage 9: full; output (layer 24) 1000x1x1
output stage: softmax; output (layer 25) 1000x1x1

# Visual Classification
・Featureは、CNNの最初のfully connected layer(**layer 22**)の出力を使用
・入力画像は、２２１x221にresizeかcrop
・Featureは**l2 normalization**する
・4096次元のFeatureを**SVM**の入力とする（CNN-SVM）
・training dataのaugmentationをしたものを**CNNaug+SVM**とする
・VOC Object Classification, UIUC Object attributesの時は、**one against all**をそれ以外の時は**one again one with voting**を使用。
　one against all は、あるClassとそれ以外という判別を行って、一番スコアーが高いものを分類Classとする手法
　one against one votingは、１対１で判別を行って、投票していき最も得票が多かったものを分類Classとする手法

## Image Classification
### PASCALL VOC Object Classification
・AP(average precision)で評価
・すべてのCategoryで同等かそれ以上の性能が出ている
![範囲を選択_157.png](https://qiita-image-store.s3.amazonaws.com/0/100523/f999f817-128a-3a0e-7b93-9ed71b79584d.png)

(a)FeatureのLayerを変えた時の性能の変化
・後段の出力ほど性能がよくなっている
・4,8,etcで性能が落ちているのは、**ReLU**の出力のところ
![範囲を選択_158.png](https://qiita-image-store.s3.amazonaws.com/0/100523/330a39e2-59bf-5abc-d723-67bc2fc0ae44.png)

### MIT 67 Scene Classification
・CNNは今までの最高レベルと同等の性能が出ている
・いくつかのSceneは**backery-buffet**, **cinema-auditorium**, **library-bookstore**は性能が悪いが人間でも難しいシーン
![範囲を選択_159.png](https://qiita-image-store.s3.amazonaws.com/0/100523/1b5081f2-225b-e114-53cb-c8057a912266.png)

## Object Detection
自分たちではやらなかったけど、Girshick et al.がすでに行った結果によると、mAPが46.2でこれまでより10%上回っている

## Fine grained Recognition
・花の種類とか犬の品種などの、subclassを認識するタスク
### CUB 200-2011 Bird dataset
![範囲を選択_160.png](https://qiita-image-store.s3.amazonaws.com/0/100523/75ccfa31-90c4-144c-ede3-02bb9ef1921d.png)
### Oxford 102 Flowers dataset
![範囲を選択_161.png](https://qiita-image-store.s3.amazonaws.com/0/100523/9a3095ff-d0c9-95b0-2a38-6f024b6b87bf.png)

## Attribute Detection
![範囲を選択_162.png](https://qiita-image-store.s3.amazonaws.com/0/100523/75a03ed3-610c-3f7b-d7b0-7cd4ab922608.png)
![範囲を選択_163.png](https://qiita-image-store.s3.amazonaws.com/0/100523/8a7ad0ca-ba2a-e2f7-e65c-abb0fd79b0dc.png)

## Visual Instance Retrieval
・query imageに写っているものと同じものが写っているreference imageを探すタスク
・query imageをsub patchに切り出す
・切り出したPatchのCNN representationを求める
・reference imageのsub patchとのL2 distanceを計算し、最小値のpatchを探す
![範囲を選択_164.png](https://qiita-image-store.s3.amazonaws.com/0/100523/9badf924-fb91-8607-d786-ae0cd147e24d.png)

# 最後に
CNNの抽出したFeatureを別のタスクに使用しても性能が出ていることがわかる有意義な知見