主要内容

深层学习ネットワークコード生成

この例,学习をする分类用途の生成を実行するする方法をを说明し代码根mobilenet-v2,,コマンド使用し,googlenetなどなどなどなどイメージネットワークををしてて実行実行実行実行するするするするするするする

サードパーティの条件

必须

Cuda mexををを生成ます。のサードパーティ要件が适用されます。。

  • cuda®対応nvidia®GPUおよび互换性。。。。

オプション

スタティックライブラリライブラリまたはまたは可能ファイルファイルファイル以外以外以外について,,この例では以下以下ののももも适用适用

gpu环境の検证

关数Coder.CheckgPuinstallを使用,例実行するになおよびライブラリライブラリが正しく设定されてているいることを検证検证

envcfg = coder.gpuenvconfig('主持人');envcfg.deeplibtarget ='cudnn';envcfg.deepcodegen = 1;envcfg.quiet = 1;coder.checkgpuinstall(envcfg);

エントリポイント关数mobilenetv2_predict

Mobilenet-V2はImagenetデータ100万のの万超えるイメージで学习済みのの畳み込み畳み込み畳み込みニューラルニューラルニューラルネットワークネットワークネットワークですですですです。。。このこのこのこのこのネットワークネットワークははは,,,,,,,,がががががががががが深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ155层深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ深さ畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み畳み込み224 x 224です关数关数入力。ますますできできできできます。ネットワークネットワークののイメージ分析(深度学习工具箱)を使用,学习ネットワークアーキテクチャを的可视化してします。

net = mobilenetv2();分析(NET);

エントリポイント关数MOBILENETV2_PREDICT.MMobilenet-v2畳み込み畳み込みニューラルネットワークをを使用しししてて,イメージについて予测をを実行しmynetを使用系列オブジェクトを読み込みそれの呼び出しでこのこの永続オブジェクトを予测予测ににますますます

类型('MobileNetV2_PREDICT.M'
%版权2017-2019 The Mathworks,Inc。函数输出= Mobilenetv2_predict(in)%#codegen persistent mynet;如果Isempty(mynet)mynet = coder.loadDeeplearningnetwork('mobileenetv2','mobilenetv2');end%通过输入输入= mynet.predict(in);

mexコードコード実行

エントリポイント关数mobilenetv2_predictcuda cudaコード生成するにはは,ターゲットターゲットターゲットターゲットののコードコード构成构成をを作成しし,ターゲット言语ををををををををををををcoder.deeplearningconfigを使用して库丁深层学习オブジェクト作成し,それをををコードコード构成のの深度学习プロパティに割り当て。代码根[224,224,3]に,入力入力入力入力入力ににしますますこのこのこのこの値値値値ははははは

cfg = coder.gpuconfig('Mex');cfg.targetlang ='C ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');代码根-configCFGmobilenetv2_predict-args{一个(224,224,3)}-报告
代码生成成功:查看报告

生成さたコードの说明

155个个个层クラスから成るとネットワークの设定,,予测予测のの呼び出し呼び出し呼び出し,クリーンクリーンををを行う行う关数关数ををををを含む含む含む含む含む含む

班级b_mobilenetv2_0{...公共:b_mobilenetv2_0();void setup();void predition();void清理();〜B_MOBILENETV2_0();};

このクラスの设置()メソッドはをし,ネットワークオブジェクトにメモリを割り当て。。预测()メソッドはネットワークののの个个层について予测を実行。。。

生成されコードファイルMOBILENETV2_PREDICT.CU内のエントリ关数mobilenetv2_predict()は,b_mobilenetv2クラス型静オブジェクトを构筑しし,ネットワークオブジェクトに対してに対してに対してに対してややややややややや

