Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

事前学習済みの深層ニューラル ネットワーク

自然イメージから強力で情報量の多い特徴を抽出するよう既に学習させてある事前学習済みのイメージ分類ニューラル ネットワークを用意し、新しいタスクを学習させるための出発点として、そのニューラル ネットワークを使用できます。事前学習済みのニューラル ネットワークの大部分は、ImageNet データベース[1]のサブセットで学習しています。このデータベースは ImageNet Large-Scale Visual Recognition Challenge (ILSVRC)[2]で使用されています。これらのニューラル ネットワークは、100 万個を超えるイメージで学習しており、イメージを 1000 個のオブジェクト カテゴリ (キーボード、マグ カップ、鉛筆、多くの動物など) に分類できます。通常は、転移学習によって事前学習済みのニューラル ネットワークを使用する方が、ニューラル ネットワークにゼロから学習させるよりもはるかに簡単で時間がかかりません。

事前学習済みのニューラル ネットワークは、次のタスクで使用できます。

目的説明
分類

事前学習済みのニューラル ネットワークを分類問題に直接適用します。新しいイメージを分類するには、classify を使用します。事前学習済みのニューラル ネットワークを分類に使用する方法を示す例については、GoogLeNet を使用したイメージの分類を参照してください。

特徴抽出

層の活性化を特徴として使用することで、事前学習済みのニューラル ネットワークを特徴抽出器として使用します。これらの活性化を、サポート ベクター マシン (SVM) などの別の機械学習モデルの学習で特徴として使用できます。詳細については、特徴抽出を参照してください。例については、事前学習済みのネットワークを使用したイメージの特徴の抽出を参照してください。

転移学習

大規模なデータ セットで学習させたニューラル ネットワークから層を取り出し、新しいデータ セットで微調整します。詳細については、転移学習を参照してください。簡単な例については、転移学習入門を参照してください。他の事前学習済みのニューラル ネットワークを試してみるには、新しいイメージを分類するための深層学習ネットワークの学習を参照してください。

事前学習済みのニューラル ネットワークの比較

事前学習済みのニューラル ネットワークには、問題に適用するニューラル ネットワークを選択する際に重要になるさまざまな特性があります。最も重要な特性は、ニューラル ネットワークの精度、速度、およびサイズです。ニューラル ネットワークの選択には、通常、これらの特性の間のトレードオフが生じます。以下のプロットを使用して、ニューラル ネットワークを使用した予測に要する時間と ImageNet 検証精度を比較します。

ヒント

転移学習を始めるには、SqueezeNet や GoogLeNet など、高速なニューラル ネットワークのいずれかを選択してみてください。繰り返しを迅速に実行でき、データの前処理手順や学習オプションなどのさまざまな設定を試すことができます。適切に機能する設定の感触を得てから、Inception-v3 や ResNet などのより正確なニューラル ネットワークを試し、結果が改善されるか確認します。

Comparison of the accuracy and relative prediction time of the pretrained neural networks. As the accuracy of the pretrained neural networks increases, so does the relative prediction time.

メモ

以上のプロットは、さまざまなニューラル ネットワークの相対速度の指標のみを示しています。厳密な予測と学習の反復回数は、使用するハードウェアとミニバッチ サイズによって異なります。

精度が高く高速なものが優れたニューラル ネットワークです。プロットには、最新の GPU (NVIDIA® Tesla® P100) およびサイズが 128 のミニバッチを使用した場合の、予測時間に対する分類精度が表示されています。予測時間は、最も高速なニューラル ネットワークを基準にして測定されます。各マーカーの面積は、ディスク上でのニューラル ネットワークのサイズに比例します。

ImageNet 検証セットでの分類精度は、ImageNet で学習させたニューラル ネットワークの精度を測定する最も一般的な方法です。多くの場合、ImageNet において正確なニューラル ネットワークは、転移学習または特徴抽出を使用して他の自然イメージ データ セットに適用した場合にも正確です。このような汎化が可能である理由として、これらのニューラル ネットワークが自然イメージから強力で情報量の多い特徴を抽出するよう学習済みであり、それらの特徴が他の類似データ セットに汎化される点が挙げられます。ただし、ImageNet での高い精度は、必ずしも他のタスクにそのまま移行されないため、複数のニューラル ネットワークを試すことをお勧めします。

