2020年6月21日日曜日

複数画像のノイズを一括で除去する方法。NvidiaAIDenoiserの使い方

複数画像のノイズを一括で除去する方法を見つけてしまった。
これは素晴らしい。

NvidiaAIDenoiserは、NVidia のAI Denoiserをコマンドラインで使っちゃおうというものらしい。この性能がすばらしい。

まずは、ノイズ除去前後の画像をみてみるとこんな感じ。

ノイズ除去の前後比較


■ノイズ除去前の画像。かなりざらざらしている。

■ノイズ除去後。かなりツルっとした印象。


さらに拡大してみるとこんな感じ。ざらざら感がなくなっている。

■ノイズ除去前(4倍拡大)

■ノイズ除去後(4倍拡大)


横に並べるとこんな感じ。左が処理前、処理後。

別の例。かなり綺麗になっている。


動作確認環境

OS:Windows10 pro
メモリ:8GB
GPU:NVIDIA GeForce GTX960 4.0GB

NvidiaAIDenoiserの使い方

Denoiserの使い方を説明する。
以下のDECLAN RUSSELLさんのサイトで、「Denoiser windows v2.4」をクリックし、Zipファイルをダウンロードし、任意のフォルダでDenoiserを解凍する。


以下のように、Denoizerを解凍したフォルダ、ターゲットとなるパス、デノイズされたファイルを出力するパス、デノイズ後のファイルにつけるプレフィックスを指定するコマンドを用意。※ -o の後、改行しない。

SET FILE_EXTENSION=jpg
SET PATH_TO_DENOISER=E:\home\github\Denoiser_v2.4
SET PATH_TARGET=E:\home\denoise\jpg
SET PATH_DENOISED=E:\home\denoise\denoised
SET OUTPUT_PREFIX=denoised_

for %A in (*.jpg) do (
    %PATH_TO_DENOISER%\Denoiser.exe -i "%PATH_TARGET%\%A" -o "%PATH_DENOISED%\%OUTPUT_PREFIX%%A"
)

コマンドプロンプトで、上記のコマンドを実行。


すごいのは、1枚の1920×1080の画像のデノイズに1秒かかっていない。0.5秒くらいで終ってます。なので、レンダリング時のサンプル数は下げてササッとレンダリングして、Denoiserで仕上げみたいな使い方もありです。

Denoiserコマンドのヘルプはこちら。


注意点

当たり前ですけどNvidiaのGPUがないとダメだと思う。
フォルダに日本語名が含まれいるとエラーになりそう。
画像が大きいのが原因なのか、OptiXのバージョンの問題なのか画像によってはかならずエラーになるやつがある。GPUによってもOptiXへの対応しているかどうかとかも関連しそうなので、研究が必要ですね・・・・

Input image: E:\home\denoise\002\jpeg\20200406_00175.jpg
Loaded successfully
Output image: E:\home\denoise\002\denoize\denoised_20200406_00175.jpg
Denoising...
[OptiX]: Unknown error (Details: Function "_rtCommandListExecute" caught exception: Failed to launch DLDenoiser post-processing stage. DLDenoiser run method failed with error -28.)

まとめ

画像のノイズを一括除去する方法ということで、NvidiaAIDenoiserを紹介しました。
かなり短時間で、効果的なノイズ除去ができるので、JWildfireやBlenderでSampleを低く短時間でレンダリングし、NvidiaAIDenoiserで仕上げするというワークフローもありかもしれないですね。

参考

Github DeclanRussell/NvidiaAIDenoiser

NVIDIA AI DENOISER



0 件のコメント:

コメントを投稿