joeylitalien/noise2noise-pytorch
PyTorch Implementation of Noise2Noise (Lehtinen et al., 2018)
noise2noise‑pytorch – クリーンデータなしでのノイズ除去
概要
- Noise2Noise 論文(Lehtinen et al., 2018)の非公式な PyTorch 再実装です。この手法では、クリーンな参照画像が利用できない場合でも画像を復元できるよう、ノイズ 入力を ノイズ ターゲットにマッピングする画像間ネットワークを学習します。
主要コンポーネント
- U‑Net 風の畳み込みネットワーク(エンコーダとデコーダが重みを共有する小さなバグが含まれていますが、動作には問題ありません)。
- 複数の合成ノイズモデルをサポートする学習スクリプト (
train.py):- ガウス分布(
--noise-paramで σ を制御) - ポアソン分布(
--noise-paramで λ を指定) - テキストオーバーレイ(
--noise-paramで確率 p を指定) - モンテカルロレンダリングノイズ(
MonteCarlo.mdを参照)。
- ガウス分布(
- チェックポイントを読み込み、ノイズ画像 / ノイズ除去済み画像 / クリーン画像を可視化するテストスクリプト (
test.py)。 - 学習中の損失 / PSNR 曲線の任意のプロット表示(
--plot-stats)。
始め方
- 必要な Python パッケージ(PyTorch 0.4.1、torchvision 0.2.0、NumPy、Matplotlib、Pillow、OpenEXR)を
pip3 install -r requirements.txtでインストールします。 - データ準備 – 任意の画像コレクションが使用できます。README では COCO 2017 検証セットを
train、valid、testフォルダに分割する方法が示されていますが、スクリプトを独自のディレクトリに向けることも可能です。 - モデルを学習します。例えば、ガウスノイズの場合:
他の劣化に対してはpython3 train.py \ --train-dir data/train --train-size 1000 \ --valid-dir data/valid --valid-size 200 \ --ckpt-save-path ckpts \ --nb-epochs 10 \ --batch-size 4 \ --loss l2 \ --noise-type gaussian \ --noise-param 50 \ --crop-size 64 \ --plot-stats \ --cuda--noise-typeと--noise-paramを置き換えてください。 - 保存されたチェックポイントをテストします:
スクリプトは、ノイズ入力、ノイズ除去出力、および(利用可能な場合)クリーンターゲットの並列モンタージュを表示します。python3 test.py \ --data data/test \ --load-ckpt ckpts/gaussian/n2n.pt \ --noise-type gaussian \ --noise-param 50 \ --crop-size 256 \ --show-output 3 \ --cuda
リポジトリに示されている結果
- ガウスノイズ(σ = 25)のノイズ除去画像は約 32 dB の PSNR に達し、クリーンターゲットのベースラインに近づいています。
- テキストオーバーレイ(p = 0.25)のノイズ除去画像は約 28 dB の PSNR に達しています。
- 学習は古い GTX 780 で数百エポック行われました。
既知の制限 / 未解決の問題
- U‑Net 実装ではエンコーダの重みがデコーダと誤って共有されています。修正には小さなコード変更が必要です。
- 活性化関数が逆になっています(論文では ReLU が推奨されていますが LeakyReLU が使用されており、その逆も同様です)。現在の設定は動作しますが、最適とは限りません。
- ポアソンノイズはデータ依存性があるため、ポアソンノイズの処理は元の論文と完全に一致していません。適切な処理には、TensorFlow 参照実装の適応が必要になる場合があります。
対象ユーザー
- 自己教師あり画像復元を実験する研究者や趣味のプログラマ。
- クリーンな正解データが利用できないノイズ除去タスクで、軽量な PyTorch ベースラインが必要な開発者。
参考文献
- Lehtinen, J. et al. “Noise2Noise: Learning Image Restoration without Clean Data”, ICML 2018.
- 例示データ用の COCO データセットの引用。
このリポジトリは、機械学習による画像復元技術のための真面目な研究向けコードベースです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト