kou6839’s blog

c++ 競プロ(特にcsacademy) linuxについて書きます。普段は自動車屋さんでナビ開発してます。転職しました!!!!

Image denoising: Can plain Neural Networks compete with BM3D?

2012年の論文です。

DeepLによる翻訳
http://webdav.is.mpg.de/pixel/files/neural_denoising/paper.pdf

Abstract
画像のノイズ除去は、ノイズの多い画像からノイズのない画像へのマッピングの問題として説明することができます。現在利用可能な最良のデノイジング手法は、巧妙に設計されたアルゴリズムマッピングを近似しています。本研究では、このマッピングを画像パッチに適用したプレーンマルチレイヤーパーセプトロン(MLP)を用いて直接学習することを試みる。さらに、我々の手法は、あまり詳しく研究されていないタイプのノイズにも容易に適応でき、(学習データを交換するだけで)優れた結果を得ることができます。

1. Introduction
画像のノイズ除去手順は、ノイズの多い画像を入力とし、ノイズが低減された画像を出力する。数多くの多様なアプローチが存在します。ノイズの多い画像の一部を選択的に平滑化するものもあれば [25, 26]、ウェーブレット係数を慎重に縮小するものもあります [24, 26]。他には,ウェーブレット係数の慎重な縮小に依存する方法もある [24, 18].概念的に類似したアプローチは、学習辞書[1, 4]の要素の疎な線形組み合わせを用いて、ノイズの多いパッチを近似しようとすることで、画像パッチをノイズ除去することである。辞書の学習は、ノイズのないデータセットでの学習によって達成されることもあります。他の方法では、例えば [20, 27, 9] のように、ノイズフリーのデータセット上でグローバル画像優先度を学習することもあります。最近のアプローチでは、画像の「非局所的」な統計量を利用しています。この最後のクラスのアルゴリズムと、特にBM3D [3]は、自然画像のノイズ除去における現在の最先端を表しています。
BM3Dはよくできたアルゴリズムですが、ノイズのあるパッチとノイズのないパッチのペアからなる訓練例から画像のノイズ除去手順を純粋に自動学習することはできないのでしょうか?この論文では、ノイズのあるパッチをノイズのないパッチにマッピングするプレーンマルチレイヤーパーセプトロン(MLP)を用いて、最先端のノイズ除去性能を達成することが可能であることを示します。
これは、以下の要因が重なっているからこそ可能なのです。

  • MLPの容量は十分に大きく、十分に多くの隠蔽ユニットを持つ隠蔽層で構成されていることが選ばれている。
  • パッチサイズは十分に大きく、すなわち、パッチはノイズのないバージョンを復元するのに十分な情報を含んでいます。これは以前の知見[12]と一致しています。
  • 選ばれた学習セットは十分に大きい。訓練例は、ノイズのないパッチをノイズで破壊することにより、オンザフライで生成されます。

大規模なトレーニングセットを用いた大容量MLPのトレーニングは、最新のGPU(Graphics Processing Unit)を用いて実現可能です。

Contributions:
本研究では、プレーンニューラルネットワークを用いて大規模データセット上で学習されたパッチベースのノイズ除去アルゴリズムを紹介する。加法ホワイトガウシアン(AWG)ノイズに対する結果は、現在の技術水準に匹敵するものであった。このアプローチは、AWGノイズほど広く研究されていない他のタイプのノイズに対しても同様に有効である。

