Main Content

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

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

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) を使用して学習オプションを定義します。

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

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

The denoiseImage function removes noise from a grayscale image using a denoising network that you train.

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

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

  • 非ガウス ノイズ分布など、シングル チャネル イメージ内のより多様なノイズを検出するネットワークを学習させます。関数 dnCNNLayers によって返される層を使用して、ネットワーク アーキテクチャを定義できます。このネットワークと互換性がある学習イメージを生成するには、ノイズを含むイメージのバッチと対応するノイズ信号に対して関数 transform および combine を使用します。詳細については、イメージの深層学習向け前処理 (Deep Learning Toolbox)を参照してください。

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

    ヒント

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

  • カラー イメージのガウス ノイズ分布の範囲を検出するネットワークを学習させます。このネットワークの学習イメージを生成するには、denoisingImageDatastore を使用して、ChannelFormat プロパティを 'rgb' に設定できます。RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。

    カスタム ネットワーク アーキテクチャを使用してノイズ除去ネットワークに学習させた後、関数 activations (Deep Learning Toolbox) を使用して歪みのあるイメージのノイズまたは高周波数アーティファクトを分離できます。その後、歪みのあるイメージからノイズを除去してノイズ除去後のイメージを取得します。

参考

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

関連する例

詳細