Comments
Description
Transcript
MATLABで始めるGPUコンピューティング
MATLABで始めるGPUコンピューティング MathWorks Japan アプリケーション エンジニアリング部 テクニカルコンピューティング 太田 英司 © 2015 The MathWorks, Inc. 1 MATLABとは? 科学技術計算のための統合環境 – Matrix Laboratoryの略 – 米国で開発された行列演算ライブラリー LINPACK, EINSPACK を 手軽に利用するソフトウェアとして開発された。 Jack Little Cleve Moler – 「プログラミングで悩むより、その先の本質を勉強して欲しい」との思い から開発されたソフトウェア。 2 主な特徴 Figure 高速行列演算ライブラリー – 行列やベクトルの高速演算 エディター 豊富な拡張ライブラリー 現在のフォルダ – コード量の削減 – バグの削減 ワークスペース MATLAB メモリ領域 インタプリターによる対話的操作 – 学習コストの削減 – デバッグコストの削減 コマンドウィンドウ コマンド履歴 3 機械学習・並列化・高速化 Statistics and Machine Learning Toolbox™ 機械学習 多変量統計 確率分布 回帰と分散分析 実験計画 統計的工程管理 Neural Network Toolbox™ ニューラルネットワークの構築、学習 データフィッティング クラスタリング Parallel Computing Toolbox™ MATLAB & Simulink と連携した並列処理 対話的な並列計算実行 GPGPU による高速演算 ジョブおよびタスクの制御 MATLAB Distributed Computing Server™ クラスタによる計算環境を提供 コンピュータ ローカル Mean Squared Error (mse) 10 0 Best Validation Performance is 0.01227 at epoch 26 Train Validation Test Best 10 -1 10 -2 10 -3 0 パターン認識 深層学習 GPUによる計算の高速化 5 10 15 20 25 30 32 Epochs MATLAB Distributed Computing Server MATLAB デスクトップ Scheduler Parallel Computing Toolbox 5 画像処理・コンピュータービジョン・ロボットビジョン Image Processing Toolbox™ コーナー、円検出 幾何学的変換 各種画像フィルタ処理 レジストレーション(位置合せ) セグメンテーション(領域分割) 画像の領域の定量評価 Image Acquisition Toolbox™ デバイスから画像、動画直接取り込み フレームグラバボード DCAM, Camera Link® GigE Vision®, Webカメラ Microsoft® Kinect® for Windows® Computer Vision System Toolbox™ カメラキャリブレーション 特徴点・特徴量抽出 機械学習による物体認識 動画ストリーミング処理 トラッキング ステレオビジョン・3D表示 Robotics System Toolbox™ ロボティクスアルゴリズム開発の支援 MATLAB・SimulinkとROS間の インターフェイス ROSノード生成 6 信号処理・信号解析 DSP System Toolbox™ 高度なフィルタ設計 スペクトル解析 スペアナ、ロジアナ表示 行列演算、統計処理 30 Input signal PSD Equiripple output PSD IFIR output PSD Multirate/multistage output PSD 20 10 Power density (dB/rad/sample) Signal Processing Toolbox™ 信号生成、時間領域解析 フィルタ設計解析 スペクトル解析 線形予測 0 -10 -20 -30 -40 -50 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Normalized Frequency (x rad/sample) 0.8 0.9 1 Wavelet Toolbox™ 信号・画像の解析・ノイズ除去・圧縮等 連続 / 離散ウェーブレット パケット解析 / 主成分分析 対話的なGUIによる操作 7 GPU を対象とした高速化手法 GPU array による GPU の利用 カスタマイズ性 使い易さ 関数オプションの変更による GPU の利用 CUDA や PTX コードの利用 9 GPU を対象とした高速化手法 GPU array による GPU の利用 カスタマイズ性 使い易さ 関数オプションの変更による GPU の利用 CUDA や PTX コードの利用 11 GPU array による GPU の利用 Parallel Computing Toolbox gpuArray gather メインメモリ GPGPU >> GX = gpuArray(X); GPU 上のメモリへ転送 >> GY = fft2(GX); 2次元 FFT を GPU上で実行 >> Y = gather(GY); 結果をメインメモリへ転送 12 GPU array をサポートする代表的な関数(アルゴリズム系) abs acos acosh acot acoth acsc acsch all any arrayfun asec asech asin asinh atan atan2 atanh bitand bitcmp bitor bitshift bitxor cast cat ceil chol classUnderlying colon complex conj conv conv2 cos cosh cot coth csc csch ctranspose cumprod cumsum diag diff disp display dot double eig eps eq erf erfc erfcinv erfcx erfinv exp expm1 filter filter2 find fft fft2 fix floor gamma gammaln gather ge gt horzcat hypot ifft ifft2 imag int16 int32 int64 int8 isempty isequal isequalwithequalnans isfinite isinf islogical isnan isreal ldivide le length log log10 log1p log2 logical lt lu max meshgrid min minus mldivide mod mrdivide mtimes ndgrid ndims ne norm not numel plot (and related) plus power prod rdivide real reallog realpow realsqrt rem repmat reshape round sec sech sign sin single sinh size sort sqrt subsasgn subsindex subsref sum svd tan tanh times transpose tril triu uint16 uint32 uint64 uint8 uminus uplus vertcat 13 GPU array をサポートする代表的な関数(画像処理系) bwlookup corr2 edge histeq imadjust imfilter imgradient imgradientxy imhist imnoise imresize imrotate imshow medfilt2 padarray std2 stdfilt ルックアップ テーブルによる非線形フィルター処理 2 次元相関係数 強度イメージ内のエッジの検出 ヒストグラム均等化を使用したコントラストの強調 イメージの強度値またはカラーマップの調整 多次元イメージの N 次元フィルター処理 イメージの勾配の大きさと方向 イメージの方向勾配 イメージ データのヒストグラム イメージにノイズを付加 イメージのサイズ変更 イメージの回転 イメージの表示 2 次元のメディアン フィルター処理 配列の埋め込み 行列要素の標準偏差 イメージの局所的な標準偏差 im2double im2single im2uint8 im2uint16 イメージを倍精度に変換 イメージを単精度に変換 イメージを 8 ビットの符号なし整数に変換 イメージを 16 ビットの符号なし整数に変換 imabsdiff imlincomb 2つのイメージの絶対差 イメージの線形結合 bwmorph imbothat imclose imdilate imerode imopen imtophat バイナリ イメージのモルフォロジー演算 ボトム ハット フィルター処理 イメージにモルフォロジー クローズ処理を行う イメージの膨張 イメージの収縮 モルフォロジーなイメージのオープン処理 トップ ハット フィルター処理 mat2gray rgb2gray rgb2ycbcr ycbcr2rgb 行列をグレースケール イメージに変換 RGB イメージまたはカラーマップをグレースケールに変換 RGB の色の値を YCbCr 色空間に変換 YCbCr の色の値を RGB 色空間に変換 14 GPU array による GPU の利用 画像に対するフィルタ処理(キャンバス効果) >> GX = gpuArray(X); >> GY = canvasEffect(GX); >> Y = gather(GY); gpuArray メインメモリ gather GPGPU 15 GPU array による GPU の利用 波動方程式のソルバー(スペクトラル法)の高速化 波動方程式をスペクトラル法で解く 𝜕2𝑢 𝜕2𝑢 𝜕2𝑢 = + 𝜕𝑡 2 𝜕𝑥 2 𝜕𝑦 2 gpuArray メインメモリ gather GPGPU 16 GPU を対象とした高速化手法 GPU array による GPU の利用 カスタマイズ性 使い易さ 関数オプションの変更による GPU の利用 CUDA や PTX コードの利用 17 Stacked Autoencoder (積層自己符号化器) Neural Network Toolbox 自己符号化器(Autoencoder)とは? 2層のニューラルネットワーク 恒等写像となるようなウェイトを学習 主に DNN の事前学習に利用 自己符号化器(Autoencoder) 【コード例】 自己符号化器の学習 autoenc = trainAutoencoder(X, hiddenSize,... 'L2WeightRegularization’, 0.001, ... 'SparsityRegularization', 4, ... 'SparsityProportion', 0.05, ... 'DecoderTransferFunction', 'purelin‘ 'useGPU', true); GPUによる高速化 積層自己符号化器(Stacked Autoencoder) 18 Convolutional Neural Network(畳み込みニューラルネット) Neural Network Toolbox 畳み込みニューラルネット(CNN)とは? 畳み込みを主な構成要素としたニューラルネットワーク 学習は教師あり学習を利用 画像認識の分野で非常に高い性能 畳み込み層・プーリング層などを積層したネットワーク >> net.Layers ans = 11x1 Layer array with layers: 1 2 3 4 5 6 7 8 9 10 11 'imageinput' 'conv' 'relu' 'conv' 'relu' 'maxpool' 'conv' 'relu' 'fc' 'softmax' 'classoutput' Image Input Convolution ReLU Convolution ReLU Max Pooling Convolution ReLU Fully Connected Softmax Classification Output 19 Convolutional Neural Network(畳み込みニューラルネット) Neural Network Toolbox 畳み込み層・プーリング層・正規化層などを積み重ねて作られた多層のニューラルネットワーク Softmax層 全結合層 全結合層 最大プーリング層 正規化層 畳み込み層 最大プーリング層 正規化層 畳み込み層 犬 猫 牛 馬 20 畳み込みニューラルネットの構築と学習 28×28 ピクセルの画像(数字)を認識させる例題でのネットワーク構築の例 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); 学習の関数を呼び出す http://www.mathworks.com/help/releases/R2016a/nnet/ref/trainnetwork.html 21 R-CNN(Regions with CNN features) とは? CNNにコンピュータビジョンの手法を組み合わせた物体検出・識別の手法 停止標識(Stop Sign) R-CNNに自動車の前面と停止標識を学習させた場合の検出例 自動車の前面(Car Front) 22 © 2016 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. 23