Upgrade to Pro — share decks privately, control downloads, hide ads and more …

R-CNNの原理とここ数年の流れ

 R-CNNの原理とここ数年の流れ

2017年6月14日、部署内勉強会で発表

SlideShareからのお引越し
https://www.slideshare.net/KazukiMotohashi2/rcnn

kmotohas

June 14, 2017
Tweet

More Decks by kmotohas

Other Decks in Technology

Transcript

  1. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN -

    分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 2
  2. R-CNN (Regions with CNN features) ('n03085013', 'computer_keyboard', 0.78958303) ('n04264628', 'space_bar',

    0.13960978) ('n04505470', 'typewriter_keyboard', 0.050729375) ('n03793489', 'mouse', 0.0087937126) ('n04074963', 'remote_control', 0.0026325041) \* 出典:人工知能に関する断創録 - KerasでVGG16を使う (2017) \* http://aidiary.hatenablog.com/entry/20170104/1483535144 CNN (Convolutional Neural Network) 単体では 画像全体から特徴量 (feature) を抽出可能 領域候補 (Region Proposals) を生成すれば... Region毎のfeatureを抽出可能 人間が行うような”物体認識” \* 出典:Rich feature hierarchies for accurate object detection and semantic segmentation (2013) \* https://arxiv.org/abs/1311.2524 3
  3. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN -

    分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 7
  4. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 8
  5. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 9 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を抽出し、 a. CNNのインプットの大きさに合うように領域中の画像をリサ イズし、 3. それぞれの領域に対してCNNで特徴量 (feature) を計算し 4. それぞれの領域になにが写っているか分類する
  6. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 10 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を約2,000個抽出し、 a. CNNのインプットの大きさに合うように領域中の画像をリサイズし、 3. それぞれの領域に対してCNNで特徴量 (feature) を計算し 4. それぞれの領域になにが写っているか分類する 詳細は後述
  7. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 11 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を約2,000個抽出し、 a. CNNのインプットの大きさに合うようにそれぞれの領域中の画像をリサイズし、 3. それぞれの領域に対してCNNで特徴量 (feature) を計算し 4. それぞれの領域になにが写っているか分類する 詳細は後述
  8. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 12 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を約2,000個抽出し、 a. CNNのインプットの大きさに合うようにそれぞれの領域中の画像をリサイズし、 3. それぞれの領域に対してCNNで特徴量 (feature) を計算し、 4. それぞれの領域になにが写っているか分類する 詳細は後述
  9. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 13 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を約2,000個抽出し、 a. CNNのインプットの大きさに合うようにそれぞれの領域中の画像をリサイズし、 3. それぞれの領域に対してCNNで特徴量 (feature) を計算し、 4. それぞれの領域になにが写っているか分類する 詳細は後述
  10. 現論文で用いたCNNのモデルは”AlexNet” (Alex Krizhevsky et al) • 2012年の”ImageNet” datasetの1,000クラス分類コンペで圧勝したモデル • 他の有名なモデル:GoogLeNet

    (22層), VGG (16/19層), ResNet (18/34/50/...層) など 16 出典:ImageNet Classification with Deep Convolutional Neural Networks (2012) https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf R-CNNの原理(2) CNNを用いた特徴量抽出 R-CNNの原理(2) CNNを用いた特徴量抽出 全8層 = (入力)     畳込み層×5  + 全結合層×2+出力層×1
  11. 現論文で用いたCNNのモデルは”AlexNet” (Alex Krizhevsky et al) • 2012年の”ImageNet” datasetの1,000クラス分類コンペで圧勝したモデル • 他の有名なモデル:GoogLeNet

    (22層), VGG (16/19層), ResNet (18/34/50/...層) など 17 出典:ImageNet Classification with Deep Convolutional Neural Networks (2012) https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf R-CNNの原理(2) CNNを用いた特徴量抽出 R-CNNの原理(2) CNNを用いた特徴量抽出 全8層 = (入力)     畳込み層×5  + 全結合層×2+出力層×1 \* GoogLeNet in Keras \* https://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html
  12. 現論文で用いたCNNのモデルは”AlexNet” (Alex Krizhevsky et al) • 2012年の”ImageNet” datasetの1,000クラス分類コンペで圧勝したモデル • 他の有名なモデル:GoogLeNet

    (22層), VGG (16/19層), ResNet (18/34/50/...層) など 18 出典:ImageNet Classification with Deep Convolutional Neural Networks (2012) https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf R-CNNの原理(2) CNNを用いた特徴量抽出 R-CNNの原理(2) CNNを用いた特徴量抽出 全8層 = (入力)     畳込み層×5  + 全結合層×2+出力層×1 \* リアルタイム画風変換とその未来 \* https://engineering.linecorp.com/ja/blog/detail/105 Visual Geometry Group
  13. 現論文で用いたCNNのモデルは”AlexNet” (Alex Krizhevsky et al) • 2012年の”ImageNet” datasetの1,000クラス分類コンペで圧勝したモデル • 他の有名なモデル:GoogLeNet

    (22層), VGG (16/19層), ResNet (18/34/50/...層) など 19 出典:ImageNet Classification with Deep Convolutional Neural Networks (2012) https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf R-CNNの原理(2) CNNを用いた特徴量抽出 R-CNNの原理(2) CNNを用いた特徴量抽出 全8層 = (入力)     畳込み層×5  + 全結合層×2+出力層×1 \* Image Classification \* http://book.paddlepaddle.org/03.image_classification/ Residual Net
  14. 現論文で用いたCNNのモデルは”AlexNet” (Alex Krizhevsky et al) • 2012年の”ImageNet” datasetの1,000クラス分類コンペで圧勝したモデル • 他の有名なモデル:GoogLeNet

    (22層), VGG (16/19層), ResNet (18/34/50/...層) など 20 出典:ImageNet Classification with Deep Convolutional Neural Networks (2012) https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf R-CNNの原理(2) CNNを用いた特徴量抽出 R-CNNの原理(2) CNNを用いた特徴量抽出 全8層 = (入力)     畳込み層×5  + 全結合層×2+出力層×1
  15. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 27 Car Person Fuel dispenser 正解ラベル (ground

    truth) 認識結果 例)車の認識 Car ? 物体名と領域の位置・大きさが合って初めて正解
  16. 領域の一致具合の指標 IoU IoU (Intersection over Union) 28 \* 出典:Intersection over

    Union (IoU) for object detection - pyimagesearch (2016) \* http://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/ 原論文では IoU threshold = {0, 0.1, …, 0.5} で認識率をスキャンし、結局 threshold = 0.3 に設定
  17. R-CNNの原理(3) 分類器 29 SVM (Support Vector Machine) \* 出典:SVM を使うと,なにが嬉しいの?

    \* http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/SVM_1.htm 識別面から最近傍サンプル点 (support vector) まで のユークリッド距離 (マージン) を最大化するような識 別面を決めるアルゴリズム 各クラス(車、人など)に対してSVMで 信号・背景を識別する境界を学習
  18. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and

    semantic segmentation (2013) https://arxiv.org/abs/1311.2524 30 1. 入力画像に対して、 2. 物体が写っている領域の候補 (region proposal) を Selective Search で約2,000個抽出し、 a. CNNのインプットの大きさに合うようにそれぞれの領域中の画像をリサイズし、 3. それぞれの領域に対してCNN (AlexNet) で特徴量 (feature) を計算し、 4. それぞれの領域になにが写っているか Support Vector Machine で分類する
  19. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN -

    分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 31
  20. オリジナルR-CNNの欠点 学習が多段の処理になっていて煩雑 1. まず”ImageNet” dataset(1画像に1物体)でCNNをpretrain 2. “VOC” dataset(1画像に複数物体)でCNNをfine-tuning* *fine-tuning: 上流の層の重みは固定し、全結合層など下流の層の重みのみを

    trainingすること 3. CNNの出力側にSVMを載せて学習 4. 矩形回帰の学習 実行時間が遅い • 領域候補 2,000 個に対してそれぞれCNNを走らせている • 認識時間 10-45 s/image @ Nvidia Tesla K40 (cf: 最新Tesla P100はThroughput~10倍) ➡ 多数の”進化版”が考案されている 32 (参考)論文紹介:Fast R-CNN & Faster R-CNN https://www.slideshare.net/takashiabe338/fast-rcnnfaster-rcnn
  21. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN -

    分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 33
  22. R-CNNの進化版のまとめ 34 著者 初出 (arXiv) オリジナルの実装 二次創作* R-CNN Ross G.

    et al 2013/11 MATLAB+Caffe Fast R-CNN Ross G. 2015/04 Caffe / MATLAB Torch Faster R-CNN Shaoqing R. et at 2015/06 MATLAB / Caffe Keras / TensorFlow (TF) / Chainer YOLO (You Only Look Once) Joseph R. et al 2015/06 darknet TF / TF / TF / TF on Android / Keras SSD (Single Shot Multibox Detector) Wei L. et al 2015/12 Caffe Keras / TF / Torch / Chainer YOLOv2 Joseph R. et al 2016/12 darknet Keras / TF *「R-CNN implementation」等でググって1-2ページ以内にヒットしたもののみ掲載 \* 出典:SSD: Single Shot MultiBox Detector \* https://github.com/weiliu89/caffe/tree/ssd \* 出典:YOLO9000: Better, Faster, Stronger \* https://arxiv.org/pdf/1612.08242.pdf (次ページに拡大図)
  23. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN -

    分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 36
  24. SSDの概要 • Single Shot multibox Detector (SSD) • Single Shot

    (ひとつのネットワーク) で複数の物体を認識 • YOLOv1よりも速く、Faster R-CNNと同程度の精度 • Feature mapに対して小さな畳み込みフィルタをかけ、それぞれの領域 で各物体クラスのスコアとボックス位置のオフセットを予測(後述) • 異なるスケール・アスペクト比で上述の操作を繰り返す ↔ R-CNNは領域候補を出してから、全候補にCNNを走らせる • 物体認識とボックス位置それぞれの損失関数の和を最小化させる(後述) • “end-to-end”でtraining可能 ↔ R-CNNは多段階のtrainingが必要 37
  25. • Single Shot multibox Detector (SSD) • Single Shot (ひとつのネットワーク)

    で複数の物体を認識 • YOLOv1よりも速く、Faster R-CNNと同程度の精度 • Feature mapに対して小さな畳み込みフィルタをかけ、それぞれの領域 で各物体クラスのスコアとボックス位置のオフセットを予測(後述) • 異なるスケール・アスペクト比で上述の操作を繰り返す ↔ R-CNNは領域候補を出してから、全候補にCNNを走らせる • 物体認識とボックス位置それぞれの損失関数の和を最小化させる(後述) • “end-to-end”でtraining可能 ↔ R-CNNは多段階のtrainingが必要 SSDの概要 38 SSD300 in Keras @ TiTan X
  26. SSDの原理:学習 物体認識と位置決定の損失関数(loss function)の和を 小さくするようにフィルタの値を調整 44 Confidence Loss Localization Loss weight

    term: 一応フリーパラメータ としているが、論文では 単純に α=1 と設定 Ground Truthと 位置がマッチした Bounding Boxの数
  27. SSDの原理:学習 物体認識と位置決定の損失関数(loss function)の和を 小さくするようにフィルタの値を調整 45 Ground Truthと 位置がマッチした Bounding Boxの数

    Confidence Loss (Softmax Loss) Localization Loss マッチしたBox (Cross Entropy) xp ij : i番目のboxが、カテゴリpのj番目の   ground truthとマッチしたらxp =1 マッチしなかったBox カテゴリ0は背景;背景の確率=1なら最小となる weight term: 一応フリーパラメータ としているが、論文では 単純に α=1 と設定
  28. SSDの原理:学習 物体認識と位置決定の損失関数(loss function)の和を 小さくするようにフィルタの値を調整 46 Ground Truthと 位置がマッチした Bounding Boxの数

    Confidence Loss (Softmax Loss) weight term: 一応フリーパラメータ としているが、論文では 単純に α=1 と設定 Localization Loss (Smooth L1 Loss) lm i : Predicted Boxのcenter x, y, width, height gm j : Ground truthのcenter x, y, width, height 勾配が大きくなり過ぎない (at most 1)
  29. まとめ • R-CNN (Regions with CNN features) は  領域分け+CNNの特徴量抽出 を組み合わせて、画像内の複数物体認識を行う

    • オリジナルのR-CNNは動作が遅すぎて使い物にならない • R-CNN改良版のSSDやYOLO • ひとつのニューラルネットで両方のタスクを担う • CNNで特徴量を認識してから領域分けを行う 53
  30. 60

  31. 61 Deep Learning Benchmarks of NVIDIA Tesla P100 PCIe, Tesla

    K80, and Tesla M40 GPUs https://www.microway.com/hpc-tech-tips/deep-learning-benchmarks-nvidia-tesla-p100-16gb-pcie-tesla-k80-tesla-m40-gpus/
  32. 62 Deep Learning Benchmarks of NVIDIA Tesla P100 PCIe, Tesla

    K80, and Tesla M40 GPUs https://www.microway.com/hpc-tech-tips/deep-learning-benchmarks-nvidia-tesla-p100-16gb-pcie-tesla-k80-tesla-m40-gpus/