ノイズ除去ニューラル ネットワークの学習と適用
Image Processing Toolbox™ と Deep Learning Toolbox™ には、イメージからノイズを除去する多数のオプションがあります。最も簡潔で高速なソリューションは、DnCNN と呼ばれる、組み込みの事前学習済みノイズ除去ニューラル ネットワークを使用することです。しかし、事前学習済みのネットワークでは認識されたノイズの種類に対して柔軟性がありません。高い柔軟性を得るために、事前定義されたレイヤーを使用して自前のネットワークを学習させるか、あるいはフル カスタマイズしたノイズ除去ニューラル ネットワークを学習させます。
事前学習済みのネットワークを使用したガウス ノイズの除去
組み込みの事前学習済み DnCNN ネットワークを使用して、ネットワークを学習させる課題もなくガウス ノイズを除去できます。事前学習済みネットワークを使用するノイズ除去には次の制限があります。
ノイズ除去は 2 次元のシングル チャネル イメージでしか動作しません。カラー チャネルが複数ある場合、あるいは 3 次元イメージを使用している場合、チャネルまたは平面ごとにノイズを除去します。例については、事前学習済みのニューラル ネットワークを使用した、カラー イメージからのノイズ除去を参照してください。
ネットワークはガウス ノイズのみ認識し、標準偏差の範囲も制限されます。
事前学習済み DnCNN ネットワークを読み込むには、関数 denoisingNetwork を使用します。その後、関数 denoiseImage に DnCNN ネットワークとノイズの多い 2 次元シングル チャネル イメージを渡します。図は、事前学習済み DnCNN ネットワークを使用してイメージのノイズを除去するワークフローを示しています。

組み込みレイヤーによるノイズ除去ネットワークの学習
グレースケール イメージから広範囲のガウス ノイズ標準偏差を検出するように、ネットワークに学習させることができます。Image Processing Toolbox が提供する、組み込み済みの層を使用して学習を開始します。事前定義された層を使用してノイズ除去ネットワークに学習させるには、以下の手順に従います。図のダーク グレーのボックスは、学習のワークフローを示しています。
初期状態のイメージを格納する
ImageDatastoreオブジェクトを作成します。初期状態のイメージから、ノイズを含む学習データを生成する
denoisingImageDatastoreオブジェクトを作成します。ガウス ノイズ標準偏差の範囲を指定するには、GaussianNoiseLevelプロパティを設定します。PatchSize(50) およびChannelFormat("grayscale") の既定値を使用して、学習データのサイズがネットワークの入力サイズと一致するようにしなければなりません。関数
dnCNNLayersを使用して事前定義済みノイズ除去層を取得します。関数
trainingOptions(Deep Learning Toolbox) を使用して学習オプションを定義します。trainnet(Deep Learning Toolbox) 関数を使用してネットワークに学習させます。ノイズ除去イメージ データストアをデータ ソースとして指定し、平均二乗誤差損失を使用します。学習の反復ごとに、ノイズ除去イメージ データストアは、ImageDatastoreの初期状態のイメージを無作為にトリミングし、無作為に生成されたゼロ平均のガウス ホワイト ノイズを各イメージ パッチに追加して、学習データのミニバッチを 1 つ生成します。追加したノイズの標準偏差は各イメージ パッチで一意であり、値はノイズ除去イメージ データストアのGaussianNoiseLevelプロパティで指定した範囲内になります。
ネットワークを学習させた後、関数 denoiseImage にネットワークとノイズの多いグレースケール イメージを渡します。図のライト グレーのボックスは、ノイズ除去のワークフローを示しています。

フル カスタマイズ ノイズ除去ニューラル ネットワークの学習
ノイズ除去ニューラル ネットワークを最大限柔軟に学習させるには、カスタム データストアを使用して学習データを生成するか、独自のネットワーク アーキテクチャを定義します。たとえば、以下の目的を達成するようにネットワークに学習させることができます。
| 目的 | 方法 |
|---|---|
| 非ガウス ノイズ分布など、グレースケール イメージ内のより多様なノイズを除去する |
|
| カラー イメージ内の相関ガウス ノイズを除去する | RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。 |
| カラー イメージから多様なノイズを除去する | RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。ノイズを含むイメージと対応するノイズ信号のバッチに対して |
ノイズ除去ネットワークに学習させた後、denoiseImage 関数を使用してイメージ ノイズを除去できます。
メモ
DnCNN ネットワークは、その他の種類の歪みによって生じる高周波数イメージ アーティファクトも検出できます。たとえば、イメージの解像度を高めたり、JPEG 圧縮アーティファクトを取り除いたりするために、DnCNN ネットワークに学習させることができます。深層学習を使用した JPEG イメージのデブロックの例では、DnCNN ネットワークに学習させて、JPEG 圧縮アーティファクトを取り除く方法を説明しています。
参考
denoisingImageDatastore | dnCNNLayers | denoisingNetwork | trainingOptions (Deep Learning Toolbox) | trainnet (Deep Learning Toolbox) | denoiseImage | minibatchpredict (Deep Learning Toolbox) | combine | transform
トピック
- 事前学習済みのニューラル ネットワークを使用した、カラー イメージからのノイズ除去
- 深層学習を使用した JPEG イメージのデブロック
- image-to-image 回帰用のデータストアの準備 (Deep Learning Toolbox)
- イメージの深層学習向け前処理 (Deep Learning Toolbox)
- MATLAB による深層学習 (Deep Learning Toolbox)