Main Content

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

augmentedImageSource

(削除予定) 拡張イメージ データのバッチの生成

augmentedImageSource は将来のリリースで削除される予定です。代わりに、関数 augmentedImageDatastore を使用して拡張イメージ データストアを作成してください。詳細については、互換性の考慮事項を参照してください。

説明

auimds = augmentedImageSource(outputSize,imds) は、イメージ データストア imds のイメージを使用して、出力イメージ サイズ outputSize で、分類問題用の拡張イメージ データストア auimds を作成します。

auimds = augmentedImageSource(outputSize,X,Y) は、分類問題および回帰問題用の拡張イメージ データストアを作成します。配列 X には予測子変数が含まれ、配列 Y にはカテゴリカル ラベルまたは数値応答が含まれます。

auimds = augmentedImageSource(outputSize,tbl) は、分類問題および回帰問題用の拡張イメージ データストアを作成します。テーブル tbl には、予測子と応答が含まれます。

auimds = augmentedImageSource(outputSize,tbl,responseNames) は、分類問題および回帰問題用の拡張イメージ データストアを作成します。テーブル tbl には、予測子と応答が含まれます。引数 responseNames は、tbl の応答変数を指定します。

auimds = augmentedImageSource(___,Name,Value) は、拡張イメージ データストアによって実行されるイメージの前処理を構成する名前と値のペアを使用して、拡張イメージ データストアを作成します。複数の名前と値のペアを指定できます。

すべて折りたたむ

ランダムな回転を使用してイメージの前処理を行い、学習済み畳み込みニューラル ネットワークが回転不変性を持つようにします。この例では、関数 augmentedImageSource を使用して拡張イメージ データストア オブジェクトを作成します。関数 augmentedImageDatastore を使用して拡張イメージ データストア オブジェクトを作成する推奨ワークフローの例については、拡張イメージを使用したネットワークの学習を参照してください。

標本データを読み込みます。標本データは、手書き数字の合成イメージで構成されています。

