このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
シンプルなイメージ分類ネットワークの作成
この例では、深層学習による分類用のシンプルな畳み込みニューラル ネットワークを作成し、学習を行う方法を説明します。畳み込みニューラル ネットワークは深層学習に不可欠なツールであり、特にイメージの認識に適しています。
この例では、以下を実行する方法を示します。
イメージ データの読み込み。
ネットワーク アーキテクチャの定義。
学習オプションの指定。
ネットワークに学習をさせます。
新しいデータのラベルの予測と分類精度の計算。
シンプルなイメージ分類ネットワークの作成および学習を対話的に行う方法を示す例については、ディープ ネットワーク デザイナーを使用したシンプルなイメージ分類ネットワークの作成を参照してください。
データの読み込み
数字の標本データをイメージ データストアとして読み込みます。関数 imageDatastore
は、フォルダー名に基づいてイメージに自動的にラベルを付けます。
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
データを学習データセットと検証データセットに分割し、学習セットの各カテゴリに 750 個のイメージが含まれ、検証セットに各ラベルの残りのイメージが含まれるようにします。splitEachLabel
は、イメージ データストアを学習用と検証用の 2 つの新しいデータストアに分割します。
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomized');
ネットワーク アーキテクチャの定義
畳み込みニューラル ネットワーク アーキテクチャを定義します。ネットワークの入力層にイメージのサイズを指定し、分類層の前の全結合層にクラスの数を指定します。それぞれのイメージは 28 x 28 x 1 ピクセルで、10 個のクラスがあります。
inputSize = [28 28 1]; numClasses = 10; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
深層学習層の詳細は、深層学習層の一覧を参照してください。
ネットワークの学習
学習オプションを指定し、ネットワークに学習させます。
既定で、trainNetwork
は、使用可能な GPU があれば GPU を使用し、なければ CPU を使用します。GPU で学習を行うには、Parallel Computing Toolbox™ とサポートされている GPU デバイスが必要です。サポートされているデバイスについては、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。trainingOptions
の名前と値のペアの引数 'ExecutionEnvironment'
を使用して、実行環境を指定することもできます。
options = trainingOptions('sgdm', ... 'MaxEpochs',4, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);
学習オプションの詳細は、パラメーターの設定と畳み込みニューラル ネットワークの学習を参照してください。
ネットワークのテスト
検証データを分類し、分類精度を計算します。
YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = mean(YPred == YValidation)
accuracy = 0.9888
深層学習の次のステップとして、事前学習済みのネットワークを他のタスクに使用してみることができます。転移学習または特徴抽出を使用して、自分のイメージ データで新しい分類問題を解決してみましょう。例については、転移学習を使用した短時間での深層学習の開始と事前学習済みのネットワークから抽出された特徴を使用した分類器の学習を参照してください。事前学習済みのネットワークの詳細は、事前学習済みの深層ニューラル ネットワークを参照してください。
参考
trainNetwork
| trainingOptions