制約のあるハードウェアを使用して予測を実行する場合やインターネットを介してニューラル ネットワークを分散させる場合は、ディスクやメモリ上でのニューラル ネットワークのサイズも考慮してください。

ニューラル ネットワークの精度

ImageNet 検証セットでの分類精度を計算するには複数の方法があり、ソースによって異なる方法が使用されます。複数モデルのアンサンブルを使用する場合もあれば、複数のトリミングを使用して各イメージを複数回評価する場合もあります。場合によっては、標準的な (最上位の) 精度ではなく、上位 5 つの精度を見積もります。このような違いがあるため、異なるソースでの精度を直接比較することができないことがよくあります。Deep Learning Toolbox™ の事前学習済みのニューラル ネットワークの精度は、単一モデルとイメージの中心での単一のトリミングを使用した、標準的な (最上位の) 精度です。

事前学習済みのニューラル ネットワークの読み込み

SqueezeNet ニューラル ネットワークを読み込むには、コマンド ラインで squeezenet と入力します。

net = squeezenet;

その他のニューラル ネットワークについては、googlenet などの関数を使用すると、アドオン エクスプローラーから事前学習済みのニューラル ネットワークをダウンロードするためのリンクを取得できます。

次の表に、ImageNet で学習させた利用可能な事前学習済みのニューラル ネットワークとそれらのプロパティの一部を示します。ニューラル ネットワークの深さは、入力層から出力層までのパスにある逐次畳み込み層または全結合層の最大数として定義されます。すべてのニューラル ネットワークの入力は RGB イメージです。

ニューラル ネットワーク深さサイズパラメーター数 (100 万個単位)イメージ入力サイズ
squeezenet18

5.2 MB

1.24

227-by-227

googlenet22

27 MB

7.0

224-by-224

inceptionv348

89 MB

23.9

299-by-299

densenet201201

77 MB

20.0

224-by-224

mobilenetv253

13 MB

3.5

224-by-224

resnet1818

44 MB

11.7

224-by-224

resnet5050

96 MB

25.6

224-by-224

resnet101101

167 MB

44.6

224-by-224

xception71

85 MB

22.9299-by-299
inceptionresnetv2164

209 MB

55.9

299-by-299

shufflenet505.4 MB1.4224-by-224
nasnetmobile*20 MB 5.3224-by-224
nasnetlarge*332 MB88.9331-by-331
darknet191978 MB20.8256 x 256
darknet5353155 MB41.6256 x 256
efficientnetb08220 MB5.3

224-by-224

alexnet8

227 MB

61.0

227-by-227

vgg1616

515 MB

138

224-by-224

vgg1919

535 MB

144

224-by-224

*NASNet-Mobile ニューラル ネットワークおよび NASNet-Large ニューラル ネットワークは、モジュールの線形シーケンスで構成されていません。

Places365 で学習させた GoogLeNet

標準の GoogLeNet ニューラル ネットワークは ImageNet データ セットで学習していますが、Places365 データ セット[3][4]で学習させたニューラル ネットワークを読み込むこともできます。Places365 で学習させたニューラル ネットワークは、イメージを 365 個の異なる場所カテゴリ (野原、公園、滑走路、ロビーなど) に分類します。Places365 データ セットで学習させた事前学習済みの GoogLeNet ニューラル ネットワークを読み込むには、googlenet('Weights','places365') を使用します。転移学習を実行して新しいタスクを実行する場合、最も一般的な方法は、ImageNet で事前学習させたニューラル ネットワークを使用することです。新しいタスクがシーンの分類に似ている場合は、Places-365 で学習させたニューラル ネットワークを使用すると精度を改善できることがあります。

オーディオ タスクに適した事前学習済みのニューラル ネットワークの詳細については、オーディオ アプリケーション用の事前学習済みのニューラル ネットワークを参照してください。

事前学習済みのニューラル ネットワークの可視化

ディープ ネットワーク デザイナーを使用し、事前学習済みのニューラル ネットワークを読み込んで可視化できます。

deepNetworkDesigner(squeezenet)

Deep Network Designer displaying a pretrained SqueezeNet neural network

層のプロパティを表示して編集するには、層を選択します。層のプロパティに関する情報については、層の名前の横にあるヘルプ アイコンをクリックしてください。

Cross channel normalization layer selected in Deep Network Designer. The PROPERTIES pane shows the properties of the layer.

