このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ノイズ除去ニューラル ネットワークの学習と適用
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) を使用して学習オプションを定義します。ノイズ除去イメージ データストアを
trainNetwork
(Deep Learning Toolbox) のデータ ソースとして指定してネットワークに学習させます。学習の反復ごとに、ノイズ除去イメージ データストアは、ImageDatastore
の初期状態のイメージを無作為にトリミングし、無作為に生成されたゼロ平均のガウス ホワイト ノイズを各イメージ パッチに追加して、学習データのミニバッチを 1 つ生成します。追加したノイズの標準偏差は各イメージ パッチで一意であり、値はノイズ除去イメージ データストアのGaussianNoiseLevel
プロパティで指定した範囲内になります。
ネットワークを学習させた後、関数 denoiseImage
にネットワークとノイズの多いグレースケール イメージを渡します。図のライト グレーのボックスは、ノイズ除去のワークフローを示しています。
フル カスタマイズ ノイズ除去ニューラル ネットワークの学習
ノイズ除去ニューラル ネットワークを最大限柔軟に学習させるには、カスタム データストアを使用して学習データを生成するか、独自のネットワーク アーキテクチャを定義します。たとえば、以下を行うことができます。
非ガウス ノイズ分布など、シングル チャネル イメージ内のより多様なノイズを検出するネットワークを学習させます。関数
dnCNNLayers
によって返される層を使用して、ネットワーク アーキテクチャを定義できます。このネットワークと互換性がある学習イメージを生成するには、ノイズを含むイメージのバッチと対応するノイズ信号に対して関数transform
およびcombine
を使用します。詳細については、イメージの深層学習向け前処理 (Deep Learning Toolbox)を参照してください。DnCNN ネットワーク アーキテクチャを使用してノイズ除去ネットワークに学習させた後、関数
denoiseImage
を使用してイメージ ノイズを削除できます。ヒント
DnCNN ネットワークは、その他の種類の歪みによって生じる高周波数イメージ アーティファクトも検出できます。たとえば、イメージの解像度を高めたり、JPEG 圧縮アーティファクトを取り除いたりするために、DnCNN ネットワークに学習させることができます。深層学習を使用した JPEG イメージのデブロックの例では、DnCNN ネットワークに学習させて、JPEG 圧縮アーティファクトを取り除く方法を説明しています。
カラー イメージのガウス ノイズ分布の範囲を検出するネットワークを学習させます。このネットワークの学習イメージを生成するには、
denoisingImageDatastore
を使用して、ChannelFormat
プロパティを'rgb'
に設定できます。RGB 入力イメージをサポートするカスタム畳み込みニューラル ネットワーク アーキテクチャを定義しなければなりません。カスタム ネットワーク アーキテクチャを使用してノイズ除去ネットワークに学習させた後、関数
activations
(Deep Learning Toolbox) を使用して歪みのあるイメージのノイズまたは高周波数アーティファクトを分離できます。その後、歪みのあるイメージからノイズを除去してノイズ除去後のイメージを取得します。
参考
denoisingImageDatastore
| dnCNNLayers
| denoisingNetwork
| trainingOptions
(Deep Learning Toolbox) | trainNetwork
(Deep Learning Toolbox) | denoiseImage
| activations
(Deep Learning Toolbox) | combine
| transform
関連する例
- 事前学習済みのニューラル ネットワークを使用した、カラー イメージからのノイズ除去
- 深層学習を使用した JPEG イメージのデブロック
- image-to-image 回帰用のデータストアの準備 (Deep Learning Toolbox)
詳細
- イメージの深層学習向け前処理 (Deep Learning Toolbox)
- MATLAB による深層学習 (Deep Learning Toolbox)