静止的b_mobilenetv2_0mynet;静止的boolean_tmynet_not_empty;
/*功能定义*/空白mobilenetv2_predict([150528]中的const real_t,real32_t out [1000]){如果((!mynet_not_empty){DeepLearningNetwork_setup(&mynet);mynet_not_empty = true;}
/ *传递输入 */ deeplearningnetwork_predict(&mynet,in,of);}

バイナリファイル,内の结合层や畳み込み层などのパラメーターををを层层に対してに対してに対してエクスポートエクスポートエクスポートささされれれれますますますますます。たとえばcnn_mobilenetv2_conv*_w _w _ _w _w _w _ _ _ _ _ _ _ _エクスポートしますさたファイルリストを表示に,次を使用し。。

dir(fullfile(PWD,'codgen',,,,'Mex',,,,'mobileenetv2_predict'))

生成されたたのの

入力イメージをます。

im = imread('peppers.png');imshow(im);

入力イメージに対してMOBILENETV2_PREDICT_MEXを呼び出します。

IM = Imresize(IM,[224,224]);prectiv_scores = mobilenetv2_predict_mex(double(im));

5 5つの予测とラベルを取得し。。。

[得分,indx] = stort(prectiv_scores,“下降”);classNames = net.layers(end).classNames;ClassNamestop = classNames(Indx(1:5));h =图;h.position(3)= 2*h.position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);图像(AX1,IM);barh(AX2,得分(5:-1:1))Xlabel(AX2,'可能性')yticklabels(AX2,ClassNamestop(5:-1:1))ax2.yaxislocation ='正确的';sgtitle(“使用Mobilenet-V2的前五名预测”

メモリにれ静的ネットワークをクリアします。

清除梅克斯;

resnet-50ネットワークをしイメージの分类分类

dag resnet-50を使用てイメージを分类することことmatlab用matlab用用用用用ののの事前事前事前事前事前学习学习学习学习学习学习済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済み済みしてにはアドオンを使用ます。の検索とインストールインストールの详细详细,,,アドオンの取得管理を参照しください。

net = resnet50;分配(净)
带有属性的dagnetwork:层:[177×1 nnet.cnn.layer.layer]连接:[192×2 table] inputNames:{'input_1'} outputnames:{'classification layer_fc1000'}

mexコードコード実行

エントリポイント关数resnet_predict.mcudaコードをするには,,,ターゲットターゲットのののコードコードオブジェクトオブジェクト作成作成し,,,をををををををををを言语にににににRESNET50を呼び出しネットワークを,入力イメージ予测実行実行します。

cfg = coder.gpuconfig('Mex');cfg.targetlang ='C ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');代码根-configCFGresnet_predict-args{一个(224,224,3)}-报告
代码生成成功:查看报告

入力イメージに対してresnet_predict_mexを呼び出します。

prectiv_scores = resnet_predict_mex(double(im));

5 5つの予测とラベルを取得し。。。

[得分,indx] = stort(prectiv_scores,“下降”);classNames = net.layers(end).classNames;ClassNamestop = classNames(Indx(1:5));h =图;h.position(3)= 2*h.position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);图像(AX1,IM);barh(AX2,得分(5:-1:1))Xlabel(AX2,'可能性')yticklabels(AX2,ClassNamestop(5:-1:1))ax2.yaxislocation ='正确的';sgtitle(“使用Resnet-50的前五名预测”

メモリにれ静的ネットワークをクリアします。

清除梅克斯;

GoogLenet(Inception)ネットワークネットワークした分类分类分类

matlab用の済み済み済み済み済みモデルモデルモデル,,,,,のgooglenetサポートgooglenetサポートサポートサポートに含まれれいます。このサポートサポートパッケージをダウンロードししててインストールにに,,,アドオンアドオンアドオンアドオンアドオンアドオンアドオンアドオンエクスプローラーは,アドオンの取得管理を参照しください。

net = googlenet;分配(净)
带有属性的dagnetwork:层:[144×1 nnet.cnn.layer.layer]连接:[170×2 table] inputNames:{'data'} outputnames:{'output'oppote'}

mexコードコード実行

エントリポイント关数Googlenet_predict.mのcudaコードをしますこのエントリポイント关数关数关数Googlenetを呼び出しネットワーク読み込み読み込み入力イメージ予测をを実行ます。このこのエントリエントリポイントポイント关数关数关数关数关数关数のののコードををを生成生成するするにはははは,,

cfg = coder.gpuconfig('Mex');cfg.targetlang ='C ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');代码根-configCFGGooglenet_predict-args{一个(224,224,3)}-报告
代码生成成功:查看报告

入力イメージに対してgooglenet_predict_mexを呼び出します。

IM = Imresize(IM,[224,224]);prectiv_scores = googlenet_predict_mex(double(im));

5 5つの予测とラベルを取得し。。。

[得分,indx] = stort(prectiv_scores,“下降”);classNames = net.layers(end).classNames;ClassNamestop = classNames(Indx(1:5));h =图;h.position(3)= 2*h.position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);图像(AX1,IM);barh(AX2,得分(5:-1:1))Xlabel(AX2,'可能性')yticklabels(AX2,ClassNamestop(5:-1:1))ax2.yaxislocation ='正确的';sgtitle(“使用Googlenet的前五名预测”

メモリにれ静的ネットワークをクリアします。

清除梅克斯;

参考

关数

オブジェクト

关连するトピック