2. Related work
ニューラルネットワークはすでに画像のノイズ除去に利用されている[9]。一般的に使用されているネットワークは、畳み込みニューラルネットワーク(CNN)[10]と呼ばれる特殊なタイプのもので、手書きの数字や交通標識の認識など様々なタスクに有効であることが示されています[23]。これにより、通常の多層パーセプトロンに比べてパラメータの数を減らしつつ、良好な結果を得ることができる。これは学習データ量が少ない場合に有効である。一方、多層パーセプトロンはCNNよりも強力な性能を持つ可能性がある。MLPは普遍的な関数近似器[8]と考えることができるが,CNNは学習可能な関数のクラスを制限している.
19]では、画像パッチのノイズ除去のために、特殊なアーキテクチャ(すなわち、スパース化ロジスティックを含む)を持つ別の種類のニューラルネットワークが使用されている。小さな訓練セットが使用されている。強いレベルのノイズに対して結果が報告されている。また、ウェーブレット係数に多層パーセプトロンを適用して画像のノイズ除去を行う試みも行われている[28]。ウェーブレットベースの使用は、画像に関する事前知識を組み込む試みと見ることができます。
Differences to this work:
これまで述べてきた手法の多くは,自然画像を前提としている.そのような仮定を明示的に課すのではなく,むしろ純粋な学習アプローチを提案する.

3. Multi layer perceptrons (MLPs)
多層パーセプトロン(MLP)は非線形関数であり、複数の隠れ層を介してベクトル値の入力をベクトル値の出力に写像する。例えば、2つの隠れ層を持つMLPは次のように書くことができます。
f:id:kou6839:20200527211536p:plain
重み行列W1,W2,W3とベクトル値バイアスb1,b2,b3がMLPをパラメータ化し、関数tanhコンポーネント単位で動作します。MLPアーキテクチャは、隠れ層の数と層のサイズによって定義されます。例えば、(256,2000,1000,10)MLPは2つの隠れ層を持ち、入力層は256次元、すなわちx∈<256である。入力層は256次元、すなわちx∈<256であり、第1の隠れ層のベクトルv1 = tanh(b1 + W1x)は2000次元、第2の隠れ層のベクトルv2 = tanh(b2 + W2v1)は1000次元、出力層のベクトルf(x)は10次元である。一般的にMLPフィードフォワードニューラルネットワークとも呼ばれる。

3.1. Training MLPs for image denoising
このアイデアは、ノイズの多い画像パッチを、ノイズが低減または除去されたクリーンな画像パッチにマッピングするMLPを学習することである[11]。MLPのパラメータは、stochastic gradient descent [11]を用いて、ノイズの多い画像パッチとクリーンな画像パッチのペアを学習することで推定されます。MLPパラメータは、マップされたノイズパッチf(x)とクリーンパッチyの間の二次誤差を最小化するバックプロパゲーションアルゴリズム[21]によって更新されます。
1. データの正規化。ピクセル値は、ほぼ平均が0で分散が1に近い値に変換されます。より正確には、画素値が0と1の間にあると仮定して、0.5を引き、0.2で割る。
2. 重みの初期化。重みは平均0、標準偏差σ=√Nの正規分布からサンプリングされます。最初のトリックと組み合わせることで、シグモイド関数の線形部分と非線形部分の両方に到達することを保証します。
3. 学習率の分割。各レイヤでは、学習率をそのレイヤの入力ユニット数であるNで割る。これにより,学習率を変更することなく,隠れユニットの数を変更することができる.
基本学習率は0.1とし,重みには正則化を施していない.

3.2. Applying MLPs for image denoising
画像をノイズ除去するには、与えられたノイズの多い画像を重ね合わせたパッチに分解し、各パッチxを個別にノイズ除去します。非ノイズ化された画像は、非ノイズ化されたパッチf(x)をノイズの多い対応するパッチの位置に配置し、重なり合った領域で平均化することで得られます。デノイズされたパッチにガウス窓で重み付けをすることで、結果が若干改善されることがわかりました。また、すべての可能なオーバーラップパッチ(ストライドサイズ1、すなわちパッチオフセット1)を使用する代わりに、3番目のスライドウィンドウパッチ(ストライドサイズ3)を使用することで、計算時間を9分の1に短縮しながら、ほぼ同等の結果が得られることがわかりました。 ストライドサイズ3を使用することで、最新のCPUで512×512ピクセルの画像を約1分でノイズ除去することができ、BM3D [3]よりは遅いですが、KSVD [1]よりはかなり高速になりました。

