実践 Deep Learning 株式会社 システム計画研究所 奥村 義和 1 会社概要 • • • • • 株式会社システム計画研究所/ISP 設立:1977年11月10日 資本金:8,000万円 所員数:約100名 事業内容 • • • • 医療情報 制御・宇宙 通信・ネットワーク 画像処理 2 ISPと機械学習 ・部位検出 ・物体検出 ・高速化 (CUDA) 機械学習 Deep Learning 大規模データ解析 次世代リコメンドシステム研究試作 3 本日の話題 • テーマ:手形状の認識 – 認識器の学習 – 認識器をJetson TK1で動かす 4 Video 目次 • 学習 - 理論編 • 学習 - 実践・実験編 • Jetson TK1で動かす 5 学習 - 理論編 6 機械学習の発展とDeep Learning • データからパターンを学習 – 判別、回帰、クラスタリング、etc • パーセプトロン 1960– 線形判別関数+Max抽出器 – 特徴空間を線形に分離 • 多層パーセプトロン 1980– 新しい学習則(バックプロパゲーション) – 3層構造・非線形性 – 課題 : 局所解・ハイパーパラメタ・計算量・学習が収束しない • SVM, Boosting, Random Forest, ... 1990– 大域解、ハイパーパラメタ減 • Deep Learning 2010- f(Wx + b) W x – BigData・Algorithm・HPC – Neural Networkの復権 7 従来手法(SVM) と Deep Learning • SVM – 新しい手法に対するベンチマークとして標準的 – Pylearn、OpenCV等組み込み済み。 – 入力としてデータそのもの(画像)も可。 – ハイパーパラメータは存在するが、グリッドサーチ による調整が一般的。 • Deep Learning – 入力としてデータそのもの(画像)も可 – Caffe、Theano、Torch7など実装系も増えてきた – ハイパーパラメータ多 8 SVM • マージン最大化 • ソフトマージン • カーネルトリック 9 SVM • マージン最大化 • ソフトマージン • カーネルトリック 10 SVM • マージン最大化 • ソフトマージン • カーネルトリック •そもそも特徴空間上でうまくデータ分離できていると更なる 性能が期待できる → 特徴量 11 特徴量の例: HOG • • • • Histograms of Oriented Gradients 局所領域における輝度の勾配方向のヒストグラム 一定領域に対して特徴量を定義。形状の表現が可能。 特徴次元数の例: – 30x60x3画像 = 5400次元 – 1 cell 5x5, 1 block 3x3 cell, 9 bin => (4x10) x 3x3 x 9 = 3240次元 www.vision.cs.chubu.ac.jp/joint_hog/pdf/HOG+Boosting_LN.pdf 12 Deep Learning • 層を重ねることにより特徴を自動獲得する • いくつかの流派 ... – フィードフォワード vs 生成モデル – Convolutional Neural Network vs Layer-wise pre-training + fine-tuning – etc … • 画像においてはConvolutional – 画像の特性(ピクセルと近傍)を利用 – 時系列etc 13 畳み込みニューラルネット(CNN) 概要 • 視覚野は階層構造 • Simple Cell – 局所的 – 単純(棒状・角度) • Complex Cell – 複数Simple Cellの出力を足し合わせ • Complex Cellの出力をより高次な細 胞に入力 http://ohzawa-lab.bpe.es.osaka-u.ac.jp/ohzawa-lab/rf/rf_j.htm 14 畳み込みニューラルネット(CNN) 全体像 入力画像 畳み込み 畳み込み Pooling Pooling • 画像の特性を取り込んだモデル • 局所的 → 大域的 • 画像フィルタ • (畳み込み+プーリング層) ×N 入力画像 • 畳み込み ≒ Simple Cell • Pooling ≒ Complex Cell • Fully-Connectな層を挟み、出力層につなげる http://deeplearning.net/tutorial/lenet.html#lenet 15 Fully Connect 出力 0.5 -0.5 -0.5 -0.3 0.4 -0.3 0.0 -0.8 0.7 重み 各層で反応する形状 Visualizing and Understanding Convolutional Networks 16 各層で反応する形状 17 DeepLearning/CNNの性能を伸ばす為の工夫 • データ拡張 – Data Augmentation – Elastic Distortion • 前処理 – PCA:色の偏りを利用 – GCN:平均0、分散1 – ZCA Whitening:ピクセル間の相関↓ 18 理論編まとめ • • • • Deep Learningと他の機械学習の比較 SVM Convolutional Neural Network データ拡張・前処理 19 学習 - 実践・実験編 20 作業フロー データ収集 ラベル作成 検証 学習 21 キーポイント データ収集 ラベル作成 【キーポイント】 今回のポイント 背景は? 手の大きさは? 手の角度は? 検証 照明条件は? 一般には… 入手可能な分量は? 正解ラベルの振りやす さは? 学習 ノイズの程度は? 22 キーポイント データ 【キーポイント】 学習アルゴリズムの決定 特徴量の定義 前処理の有無 ハイパーパラメタの調整 収集 検証 学習 23 キーポイント データ 【キーポイント】 アプリケーションへの組み込み 収集 試作機・実環境での評価 誤判定データの蓄積 →誤判定データを学習データに 追加、再学習による性能向上 検証 学習 24 実験パターン • • • • SVM vs Deep Learning データ拡張効果 前処理の効果 両手対応 25 実験条件: データ • 画像条件 – 40 x 40 pixel, RGB – 男性: 14名、女性: 6名 • 各形状 約2,100枚 + 1,000枚 合計 3000 x 6 = 18,000枚 • 学習画像・テスト画像 – 学習画像に用いた画像はテスト画像にしない – 撮った写真を学習用とテスト用に分割 – 2名分はテスト画像のみに利用 26 実験条件: SVM • ガウスカーネル • カーネル関数、ソフトマージン等の設定値は デフォルト値 • グリッドサーチは利用せず • 特徴量 – 画像そのもの – HOG • Cell size 5 x 5, Block size 5 x 5 • 予備実験により決定 • OpenCVを利用 27 実験条件: Deep Learning(CNN) • ネットワーク構造 • CIFAR10データセットで有効なネットワークを微変更 – 32x32 RGB、10カテゴリ – 今回は40x40, 8カテゴリ。32x32では手が小さくなった為。 • 学習係数は0.0001で固定 • Caffeを利用 28 Caffeについて補足 • • • • CNNに特化したミドルウェア Pythonフロントエンド、C++/CUDA実装 CPU only / GPUで学習・推論可能 CIFAR10、MNIST、AlexNet、VCG、NIN等サンプ ルが多数付属 • 学習済みの重みを配布(ModelZoo) 29 Caffeにおける学習手順 • CIFAR10などオープンデータを使う場合 – 多分デフォルトで対応しています... • 独自データを読み込ませる場合 – 画像ファイルをBLOB形式に変換 – LMDBに投入 – ネットワーク定義ファイルを編集、データソースを 変更 • 後はtrainコマンドを実行すればOK R G B R G B R G B R R R G G G B B B 30 実験結果 - SVM 100 90 80 70 正 60 答 率 50 % 40 SVM [ SVM+HoG ] 30 20 10 0 800枚/形状 全4,800枚 1200枚/形状 全7,200枚 31 2100枚/形状 全12,600枚 実験結果 - SVM vs Deep Learning 100 90 80 70 正 60 答 率 50 % 40 SVM [ SVM+HoG DL(2000回) ] 30 DL(4000回) 20 10 0 800枚/形状 全4,800枚 1200枚/形状 全7,200枚 32 2100枚/形状 全12,600枚 実験結果 - データ拡張効果 100 90 80 70 ベースライン 正 60 答 率 50 % 40 [ データ拡張 ] データ拡張 (4000回学習) 30 20 10 0 800枚/形状 全4,800枚 1200枚/形状 全7,200枚 33 2100枚/形状 全12,600枚 10倍にデータ 拡張 実験結果 - 前処理の効果 • PCAで色空間を変換 • 照明変動の大きい第1主成分を除去(2ch化) 100 90 80 70 [ ベースライン ] 正 60 答 率 50 % 40 PCA 30 20 10 0 800枚/形状 全4,800枚 1200枚/形状 全7,200枚 34 2100枚/形状 全12,600枚 両手対応 • 今までは右手のみ。 • 左右反転した画像を学習データに追加。右手でも左手でも認 識する様にした。 • クラス内分散が増えた場合に、どの程度性能に影響するか 計測した。正答率はテストデータにも左右反転画像を追加し て計測した。 35 実験結果 - 左右反転 90 80 70 60 正 答 50 率 40 % 30 右手のみ版 [ 両手対応版 ] 20 10 0 800枚 1200枚 36 2100枚 JETSON TK1で動かす 37 実行環境 • 学習環境と実行環境は別 • 組み込み機器 – デジタルカメラ – 車載 • PC – ノートPC – 各種装置バックエンド • データセンタ – クラウドサービスバックエンド 38 NVIDIA Tegra K1 SOC / Jetson TK1 • NVIDIA Tegra K1 SOC 搭載 評価ボード • CUDA, OpenGL 4.4, Tegra Accelerated OpenCV • 次世代機Tegra X1も近日発売予定。 GTC 2015では車載向けのDRIVE PXが発表。 http://www.nvidia.co.jp/object/jetson-tk1-embedded-dev-kit-jp.html 39 cuDNN • • • • • NVIDIAによるDeep Neural Networkの計算ライブラリ Caffe/Theanoのエンジンとして利用可(v1) Feed Forward / Back Propagation Convolution, Pooling, Softmax Activation ( ReLU, Sigmoid, Tanh ) 15 13.28 学習時間 [分/一定回数] 10 4.45 5 K20機[分] 0.51 0 Caffe CPU Caffe GPU Caffe + cuDNN デフォルト実装 40 ISP + Jetson TK1 + cuDNN v2 • caffeをそのまま移植(Python / C++ / cuDNNv1) 呼び出しプログラム =>判別に23~25ms... cuDNNv2 Caffe • caffeのpython部分を削除 C++ Python => 判別に20ms ~ 30ms cuDNNv1 • cuDNNv2ベースのISP 独自実装 =>判別に5ms程度 – cuDNN v2はまだCaffeも未対応 – デバイス制御回りの工夫 カメラから画像取得 Loop 判別 画面表示 41 デモのご紹介 • • • • Jetson Tegra K1 + 手形状認識 スターターキット + 手形状認識 with GUI Jetson Tegra K1 + リアルタイムクロマキー処理 DeepLearning BOX 技ラボ 検索 42
© Copyright 2024