論文紹介: fast r-cnn&faster r-cnn

29
論論論論 Fast R-CNN & Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks Takashi Abe (@tabe2314)

Upload: takashi-abe

Post on 16-Aug-2015

2.041 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: 論文紹介: Fast R-CNN&Faster R-CNN

論文紹介Fast R-CNN &

Faster R-CNN: Towards Real-Time Object Detection with Region

Proposal Networks

Takashi Abe (@tabe2314)

Page 2: 論文紹介: Fast R-CNN&Faster R-CNN

紹介する論文

Fast R-CNNRoss Girshick (R-CNN の人 )

http://arxiv.org/abs/1504.08083

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun

http://arxiv.org/abs/1506.01497

• 著者は全員 MSR

• Pascal VOC Detection Leader Board• CVPR2015 ではありません、申し訳ありません……

Page 3: 論文紹介: Fast R-CNN&Faster R-CNN

やりたいこと:一般物体検出

Page 4: 論文紹介: Fast R-CNN&Faster R-CNN

R-CNN* 復習

2. Selective Search で候補領域を出す3. それぞれ既定の大きさにリサイズして CNN に投入4. CNN の output を特徴として分類 (SVM or softmax)

5. 矩形の座標を回帰(候補領域のズレを補正するため)

• 関連 : Deep Learningで物体検出 (@takmin)* R. Girshick, J. Donahue, T. Darrell, J. Malik. Region-based Convolutional Networks for Accurate Object Detection and Semantic Segmentation. TPAMI, 2015.

Page 5: 論文紹介: Fast R-CNN&Faster R-CNN

R-CNN の問題点学習が多段の処理になっていて煩雑• ImageNet で pretrain した CNN を finetune して• 上に SVM を載せて学習して• 矩形回帰の学習をする

学習の空間 / 時間計算量が非常に大きい• ネットワークの形として VGG を使った場合• 2.5GPU days for 5k image, 数百 GB のストレー

検出が遅い!• 47sec / image (VGG)

Page 6: 論文紹介: Fast R-CNN&Faster R-CNN

R-CNN はなぜ遅いか

• 候補領域の個数 (~2k) の数だけ CNN を計算するため• 冗長な計算もたくさん発生• 使っている CNN が、決まったサイズの画像を入力し

てその特徴を出力するものなので、こうせざるを得ない

• 画像全体に対して一度だけ CNN を適用して、その後注目領域の特徴を取り出せれば…… → SPP-net

Page 7: 論文紹介: Fast R-CNN&Faster R-CNN

SPP-net*

• 任意サイズの領域を決まったサイズにプーリングするSpatial Pyramid Pooling を導入• 任意サイズの画像を入力して、任意の領域の決まった

長さの特徴を計算可能• R-CNN に対して 10-100x の高速化 ( 約

1sec+1sec(SS) / image)

• 学習が多段で煩雑である問題は解決していない

Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition, ECCV2015.

Page 8: 論文紹介: Fast R-CNN&Faster R-CNN

Fast R-CNN の Contribution

• R-CNN に対して精度向上• Multi-task loss を導入することで、システム全体を

一発で学習できるように• Pretraining 済みの下の層も含めてネットワーク全体

のパラメータを学習• 学習中にストレージを使わない(これは単に実装の問

題という気も……)

• Caffe を改造した実装を github で公開中• https://github.com/rbgirshick/fast-rcnn

Page 9: 論文紹介: Fast R-CNN&Faster R-CNN

基本アイデア1. ImageNet 学習済みモデル (VGG 等 ) の conv 層ま

でを使って任意サイズの入力画像の feature mapを計算

2. SS 等で求めた候補領域 (RoI) を feature map 上に射影

3. Feature map 上で射影された RoI を RoI Pooling

4. 何段か FC 層を挟んだ後、物体カテゴリの分類問題と矩形回帰問題を同時に解く

5. 学習時には、最下層まで誤差逆伝播する

Page 10: 論文紹介: Fast R-CNN&Faster R-CNN

RoI Pooling

• 任意サイズの領域をプーリングして、固定サイズの出力をするのが目的• 普通の Max Pooling と同様に誤差逆伝播可

Conv 何段か

RoI を設定した大きさのグリッドに区切ってそれぞれのセルで Max Pooling

Page 11: 論文紹介: Fast R-CNN&Faster R-CNN

Multi-task Loss

L = 分類誤差 + λ [ 背景ではない ] 矩形回帰誤差分類 : 物体カテゴリ数 +1 クラス分類 (+1 は背景クラス )

矩形回帰 : 候補領域を真の Bounding Box に近づける回帰

FC

softmax分類誤差

矩形回帰誤差

Smooth L1

CrossEntropy

Page 12: 論文紹介: Fast R-CNN&Faster R-CNN

矩形回帰

Page 13: 論文紹介: Fast R-CNN&Faster R-CNN

全体像再掲

Page 14: 論文紹介: Fast R-CNN&Faster R-CNN

SVD による FC 層の高速化• (R-CNN に対して ) 畳み込みの計算が減った結果とし

