SlideShare a Scribd company logo
論文紹介
Fast R-CNN &
Faster R-CNN: Towards Real-Time Object
Detection with Region Proposal Networks
Takashi Abe (@tabe2314)
紹介する論文
Fast R-CNN
Ross 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
Cross
Entropy
矩形回帰
全体像再掲
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

More Related Content

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