主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ロゴ認識ネットワーク

この例では,深層学習を使用するロゴ分類用途のコード生成を説明します。codegenコマンドを使用し,ogonetとと呼ばSeriesNetworkオブジェクトオブジェクトについて予测を実実MEX关关を生成します。

サードパーティの必要条件

必須

この例では,CUDA墨西哥人を生成します。以下のサードパーティ要件が適用されます。

  • CUDA®対応NVIDIA GPU®および互換性のあるドライバー。

オプション

スタティックライブラリ,ダイナミックライブラリ,または実行可能のmex户外のビルド,この例ではビルド要件要件されます。

GPU环境の検证

関数Coder.CheckGPuInstall.(GPU编码器)を使用して,この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証します。

envcfg = coder.gpuenvconfig('主持人');envCfg。DeepLibTarget ='cudnn';envcfg.deepcodegen = 1;Envcf​​g.quiet = 1;Coder.CheckGpuInstall(Envcf​​g);

ロゴ認識ネットワーク

ロゴは,ユーザーがブランドを识别たり认识したりするに役立ちます。多くの企业务が,ドキュメント资料,プロモーションに自我のロゴ取り入れてます。たものであり,さまざまなライティング条件とカメラの动きの下で32个のロゴを认识できます。このネットワークは认识にのみ焦点を当てているため,位置推定が不要な用途で使用できます。

ネットワークの学习

ネットワークは,ロゴあたり約200個のイメージが含まれる学習データを使用してMATLABで学習しています。ネットワークの学習に使用されるイメージの数が少ないため,データ拡張によって学習サンプルの数を増やしています。コントラスト正規化,ガウスぼかし,ランダム反転,およびせん断の4種類のデータ拡張が使用されています。このデータ拡張は,さまざまなライティング条件とカメラの動きで取得されたイメージのロゴの認識に役立ちます。logonetの入力サイズは[227 227 3]です。標準の个では,ミニバッチサイズが45で学習率0.0001がの学習を40エポック実行して学習を行います。trainlogonet.m.补助スクリプトでは,サンプルイメージのデータ张,logonetのアーキテクチャ,および学习习について说明してます。

事前学習済みのSeriesNetworkの取得

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]ににします。この値はlo​​gonetネットワークの入层サイズサイズにに対応し

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);

メモリに読み込まれた静的ネットワークオブジェクトをクリアします。

清除梅克斯;

关键词トピック