3.3. Implementation
MLPで最も計算量の多い演算は、行列-ベクトルの乗算です。この演算にはCPUよりもGPU(Graphics Processing Unit)の方が適しています。このため、GPU上にMLPを実装しました。nVidia社のC2050GPUを使用し、クアッドコアCPUで実装した場合と比較して一桁以上の高速化を実現しました。この高速化は非常に重要な要素であり、より大規模な実験が可能になりました。

4. Experimental setup
カラー画像からMATLABのrbg2gray関数を用いて得られたグレースケール画像を用いて実験を行った。2つのノイズサンプルが同じである可能性は低いため、どのデータセットを使用しても学習データ量は実質的に無限大である。しかし、破損していないパッチの数は、データセットのサイズによって制限されます。

Training data:
:実験のために、2つの訓練セットを定義する。
小規模なトレーニングセット 200枚の画像を含むBerkeleyセグメンテーションデータセット[15]と
大規模なトレーニングセット。LabelMeデータセット[22](約150,000枚の画像を含む)とBerkeleyセグメンテーションデータセットの組み合わせ。
LabelMeデータセットのいくつかの画像は、少しノイズが多かったり、少しぼやけているように見えたので、MATLABのimresize関数をデフォルトのパラメータで使用して、そのデータセットの画像を2倍に縮小しました。

Test data:
我々のアプローチを評価するために、3つの異なるテストセットを定義します。
標準的なテスト画像。この11枚の画像は、"Lena "や "Barbara "など、他のノイズ除去アルゴリズム[3]の評価に使用されている標準画像を含んでいます。
パスカルVOC 2007のテストセット[5]から500枚の画像をランダムに選択した。Pascal VOC 2007のテストセット[5]から500枚の画像をランダムに選択しました。
McGill:McGillデータセット[17]から500枚の画像をランダムに選択しました。

5. Results
次に、BM3Dや他の既存のアルゴリズムとの比較を行い、最後に他のタイプのノイズに対してMLPがどのような性能を発揮するかを示します。

5.1. More training data and more capacity is better
我々は、異なるアーキテクチャとパッチサイズのネットワークを学習します。例えば、L-17-4x2047はパッチサイズ17×17、サイズ2047の4つの隠れ層を持つ大規模な学習セットで学習されるネットワークであり、同様にS-13-2x511はパッチサイズ13×13、サイズ511の2つの隠れ層を持つ小規模な学習セットで学習されるネットワークである。その他のアーキテクチャは、図1の凡例で示されています。これらのMLPはすべて、σ=25のガウスノイズで破壊された画像パッチ上で訓練されています。
ネットワークの性能を監視するために、標準偏差σ=25のガウスノイズで破壊された2つのテスト画像 "Barbara "と "Lena "の200万回の学習例ごとにネットワークをテストしました。図1は、2つのテスト画像上でのネットワークのPSNRの向上を示しています。
Observations:
良い結果を得るためには、多くのトレーニングサンプルが必要です。最初の4,000万個のトレーニングサンプルでは、進歩は安定しています。その後も、テスト画像のPSNRはゆっくりとではありますが改善されています。オーバーフィットが問題になることはありません。サイズ13×13のパッチよりも17×17のパッチの方が良い結果が得られます。小さな学習セット(Berkeley)から大きな学習セット(LabeleMe + Berkeley)に切り替えると、結果が非常に良くなります。学習データセットを用いて画像統計学を学習しようとする試みのほとんどは、Berkeleysegmentationデータセット[20, 9, 19]のみを使用していることに注意してください。

f:id:kou6839:20200527212624p:plain
図1. 学習中の "Barbara "と "Lena "の平均PSNRの改善。

f:id:kou6839:20200527212654p:plain
図3. BM3Dと比較した500枚のテスト画像の2つのデータセットにおける本手法の性能プロファイル。

5.2. Can MLPs compete with BM3D?
前節では,大規模な学習セットを用いて学習した4つの隠れ層のサイズ2047,パッチサイズ17×17のMLP L-17-4x2047が最も良い結果を得た.以下では,テストデータを用いて,BM3D[3]を含む他のデノイジング手法との比較を行う.

Pascal VOC 2007, McGill:
図3はPASCAL VOC 2007とMcGillのBM3Dとの比較である。平均的には、PASCAL VOC 2007(0.03dB改善)とMcGill(0.08dB改善)で同等の結果が得られています。同様に、我々のMLPはMcGill画像の500枚の画像のうち347枚でBM3Dを上回っている。画像 "pippin0120 "では0.81dB、画像 "merry mexico0152 "では1.32dBの改善が見られます。

Standard test images:
また、標準的なテスト画像を用いて、BM3DとMLP(アストライドサイズ1)を比較した(表1参照)。BM3Dでは、同じテスト画像の105個の異なるノイズのあるインスタンスの平均結果を報告している。実行時間を長くするために、我々のアプローチでは、17種類のノイズのあるインスタンスのみを使用している。11個のテスト画像のうち、6個のテスト画像でBM3Dを上回る結果が得られました。BM3Dはバーバラのパンツのような規則的な構造を持つ画像では明らかに有利である。Barbaraを除く全ての画像でKSVD[1]を上回る性能を示した.KSVDは辞書ベースのノイズ除去アルゴリズムで、ノイズの多い画像に適応した辞書を学習します。繰り返し構造の多い画像はBM3DとKSVDの両方に適しています。ニューラルネットワークがBM3Dに対抗できることがわかる。

f:id:kou6839:20200527213052p:plain
図2. BM3Dと比較した結果。一部の画像(上段)では、我々の手法がBM3Dを凌駕している。しかし、それ以外の画像では、BM3Dの方が我々の手法よりもはるかに優れた結果が得られている。BM3Dが優れている画像は、バーバラのズボンの縞模様(下段)のような規則的な構造を持った画像である。

f:id:kou6839:20200527213151p:plain


f:id:kou6839:20200527213211p:plain
図4. 様々なノイズレベルの画像での比較:σ=25で訓練されたMLPは、σ=25では競争力がある。いくつかのノイズレベルで学習したMLPは、より高いノイズレベルでも競争力があります。

5.3. Robustness at other noise levels
前節のMLPは、σ=25のAWGノイズで破損した画像パッチのみを学習しました。他のノイズレベル(σが25より小さいか大きい)にも対応できるのでしょうか?この疑問に答えるために、異なる値のσを持つAWGノイズで破壊された11の標準テスト画像に適用しました。図4は、GSM、KSVD、BM3Dで得られた結果との比較を示しています。σ=25の場合、当社のMLP(茶色の線)は競争力がありますが、それ以外のノイズレベルでは劣化していることがわかります。このMLPはノイズのレベルが変化したことを知りませんが、他の手法はその情報を提供しています。この効果を調べるために、BM3Dを異なるノイズレベルで実行しましたが、入力パラメータをσ=25に固定しました(赤い曲線)。我々の手法と同様の挙動が見られます。我々のMLPは、より高いノイズレベル(赤の上の茶色)でもわずかに良好に一般化しています。

