主要内容

imageDataAugmenter

イメージデータ拡張の構成

説明

イメージデータオーグメンターは,サイズ変更,回転,反転など,イメージ拡張の一連の前処理オプションを構成します。

imageDataAugmenterは,augmentedImageDatastoreで使用され,拡張。詳細にいては,ランダムな幾何学的変換での学習用の▪▪メ▪▪ジの拡張を参照してください。

作成

説明

aug = imageDataAugmenterは,恒等変換と一致する既定のプロパティ値を使用して,imageDataAugmenterオブジェクトを作成します。

aug = imageDataAugmenter(名称,值は,プロパティを設定する名前と値のペアを使用して,一連の。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

プロパティ

すべて展開する

リサンプリング時に範囲外の点の定義に使用される塗りぶしの値。数値スカラ,または数値ベクトルとして指定します。

  • 拡張メジが単一チャネルの場合,FillValueはスカラ,でなければなりません。

  • 拡張メジがマルチチャネルの場合,FillValueにはスカラ,または入力メジのチャネル数に等しい長さのベクトルを指定できます。たとえば,入力メジがRGBメジの場合,FillValueには長さが3のベクトルを指定できます。

グレ,スケ,ル,0です。分类:メ,ジの場合,既定の塗り,ぶしの値は' <定义> 'ラベルで,trainNetworkは学習時に塗りぶされたピクセルを無視します。

例:128

左右方向のランダムな反転。逻辑スカラ,として指定します。RandXReflection真正的150%。RandXReflection0)の場合,@ @メ,@ @ジは反転しません。

上下方向のランダムな反転。逻辑スカラ,として指定します。RandYReflection真正的150%。RandYReflection0)の場合,@ @メ,@ @ジは反転しません。

入力メジに適用される回転の範囲(度単位)。次のいずれかに指定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。回転角度は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、回転角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して回転角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張。

例:45 [-45]

入力メジに適用される一様(等方性)スケリングの範囲。次のいずれかに指定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。スケ,ル係数は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、スケール係数を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用してスケール係数を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張メジはスケリングされません。

例:(0.5 - 4)

入力メジに適用される水平方向のスケリングの範囲。次のいずれかに指定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。水平方向のスケ,ル係数は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、水平方向のスケール係数を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して水平方向のスケール係数を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張メジは水平方向にスケリングされません。

メモ

RandScaleを指定すると,imageDataAugmenterRandXScaleの値を無視します。

例:(0.5 - 4)

入力メジに適用される垂直方向のスケリングの範囲。次のいずれかに指定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。垂直方向のスケ,ル係数は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、垂直方向のスケール係数を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して垂直方向のスケール係数を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張メジは垂直方向にスケリングされません。

メモ

RandScaleを指定すると,imageDataAugmenterRandYScaleの値を無視します。

例:(0.5 - 4)

入力▪▪メ▪▪ジに適用される水平方向のせん断の範囲。次のいずれかに指定します。せん断は角度として度単位で測定され,範囲は(- 90,90)になります。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。水平方向のせん断角度は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、水平方向のせん断角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して水平方向のせん断角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張。

例:45 [0]

入力▪▪メ▪▪ジに適用される垂直方向のせん断の範囲。次のいずれかに指定します。せん断は角度として度単位で測定され,範囲は(- 90,90)になります。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。垂直方向のせん断角度は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、垂直方向のせん断角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して垂直方向のせん断角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張。

例:45 [0]

入力▪▪メ▪▪ジに適用される水平方向の平行移動の範囲。次のいずれかに指定します。平行移動距離はピクセル単位で測定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。水平方向の平行移動距離は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、水平方向の平行移動距離を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して水平方向の平行移動距離を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張。

例:5 [5]

入力▪▪メ▪▪ジに適用される垂直方向の平行移動の範囲。次のいずれかに指定します。平行移動距離はピクセル単位で測定します。

  • 2要素の数値ベクトル。2番目の要素は最初の要素以上でなければなりません。垂直方向の平行移動距離は,指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、垂直方向の平行移動距離を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して垂直方向の平行移動距離を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では,拡張。

