Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

48,686 views

Published on

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

Published in: Engineering

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

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

×