ドキュメンテーション

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

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

通常は、転移学習によって事前学習済みのネットワークを微調整する方が、ゼロから学習させるよりもはるかに簡単で時間がかかりません。事前学習済みのネットワークは、次の目的で使用できます。

目的説明
分類

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

転移学習

大規模なデータセットで学習させたネットワークから層を取り出し、新しいデータセットで微調整します。事前学習済みのネットワークを転移学習に使用する方法を示す例については、GoogLeNet を使用した転移学習およびAlexNet を使用した転移学習を参照してください。

特徴抽出

層の活性化を特徴として使用することで、事前学習済みのネットワークを特徴抽出器として使用します。これらの活性化を、サポート ベクター マシン (SVM) などの別の分類器の学習で特徴として使用できます。事前学習済みのネットワークを特徴抽出に使用する方法を示す例については、AlexNet を使用した特徴抽出を参照してください。

事前学習済みのネットワークのダウンロード

自分の問題に使用するために、事前学習済みのネットワークをダウンロードしてインストールできます。alexnet などの関数を使用すると、アドオン エクスプローラーから事前学習済みのネットワークをダウンロードするためのリンクを取得できます。利用可能なダウンロードの一覧を確認するには、MathWorks Neural Network Toolbox Team を参照してください。

事前学習済みのネットワークは広範囲の自然イメージに対する豊富な特徴表現を学習しています。これらの学習済みの特徴は、転移学習や特徴抽出を使用する幅広いイメージ分類問題に適用できます。事前学習済みのモデルは、100 万枚を超えるイメージで学習しており、イメージを 1000 個のオブジェクト カテゴリ (キーボード、マグ カップ、鉛筆、多くの動物など) に分類できます。学習イメージは ImageNet データベース [1] のサブセットで、このデータベースは ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) [2] で使用されています。

AlexNet

関数 alexnet を使用して、事前学習済みの AlexNet モデルをダウンロードするためのリンクを取得します。

AlexNet は ILSVRC 2012 で最高の分類性能を達成して優勝しました。AlexNet には、学習可能な重みを持つ 8 個の層があり、そのうち 5 個が畳み込み層で、3 個が全結合層です。AlexNet は、新しいイメージの再学習や分類を高速に実行できますが、大規模でもあり、他のより新しい事前学習済みのモデルほどには、元の ILSVRC データセットに対して正確ではありません。詳細は、alexnet を参照してください。

VGG-16 および VGG-19

関数 vgg16 および vgg19 を使用して、事前学習済みの VGG モデルをダウンロードするためのリンクを取得します。

VGG ネットワークは、ILSVRC 2014 で入賞しました。VGG-16 には、学習可能な重みを持つ 16 個の層があり、そのうち 13 個が畳み込み層で、3 個が全結合層です。VGG-19 には、学習可能な重みを持つ 19 個の層があり、そのうち 16 個が畳み込み層で、3 個が全結合層です。どちらのネットワークも、すべての全結合層のフィルターのサイズが 3 x 3 です。VGG ネットワークは、Neural Network Toolbox™ の他の事前学習済みのネットワークよりも規模が大きく、通常は低速です。詳細は、vgg16vgg19 を参照してください。

GoogLeNet

関数 googlenet を使用して、事前学習済みの GoogLeNet モデルをダウンロードするためのリンクを取得します。

GoogLeNet は ILSVRC 2014 で入賞しました。GoogLeNet は VGG ネットワークよりも小規模で、通常は高速です。また、AlexNet よりも小規模で、元の ILSVRC データセットに対する精度は勝ります。GoogLeNet の深さは 22 層です。Inception-v3 や ResNet と同様に、GoogLeNet には有向非循環グラフ構造があります。ネットワークの層やアーキテクチャを抽出してさらに処理を行うには、layerGraph を使用します。GoogLeNet を使用した転移学習の例については、GoogLeNet を使用した転移学習を参照してください。詳細は、googlenet を参照してください。

Inception-v3

関数 inceptionv3 を使用して、事前学習済みの Inception-v3 モデルをダウンロードするためのリンクを取得します。

