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.

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

13,760 views

Published on

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

Published in: Data & Analytics
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. R-CNNの原理と ここ数年の流れ 本橋和貴 CS室AI開発課 (R-)CNN調査報告会 - 2017年6月14日
  2. 2. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN - 分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 2
  3. 3. 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
  4. 4. R-CNNの応用例 4* NVIDIA Seminar ディープラーニングによる画像認識と応用事例 * https://www.slideshare.net/Takayosi/nvidia-51814334 すみません、RNNの応用例でした
  5. 5. R-CNNの応用例 5* NVIDIA Seminar ディープラーニングによる画像認識と応用事例 * https://www.slideshare.net/Takayosi/nvidia-51814334
  6. 6. R-CNNの応用例 R-CNNの人認識とクラスタリングを組み合わせた手法 「Deep Learning技術をベースとした異常画像検出」(2016) https://kaigi.org/jsai/webprogram/2016/pdf/664.pdf (有限責任監査法人トーマツ デロイトアナリティクス&株式会社リクルート住まいカンパニー) 【不動産ポータルサイトSUUMO】 - 物件管理者側から提供された物件写真をサイトに掲載できるかチェック NG:人が写っていたらダメ(プライバシーの観点から) NG:工事中の写真はダメ NG:拡大しすぎ/縮小しすぎはダメ
  7. 7. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN - 分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 7
  8. 8. R-CNNの原点 原論文: Rich feature hierarchies for accurate object detection and semantic segmentation (2013) https://arxiv.org/abs/1311.2524 8
  9. 9. 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. それぞれの領域になにが写っているか分類する
  10. 10. 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. それぞれの領域になにが写っているか分類する 詳細は後述
  11. 11. 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. それぞれの領域になにが写っているか分類する 詳細は後述
  12. 12. 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. それぞれの領域になにが写っているか分類する 詳細は後述
  13. 13. 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. それぞれの領域になにが写っているか分類する 詳細は後述
  14. 14. R-CNNの原理(1):領域分け 色々なアルゴリズムが存在するが、(あくまで先行研究との比較のため) 原論文ではselective searchを用いている 14
  15. 15. R-CNNの原理(1):領域分け 色々なアルゴリズムが存在するが、(あくまで先行研究との比較のため) 原論文ではselective searchを用いている 15 1. 色や濃淡勾配などの特徴が類似する領域に分ける 2. 類似度が高い隣接領域をどんどん結合していく こうして小さい領域候補から大きな領域候補まで網羅 (参考:領域の大きさのことをスケールと呼ぶ) “Fast mode”では約2,000個の候補 (VOC @ ~500x300 pix) 時系列 * 出典:Selective Search for Object Recognition * https://www.koen.me/research/selectivesearch/
  16. 16. 現論文で用いた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
  17. 17. 現論文で用いた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
  18. 18. 現論文で用いた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
  19. 19. 現論文で用いた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
  20. 20. 現論文で用いた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
  21. 21. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 21 Car Person Fuel dispenser 正解ラベル (ground truth) 例)車の認識
  22. 22. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 22 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Car
  23. 23. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 23 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Train
  24. 24. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 24 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Car
  25. 25. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 25 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Car
  26. 26. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 26 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Car ?
  27. 27. R-CNNの原理(3) 分類器 R-CNNにおいて「分類がうまくいった」というのはどういう場合か 27 Car Person Fuel dispenser 正解ラベル (ground truth) 認識結果 例)車の認識 Car ? 物体名と領域の位置・大きさが合って初めて正解
  28. 28. 領域の一致具合の指標 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 に設定
  29. 29. 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で 信号・背景を識別する境界を学習
  30. 30. 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 で分類する
  31. 31. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN - 分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 31
  32. 32. オリジナル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
  33. 33. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN - 分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 33
  34. 34. 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 (次ページに拡大図)
  35. 35. R-CNNの進化版のまとめ 35 * 出典:YOLO9000: Better, Faster, Stronger * https://arxiv.org/pdf/1612.08242.pdf
  36. 36. Agenda - Introduction - R-CNNの原理 - 領域分け - CNN - 分類器 - R-CNNの問題点 - R-CNNの最近の動向 - SSD (Single Shot multibox Detector) の概要 - まとめ 36
  37. 37. 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
  38. 38. • 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
  39. 39. SSDの原理 39
  40. 40. SSDの原理:特徴抽出 40 *VGGの全結合 (Fully-Connected) 層は畳込み (Convolution) 層に置き換えている 前半のVGGネットで特徴量 (feature) を抽出
  41. 41. SSDの原理:物体の位置と種類の認識 41 Feature mapを小さくしながら、異なるスケールの領域候補と物体認識のスコア(~確率)を出力 領域候補のアスペクト比は デフォルトの{1, 2, 3, ½, ⅓} で固定 (極端に細長い物体は認識しづらい)
  42. 42. SSDの原理:物体の位置と種類の認識 42 Feature mapを小さくしながら、異なるスケールの領域候補と物体認識のスコア(~確率)を出力 領域候補のアスペクト比は デフォルトの{1, 2, 3, ½, ⅓} で固定 (極端に細長い物体は認識しづらい?) 出典:https://www.slideshare.net/xavigiro/ssd-single-shot-multibox-detector
  43. 43. SSDの原理:学習 43 物体認識と位置決定の損失関数(loss function)の和を 小さくするようにフィルタの値を調整
  44. 44. SSDの原理:学習 物体認識と位置決定の損失関数(loss function)の和を 小さくするようにフィルタの値を調整 44 Confidence Loss Localization Loss weight term: 一応フリーパラメータ としているが、論文では 単純に α=1 と設定 Ground Truthと 位置がマッチした Bounding Boxの数
  45. 45. 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 と設定
  46. 46. 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)
  47. 47. 参考:YOLO (You Only Look Once) 47 ● 予め画像全体をグリッド分割 ● 各領域ごとに物体のクラスとBounding Boxを求める
  48. 48. 参考:SSDとYOLOのモデルの概要 48
  49. 49. https://github.com/rykov8/ssd_keras/blob/master/ssd.py 49 SSD の Keras での実装
  50. 50. https://github.com/rykov8/ssd_keras/blob/master/ssd.py 50 SSD の Keras での実装
  51. 51. https://github.com/rykov8/ssd_keras/blob/master/ssd.py 51 SSD の Keras での実装 “Localizationの特徴量” “Confidenceの特徴量” Default Bounding Box
  52. 52. https://github.com/rykov8/ssd_keras/blob/master/ssd.py 52 SSD の Keras での実装
  53. 53. まとめ • R-CNN (Regions with CNN features) は  領域分け+CNNの特徴量抽出 を組み合わせて、画像内の複数物体認識を行う • オリジナルのR-CNNは動作が遅すぎて使い物にならない • R-CNN改良版のSSDやYOLO • ひとつのニューラルネットで両方のタスクを担う • CNNで特徴量を認識してから領域分けを行う 53
  54. 54. Backup 54
  55. 55. 【スラング英語の教科書】YOLOの正しい意味と使い方 http://creatorjapan.asia/yolo-meaning/ 55
  56. 56. 56 Fast R-CNN https://arxiv.org/abs/1504.08083
  57. 57. R-CNNの応用例 57 R-CNN R-CNNの人認識とクラスタリングを組み合わせた手法 「Deep Learning技術をベースとした異常画像検出」(2016) https://kaigi.org/jsai/webprogram/2016/pdf/664.pdf (有限責任監査法人トーマツ デロイトアナリティクス&株式会社リクルート住まいカンパニー) - 物件管理者側から提供された物件写真をサイトに掲載できるかチェック NG:人が写っていたらダメ(プライバシーの観点から) NG:工事中の写真はダメ NG:拡大しすぎ/縮小しすぎはダメ
  58. 58. 【Python】 KerasのConvolution2Dの引数border_modeについて ‘valid’ 出力画像は入力画像よりもサイズが小さくなる。 58 出典:http://ni4muraano.hatenablog.com/entry/2017/02/02/195505 ‘same’ ゼロパディングすることで、 出力画像は入力画像と同じサイズになる。
  59. 59. 59 Fast R-CNN https://arxiv.org/abs/1504.08083
  60. 60. 60
  61. 61. 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/
  62. 62. 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/

×