ディープ ネットワーク デザイナーで [新規] をクリックし、事前学習済みの他のニューラル ネットワークを探索します。

Deep Network Designer start page showing available pretrained neural networks

ニューラル ネットワークをダウンロードする必要がある場合は、目的のニューラル ネットワークで一時停止し、[インストール] をクリックしてアドオン エクスプローラーを開きます。

特徴抽出

特徴抽出は、ニューラル ネットワーク全体の学習に時間や手間をかけずに深層学習の能力を活用できる簡単で高速な方法です。これが必要とするものは学習イメージを一巡する 1 つのパスのみであるため、GPU がない場合、特に便利です。事前学習済みのニューラル ネットワークから学習済みのイメージの特徴を抽出し、fitcsvm (Statistics and Machine Learning Toolbox) を使用するサポート ベクター マシンなどの分類器の学習でそれらの特徴を使用できます。

新しいデータセットの規模が非常に小さい場合、特徴抽出を試みてください。抽出された特徴についてシンプルな分類器に学習させるだけであるため、学習は高速です。また、学習するデータがほとんどないため、ニューラル ネットワークの深い層を微調整しても精度が改善される可能性はあまりありません。

  • 使用するデータが元のデータと非常によく似ている場合は、ニューラル ネットワークの深い部分で抽出された、より具体的な特徴が、その新しいタスクに役立つ可能性が高くなります。

  • 使用するデータが元のデータと大きく異なる場合、ニューラル ネットワークの深い部分で抽出された特徴は、目的のタスクにあまり役立たない可能性があります。初期のニューラル ネットワーク層から抽出された、より一般的な特徴について最後の分類器の学習を試みてください。新しいデータ セットの規模が大きい場合、ゼロからのニューラル ネットワークの学習を試みることもできます。

ResNets は多くの場合に適切な特徴抽出器です。事前学習済みのニューラル ネットワークを特徴抽出に使用する方法を示す例については、事前学習済みのネットワークを使用したイメージの特徴の抽出を参照してください。

転移学習

事前学習済みのニューラル ネットワークを開始点として、新しいデータ セットについてニューラル ネットワークに学習させることによって、ニューラル ネットワークの深い層を微調整できます。多くの場合、転移学習を伴うニューラル ネットワークを微調整する方が、新しいニューラル ネットワークを構築して学習させるよりも簡単で時間がかかりません。このニューラル ネットワークはイメージの特徴を既に多数学習していますが、ニューラル ネットワークを微調整すると、新しいデータ セットに固有の特徴をニューラル ネットワークに学習させることができます。データセットが非常に大規模な場合、転移学習はゼロから学習する場合に比べて速くならない可能性があります。

ヒント

ニューラル ネットワークを微調整すると、多くの場合、精度を最大限に高められます。非常に小さいデータセット (クラスごとのイメージ数が約 20 未満) の場合、代わりに特徴抽出を試みてください。

ニューラル ネットワークの微調整は、単純な特徴抽出よりも時間と手間がかかりますが、ニューラル ネットワークにさまざまな特徴セットの抽出を学習させることができるため、多くの場合に最終的なニューラル ネットワークの精度が向上します。ニューラル ネットワークには新しい特徴を学習するためのデータがあるので、新しいデータ セットの規模があまり小さくなければ、通常は特徴抽出よりも微調整がうまく機能します。転移学習の実行方法を示す例は、ディープ ネットワーク デザイナーを使用した転移学習および新しいイメージを分類するための深層学習ネットワークの学習を参照してください。

Transfer learning workflow

ニューラル ネットワークのインポートとエクスポート

TensorFlow™ 2、TensorFlow-Keras、PyTorch®、および ONNX™ (Open Neural Network Exchange) モデル形式から、ニューラル ネットワークと層グラフをインポートできます。Deep Learning Toolbox のニューラル ネットワークと層グラフを TensorFlow 2 および ONNX モデル形式にエクスポートすることもできます。

インポート関数

外部の深層学習プラットフォームとモデルの形式dlnetwork としてのモデルのインポート
SavedModel 形式の TensorFlow ニューラル ネットワークまたは TensorFlow-Keras ニューラル ネットワークimportNetworkFromTensorFlow
.pt ファイルに含まれるトレースされた PyTorch モデルimportNetworkFromPyTorch
ONNX モデル形式のニューラル ネットワークimportNetworkFromONNX

