メインコンテンツ

ノイズ除去ニューラル ネットワークの学習と適用

Image Processing Toolbox™ と Deep Learning Toolbox™ には、イメージからノイズを除去する多数のオプションがあります。最も簡潔で高速なソリューションは、DnCNN と呼ばれる、組み込みの事前学習済みノイズ除去ニューラル ネットワークを使用することです。しかし、事前学習済みのネットワークでは認識されたノイズの種類に対して柔軟性がありません。高い柔軟性を得るために、事前定義されたレイヤーを使用して自前のネットワークを学習させるか、あるいはフル カスタマイズしたノイズ除去ニューラル ネットワークを学習させます。

事前学習済みのネットワークを使用したガウス ノイズの除去

組み込みの事前学習済み DnCNN ネットワークを使用して、ネットワークを学習させる課題もなくガウス ノイズを除去できます。事前学習済みネットワークを使用するノイズ除去には次の制限があります。

事前学習済み DnCNN ネットワークを読み込むには、関数 denoisingNetwork を使用します。その後、関数 denoiseImage に DnCNN ネットワークとノイズの多い 2 次元シングル チャネル イメージを渡します。図は、事前学習済み DnCNN ネットワークを使用してイメージのノイズを除去するワークフローを示しています。

The denoiseImage function removes noise from a grayscale image using a pretrained denoising network.

組み込みレイヤーによるノイズ除去ネットワークの学習

グレースケール イメージから広範囲のガウス ノイズ標準偏差を検出するように、ネットワークに学習させることができます。Image Processing Toolbox が提供する、組み込み済みの層を使用して学習を開始します。事前定義された層を使用してノイズ除去ネットワークに学習させるには、以下の手順に従います。図のダーク グレーのボックスは、学習のワークフローを示しています。

  • 初期状態のイメージを格納する ImageDatastore オブジェクトを作成します。

  • 初期状態のイメージから、ノイズを含む学習データを生成する denoisingImageDatastore オブジェクトを作成します。ガウス ノイズ標準偏差の範囲を指定するには、GaussianNoiseLevel プロパティを設定します。PatchSize (50) および ChannelFormat ("grayscale") の既定値を使用して、学習データのサイズがネットワークの入力サイズと一致するようにしなければなりません。

  • 関数 dnCNNLayers を使用して事前定義済みノイズ除去層を取得します。

  • 関数 trainingOptions (Deep Learning Toolbox) を使用して学習オプションを定義します。

  • trainnet (Deep Learning Toolbox) 関数を使用してネットワークに学習させます。ノイズ除去イメージ データストアをデータ ソースとして指定し、平均二乗誤差損失を使用します。学習の反復ごとに、ノイズ除去イメージ データストアは、ImageDatastore の初期状態のイメージを無作為にトリミングし、無作為に生成されたゼロ平均のガウス ホワイト ノイズを各イメージ パッチに追加して、学習データのミニバッチを 1 つ生成します。追加したノイズの標準偏差は各イメージ パッチで一意であり、値はノイズ除去イメージ データストアの GaussianNoiseLevel プロパティで指定した範囲内になります。

ネットワークを学習させた後、関数 denoiseImage にネットワークとノイズの多いグレースケール イメージを渡します。図のライト グレーのボックスは、ノイズ除去のワークフローを示しています。

The dnCNNLayers function creates layers that you use to train denoising network with the trainnet function.

フル カスタマイズ ノイズ除去ニューラル ネットワークの学習

ノイズ除去ニューラル ネットワークを最大限柔軟に学習させるには、カスタム データストアを使用して学習データを生成するか、独自のネットワーク アーキテクチャを定義します。たとえば、以下の目的を達成するようにネットワークに学習させることができます。

目的方法
非ガウス ノイズ分布など、グレースケール イメージ内のより多様なノイズを除去する

dnCNNLayers 関数によって返される層を使用して、ネットワーク アーキテクチャを定義します。ノイズを含むイメージと対応するノイズ信号のペアに対して transform 関数と combine 関数を使用し、このネットワークと互換性のある学習イメージを生成します。詳細については、イメージの深層学習向け前処理 (Deep Learning Toolbox)を参照してください。

カラー イメージ内の相関ガウス ノイズを除去する

RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。denoisingImageDatastore を使用してこのネットワークの学習イメージを生成し、ChannelFormat プロパティを "rgb" に設定します。

カラー イメージから多様なノイズを除去する

RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。ノイズを含むイメージと対応するノイズ信号のバッチに対して transform 関数と combine 関数を使用し、このネットワークと互換性のある学習イメージを生成します。

ノイズ除去ネットワークに学習させた後、denoiseImage 関数を使用してイメージ ノイズを除去できます。

メモ

DnCNN ネットワークは、その他の種類の歪みによって生じる高周波数イメージ アーティファクトも検出できます。たとえば、イメージの解像度を高めたり、JPEG 圧縮アーティファクトを取り除いたりするために、DnCNN ネットワークに学習させることができます。深層学習を使用した JPEG イメージのデブロックの例では、DnCNN ネットワークに学習させて、JPEG 圧縮アーティファクトを取り除く方法を説明しています。

参考

| | | (Deep Learning Toolbox) | (Deep Learning Toolbox) | | (Deep Learning Toolbox) | |

トピック