[XTrain,YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData は、数字の学習セットを 4 次元配列データとして読み込みます。XTrain は、28 x 28 x 1 x 5000 の配列です。

  • 28 はイメージの高さと幅。

  • 1 はチャネルの数。

  • 5000 は手書き数字の合成イメージの数。

YTrain は、各観測値のラベルが含まれる categorical ベクトルです。

学習中にイメージを回転させるイメージ オーグメンターを作成します。このイメージ オーグメンターは、ランダムな角度で各イメージを回転させます。

imageAugmenter = imageDataAugmenter('RandRotation',[-180 180])
imageAugmenter = 
  imageDataAugmenter with properties:

           FillValue: 0
     RandXReflection: 0
     RandYReflection: 0
        RandRotation: [-180 180]
           RandScale: [1 1]
          RandXScale: [1 1]
          RandYScale: [1 1]
          RandXShear: [0 0]
          RandYShear: [0 0]
    RandXTranslation: [0 0]
    RandYTranslation: [0 0]

関数 augmentedImageSource を使用して拡張イメージ データストアを作成します。拡張イメージのサイズ、学習データ、およびイメージ オーグメンターを指定します。

imageSize = [28 28 1];
auimds = augmentedImageSource(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter)
auimds = 
  augmentedImageDatastore with properties:

         NumObservations: 5000
           MiniBatchSize: 128
        DataAugmentation: [1x1 imageDataAugmenter]
      ColorPreprocessing: 'none'
              OutputSize: [28 28]
          OutputSizeMode: 'resize'
    DispatchInBackground: 0

畳み込みニューラル ネットワーク アーキテクチャを指定します。

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,16,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
       
    convolution2dLayer(3,32,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
       
    convolution2dLayer(3,64,'Padding',1)
    batchNormalizationLayer
    reluLayer
        
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

モーメンタム項付き確率的勾配降下法の学習オプションを設定します。

opts = trainingOptions('sgdm', ...
    'MaxEpochs',10, ...
    'Shuffle','every-epoch', ...
    'InitialLearnRate',1e-3);

ネットワークに学習をさせます。

net = trainNetwork(auimds,layers,opts);
Training on single CPU.
Initializing image normalization.
|========================================================================================|
|  Epoch  |  Iteration  |  Time Elapsed  |  Mini-batch  |  Mini-batch  |  Base Learning  |
|         |             |   (hh:mm:ss)   |   Accuracy   |     Loss     |      Rate       |
|========================================================================================|
|       1 |           1 |       00:00:01 |        7.81% |       2.4151 |          0.0010 |
|       2 |          50 |       00:00:23 |       52.34% |       1.4930 |          0.0010 |
|       3 |         100 |       00:00:44 |       74.22% |       1.0148 |          0.0010 |
|       4 |         150 |       00:01:05 |       78.13% |       0.8153 |          0.0010 |
|       6 |         200 |       00:01:26 |       76.56% |       0.6903 |          0.0010 |
|       7 |         250 |       00:01:45 |       87.50% |       0.4891 |          0.0010 |
|       8 |         300 |       00:02:06 |       87.50% |       0.4874 |          0.0010 |
|       9 |         350 |       00:02:30 |       87.50% |       0.4866 |          0.0010 |
|      10 |         390 |       00:02:46 |       89.06% |       0.4021 |          0.0010 |
|========================================================================================|

入力引数

すべて折りたたむ

出力イメージのサイズ。2 つの正の整数のベクトルとして指定します。最初の要素は出力イメージの行数、2 番目の要素は列数を指定します。この値は、返される拡張イメージ データストア auimdsOutputSize プロパティを設定します。

イメージ データストア。ImageDatastore オブジェクトとして指定します。

ヒント

イメージのサイズ変更を含む深層学習用のイメージの前処理を効率的に行うには、augmentedImageDatastore を使用します。ImageDatastore オブジェクトの ReadFcn オプションを使用しないでください。

ImageDatastore を使用すると、事前取得を使用して JPG または PNG イメージ ファイルのバッチ読み取りを行うことができます。ReadFcn オプションをカスタム関数に設定した場合、ImageDatastore は事前取得を行わないため、通常、速度が大幅に低下します。

イメージ。4 次元数値配列として指定します。最初の 3 つの次元は高さ、幅、およびチャネルであり、最後の次元は個々のイメージにインデックスを付けます。

配列に NaN が含まれる場合、学習全体に伝播されます。ただし、ほとんどの場合に学習が収束しなくなります。

データ型: single | double | uint8 | int8 | uint16 | int16 | uint32 | int32

分類または回帰の応答。次のいずれかに指定します。

  • 分類問題で、Y がイメージ ラベルを含む categorical ベクトル。

  • 回帰問題では、Y は次のいずれかになる。

    • n 行 r 列の数値行列。n は観測値の数、r は応答の数です。

    • h x w x c x n の数値配列。h x w x c は 1 つの応答のサイズ、n は観測値の数です。

応答に NaN が含まれていてはなりません。

データ型: categorical | double

入力データ。テーブルとして指定します。tbl は、最初の列に予測子を、絶対イメージ パス、相対イメージ パス、あるいはイメージとして含まなければなりません。応答の型と場所は、問題によって異なります。

  • 分類問題では、応答はイメージのラベルを含むカテゴリカル変数でなければなりません。augmentedImageSource を呼び出すときに応答変数の名前が指定されていない場合、応答は 2 列目に含まれていなければなりません。tbl の異なる列に応答が含まれている場合、引数 responseNames を使用して応答変数名を指定しなければなりません。

  • 回帰問題では、応答は数値であり、最初の列より後の列に含まれなければなりません。応答は、スカラーとして複数の列に、あるいは数値ベクトルまたは 3 次元数値配列が含まれる cell 配列として 1 つの列に含めることができます。応答変数の名前を指定しない場合、augmentedImageSourcetbl の残りの列を応答変数として受け入れます。引数 responseNames を使用して応答変数名を指定できます。

応答に NaN が含まれていてはなりません。予測子データに NaN が含まれる場合、学習全体に伝播されますが、ほとんどの場合に学習が収束しなくなります。

データ型: table

入力テーブルの応答変数の名前。次のいずれかとして指定します。

  • 1 つの応答をもつ分類または回帰タスクの場合、responseNames は、入力テーブルに応答変数が格納された文字ベクトルまたは string スカラーでなければなりません。

    複数の応答をもつ回帰タスクの場合、responseNames は、入力テーブルに応答変数が格納された string 配列または文字ベクトルの cell 配列でなければなりません。

データ型: char | cell | string

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: augmentedImageSource([28,28],myTable,'OutputSizeMode','centercrop') は、中心からのイメージのトリミングを OutputSizeMode プロパティに設定した、拡張イメージ データストアを作成します。

入力イメージのカラー チャネルに対して実行される前処理演算。'ColorPreprocessing''none''gray2rgb'、または 'rgb2gray' から構成されるコンマ区切りのペアとして指定します。この引数は、返される拡張イメージ データストア auimdsColorPreprocessing プロパティを設定します。ColorPreprocessing プロパティは、拡張イメージ データストアからのすべての出力イメージが inputImageLayer に必要な数のカラー チャネルを持つようにします。

入力イメージに適用される前処理。'DataAugmentation'imageDataAugmenter オブジェクトまたは 'none' から構成されるコンマ区切りのペアとして指定します。この引数は、返される拡張イメージ データストア auimdsDataAugmentation プロパティを設定します。DataAugmentation'none' である場合、入力イメージには前処理が適用されません。

出力イメージのサイズ変更に使用するメソッド。'OutputSizeMode' と次のいずれかから構成されるコンマ区切りのペアとして指定します。この引数は、返される拡張イメージ データストア auimdsOutputSizeMode プロパティを設定します。

  • 'resize' — 出力サイズに当てはまるようにイメージをスケーリングします。詳細については、imresize を参照してください。

  • 'centercrop' — 学習イメージの中心からトリミングします。トリミングのサイズは、出力サイズと同じです。

  • 'randcrop' — 学習イメージからランダムにトリミングします。ランダムなトリミングのサイズは、出力サイズと同じです。

データ型: char | string

拡張の並列実行。'BackgroundExecution'false または true から構成されるコンマ区切りのペアとして指定します。この引数は、返される拡張イメージ データストア auimdsDispatchInBackground プロパティを設定します。'BackgroundExecution'true であり、Parallel Computing Toolbox™ ソフトウェアをインストール済みの場合、拡張イメージ データストア auimds はイメージの拡張を並列実行します。

出力引数

すべて折りたたむ

拡張イメージ データストア。augmentedImageDatastore オブジェクトとして返されます。

バージョン履歴

R2017b で導入

すべて展開する

R2018a: augmentedImageSource オブジェクトは削除済み

R2017b では、augmentedImageSource オブジェクトを作成して、深層学習ネットワークの学習用にイメージを前処理できました。R2018a 以降では、augmentedImageSource オブジェクトが削除されています。代わりに augmentedImageDatastore オブジェクトを使用してください。

augmentedImageDatastore には、データの前処理に役立つ追加のプロパティとメソッドがあります。学習以外に使用できない augmentedImageSource とは異なり、augmentedImageDatastore は学習と予測の両方に使用できます。

augmentedImageDatastore オブジェクトを作成するには、関数 augmentedImageDatastore (推奨) または関数 augmentedImageSource のいずれかを使用できます。