2018~2020年のDNNを用いた動画像ノイズ除去のあれこれ
はじめに
こんにちは.どらです.
久しぶりの投稿です.今回はメモがてらにDNNを用いた画像ノイズ除去手法について簡単にまとめていきたいと思います.DNNを用いたノイズ除去の今を少しでも伝えられたら幸いです.
注意
正直,ほとんどの方は読んでも全然分からないと思います.
私自身も専門家でもなんでもないので,覗いてくださった方はほほーんという軽い気持ちで見て頂ければと思います.
ノイズ除去って?
ノイズを端的にいうと,何かしらの信号情報を別の信号情報に変換する,あるいは伝送するときに生まれてしまう余計な信号情報のことです.
電話しているとき,相手の声がザーザーいって聞き取りづらいことがあると思います.あれは相手の声が電気信号になって,自分のもとに届いて,もう一度音の信号として変換されるまでの間に余計な情報がのってしまうから起こる現象です.
画像もまったく同じです.画像は光の強弱を特殊なセンサを使って電気信号として捉えて,それをデジタルな画像信号に変換することによって作られます.この間に元々の信号になかった情報が付加されてしまうんですね.
このノイズがのっている信号は,そのままでは人間が利用しづらいものです.そこで,変換する間にのってしまった余計な信号情報だけを取り出して,本当に欲しい信号情報にすることがノイズ除去の目標です.
https://www.morphoinc.com/technology/nr
こちらはモルフォさんの紹介ページからお借りした画像です.左がノイズあり画像,右がノイズ除去した画像です.ノイズあり画像はザラザラと余計な信号がのっていることが分かりますね.
動画像のノイズ除去の課題
この記事は動画像のノイズ除去のことを考えようと思います.
動画像の場合,主に次の2つの課題を解決する必要があります.
・空間的ノイズ分布の推定
一枚の画像中にどこに,どれだけノイズがのっているか(ノイズにはどんな傾向があるのか)を推定します.
・時間的ノイズ分布の推定
通常,完全に正しい空間的ノイズ分布を推定することは難しく,いくらか
誤差が含まれてしまいます.
動画は複数枚の画像を順番に並べたものですから,そのままの状態では一
貫性が保てず,同じ場所でもパタパタと画のブレがでてきてしまいます.
そのため,時間軸方向でのノイズの変化を推定する必要があります.
DNNを用いた3Dノイズ除去手法の潮流
大きく分けてDNNを用いたノイズ除去には2つのアプローチがあります.
1.複数のノイズ画像から,直接ノイズ分布を推定して,画像に足し合わせる手法(直接的な平滑化)
2.複数のノイズ画像から,重み付き加算する画素をCNNによって選択する手法(パッチベースの平滑化)
これらの良し悪しについては私自身も理解できていないですが,
DNNを用いた場合はパッチベースの平滑化の方が計算処理が軽くですむ印象です.それでは,手法をいくつか紹介したいと思います.
直接的な平滑化に関する手法
DVDnet: A Fast Network for Deep Video Denoising
画像は原著論文より引用
2019年に提案された手法です.
こちらの手法の特徴は,空間的なノイズ分布の推定と時間的なノイズ分布の推定を2つのCNNで明示的に分けていることです.
学習にはノイズのない画像(厳密には少ない画像)に人工的にノイズを付加して生成した画像を利用します.
ネットワークの入力には複数フレームの画像と人工的に生成したノイズマップを使い,中央のフレームのノイズを除去します.
このとき,前段の空間的なノイズ除去結果と,後段の時間的なノイズ除去結果の正解画像との誤差を最小化することで学習させます.
人工的なノイズマップをつくるのは,ノイズマップのレベルを変えることでノイズ除去の強さを調整するためです.
さて,この手法がネットワークを2ステージに分けている理由について考えていきます.
この手法以前の動画像ノイズ除去手法はRNNを利用したものが主流だったのですが,十分な結果を残せていませんでした.この原因について論文中では学習がうまくいかないことが理由ではないかと考察されていました.
RNNは系列に意味がある場合に有効に働きますが,ノイズ分布の推定となると,系列は関係ないのでうまくいかないのだと思います.(たぶん)
画像は原著論文より引用
わかりづらくてすみませんが,ノイズをとりつつ鮮鋭感もある結果がでています.欠点としては,学習させたノイズにしか対応できないことです.
ViDeNN: Deep Blind Video Denoising
画像は原著論文より引用
こちらも2019年に提案された手法です.
DVDnetと非常によく似た手法で,ViDeNNも空間的なノイズ除去と時間的なノイズ除去を明示的に分けています.
入力データはあるノイズ画像とその前後のフレームを利用し,真ん中のフレームをノイズ除去します.こちらもDVDnetと同じですね.
DVDnetと異なるのはネットワークの構造と問題設定です.
ネットワークの構造については,特筆してこれが優れているという内容はないので割愛します.
問題設定について,ViDeNNはNon-blind denoisingという設定でノイズ除去をします.といっても簡単で,DVDnetで入力として利用していたノイズマップをViDeNNは使用しません.通常,ノイズ画像はどのくらいの強さで,どのようなノイズがのっているかは分からないからですね.
画像は原著論文より引用
こちらもある程度の鮮鋭感は保ちつつ,ノイズ除去ができていますね.
パッチベースの平滑化に関する手法
パッチベースの平滑化について,補足説明してから手法の紹介にうつります.
ノイズを除去するために,複数フレームの画素を足し合わせる理由は,ノイズが対称性をもって分布しているという仮定があるからです.
もう少し簡単にいうと,同じ場所で+のノイズもあれば,-のノイズもあるということです.
{10+(2)+10+(-2)} / 2 = 10
ノイズのない状態が10で括弧の+-2がノイズだとすれば,足し合わせることで真の信号を求めることができますね.
Burst Denoising with Kernel Prediction Networks
画像は原著論文より引用
こちらは2018に提案されたパッチベースの手法です.
Burst Denoisingと書いてある通り,連射画像を利用したノイズ除去を行います.N枚の入力を利用する場合,N枚の画像の各画素に対応するようにK×Kのサイズのカーネルを推定します.これが,どの画素を,どのくらいの大きさで利用するか推定していることになります.
次に推定したカーネルと各画素の内積を計算し,それらを足し合わせることでノイズ除去を行います.
学習ではL2,L1距離を用いて最小化することに加え,局所解に陥ることを避けられるようにアニーリングという処理を利用して正則化しています.
(アニーリングは勉強不足で分からないです.すみません.)
画像は原著論文より引用
かなりハードなノイズですが,うまくノイズ除去できていますね.
2018年時点においてですが,パッチベースの手法は直接的な平滑化をするよりも鮮鋭感を保てるというのが著者の主張でした.
欠点は被写体が動かないことを前提としているので,ブレが大きくなるとうまく推定できなくなることです.
Learning Deformable Kernels for Image and Video Denoising
画像は原著論文より引用
この手法は2019年に提案されたものです.
Kernel Prediction NetworkはK×Kサイズのカーネルを推定する手法でした.これは一つの制約であり,K×Kサイズのカーネルで捉えきれないほどのブレがある場合正しく推定することができません.そこで,Kernelの形を自主学習するように新しく設計したのがこの手法の特徴です.
画像は原著論文より引用
これはDeformable Kernelの動きをプロットした図です.
真ん中のフレームの中心にある青い画素をノイズ除去することを考えます.通常のKernel Prediction Networkならば2行目のように規則正しく配置されますが,
これでは物体に動きがある場合,各フレーム毎にでたらめな画素を選択することになります.
3行目が時間軸の情報を考えない2D Deformable Kernelです.こちらは不規則に画素を選択していることがわかりますが,まだ不十分ですね.
しかし最後の行の3D Deformanble Kernelです.こちらは物体のエッジに沿って画素を選択していることがわかります.
画像は原著論文より引用
Kernel Prediction Networkと比較して鮮鋭感が保てているように思います.
Attention Mechanism Enhanced Kernel Prediction Networks for Denoising of Burst Images
画像は原著論文より引用
こちらは2020年に提案された手法です.
この手法は先ほどのKernel Prediction NetworkにAttention機構を取り入れたことが特徴のネットワークです.
Attention機構とは人の認識プロセスを模したものです.例えば,犬を判別するとき,人は画像の背景には目もくれず犬らしい動物に目を向けるはずです.このように必要な情報だけを選択する処理を行うのがAttention機構です.
Kernel Prediction NetworkはK×Kのカーネル内にできるだけ似たような画素が集まっている必要がありました.しかしAttention機構を利用して,その処理を代替することで,その制約を緩和しています.
画像は原著論文より引用
(c), (d), (e)がKernel Prediction Network(5×5),Kernel Prediction Network(21×21),Malti Kernel Prediction Network,そして(f)が提案手法です.より自然なノイズ除去になっていますね.
ユーティリティを意識した手法
ここまでに紹介した手法はノイズ除去の精度を高めるものでした.
そして全てでノイズ画像とノイズなし画像のペアが学習に必要となります.
しかし,そのようなデータセットを一から集めるのはかなり大変ですし,
集まったとしてもデータの質が悪ければ良い結果を得ることはできません.
そこで注目されるのが教師なし学習です.
ここからノイズ除去を教師なしで行う方法を2つ簡単に紹介します.
Noise2Noise: Learning Image Restoration without Clean Data
画像は原著論文より引用
DNNの学習は平均的な出力になることを利用して,ノイズ画像のペアでノイズ除去関数への近似を行う研究です.ものすごいアイデアですが教師あり学習に匹敵するほどの性能があります.
Noise2Void - Learning Denoising from Single Noisy Images
画像は原著論文より引用
この手法は2019年に提案されました.
Noise2Noiseではノイズ画像のペアが必要でしたが,この手法は入力にノイズ画像を利用するだけでノイズ除去を行います.
図のようにノイズ除去したい画像以外の画素から尤もらしい値を計算していきます.
画像は原著論文より引用
最後に
自分のメモ程度にここまで書いてきました.
今後の動向をなんとなく予想します
入力画像から新たな情報の算出と入力情報の増加
素直に画像を入力し,ノイズ除去するというだけでは更なる性能向上は難しいでしょう.そこで画像から意味的情報を抽出してノイズ除去する必要があると思います.
例えばAttention機構やGANなどを利用すること,またより多くの情報をもつRAWデータの利用が進むと思います.
低計算コストモデルの設計
現在の提案手法はまだまだ多大な計算コストがかかります.そのため,より低計算量で効率的な計算処理を行うノイズ除去手法の考案が必要です.
汎用的なノイズ除去手法の設計
現在の手法は学習させたノイズにしか対応することはできません.
そこで1つのモデルで複数のノイズに対応する手法が出てくると思います.
以上です.
どんどん新しい手法がでてきて面白いですね.