関数 importNetworkFromTensorFlowimportNetworkFromPyTorch、および importNetworkFromONNX は、これらの関数が組み込み MATLAB® 層に変換できない TensorFlow 層、PyTorch 層、または ONNX 演算を含むモデルがインポートされたとき、カスタム層を自動的に生成します。これらの関数は、自動的に生成したカスタム層を現在のフォルダー内のパッケージに保存します。詳細については、Autogenerated Custom Layersを参照してください。

エクスポート関数

ニューラル ネットワークまたは層グラフのエクスポート外部の深層学習プラットフォームとモデルの形式
exportNetworkToTensorFlowPython® パッケージに含まれる TensorFlow 2 モデル
exportONNXNetworkONNX モデル形式

関数 exportNetworkToTensorFlow は、Deep Learning Toolbox のニューラル ネットワークまたは層グラフを Python パッケージに含まれる TensorFlow モデルとして保存します。エクスポートされたモデルを読み込んで標準の TensorFlow 形式として保存する方法の詳細については、Load Exported TensorFlow ModelおよびSave Exported TensorFlow Model in Standard Formatを参照してください。

ONNX を中間形式として使用することで、ONNX モデルのエクスポートまたはインポートをサポートしている他の深層学習フレームワークと相互運用できます。

Import neural networks from and export neural networks to external deep learning platforms.

オーディオ アプリケーション用の事前学習済みのニューラル ネットワーク

Audio Toolbox™ には、事前学習済みの VGGish、YAMNet、OpenL3、および CREPE ニューラル ネットワークが用意されています。MATLAB 内の関数 vggish (Audio Toolbox)、関数 yamnet (Audio Toolbox)、関数 openl3 (Audio Toolbox)、および関数 crepe (Audio Toolbox)、または Simulink® 内の VGGish (Audio Toolbox) ブロックおよび YAMNet (Audio Toolbox) ブロックを使用して、事前学習済みのニューラル ネットワークを直接操作します。ディープ ネットワーク デザイナーを使用し、事前学習済みのオーディオ ニューラル ネットワークをインポートして可視化することもできます。

次の表に、利用可能な事前学習済みのオーディオ ニューラル ネットワークとそれらのプロパティの一部を示します。

ニューラル ネットワーク深さサイズパラメーター数 (100 万個単位)入力サイズ
crepe (Audio Toolbox)7

89.1 MB

22.2

1024×1×1

openl3 (Audio Toolbox)8

18.8 MB

4.68

128×199×1

vggish (Audio Toolbox)9

289 MB

72.1

96×64×1

yamnet (Audio Toolbox)28

15.5 MB

3.75

96×64×1

転移学習や特徴抽出を実行するには、VGGish および YAMNet を使用します。VGGish と OpenL3 の特徴埋め込みを抽出して、機械学習や深層学習のシステムに入力します。関数 classifySound (Audio Toolbox)Sound Classifier (Audio Toolbox) ブロックは、YAMNet を使用して音を特定し、その音を 521 個のカテゴリのいずれかに分類します。関数 pitchnn (Audio Toolbox) は、CREPE を使用して、深層学習によるピッチ推定を実行します。

事前学習済みのオーディオ ニューラル ネットワークを新しいタスクに適応させる方法を示す例については、Transfer Learning with Pretrained Audio Networks (Audio Toolbox)およびAdapt Pretrained Audio Network for New Data Using Deep Network Designerを参照してください。

オーディオ アプリケーション用の深層学習の使用に関する詳細については、Deep Learning for Audio Applications (Audio Toolbox)を参照してください。

GitHub の事前学習済みモデル

最新の事前学習済みモデルを見つけるには、MATLAB Deep Learning Model Hub を参照してください。

次に例を示します。

参照

[1] ImageNet. http://www.image-net.org

[2] Russakovsky, O., Deng, J., Su, H., et al. “ImageNet Large Scale Visual Recognition Challenge.” International Journal of Computer Vision (IJCV). Vol 115, Issue 3, 2015, pp. 211–252

[3] Zhou, Bolei, Aditya Khosla, Agata Lapedriza, Antonio Torralba, and Aude Oliva. "Places: An image database for deep scene understanding." arXiv preprint arXiv:1610.02055 (2016).

[4] Places. http://places2.csail.mit.edu/

参考

| | | | | | | | | | | | | | | | | | | | | | |

関連するトピック

外部の Web サイト