Inception-v3 は、GoogLeNet アーキテクチャが発展したものです。GoogLeNet に比べ、Inception-v3 は規模が大きく、深く、通常は低速ですが、元の ILSVRC データセットに対する精度は勝ります。Inception-v3 の深さは 48 層です。ネットワークの層やアーキテクチャを抽出してさらに処理を行うには、layerGraph を使用します。新しい分類タスクでネットワークの再学習を行うには、GoogLeNet を使用した転移学習の手順に従います。GoogLeNet の代わりに Inception-v3 モデルを読み込み、削除および結合する層の名前を、Inception-v3 の層の名前に一致するように変更します。'predictions''predictions_softmax'、および 'ClassificationLayer_predictions' 層を削除し、'avg_pool' 層に結合します。詳細は、inceptionv3 を参照してください。

ResNet-50 と ResNet-101

関数 resnet50 および resnet101 を使用して、事前学習済みの ResNet-50 および ResNet-101 ネットワークをダウンロードするためのリンクを取得します。

ResNet の残差結合により、非常に深いネットワークの学習が可能になります。名前が示すように、ResNet-50 の深さは 50 層で、ResNet-101 の深さは 101 層です。新しい分類タスクでネットワークの再学習を行うには、GoogLeNet を使用した転移学習の手順に従います。GoogLeNet の代わりに ResNet ネットワークを読み込み、ネットワークの最後にある削除および結合する層の名前を、ResNet の層の名前に一致するように変更します。詳細は、resnet50resnet101 を参照してください。

importCaffeNetwork

importCaffeNetwork を使用して、Caffe [3] から事前学習済みのネットワークをインポートできます。

Caffe Model Zoo [4] には、利用できる事前学習済みのネットワークが多数あります。目的の .prototxt および .caffemodel ファイルを検索してダウンロードし、importCaffeNetwork を使用して事前学習済みのネットワークを MATLAB® にインポートします。詳細は、importCaffeNetwork を参照してください。

importCaffeLayers

importCaffeLayers を使用して、Caffe からネットワーク アーキテクチャをインポートできます。

事前学習済みのネットワークの重みをインポートせずに、Caffe ネットワークからネットワーク アーキテクチャをインポートできます。目的の .prototxt ファイルを検索してダウンロードし、importCaffeLayers を使用して MATLAB にネットワーク層をインポートします。詳細は、importCaffeLayers を参照してください。

importKerasNetwork

importKerasNetwork を使用して、Keras から事前学習済みのネットワークをインポートできます。

ネットワークと重みは、同じ HDF5 (.h5) ファイルから、または個別の HDF5 ファイルと JSON (.json) ファイルからインポートできます。詳細は、importKerasNetwork を参照してください。

importKerasLayers

importKerasLayers を使用して、Keras からネットワーク アーキテクチャをインポートできます。

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

転移学習

転移学習は、深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。転移学習を伴うネットワークを微調整する方が、新しいネットワークを構築して学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、新しいタスクに学習を高速に転移できます。転移学習の利点は、事前学習済みのネットワークが既に特徴を多数学習していることです。これらの特徴を他のさまざまな類似タスクに適用できます。たとえば、数百万枚のイメージで学習したネットワークを利用して、わずか数百枚のイメージを使って再学習させることで、新しいオブジェクトを分類できるようになります。データセットが非常に大規模である場合、転移学習によって速くならない可能性があります。転移学習の実行方法を示す例は、AlexNet を使用した転移学習およびGoogLeNet を使用した転移学習を参照してください。

特徴抽出

特徴抽出は、学習に時間や手間をかけずに事前学習済みのネットワークの能力を活用できる簡単な方法です。特徴抽出は、最も早く深層学習を使用できる方法と言えます。事前学習済みのネットワークから学習済みの特徴を抽出し、fitcsvm (Statistics and Machine Learning Toolbox™) を使用するサポート ベクター マシンなどの分類器の学習で特徴として使用できます。たとえば、SVM が学習セットと検証セットで 90% を超える精度を達成する場合、精度を向上させるために転移学習を使用して微調整することに労力に見合う価値はないかもしれません。小規模なデータセットで微調整を行うと、学習データへの過適合のリスクも生じます。SVM の適用によって十分な精度を達成できない場合は、精度を向上させる微調整を行うだけの価値があります。事前学習済みのネットワークを特徴抽出に使用する方法を示す例については、AlexNet を使用した特徴抽出を参照してください。

参照

[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] Caffe. http://caffe.berkeleyvision.org/

[4] Caffe Model Zoo. http://caffe.berkeleyvision.org/model_zoo.html

参考

| | | | | | | |

関連するトピック