このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ネットワークに学習させ,新しいデータについて予測するには,イメージがネットワークの入力サイズに一致しなければなりません。ネットワークに一致するようにイメージのサイズを調整する必要がある場合,データの再スケーリングまたはトリミングを行って必要なサイズにすることができます。
ランダム化された"拡張"をデータに適用して,実質的に学習データの量を増やすことができます。拡張では,イメージデータの歪みに対して不変になるようにネットワークに学習させることもできます。たとえば,入力イメージに存在する回転に対してネットワークが不変になるように,入力イメージにランダムな回転を追加できます。augmentedImageDatastore
は,分類問題用の2次元イメージに限られた拡張を適用する便利な方法を提供します。
回帰問題用のイメージの前処理,3次元ボリュームイメージの処理など,より高度な前処理演算の場合,組み込みデータストアで開始することができます。関数变换
および结合
を使用して,独自のパイプラインに従ってイメージの前処理を行うこともできます。
イメージデータは,数値配列,ImageDatastore
オブジェクト,または表として格納できます。ImageDatastore
を使用すると,大きすぎてメモリに収まらないイメージコレクションからデータをバッチ単位でインポートできます。拡張イメージデータストアまたはサイズを変更した4次元配列は学習,予測,および分類に使用できます。サイズを変更した3次元配列は予測および分類にのみ使用できます。
ネットワークの入力サイズに一致するようにイメージデータのサイズを変更する方法は2つあります。
再スケーリングでは,イメージの高さと幅に倍率が掛けられます。倍率が垂直方向と水平方向で同一ではない場合,再スケーリングによってピクセルの空間範囲と縦横比が変更されます。
トリミングでは,イメージの部分領域が抽出され,各ピクセルの空間範囲が保持されます。イメージは,中心から,またはイメージのランダムな位置からトリミングできます。
サイズ変更オプション | データ形式 | サイズ変更関数 | サンプルコード |
---|---|---|---|
再スケーリング |
|
imresize |
我= imresize(我outputSize);
|
|
augmentedImageDatastore |
auimds = augmentedImageDatastore (outputSize,我);
|
|
トリミング |
|
imcrop (图像处理工具箱) |
我= imcrop(我、矩形);
|
|
imcrop3 (图像处理工具箱) |
我= imcrop3(我、长方体);
|
|
|
augmentedImageDatastore |
auimds = augmentedImageDatastore (outputSize,我,“OutputSizeMode”, m);
入力イメージの中心からトリミングするには 入力イメージのランダムな位置からトリミングするには |
イメージ分類問題の場合,augmentedImageDatastore
を使用して,サイズ変更,回転,反転,せん断,および平行移動のランダムな組み合わせでイメージを拡張できます。
図は,trainNetwork
がどのように拡張イメージデータストアを使用して各エポックの学習データを変換するかを示しています。データ拡張を使用する場合,各イメージについてランダムに拡張された1つのイメージが,学習の各エポックで使用されます。ワークフローの例については,拡張イメージを使用したネットワークの学習を参照してください。
学習イメージを指定します。
imageDataAugmenter
を作成して,反転をランダムに適用するかどうかや回転角度の範囲などのイメージ変換オプションを構成します。
ヒント
サンプルイメージに適用された変換をプレビューするには,関数增加
を使用します。
augmentedImageDatastore
を作成します。学習イメージ,出力イメージのサイズ,およびimageDataAugmenter
を指定します。出力イメージのサイズは,ネットワークのimageInputLayer
のサイズに適合しなければなりません。
拡張イメージデータストアをtrainNetwork
のデータソースとして指定してネットワークに学習させます。学習の反復ごとに,拡張イメージデータストアは変換のランダムな組み合わせを学習データのミニバッチのイメージに適用します。
拡張イメージデータストアを学習イメージのソースとして使用する場合,データストアによって各エポックの学習データにランダムに摂動が与えられるため,エポックごとにわずかに異なるデータセットが使用されます。各エポックの学習イメージの実際の数は変化しません。変換後のイメージはメモリに格納されません。
一部のデータストアは,データのバッチを読み取る際に特定の限られたイメージ前処理演算を実行します。これらのアプリケーション固有のデータストアを次の表に示します。これらのデータストアは,深度学习工具箱™を使用する深層学習アプリケーションの学習データセット,検証データセット,およびテストデータセットのソースとして使用できます。これらのデータストアはすべて,trainNetwork
でサポートされている形式でデータを返します。
データストア | 説明 |
---|---|
augmentedImageDatastore |
深層ニューラルネットワークに学習させるために,サイズ変更,回転,反転,せん断,平行移動を含む,ランダムなアフィン幾何変換を適用します。例については,事前学習済みのネットワークを使用した転移学習を参照してください。 |
pixelLabelImageDatastore (计算机视觉工具箱) |
セマンティックセグメンテーションネットワークに学習させるために,イメージおよび対応するグラウンドトゥルースラベルに対して,同一のアフィン幾何変換を適用します(计算机视觉工具箱™が必要)。例については,深層学習を使用したセマンティックセグメンテーションを参照してください。 |
randomPatchExtractionDatastore (图像处理工具箱) |
イメージまたはピクセルラベルイメージからランダムパッチの複数のペアを抽出します(图像处理工具箱™が必要)。オプションで,同一のランダムなアフィン幾何変換をパッチのペアに適用できます。例については,深層学習を使用した単一イメージ超解像処理を参照してください。 |
denoisingImageDatastore (图像处理工具箱) |
ノイズ除去ネットワークに学習させるために,ランダムに生成されたガウスノイズを適用します(图像处理工具箱が必要)。 |
アプリケーション固有のデータストアが提供するイメージ前処理演算より一般的で複雑なイメージ前処理演算を実行するには,関数变换
および结合
を使用できます。詳細については,深層学習用のデータストアを参照してください。
関数变换
は,定義した変換関数に従い,基になるデータストアによって読み取られたデータを変換することで,“基になるデータストア”と呼ばれるデータストアの変更された形式を作成します。
カスタム変換関数は,基になるデータストアの関数读
によって返される形式のデータを受け入れなければなりません。ImageDatastore
内のイメージデータの場合,形式はReadSize
プロパティによって異なります。
ReadSize
が1の場合,変換関数は整数配列を受け入れなければなりません。配列のサイズは,ImageDatastore
のイメージのタイプと整合性があります。たとえば,グレースケールイメージの次元はm x n,トゥルーカラーイメージの次元はm x n x 3 c個のチャネルがあるマルチスペクトルイメージの次元はm x n cです。
ReadSize
が1より大きい場合,変換関数はイメージデータの细胞配列を受け入れなければなりません。各要素はバッチのイメージに対応します。
関数变换
は,ネットワークの入力サイズに一致するデータを返さなければなりません。関数变换
は一対多の観測値マッピングをサポートしていません。
ヒント
関数变换
は,基になるImageDatastore
がJPGまたはPNGイメージファイルのバッチを読み取る際に事前取得をサポートします。これらのイメージタイプの場合,ImageDatastore
の引数readFcn
を使用してイメージ前処理を適用しないでください。このオプションでは通常,速度が大幅に低下するためです。カスタム読み取り関数を使用する場合,ImageDatastore
は事前取得を行いません。
関数结合
は,複数のデータストアから読み取られたデータを連結して,データストア間のパリティを維持します。
データを2列の表または2列の细胞配列に連結して,image-to-image回帰ネットワークなど,単一の入力があるネットワークの学習に使用します。
データを(numInputs
+ 1)列の细胞配列に連結して,複数の入力があるネットワークの学習に使用します。
trainNetwork
|imresize
|变换
|结合
|ImageDatastore