深層学習用イメージ前処理とイメージ拡張の入門
データの前処理は、目的のデータの特徴を正規化または強調する一連の確定的な演算で構成されます。たとえば、固定された範囲にデータを正規化したり、ネットワーク入力層に必要なサイズにデータをサイズ変更したりできます。前処理は、学習、検証、テストのデータに使用されます。
深層学習のワークフローでは、前処理は 2 つの段階で発生することがあります。
通常、前処理は、ネットワークに渡されるデータを準備する前に完了する個別の手順として発生します。元のデータを読み込み、前処理演算を適用して、結果をディスクに保存します。この方法の利点は、前処理のオーバーヘッドが必要になるのは 1 回のみで、その後ネットワークの学習を試行する際には前処理されたイメージが開始点として既に用意されていることです。
データをデータストアに読み込むと、関数
transform
および関数combine
を使用して、学習中に前処理を適用することもできます。詳細については、深層学習用のデータストア (Deep Learning Toolbox)を参照してください。変換後のイメージはメモリに格納されません。この方法は、前処理演算に大量の計算が必要ではなく、ネットワークの学習速度に顕著な影響を与えない場合に、学習データの 2 つ目のコピーをディスクに書き込むことを回避するのに便利です。
一般的なイメージ前処理演算には、ノイズ除去、エッジ保存平滑化、色空間変換、コントラスト強調、モルフォロジーなどがあります。これらの変換を作成および適用する方法を説明する例については、深層学習ワークフローのためのイメージの拡張を参照してください。
データ拡張は、ネットワークの学習中に学習データに適用されるランダム化された演算で構成されます。
拡張されたイメージ データは、イメージの取得時のばらつきをシミュレーションできます。よく使用される種類のイメージ拡張演算は、シーンに対するカメラの向きのばらつきをシミュレーションする、回転や平行移動などのランダムな幾何学的変換です。ランダムなトリミングは、シーン構成内のばらつきをシミュレーションします。人工的なノイズは、イメージの取得時、またはアップストリームのデータ処理演算時に生じる歪みをシミュレーションします。拡張を行うと、学習データの実質的な量が増加し、ネットワークをデータの一般的なばらつきや歪みに対して不変にするのに役立ちます。
学習データを拡張するには、まずデータをデータストアに読み込みます。詳細については、深層学習用のデータストア (Deep Learning Toolbox)を参照してください。いくつかの組み込みデータストアは、特定の用途の場合に特定の限られた拡張をデータに適用します。関数 transform
および関数 combine
を使用して、データストア内のデータに対して独自の拡張演算を適用することもできます。学習中、データストアによって各エポックの学習データにランダムに摂動が与えられるため、エポックごとにわずかに異なるデータセットが使用されます。
以下の表は、深層学習用途のイメージ データによく適用される前処理演算および拡張演算の種類を示しています。
前処理のタイプ | 説明 | 関数のサンプル | 出力のサンプル |
---|---|---|---|
イメージのサイズ変更 | 固定の倍率、または目標のサイズにイメージのサイズを変更する | | |
イメージのワープ | ランダムな反転、回転、スケール、せん断、および平行移動をイメージに適用する | | |
イメージのトリミング | 中心またはランダムな位置からイメージを目標のサイズにトリミングする | | |
ノイズのシミュレーション | ランダムなガウス ノイズ、ポアソン ノイズ、ごま塩ノイズ、または乗法性ノイズを追加する | | |
ブレのシミュレーション | ガウス ノイズまたは指向性運動によるブレを追加する | | |
色のジッター | イメージの色相、彩度、明度、またはコントラストをランダムに調整する | | |
ジッターの強度 | 明度、コントラスト、またはガンマ補正をランダムに調整する |
| |
関連する例
詳細
- 深層学習用のデータストア (Deep Learning Toolbox)
- ファイル形式またはアプリケーション用のデータ ストアの選択