て全体にしめる FC 層の計算量の割合が増えてきた• ので、高速化したい

• アイデア : Y=WX W を低ランク近似する

• とすれば、大きい入力→大きい出力の FC 層は、大→小→大の 2 段の FC 層で近似できる

W Σ𝑡𝑉𝑇 𝑈

Page 15: 論文紹介: Fast R-CNN&Faster R-CNN

実験結果 : 精度

Page 16: 論文紹介: Fast R-CNN&Faster R-CNN

実験結果 : 速度

• SS の計算時間は含まないので上記 +1sec 程度

Page 17: 論文紹介: Fast R-CNN&Faster R-CNN

Does SVM outperform softmax?

• R-CNN 等で NN の softmax 層を SVM に付け替えるテクニックがよく使われるけど意味があるの?• → いらない

Page 18: 論文紹介: Fast R-CNN&Faster R-CNN

Faster R-CNN あらまし• (Fast R-CNN 含め ) CNN ベースの物体検出器は物体

候補領域をあらかじめ求めないといけない• 一般的な方法は Selective Search, BING, etc.• 遅い、システムが前後に分断されて綺麗じゃない

• 物体候補領域検出処理も CNN で行う Region Proposal Network を提案して Fast R-CNN の SS を置き換え• 後段の Fast R-CNN と計算を共通化するので速い• End-to-end で学習するので高精度

• 高速 (0.2sec/image), 高精度 (PASCAL VOC でトップ )

Page 19: 論文紹介: Fast R-CNN&Faster R-CNN

Region Proposal Network (RPN)

• 任意サイズの画像を入力して、物体候補領域とそのスコアを出力する

Page 20: 論文紹介: Fast R-CNN&Faster R-CNN

RPN: feature map 上で sliding window• Fast R-CNN と同様に conv 層を

何段かかけて feature map を計算• Feature map 上で 3x3 の検出窓

を走査、物体の有無を窓ごとに分類• 3x3xチャンネル数 -> 256次元

-> objectness score& 矩形回帰

• 実際には sliding-window せず、Fully-CNN として表現可能• 3x3 conv -> 1x1 conv

Page 21: 論文紹介: Fast R-CNN&Faster R-CNN

RPN: feature map 上で sliding window

Feature map

Page 22: 論文紹介: Fast R-CNN&Faster R-CNN

Anchors

• 単純に考えると、スケール・アスペクト比一定の荒いsliding-window をしているだけ• → 多様な形の領域候補を出せない

• “アンカー”を導入して、 windowひとつから複数領域(中心は同じ)の objectness を求める

Page 23: 論文紹介: Fast R-CNN&Faster R-CNN

Anchors

• Window毎に• k 個の anchor の object/

background 分類• 4k 個の矩形回帰を行う

• Window の受容野 ( その値に寄与している入力画像の範囲 ) と Anchor は一致しないものもある

• Anchor は 3 スケールでアス比 1:1, 1:2, 2:1 の 3種類で決め打ち• k=3*3=9

Page 24: 論文紹介: Fast R-CNN&Faster R-CNN

Loss と学習• Loss はほぼ F-RCNN と同じ• Anchorごとに• 分類誤差 + λ [ 背景ではない ] 矩形回帰誤差

• 各 Anchor は、正解データの矩形と IoU>0.7 でかぶっていれば Positive, IoU<0.3 なら Negative, 残りはどちらでもない(学習時は無視)

• 単純にネットワーク全体( feature map を計算するconv 層含む)で BP して学習

Page 25: 論文紹介: Fast R-CNN&Faster R-CNN

Fast R-CNN と Feature map を共有• 任意サイズの入力画像を conv 層何段かに通して

feature map を計算するのは Fast R-CNN でも同じ• この conv 層を RPN と Fast R-CNN で共有したい• そうすると相互に依存してしまうので以下の手順で学

1. ImageNet訓練済み conv 層を使ってに RPN 学習2. 1 で学習した RPN が出力した候補矩形を使って、同

様に ImageNet訓練済み conv 層を使って学習3. 2 で finetune された conv 層を使って RPN 学習し

なおす、この際 conv 層は fix

Page 26: 論文紹介: Fast R-CNN&Faster R-CNN

実験 : SS 等との比較• 少ない候補矩形でも十分な Recall→ 後段の計算量も減

る• 正解とみなす IoU しきい値を上げていくと順位が入れ

替わるけど最終的な精度にはあんまり関係ない

Page 27: 論文紹介: Fast R-CNN&Faster R-CNN

さいげん……失敗

Page 28: 論文紹介: Fast R-CNN&Faster R-CNN

実験 : 最終精度・速度

Page 29: 論文紹介: Fast R-CNN&Faster R-CNN

まとめ• R-CNN系列の最新手法 Fast R-CNN を紹介• 数百倍高速化された

• そうなると Selective Search がボトルネック• 候補矩形を出すところも CNN でやろう → Region

Proposal Network• 精度良い& Fast R-CNN と計算を共有できるので

速い• システム全体で 200ms/image! ほぼリアルタイム• 精度も現在の SOTA