5.4. MLPs trained on several noise levels
単一のノイズレベルの例で学習したMLPの限界を克服するために、我々はノイズレベルが異なるノイズによって破損した画像パッチでネットワークを学習することを試みた。我々は、σ=25で訓練したネットワークと同じアーキテクチャを使用しました。与えられた訓練パッチのノイズ量(すなわちσの値)をネットワークへの追加入力として与えました。これは2つの方法で行われました。1つの追加入力ユニットが直接σの値を与え、15個の追加入力ユニットは、対応するσの値をコード化している1つのユニットを除いて、すべてのユニットが-1に設定されたスイッチとして機能しました。トレーニングは前述のように行い、σは0から105までの間で5個の中からランダムに選択した。このネットワークを、異なるσ値の11の標準テスト画像でテストしました(図4の緑の線を参照)。どのノイズレベルでもBM3Dを上回る性能を発揮しましたが、GSMとKSVDの両方の高ノイズレベルよりも優れた性能を発揮しました。低ノイズレベル(σ=5)では、ノイズの多い入力よりもデノワイアの結果は悪くなります。我々は以下の結論を導き出しました。複数のノイズレベルでのデノイジングは、単一のノイズレベルでのデノイジングよりも難しい。ネットワークが高いノイズレベルで良好な性能を発揮するのは、ノイズの多いパッチの方がより長いグラディエントを提供するという事実に起因するものと推測されます。したがって、ノイズレベルが高いほど訓練手順が支配的になります。潜在的な解決策としては、学習率をσの値に適応させることが考えられます。

5.5. Learning to remove arbitrary noise types
事実上すべてのノイズ除去アルゴリズムは、ノイズをAWGと仮定しています。しかし、画像がAWGノイズによって常に破損しているわけではありません。ノイズは必ずしも加法的、白色、ガウシアン、信号に依存しないとは限りません。例えば、状況によっては、画像処理がポアソンノイズ(フォトンショットノイズなど)によって破壊されることもあります。このような場合、AWGノイズを想定したノイズ除去アルゴリズムが、何らかのイメージ変換を用いてこのような画像に適用される可能性があります[14]。同様に,磁気共鳴イメージングで発生するRice-distributed noiseにも対応可能である[6].このような場合には、ノイズの種類に合わせて設計されたノイズ除去アルゴリズムを作成することで解決することができます。MLPを用いることで、与えられたノイズタイプのノイズをシミュレートすることができれば、与えられたノイズタイプのノイズ除去アルゴリズムを効果的に学習することができます。以下では、AWGノイズとは異なる3つのノイズタイプについての結果を示しています。

Stripe noise:画像データには構造が含まれていると思われがちですが、ノイズは無相関であるため構造化されていません。ノイズにも構造が含まれている場合、この仮定は違反しており、ノイズ除去の結果は悪くなります。ここでは、ノイズが加法的なガウスノイズであるが、水平方向に隣接する8つのノイズ値が同じ値を持つ場合の例を示します。5,800万個の学習例で学習したMLPは、BM3Dを凌駕した(図5の左欄参照)。

Salt and pepper noise:ノイズが加法ガウスノイズの場合、ノイズのある画像値は元の画像値と相関があります。ソルト&ペッパーノイズでは、ノイズ値は元の画像データと相関していません。各ピクセルは破損している確率pを持っています。破損したピクセルは確率0.5で0に設定され、そうでない場合は可能な限り高い値(8ビット画像では255)に設定されます。塩コショウノイズを除去する一般的なアルゴリズムは、中央値フィルタリングです。また、BM3D(σの値を変化させて)を用いて実験したところ、PSNRは25.55dBとなりました。5,000万個の学習例を用いて学習したMLPは、図5の中段に示すように、両手法を凌駕しています。

JPEG quantization artifacts:このようなアーチファクトは、JPEG画像の圧縮アルゴリズムによって発生します。JPEGノイズの特徴としては、画像がブロック状になったり、エッジの鮮明さが失われたりすることが挙げられます。この種のノイズはランダムではなく、入力画像によって完全に決定されます。JPEG圧縮された画像を向上させる一般的な方法は、画像をシフトさせ、JPEG圧縮を再度適用し、シフトバックして平均化することです[16]。BM3Dは、パラメータを調整した後、このタスクで同様の結果を得ています。1,200万個の訓練用サンプルを用いて学習したMLPは、図5の右の列にあるように、両方の手法よりも優れた結果を出しています。

f:id:kou6839:20200527213721p:plain

