ganやvaeで加速する画像ディープラーニング...2020/05/19 · 3 アジェンダ...
TRANSCRIPT
1© 2020 The MathWorks, Inc.
GANやVAEで加速する画像ディープラーニング
MathWorks Japan
アプリケーションエンジニアリング部
福本 拓司
2
GANを用いた画像生成
▪ 指定した箇所にミカンが生成される
光や影、背景の模様なども含めて生成されている
https://deeplearning.mwlab.io
3
アジェンダ
▪ 画像ディープラーニングのワークフロー
▪ AIの実運用に向けて
– 説明できるAI
– システムでの利用
▪ Variational Auto Encoder(VAE)
▪ Generative Adversarial Network(GAN)
4
ディープラーニング
分類 検出 セグメンテーション
■人の情報判断の割合= 87%を視覚に頼っている
工場での検査 自動運転/ロボット 道路や建物検査 医療診断のサポート
→画像分野での適用が加速
■CNN(畳み込みニューラルネットワーク)による精度の向上
5
MATLAB®によるディープラーニングワークフロー
確率
システムへの統合
学習用画像
学習オプション
ネットワークの学習
テスト画像
再学習したネットワーク
予測とネットワークの性能評価
ネットワークの準備
学習データの準備
6
畳み込みニューラルネットの構築と学習
layers = [ ...
imageInputLayer([28 28 1], 'Normalization', 'none');
convolution2dLayer(5, 20);
reluLayer();
maxPooling2dLayer(2, 'Stride', 2);
fullyConnectedLayer(10);
softmaxLayer();
classificationLayer()];
opts = trainingOptions('sgdm', 'MaxEpochs', 50);
net = trainNetwork(XTrain, TTrain, layers, opts);
畳み込み層・プーリング層・正規化層
などの層を積み上げて定義
学習率や最大反復数などを定義して
学習の関数を呼び出す
28×28 ピクセルの画像(数字)を認識させる例題でのネットワーク構築の例
GPU有無を自動で判定。あればGPU,なければCPUで学習。 スクラッチでの作成・画像が大量に必要/計算コスト大・初心者は難しいと感じる
7
CNN と転移学習
入力
畳み
込み
層
正規
化層
最大
プー
リン
グ層
畳み
込み
層
正規
化層
最大
プー
リン
グ層
畳み
込み
層
畳み
込み
層
畳み
込み
層
最大
プー
リン
グ層
全結
合層
全結
合層
全結
合層
Softm
ax層
ImageNet
1000個のカテゴリ
特徴抽出器
-汎用性がある
-多層だと学習させるために画像が大量に必要
優れた既存ネットワークの特徴抽出器 + 独自分類器
分類特徴抽出
全結
合層
全結
合層
Softm
ax層
8
ディープラーニングによる物体認識
学習した種類:-オレンジ-みかん-グレープフルーツ(ルビー)-グレープフルーツ(ホワイト)-レモン
学習画像数:各 20 枚
GPU利用安定した検出
GPU利用なし
●要件を満たすPC&MATLAB環境●学習済みAlexnet●画像セット10行のコーディングで始められます
ディープラーニング:10行でできる転移学習~画像分類タスクに挑戦~
https://www.youtube.com/watch?v=XMcHiMIT8iE
9
ネットワークをディープネットワークデザイナーから学習
▪ 画像分類ネットワークを学習させる
▪ 学習、検証用データのインポート
▪ データ分布の可視化
▪ 画像の水増し
▪ 各種学習オプションの設定
▪ MATLABコードの自動生成
ディープネットワークデザイナー
GUI操作で画像準備~ネットワーク選択~学習までをサポート
10
11
学習の可視化機能
opts = trainingOptions(...'Plots','training-progress',...'ValidationPatience', 3);
学習進捗の可視化と学習停止
過学習(Overfitting)
未学習(Underfitting)
・画像の追加・正則化項を大きく・ユニット数を減らす・学習率(調整)
・ネットワークの変更・正則化項を小さく・ユニット数を増やす・学習率(初期値)
学習曲線を見ながら、対策を考えていくことが必要
12
ディープラーニングのアプリケーションのための実験とその結果の管理
▪ Experiment Managerはディープラーニングを実務者のプラットフォームで、以下の事ができます:
– 学習を設定
– 全ての実験条件と結果のトラッキング
– 実験結果を評価し、結果を改善するために、くり返し実験を行う
Experiment Manager
13
14
AIの実運用に向けて
15
・今後未知の画像でも正しく判定できるか?
・誤判定の場合、どの部分を見間違えているのか?
Learning Deep Features for Discriminative LocalizationBolei Zhou, Aditya Khosla, Agata Lapedriza, Aude Oliva, Antonio Torralba Computer Science and Artificial Intelligence Laboratory, MIT
http://cnnlocalization.csail.mit.edu/
・Class Activation Mapping(CAM)・Grad-CAM
ディープラーニングはブラックボックス
正常
トラック
自転車最適なパラメータが自動的に決まる
実業務適用への課題
説明できるAI
16
製造ラインの異常検知でのCAM/Grad-CAMの適用
OK→ 表面全体に反応NG→ 局所的についた傷に反応
傷を見て適切に判断できていることがわかる
元映像 分類とCAM表示
動画解説: ディープラーニング:判断要因を可視化するためのCAM/Grad-CAM
18
プロトタイプ段階ではAI開発者と現場/顧客との連携が不可欠
AI 開発者
「これはどっちに分類?現場の職人さんじゃないと。。。」
「Deep Learningの詳しいことはわからない」
判断の経験をもつ現場専門家
19
GUIを用いた現場/顧客との連携
運用に向け社内や顧客とGUIを用いて協調することが重要です。
精度(%)の値でけでなく
・誤判定画像の解析
・スコアの解析
も精度を向上していくために重要です。
MATLABのAppDesignerで作られた表示ツール(※)です。解析にお使いください。
% 推論結果の解析myresultviewerApp
ファイルを選択
選んだファイルを表示
ディープラーニングが予測した結果
スコアのグラフ表示
判定の正誤表示(正→緑 誤→赤)
Errorimagesというフォルダを作り誤判定の画像のみを保存
(※)標準ツールではありませんので、自由に編集して独自のAppとしてご利用ください。一方でコードの解説はお受けしておりませんのでご了承ください。
画像フォルダを選択
判定時の注目領域
21
システムへの統合
• Cloud• Web• Cluster• Mobile
MATLABProductionServerTM
C/C ++
ExcelAdd-in
Java
Hadoop
.NET
StandaloneApplication
クラウドで利用
PCで利用
MATLAB Compiler™ / MATLAB Compiler SDK™
GPU Coder™ MATLAB Coder™
複数フレームワークのモデルをインポート
複数のターゲット
MKL-DNN(Intel® Xeon ®)
NVIDIA®
cuDNN/TensorRTTM (Arm® NeonTM)
Compute Library
ONNX
TensorflowKeras
24
ディープラーニングフレームワークの拡張
▪ もっともシンプルなフレームワーク
・10行でできる転移学習・GUIだけで学習まで
▪ 機能の追加
– カスタムの学習ループ
– カスタムの損失関数
– 自動微分 (Gradient)
▪ どのような場面で使う?
– 複数のInput/Output
– 損失関数を柔軟に定義
– 複数ネットワーク
– Weight共有
– 学習中の可視化
▪ 自由で柔軟な学習プロセスを追加
これまでのフレームワークも継続
25
ディープラーニングフレームワークの拡張でできること
▪ GAN
▪ VAE
▪ Siamese Network
▪ Grad-CAM
Encoder Decoder
z
26
Variational AutoEncoder(VAE)
27
VAE (Variational Autoencoder)とは
Encoder Decoder
z
確率分布
Encoder/Decoder構造を持つAuto Encoderで潜在変数に確率分布を用いたもの
潜在変数
28
VAEの損失関数
出力が入力に近づき、潜在変数が確率分布の連続空間で表現されるように学習される
Encoder Decoder
z
損失関数:
ELBO = (再構成損失 + KL損失) / 2
ELBO =Evidence Lower Bound(変分下限)
推定するモデルの尤度を最大にするため、学習された平均と分散がターゲット(正規)分布にできるだけ近くなるようにする
29
Reparameterization Trick
Encoder output
Decoder input
Encoder output
Decoder input
z=確率変数という表現では誤差逆伝搬ができない
外部からノイズεを加える構造にして、確率変数の表現を避ける
30
画像に異常があることだけでなく、異常個所をみつけたい
化学材料、衣料、食品では正常品に紛れる不良や不純物の検知が必要となります。広範囲の中からどこにあるかまで判定したい。様々な種類の異常が起こり得る。
様々な異常
このデモでは正常な画像データのみの学習で異なる種類の異常を検知、場所の特定を目指す方法を検討します。
サンプルコード:Anomaly detection using Variational Autoencoder(VAE)
31
Variational Auto Encoderの学習
▪ 正常画像を入力として次元圧縮して同じ画像を出力するように学習させる正常な画像を復元するのに必要な情報が伝わるように、Weight等のパラメータの学習が進む
入力画像 出力画像
正常画像→正しく復元→差分はゼロ
異常画像→正しく復元されない→差分に異常特徴が残る
Deep Clustering with Convolutional Autoencoder, Xifeng Guo 他
Encoder Decoder
32
カスタムの学習ループの基本構造
net = dlnetwork(lgraph)data = dlarray(data)
for n=1:epoch
end
[loss, Gradient ] =dlfeval(@myfunction, data,net,...)
[net.Learnables,...] = ... adamupdate(net.learnables , Gradient,...)
lgraph = layergraph(net)data = extractdata(data)
[loss, Gradient ] = myfunction(data,net,...)
loss = xxxxxxxGradient = dlgradient(loss, net.Learnables)
順方向の処理とLoss、自動微分でGradientを計算
データ型を変換
学習のループ
データをSingle型等に戻す
33
大規模画像をメモリ効率よく学習させる
入力画像 ラベル
メモリ消費大 → 実用的に利用できるサイズに制限がある → 画像サイズ>ネットワークサイズ% 画像からランダムに切り出して学習に利用dsTrain = randomPatchExtractionDatastore(imdsTrain,imdsTrain,BlockSize, ...
'PatchesPerImage',16');
メリット:・メモリエラーを避けて学習することができる。・一枚の大画像からたくさんの拡張データを作ることができる。
Encoder Decoder
34
VAE学習過程の出力の確認
入力画像
出力画像
学習が進むと潜在変数から模様が再現される
35
大規模画像をブロック単位で推論
入力画像 推論
% 大規模画像のためにブロック単位で処理していくfun = @(block_struct) mypredict(encoderNet, decoderNet,block_struct);Predicted_big = gather(blockproc(I_big,BlockSize,fun));
結合された結果を出力
大規模画像の推論もfor文なし、短いコーディングで実現可能
blockproc() ブロックごとに処理を行う
Encoder Decoder
36
大規模画像(bigimage)処理用関数
▪ ブロックごとの逐次読み込みによる処理
▪ 素早い表示
▪ マスクによる条件付き処理の実行
▪ TIFF画像をファイルから指定した領域だけ取り込む
▪ 解像度によってレベル分け
▪ 各レベルで、ブロックごとに画像を分割
%% bigimageオブジェクトの作成bim=bigimage(‘tumor_091R.tif’);%% 表示Bshow = bigimageshow(bim, ... ‘GridVisible’,’on’,’GridLevel’,1);
レベル1 レベル2
ブロックごとに処理
37
VAEを用いた異常検知
一つのネットワークで様々な異常を検知&位置特定ができている
サンプルコード:Anomaly detection using Variational Autoencoder(VAE)
38
Generative Adversarial Network (GAN)敵対的生成ネットワーク
39
GAN(Generative Adversarial Network)とは
Generator
Discriminatorをだませるように学習
本物/偽物を判定できるように学習
Discriminator
本物
偽物
本物画像
https://arxiv.org/pdf/1406.2661.pdf
Ian J. Goodfellow, etc, “Generative Adversarial Nets”,2014
40
GANネットワーク構造
Generator Discriminator
転置畳み込みにより乱数->画像サイズまで拡大
分類用のネットワーク
41
GAN各ネットワークの学習
本物
偽物
本物画像
Generator損失関数=
Discriminator損失関数=
生成画像を本物と判定するのを最大化
本物を本物と判定するのを最大化
生成画像を本物と判定するのを最小化
Generator/Discriminator片方の性能が上がってしまうと両方の性能はあがらない。パラメータの調整が難しい。
42
カスタムの学習ループの基本構造
net = dlnetwork(lgraph)data = dlarray(data)
for n=1:epoch
end
[loss, Gradient ] =dlfeval(@myfunction, data,net,...)
[net.Learnables,...] = ... adamupdate(net.learnables , Gradient,...)
lgraph = layergraph(net)data = extractdata(data)
[loss, Gradient ] = myfunction(data,net,...)
loss = xxxxxxxGradient = dlgradient(loss, net.Learnables)
順方向の処理とLoss、自動微分でGradientを計算
データ型を変換
学習のループ
データをSingle型等に戻す
43
Image-to-Imageの変換(pix2pix)
Generator
本物
偽物
本物画像
Discriminator
pix2pixサンプルコードhttps://github.com/matlab-deep-learning/pix2pix
応用例■マスク/輪郭-画像生成■画像ドメイン変換
-医用画像-シミュレーション
44
セマンティックセグメンテーションを用いた細胞の抽出
ピクセルレベルのラベリングMATLAB関数を使って半自動化が可能
Image Labeler / Video Labeler
・FCN・SegNet・Unet
groundtruth
※CDC DPDx Parasite Image Libraryにて公開https://www.cdc.gov/dpdx/malaria/index.html
45
GANによるセグメンテーション
生成画像 入力画像 ターゲット画像
15枚の画像で学習。 1-200Epochの学習の過程評価用画像でのセグメンテーション結果の推移
セグメンテーションにも適用が期待できる。
生成系によりこれまでできなかったことができる可能性はあります。分類やセグメンテーションの経験を積んだうえで、チャレンジしてみてください。
(※)
本物
偽物
ラベル Discriminator
Generator
※CDC DPDx Parasite Image Libraryにて公開https://www.cdc.gov/dpdx/malaria/index.html
46
必要なツール
47
CNNをMATLAB®で利用するための必要要件
●MATLABライセンス
▪ MATLAB ®
▪ Image Processing ToolboxTM (前処理、Computer Visionの必須要件)
▪ Computer Vision ToolboxTM (物体認識の関数群)
▪ Statistics and Machine Learning Toolbox TM (SVM等の分類器)
▪ Deep Learning ToolboxTM (CNN関数)
▪ Parallel Computing ToolboxTM (GPU使用(CNNで必須))
●ハードウェア
▪ NVIDIA CUDA対応GPU(Computing Capability 3.0以上) 搭載PC
最先端のディープラーニングをMATLABで手軽にお試しください
48
まとめ
MATLABではGUI、短いコーディングでディープラーニングをはじめられます。
フレームワーク拡張により柔軟で高度なアルゴリズム(VAE,GAN)にチャレンジ可能です。
組み込み、PC、クラウドに配布可能人との共存を含めて柔軟に検討しましょう。
サービスも利用し短期間で実運用を目指しましょう。
49
今日から体験できる ディープラーニング・画像処理評価キット
ディープラーニング評価キット [画像分類用]
• 環境構築• モデル構築/学習• Grad-CAM/GUIによる確認• exe形式で配布画像を置き換えてご自身のタスクに転用可能
画像処理・コンピュータービジョンの評価キット
説明資料 対応するサンプルプログラム
• 画像処理• 点群• コントラスト調整、色調整• 物体検出/セグメンテーション他、前処理&幅広い領域で使えるテクニックを紹介
で体験しながら業務に適用
50
豊富な学習用コンテンツ
■無料コンテンツ
▪ MATLABディープラーニングビデオ集
▪ ディープラーニングサンプルコード
▪ 初心者向け無料オンライン体験
■有料トレーニング
▪ MATLAB によるディープラーニング
■製品の検討
▪ 30日無料の評価版を試す
▪ 製品およびサービスのお見積もり
機器への実装
検出・セグメンテーション
ツールの利用
12時間以上の
ビデオコンテンツ
51
© 2020 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.
52
柔軟なライセンスタイプの選択
永久ライセンス 年間ライセンス
・初期費用を抑えたい・プロジェクトの期間ライセンスを増やしたい
MATLAB+
Toolbox
MATLABProduction
Server
MATLABParallelServer
年度
コスト
年度
コスト
独立するサーバー製品での年間ライセンス利用も可能
https://www.mathworks.com/matlabcentral/answers/460647-matlab