例:5 [5]

オブジェクト関数

增加 複数の▪▪メ▪▪ジに対する同一のランダム変換の適用

すべて折りたたむ

学習前にメジを前処理するを作成します。このオーグメンターは,範囲[0,360]度のランダムな角度でイメージを回転させ,範囲[0.5,1]のランダムなスケール係数でイメージのサイズを変更します。

augmenter = imageDataAugmenter(...“RandRotation”360年[0],...“RandScale”(0.5 - 1))
augmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [0 360] RandScale: [0.5000 1] RandXScale: [1 1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [0 0] RandYTranslation: [0 0]

タストアを作成します。拡張イメージデータストアには,標本データ,ラベル,および出力イメージサイズも必要です。

[XTrain,YTrain] = digitTrain4DArrayData;imageSize = [56 56 1];auimds = augmentedimagedastore (imageSize,XTrain,YTrain,“DataAugmentation”增量)
auimds = augmentedImageDatastore with properties: NumObservations: 5000 MiniBatchSize: 128 DataAugmentation: [1x1 imageDataAugmenter] color预处理:'none' OutputSize: [56 56] OutputSizeMode: 'resize' DispatchInBackground: 0

Minibatch =预览(auimds);imshow (imtile (minibatch.input));

图中包含一个轴对象。axis对象包含一个image类型的对象。

同じメジセットに適用された別のランダム変換をプレビュします。

Minibatch =预览(auimds);imshow (imtile (minibatch.input));

图中包含一个轴对象。axis对象包含一个image类型的对象。

拡張メジデタを使用して,畳み込みニュラルネットワクに学習させます。データ拡張は,ネットワークで過適合が発生したり,学習イメージの正確な詳細が記憶されたりすることを防止するのに役立ちます。

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

[XTrain,YTrain] = digitTrain4DArrayData;

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

  • 28はメジの高さと幅。

  • 1はチャネルの数。

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

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

ネットワクの検証用に1000個のメジを残しておきます。

idx = randperm(size(XTrain,4),1000);XValidation = XTrain(:,:,:,idx);XTrain(:,:,:,idx) = [];YValidation = YTrain(idx);YTrain(idx) = [];

サズ変更,回転,平行移動,反転など,メジ拡張の前処理オプションを指定するimageDataAugmenterオブジェクトを作成します。イメージを,水平方向および垂直方向に最大3ピクセルまでのランダムな平行移動をさせたり,最大20度までの回転をさせたりします。

imageAugmenter = imageDataAugmenter(...“RandRotation”(-20年,20),...“RandXTranslation”3 [3],...“RandYTranslation”3 [3])
imageAugmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]

ネットワ,ク学習に使用するaugmentedImageDatastoreオブジェクトを作成し,。学習中,デ:ズ変更を行います。デ,タストアは;trainNetworkは,ネットワクパラメタを更新した後,その拡張メジを破棄します。

imageSize = [28 28 1];augimds = augmentedimagedastore (imageSize,XTrain,YTrain,“DataAugmentation”, imageAugmenter);

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

图层= [imageInputLayer(imageSize)卷积2dlayer (3,8,“填充”“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”“相同”batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

opts = trainingOptions(“个”...“MaxEpochs”15岁的...“洗牌”“every-epoch”...“阴谋”“训练进步”...“详细”假的,...“ValidationData”, {XValidation, YValidation});

ネットワ,クに学習をさせます。検証。

net = trainNetwork(augimds,layers,opts);

ヒント

  • サンプルメジに適用された変換をプレビュするには,関数增加を使用します。

  • 学習中にメジ拡張を実行するには,augmentedImageDatastoreを作成し,名前と値のペア“DataAugmentation”imageDataAugmenterを使用して前処理オプションを指定します。拡張メジデタストアは学習デタにランダム変換を自動的に適用します。

バ,ジョン履歴

R2017bで導入