6. Discussion
入力層に適用される学習済みの重みと出力層を計算する重みは、図7と図6を参照してください。図6の後者のパッチは、重み付け係数として最後の隠れ層のスカラと線形的に結合されているので、denoisedパッチの辞書を形成しています。1)ガボールフィルタに似たパッチ、2)ブロブ、3)より大きなスケール構造、4)ノイズの多いパッチです。ガボールフィルタは、異なるスケール、シフト、方向で発生します。同様の辞書は、他のノイズ除去アプローチでも学習されています。MLPはシフト不変ではないので、いくつかのパッチがお互いにシフトしたバージョンであることを説明しています。このパッチはフィルタとして解釈することができ、隠れニューロンの活動は、入力に対するフィルタの応答に対応するパッチに接続されています。これらのパッチは、大きく3つのカテゴリーに分類されます。これらのパッチは、ノイズの多い入力データから有用な特徴を抽出することができますが、出力層のパッチよりも解釈が難しくなっています。重みの進化をランダムウォークのように考えたくなるかもしれません。その場合、「1-ノルム」は時間の経過とともに増加するはずです。しかし、最初の層を除くすべての層で、`1-ノルムは時間の経過とともに減少することが観察されます(最初の短い期間に増加した後)。このことは、重さに対する明示的な正則化がない場合に起こり、そのような正則化は必要ないことを示している。

f:id:kou6839:20200527215642p:plain
図6. 出力層の重みのランダム選択。各パッチは、1つの隠れニューロンから出力ピクセルへの重みを表しています。

f:id:kou6839:20200527221021p:plain
図7. 入力層の重みのランダム選択。各パッチは、入力ピクセルから1つの隠れニューロンへの重みを表しています。

f:id:kou6839:20200527221104p:plain
図8. 学習中にいくつかの層の重みの`1-ノルムが減少する(明示的な正則化を行わない)。

MLPs vs. Support Vector Regression:我々は、回帰問題を解くためにMLPを用いてノイズ除去法を学習する。同様に有効なアプローチとしては、サポートベクター回帰(SVR)のようなカーネルアプローチを使用することが考えられます。(i) MLPは行列-ベクトル乗算に基づいているため、GPU上での実装が容易である。(ii) MLP確率的勾配降下法を用いて非常に大規模なデータセットに対して容易に学習できる。しかし、我々はSVRで達成可能な結果の質については何も主張していない。

Is deep learning necessary?多くの隠れた層を持つMLPを学習すると,バニシンググラディエントやオーバーフィッティングなどの問題が発生する.これらの問題を回避するために、教師なし学習段階から始まるディープラーニングと呼ばれる新しい学習手順が提案されている[7]。このようなアプローチは、ラベル付けされたデータが少ないが、ラベル付けされていないデータが豊富な場合や、バックプロパゲーションを用いて効果的に学習するにはネットワークが深すぎる場合に最も有効である。本研究では、ラベル付きデータが豊富で、ネットワークの隠れ層が4層以下の場合に、バックプロパゲーションが有効であることを示した。バックプロパゲーションがうまく機能していることがわかったので、深層学習技術は必要ないと結論づけたが、教師なし事前学習技術を用いることで、より良い結果が得られる可能性がある。

7. Conclusion
ニューラルネットワークは、最先端の画像ノイズ除去性能を実現することができます。そのためには、①ネットワークの容量が十分に大きいこと、②パッチサイズが十分に大きいこと、③学習セットが十分に大きいこと、が重要ですが、これらの条件を満たすためには、ニューラルネットワークの学習と適用に必要な計算に最適なGPUをMLPsonに実装することが必要です。しかし、我々の最も競争力のあるMLPは単一のノイズレベルに合わせたものであり、他のノイズレベルに対しては他のノイズ除去法と比較して一般化しにくい。これは、我々が既に複数のノイズレベルで学習したMLPで克服しようとしている深刻な限界です。しかし、後者では、σ=25の場合には、特化したMLPのような性能はまだ得られていません。しかし、より大容量で十分な学習時間を持つネットワークであれば、これは可能であると考えています。