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

シンプルなイメージ分類ネットワークの作成

この例では、深層学習による分類用のシンプルな畳み込みニューラル ネットワークを作成し、学習を行う方法を説明します。畳み込みニューラル ネットワークは深層学習に不可欠なツールであり、特にイメージの認識に適しています。

この例では、以下を実行する方法を示します。

  • イメージ データの読み込み。

  • ネットワーク アーキテクチャの定義。

  • 学習オプションの指定。

  • ネットワークの学習。

  • 新しいデータのラベルの予測と分類精度の計算。

データの読み込み

数字の標本データをイメージ データストアとして読み込みます。関数 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,'randomize');

ネットワーク アーキテクチャの定義

畳み込みニューラル ネットワーク アーキテクチャを定義します。ネットワークの入力層にイメージのサイズを指定し、分類層の前の全結合層にクラスの数を指定します。それぞれのイメージは 28 x 28 x 1 ピクセルで、10 個のクラスがあります。

inputSize = [28 28 1];
numClasses = 10;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer];

深層学習層の詳細は、深層学習層の一覧を参照してください。

ネットワークの学習

学習オプションを指定し、ネットワークに学習させます。

既定では、利用可能な GPU がある場合、trainNetwork は GPU を使用します (Parallel Computing Toolbox™、および Compute Capability 3.0 以上の CUDA® 対応 GPU が必要)。そうでない場合は CPU が使用されます。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.9892

深層学習の次のステップとして、事前学習済みのネットワークを他のタスクに使用してみることができます。転移学習または特徴抽出を使用して、自分のイメージ データで新しい分類問題を解決してみましょう。例については、転移学習を使用した短時間での深層学習の開始事前学習済みのネットワークから抽出された特徴を使用した分類器の学習を参照してください。事前学習済みのネットワークの詳細は、事前学習済みの深層ニューラル ネットワークを参照してください。

参考

|

関連するトピック