最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ディープ ネットワーク デザイナー入門

この例では、事前学習済みの GoogLeNet ネットワークを微調整して、新しいイメージ コレクションを分類する方法を説明します。このプロセスは転移学習と呼ばれ、通常、新しいネットワークに学習させるよりもはるかに簡単で時間がかかりません。これは、少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を適用できるためです。転移学習用のネットワークを対話形式で準備するには、ディープ ネットワーク デザイナーを使用します。

学習データの解凍

ワークスペースでデータを解凍します。

unzip('MerchData.zip');

事前学習済みのネットワークの選択

ディープ ネットワーク デザイナーを開きます。

deepNetworkDesigner

ディープ ネットワーク デザイナーのスタートページで、事前学習済みの GoogLeNet ネットワークを選択して読み込みます。ネットワークをダウンロードする必要がある場合、[インストール] をクリックして、アドオン エクスプローラーへのリンクを開きます。

ディープ ネットワーク デザイナーにネットワーク全体が縮小表示されます。ネットワークのプロットを確認します。マウスでズームインするには、Ctrl キーを押しながらスクロール ホイールを使用します。

データセットの読み込み

ディープ ネットワーク デザイナーにデータを読み込むには、[データ] タブにある [データのインポート] をクリックします。[データのインポート] ダイアログ ボックスが開きます。

[データ ソース] リストの [フォルダー] を選択します。[参照] をクリックし、解凍した MerchData フォルダーを選択します。

ダイアログ ボックスでは、アプリ内の検証データの分割について設定することもできます。データを 70% の学習データと 30% の検証データに分割します。

学習イメージに対して実行する拡張演算を指定します。この例では、X 軸方向のランダムな反転、[-90,90] 度の範囲のランダムな回転、[1,2] の範囲のランダムな再スケーリングを実行します。

[インポート] をクリックして、ディープ ネットワーク デザイナーにデータをインポートします。

イメージ サイズは学習の間、ネットワークの入力サイズに合うようにディープ ネットワーク デザイナーにより変更されます。ネットワーク入力サイズを表示するには、[デザイナー] ペインの imageInputLayer をクリックします。このネットワークの入力サイズは 224 x 224 です。

転移学習用のネットワークの編集

ディープ ネットワーク デザイナーを使用すると、[データ] ペインにある学習データと検証データの分布を視覚的に検証できます。この例では、データセットにクラスが 5 つあることが確認できます。

新しいイメージを分類するように事前学習済みのネットワークに再学習させるには、最後の層を新しいデータセットに適応させた新しい層に置き換えます。

[デザイナー] ペインで、新しい fullyConnectedLayer[レイヤー ライブラリ] からキャンバスにドラッグします。OutputSize を新しいデータのクラス数 (この例では 5) に設定します。

学習率を編集して、新しい層での学習速度を転移層より速くします。WeightLearnRateFactor および BiasLearnRateFactor を 10 に設定します。最後の全結合層を削除し、代わりに新しい層を結合します。

出力層を置き換えます。[層のライブラリ] の最後までスクロールして、新しい classificationLayer をキャンバスにドラッグします。元の output 層を削除して、代わりに新しい層を結合します。

ネットワークの確認

編集したネットワークの学習の準備が整っていることを確認するには、[解析] をクリックし、深層学習ネットワーク アナライザーによって誤差 0 が報告されていることを確認します。

ネットワークの学習

既定の設定でネットワークに学習させるには、[学習] タブの [学習] をクリックします。

学習全体をより細かくコントロールしたい場合は、[学習オプション] をクリックして学習の設定を選択します。既定の学習オプションは大きなデートセットに適しています。小さなデータセットの場合は、より小さい値を MiniBatchSize および ValidationFrequency に使用します。学習オプションの詳細については、trainingOptionsを参照してください。

この例では、InitialLearnRate0.0001 に、ValidationFrequency5 に、MaxEpochs8. に設定します。観測値が 55 個あるため、MiniBatchSize を 11 に設定して学習データを均等に分け、それぞれのエポックでデータセット全体が使用されるようにします。

指定した学習オプションでネットワークを学習させるために、[閉じる] をクリックしてから [学習] をクリックします。

ディープ ネットワーク デザイナーでは、学習の進行状況の可視化と監視が行えます。必要に応じて、学習オプションを編集してネットワークを再学習させることができます。

学習結果のエクスポート

学習結果をエクスポートするには、[学習] タブで [エクスポート]、[学習済みネットワークと結果のエクスポート] を選択します。ディープ ネットワーク デザイナーによって、学習済みネットワークが変数 trainedNetwork_1 に、学習情報が変数 trainInfoStruct_1 にエクスポートされます。

使用するネットワークと学習オプションを再作成する MATLAB コードを生成することもできます。[学習] タブの [エクスポート]、[学習用コードの生成] を選択します。

学習済みネットワークのテスト

学習済みネットワークを使用して分類する新しいイメージを選択します。

I = imread("MerchDataTest.jpg");

ネットワークの入力サイズに合うようにテスト イメージをサイズ変更します。

I = imresize(I, [224 224]);

学習済みネットワークを使用してテスト イメージを分類します。

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

その他事前学習済みネットワークを含む詳細についてはディープ ネットワーク デザイナーを参照してください。

参考

関連するトピック