私の備忘録がないわね...私の...

画像処理とかプログラミングのお話。

CNNの出力を逆変換し画像を得る

主にこの論文([1412.0035] Understanding Deep Image Representations by Inverting Them)のまとめです。

概要

CNNの出力を逆変換することで入力画像を再構成します。最初のそうでは入力画像がそのまま再構成されますが、深い層になると入力画像に依存しないクラス固有の特徴が現れるようになります。

f:id:kamakuraviel:20200626192438p:plain
図6. 逆変換された画像

手法

普通のDNNはBPを用いて以下を最適化するように学習します( Lはクロスエントロピー ロス)。


\min_w L(y, f_w(x))

今回はこれを逆手にとって以下を最適化するように xを変動させます( Lは生成された画像と元の画像の二乗誤差)。


\min_x L(y, f_w(x))

すなわち逆変換された画像は以下を満たせば良さそうです。


x^\ast = \arg\min_x L(y, f_w(x))

実験ではさらにスパイクノイズなどを防ぐために正則化項を入れており、最終的に以下のようになっています。


x^\ast = \arg\min_x L(y, f_w(x))+\lambda R(x)

最後にこれらの項の大きさを調整するために以下のように変更します。


x^\ast = \arg\min_x \frac{\|\Phi(\sigma x)-\Phi(x_0)\|}{\|\Phi(x_0)\|}+\lambda_\alpha R_{\alpha}(x)+\lambda_{V^\beta}R_{V^\beta}(x)

正則化項について詳しく

一つ目の項は以下のようなL-alpha normをalpha倍したものです。自然画像は極端なピクセルの値を持たないので、逆変換した画像がそのようなピクセルを持たないようにします。ここでは \alpha=6を用います。


R_{\alpha}(x) = ||x||_\alpha^\alpha = x_0^{\alpha}+x_1^{\alpha}+\cdots +x_n^{\alpha}

二つの目の項は以下のような横のピクセルとの差分の合計値です。TV-normと呼ばれています。画像のちらつきを抑える、つまり画像を滑らかにします。ここでは \beta=1,2を用います。


R_{V^\beta}(x) = \sum_{i,j}\left(
(x_{i,j+1}-x_{i,j})^2
+
(x_{i+1,j}-x_{i,j})^2
\right)^{\frac{\beta}{2}}

optimisation

momentum+SGDを用いる。学習が進む(数百回程度)度に学習率を1/10していく。

network

CaffeのAlexNetを用いている。

テストイメージ

f:id:kamakuraviel:20200819130906p:plain
Figure 5

実験結果

ILSVRCに対して \lambda_{\alpha}=2.16\times 10^8,  \lambda_{\beta}=0.5, 5, 50で実験を行なった。

結果は以下のようになった。

f:id:kamakuraviel:20200819103324p:plain
Table 3

表の数字は平均的な誤差です。太字は正則化項が上手く働いている「層と \lambda_{\beta}の部分を表しています。すなわち層が深くなるにつれ、ちらつきが多くなるので、TV項を入れた方が良いということです。ただしこれは「人間が見た上で」の話で、単純な誤差ならTV項が小さいほど小さくなります。

実際に逆変換された画像を見ていきます。一番最初に貼った画像と同じです。

f:id:kamakuraviel:20200626192438p:plain
Figure 6

面白いのは後半の層、特にFC層で「元画像には含まれていないが、このクラスには含まれていそう」な特徴が見られることです。

さらに他の結果も見ていきましょう。

f:id:kamakuraviel:20200819110522p:plain
Figure 7

上の幾何学模様に注目します。この結果の面白いところはtrainingデータセットであるImageNetに含まれていないクラスの画像でも特徴的な部分を捉えられていることです。

またフラミンゴの画像では最終層付近でフラミンゴが別の場所に現れています。これらのことからCNNはスケールや場所に依存しない特徴を捉えられていることがわかります。

では元画像をある一部分に制限するとどうなるでしょうか。下の画像は元の猿の画像を中心の5x5サイズの部分だけ使い、逆変換画像を取得したものです。白の枠はその5x5の画像が出力先に影響を与える部分です。かなり局所的な特徴が大きな影響を与えていることがわかります。

f:id:kamakuraviel:20200819130154p:plain
Figure 9

最後に特徴mapをいくつか制限した上で、逆変換します。これによって以下のように「低周波な色の変化」「高周波な輝度の変化」を司るマップが分かれていることが分かります。CNN構成時にこのような影響を与えるインセンティブは何も与えていないのにこのような結果になるのは驚きです。この実験は最初の数レイヤーにしか行えません。なぜならその後の出力では各出力mapが独立ではないからです。

f:id:kamakuraviel:20200819140305p:plain
Figure 10

参考文献