論文紹介: fast r-cnn&faster r-cnn
TRANSCRIPT
論文紹介Fast R-CNN &
Faster R-CNN: Towards Real-Time Object Detection with Region
Proposal Networks
Takashi Abe (@tabe2314)
紹介する論文
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 ではありません、申し訳ありません……
やりたいこと:一般物体検出
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.
R-CNN の問題点学習が多段の処理になっていて煩雑• ImageNet で pretrain した CNN を finetune して• 上に SVM を載せて学習して• 矩形回帰の学習をする
学習の空間 / 時間計算量が非常に大きい• ネットワークの形として VGG を使った場合• 2.5GPU days for 5k image, 数百 GB のストレー
ジ
検出が遅い!• 47sec / image (VGG)
R-CNN はなぜ遅いか
• 候補領域の個数 (~2k) の数だけ CNN を計算するため• 冗長な計算もたくさん発生• 使っている CNN が、決まったサイズの画像を入力し
てその特徴を出力するものなので、こうせざるを得ない
• 画像全体に対して一度だけ CNN を適用して、その後注目領域の特徴を取り出せれば…… → SPP-net
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.
Fast R-CNN の Contribution
• R-CNN に対して精度向上• Multi-task loss を導入することで、システム全体を
一発で学習できるように• Pretraining 済みの下の層も含めてネットワーク全体
のパラメータを学習• 学習中にストレージを使わない(これは単に実装の問
題という気も……)
• Caffe を改造した実装を github で公開中• https://github.com/rbgirshick/fast-rcnn
基本アイデア1. ImageNet 学習済みモデル (VGG 等 ) の conv 層ま
でを使って任意サイズの入力画像の feature mapを計算
2. SS 等で求めた候補領域 (RoI) を feature map 上に射影
3. Feature map 上で射影された RoI を RoI Pooling
4. 何段か FC 層を挟んだ後、物体カテゴリの分類問題と矩形回帰問題を同時に解く
5. 学習時には、最下層まで誤差逆伝播する
RoI Pooling
• 任意サイズの領域をプーリングして、固定サイズの出力をするのが目的• 普通の Max Pooling と同様に誤差逆伝播可
Conv 何段か
RoI を設定した大きさのグリッドに区切ってそれぞれのセルで Max Pooling
Multi-task Loss
L = 分類誤差 + λ [ 背景ではない ] 矩形回帰誤差分類 : 物体カテゴリ数 +1 クラス分類 (+1 は背景クラス )
矩形回帰 : 候補領域を真の Bounding Box に近づける回帰
FC
softmax分類誤差
矩形回帰誤差
Smooth L1
CrossEntropy
矩形回帰
全体像再掲
SVD による FC 層の高速化• (R-CNN に対して ) 畳み込みの計算が減った結果とし
て全体にしめる FC 層の計算量の割合が増えてきた• ので、高速化したい
• アイデア : Y=WX W を低ランク近似する
• とすれば、大きい入力→大きい出力の FC 層は、大→小→大の 2 段の FC 層で近似できる
W Σ𝑡𝑉𝑇 𝑈
実験結果 : 精度
実験結果 : 速度
• SS の計算時間は含まないので上記 +1sec 程度
Does SVM outperform softmax?
• R-CNN 等で NN の softmax 層を SVM に付け替えるテクニックがよく使われるけど意味があるの?• → いらない
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 でトップ )
Region Proposal Network (RPN)
• 任意サイズの画像を入力して、物体候補領域とそのスコアを出力する
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
RPN: feature map 上で sliding window
Feature map
Anchors
• 単純に考えると、スケール・アスペクト比一定の荒いsliding-window をしているだけ• → 多様な形の領域候補を出せない
• “アンカー”を導入して、 windowひとつから複数領域(中心は同じ)の objectness を求める
Anchors
• Window毎に• k 個の anchor の object/
background 分類• 4k 個の矩形回帰を行う
• Window の受容野 ( その値に寄与している入力画像の範囲 ) と Anchor は一致しないものもある
• Anchor は 3 スケールでアス比 1:1, 1:2, 2:1 の 3種類で決め打ち• k=3*3=9
Loss と学習• Loss はほぼ F-RCNN と同じ• Anchorごとに• 分類誤差 + λ [ 背景ではない ] 矩形回帰誤差
• 各 Anchor は、正解データの矩形と IoU>0.7 でかぶっていれば Positive, IoU<0.3 なら Negative, 残りはどちらでもない(学習時は無視)
• 単純にネットワーク全体( feature map を計算するconv 層含む)で BP して学習
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
実験 : SS 等との比較• 少ない候補矩形でも十分な Recall→ 後段の計算量も減
る• 正解とみなす IoU しきい値を上げていくと順位が入れ
替わるけど最終的な精度にはあんまり関係ない
さいげん……失敗
実験 : 最終精度・速度
まとめ• R-CNN系列の最新手法 Fast R-CNN を紹介• 数百倍高速化された
• そうなると Selective Search がボトルネック• 候補矩形を出すところも CNN でやろう → Region
Proposal Network• 精度良い& Fast R-CNN と計算を共有できるので
速い• システム全体で 200ms/image! ほぼリアルタイム• 精度も現在の SOTA