主要内容

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

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

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

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

目的 説明
分類

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

特徴抽出

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

転移学習

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

事前学習済みのネットワークの比較

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

ヒント

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

メモ

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

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

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

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

ネットワークの精度

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

事前学習済みのネットワークの読み込み

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

网= squeezenet;

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

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

ネットワーク 深さ サイズ パラメーター数(100年万個単位) イメージ入力サイズ
squeezenet 18

5.2 MB

1.24

227年- 227年

googlenet 22

27 MB

7.0

224年- 224年

inceptionv3 48

89 MB

23.9

299年- 299年

densenet201 201

77 MB

20.0

224年- 224年

mobilenetv2 53

13 MB

3.5

224年- 224年

resnet18 18

44 MB

11.7

224年- 224年

resnet50 50

96 MB

25.6

224年- 224年

resnet101 101

167 MB

44.6

224年- 224年

xception 71

85 MB

22.9 299年- 299年
inceptionresnetv2 164

209 MB

55.9

299年- 299年

shufflenet 50 5.4 MB 1.4 224年- 224年
nasnetmobile 20 MB 5.3 224年- 224年
nasnetlarge 332 MB 88.9 331年- 331年
darknet19 19 78 MB 20.8 256 x 256
darknet53 53 155 MB 41.6 256 x 256
efficientnetb0 82 20 MB 5.3

224年- 224年

alexnet 8

227 MB

61.0

227年- 227年

vgg16 16

515 MB

138

224年- 224年

vgg19 19

535 MB

144

224年- 224年

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

Places365で学習させたGoogLeNet

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

特徴抽出

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

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

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

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

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

転移学習

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

ヒント

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

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

ネットワークのインポートとエクスポート

TensorFlow®咖啡,-KerasおよびONNX™(打开神经网络交换)モデル形式からネットワークやネットワークアーキテクチャをインポートできます。学習済みのネットワークをONNXモデル形式でエクスポートすることもできます。

Kerasからのインポート

TensorFlow-Kerasから事前学習済みのネットワークをインポートするには,importKerasNetworkを使用します。ネットワークと重みは、同じ HDF5 (.h5) ファイルから、または個別の HDF5 ファイルと JSON (.json) ファイルからインポートできます。詳細については、importKerasNetworkを参照してください。

TensorFlow-Kerasからネットワークアーキテクチャをインポートするには,importKerasLayersを使用します。重みと共にまたは重みなしで,ネットワークアーキテクチャをインポートできます。ネットワークアーキテクチャと重みは、同じ HDF5 (.h5) ファイルから、または個別の HDF5 ファイルと JSON (.json) ファイルからインポートできます。詳細については、importKerasLayersを参照してください。

咖啡からのインポート

咖啡から事前学習済みのネットワークをインポートするには,関数importCaffeNetworkを使用します。咖啡模型动物园[5]には,利用できる事前学習済みのネットワークが多数あります。目的の.prototxtおよび.caffemodelファイルをダウンロードし,importCaffeNetworkを使用して事前学習済みのネットワークをMATLAB®にインポートします。詳細については,importCaffeNetworkを参照してください。

咖啡ネットワークのネットワークアーキテクチャをインポートできます。目的の.prototxtファイルをダウンロードし,importCaffeLayersを使用してMATLABにネットワーク層をインポートします。詳細については,importCaffeLayersを参照してください。

ONNXへのエクスポートとインポート

ONNXを中間形式として使用することで,TensorFlow, PyTorch Caffe2,微软®认知工具包(CNTK),核心毫升,Apache MXNet™など,ONNXモデルのエクスポートまたはインポートをサポートしている他の深層学習フレームワークと相互運用できます。

関数exportONNXNetworkを使用して,学習済みの深度学习工具箱ネットワークをONNXモデル形式にエクスポートします。その後で,ONNXモデルをONXXモデルのインポートをサポートしている他の深層学習フレームワークにインポートできます。

事前学習済みのネットワークをONNXからインポートするには,importONNXNetworkを使用します。重みと共にまたは重みなしで,ネットワークアーキテクチャをインポートするには,importONNXLayersを使用します。

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

深度学习工具箱を音频工具箱™と共に使用して,オーディオ処理および音声処理アプリケーション用の事前学習済みのネットワークを使用します。

音频工具箱には,事前学習済みのVGGishおよびYAMNetネットワークが用意されています。関数vggish(音频工具箱)およびyamnet(音频工具箱)を使用して,事前学習済みのネットワークを直接操作します。関数classifySound(音频工具箱)521年は,音を特定して個のカテゴリのいずれかに分類することができるよう,YAMNetに対して必要な前処理および後処理を実行します。関数yamnetGraph(音频工具箱)を使用すると,YAMNetオントロジーを検索できます。関数vggishFeatures(音频工具箱)は,特徴の埋め込みを抽出し,機械学習や深層学習のシステムに入力できるように,VGGishに対して必要な前処理および後処理を実行します。オーディオアプリケーション用の深層学習の使用に関する詳細については,音频应用深度学习简介(音频工具箱)を参照してください。

転移学習や特徴抽出を実行するには,VGGishおよびYAMNetを使用します。例については,通过预先训练的音频网络进行迁移学习(音频工具箱)を参照してください。

参照

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

[2] Russakovsky, O., Deng J., Su H., et al. " ImageNet大规模视觉识别挑战。"国际计算机视觉杂志。2015年第3期,第115卷,211-252页

[3] Zhou, Bolei, Aditya Khosla, Agata Lapedriza, Antonio Torralba和Aude Oliva。“地点:用于深度场景理解的图像数据库。”arXiv预印本arXiv: 1610.02055(2016).

[4]的地方。http://places2.csail.mit.edu/

[5]咖啡模型动物园。http://caffe.berkeleyvision.org/model_zoo.html

参考

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

関連するトピック