このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,深層学習を使用するロゴ分類用途のコード生成を説明します。codegen
コマンドを使用し,ogonetとと呼ばSeriesNetwork
オブジェクトオブジェクトについて予测を実実MEX关关を生成します。
必須
この例では,CUDA墨西哥人を生成します。以下のサードパーティ要件が適用されます。
CUDA®対応NVIDIA GPU®および互換性のあるドライバー。
オプション
スタティックライブラリ,ダイナミックライブラリ,または実行可能のmex户外のビルド,この例ではビルド要件要件されます。
英伟达ツールキット。
英伟达cuDNNライブラリ。
コンパイラおよびライブラリの環境変数。詳細は,サードパーティハードウェア(GPU编码器)と前提条件となる製品の設定(GPU编码器)を参照してください。
関数Coder.CheckGPuInstall.
(GPU编码器)を使用して,この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証します。
envcfg = coder.gpuenvconfig('主持人');envCfg。DeepLibTarget ='cudnn';envcfg.deepcodegen = 1;Envcfg.quiet = 1;Coder.CheckGpuInstall(Envcfg);
ロゴは,ユーザーがブランドを识别たり认识したりするに役立ちます。多くの企业务が,ドキュメント资料,プロモーションに自我のロゴ取り入れてます。たものであり,さまざまなライティング条件とカメラの动きの下で32个のロゴを认识できます。このネットワークは认识にのみ焦点を当てているため,位置推定が不要な用途で使用できます。
ネットワークは,ロゴあたり約200個のイメージが含まれる学習データを使用してMATLABで学習しています。ネットワークの学習に使用されるイメージの数が少ないため,データ拡張によって学習サンプルの数を増やしています。コントラスト正規化,ガウスぼかし,ランダム反転,およびせん断の4種類のデータ拡張が使用されています。このデータ拡張は,さまざまなライティング条件とカメラの動きで取得されたイメージのロゴの認識に役立ちます。logonetの入力サイズは[227 227 3]です。標準の个では,ミニバッチサイズが45で学習率0.0001がの学習を40エポック実行して学習を行います。trainlogonet.m.补助スクリプトでは,サンプルイメージのデータ张,logonetのアーキテクチャ,および学习习について说明してます。
logonetネットワークが存在しない場合,ダウンロードしてlogonet.mat.
に保存します。
getLogonet ();
保存保存したネットワークに,畳み込み层,全全合,分享到出力层など,22个の层が含まれてい。
负载(“LogoNet.mat”);事先。层
ans = 22×1 Layer array with layers:1“imageinput”图像输入227×227×3图片zerocenter正常化和randfliplr的扩增2 conv_1卷积96 5×5×3旋转步[1]和填充[0 0 0 0]3‘relu_1 ReLU ReLU 4“maxpool_1”马克斯池3×3马克斯池步(2 - 2)和填充[0 0 0 0]5 conv_2卷积128 3×3×96旋转步[1]和填充[0 0 0 0]6‘relu_2 ReLU ReLU 7“maxpool_2”马克斯池3×3马克斯池步(2 - 2)和填充[0 0 0 0]8 conv_3卷积384 3×3×128旋转步[1]和填充[0 0 0 0]9 ' relu_3 ReLU ReLU 10“maxpool_3”马克斯池3×3马克斯池步[2 2]和填充[0 0 0 0]11“conv_4”卷积128 3×3×384旋转步(2 - 2)和填充[0 0 0 0]12的relu_4 ReLU ReLU 13“maxpool_4”马克斯池3×3马克斯池步(2 - 2)和填充[0 0 0 0]14 fc_1完全连接2048完全连接层15 ' relu_5 ReLU ReLU 16“dropout_1”辍学50% 2048年辍学17日“fc_2”完全连接完全连接层18'relu_6' ReLU ReLU 19 'dropout_2' Dropout 50% Dropout 20 'fc_3' Fully Connected 32 Fully Connected layer 21 'softmax' softmax softmax 22 'classoutput' Classification Output crossentropyex with 'adidas'和31个其他类
logonet_predict.
エントリポイント关节logonet_predict.mは,イメージ入力を受け取り,logonet.mat.
ファイルファイルに保存されている深层习习ネットワークを用して,イメージイメージ予测を実行。この关键。logonet.mat.
からネットワークオブジェクトを永続変数logonetに読み込み,それ以降の予測の呼び出しではこの永続変数を再利用します。
类型(“logonet_predict.m”)
函数= logonet_predict(in)%#codegen%2017-2019 Mathworks,Inc.持久登录;如果是isempty(ogonet)logonet = coder.loaddeeplearningnetwork('logonet.mat','logonet');结束= logonet.predict(in);结束
logonet_predict.
のcuda mexの生成MEXターゲットのGPU成成オブジェクト作物作物,ターゲット言语をc ++に设定します。关联coder.deeplearningconfig
(GPU编码器)をを用してCuDNN
深層学習構成オブジェクトを作成し,それをGPUコード構成オブジェクトのDeeplearningConfig
プロパティプロパティに割り当て割り当て.Cuda Mexを生成するにはcodegen
コマンドコマンド使使し[227,227,3]ににします。この値はlogonetネットワークの入层サイズサイズにに対応し
cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig ('cudnn');codegen配置cfglogonet_predict.arg游戏{ONE(227,227,3,'UINT8')}-报告
代码生成成功:要查看报告,打开('codegen/mex/logonet_predict/html/report.mldatx')。
入力イメージを読み込みます。入力イメージに対してlogonet_predict_mex
ををます。
我= imread (“test.png”);imshow (im);Im = imresize(Im, [227,227]);predict_scores = logonet_predict_mex (im);
上第五位つの予測スコアをWordnet辞書の同义词集(ロゴ)に含まれる単語にマッピングします。
synsetOut = {'阿迪达斯',“阿尔迪”,“苹果”,“小贝”,“宝马”,'卡尔斯伯格',...“chimay”,'可口可乐',“电晕”,“dhl”,“埃尔丁”,“埃索”,'Fedex',...“法拉利”,'福特',“培养”,“谷歌”,“吉尼斯”,“喜力”,“惠普”,...“milka”,'nvidia',“paulaner”,'百事可乐','rittersport','壳','singha',“星巴克”,“stellaartois”,“德”,“青岛啤酒”,“ups”};[val, indx] =排序(predict_scores,“下”);成绩=瓦尔(1:5)* 100;top5labels = synsetOut (indx (1:5));
上第五位つの分類ラベルを表示します。
outputImage = 0(227400年3“uint8”);为k = 1:3 outputImage(:,174:end,k) = im(:,:,k);结束scol = 1;srow = 20;为k = 1:5 outputImage = insertText(outputImage, [scol, srow], [top5labels{k},' ',num2str(分数(k),'%2.2f'),“%”],“输入TextColor”,' w ',“字形大小”15岁的“BoxColor”,“黑”);srow = srow + 20;结束imshow (outputImage);
メモリに読み込まれた静的ネットワークオブジェクトをクリアします。
清除梅克斯;