CNNの出力を逆変換し画像を得る
主にこの論文([1412.0035] Understanding Deep Image Representations by Inverting Them)のまとめです。
概要
CNNの出力を逆変換することで入力画像を再構成します。最初のそうでは入力画像がそのまま再構成されますが、深い層になると入力画像に依存しないクラス固有の特徴が現れるようになります。
手法
普通のDNNはBPを用いて以下を最適化するように学習します(はクロスエントロピー ロス)。
今回はこれを逆手にとって以下を最適化するようにを変動させます(は生成された画像と元の画像の二乗誤差)。
すなわち逆変換された画像は以下を満たせば良さそうです。
実験ではさらにスパイクノイズなどを防ぐために正則化項を入れており、最終的に以下のようになっています。
最後にこれらの項の大きさを調整するために以下のように変更します。
正則化項について詳しく
一つ目の項は以下のようなL-alpha normをalpha倍したものです。自然画像は極端なピクセルの値を持たないので、逆変換した画像がそのようなピクセルを持たないようにします。ここではを用います。
二つの目の項は以下のような横のピクセルとの差分の合計値です。TV-normと呼ばれています。画像のちらつきを抑える、つまり画像を滑らかにします。ここではを用います。
optimisation
momentum+SGDを用いる。学習が進む(数百回程度)度に学習率を1/10していく。
network
CaffeのAlexNetを用いている。
テストイメージ
実験結果
ILSVRCに対して, で実験を行なった。
結果は以下のようになった。
表の数字は平均的な誤差です。太字は正則化項が上手く働いている「層との部分を表しています。すなわち層が深くなるにつれ、ちらつきが多くなるので、TV項を入れた方が良いということです。ただしこれは「人間が見た上で」の話で、単純な誤差ならTV項が小さいほど小さくなります。
実際に逆変換された画像を見ていきます。一番最初に貼った画像と同じです。
面白いのは後半の層、特にFC層で「元画像には含まれていないが、このクラスには含まれていそう」な特徴が見られることです。
さらに他の結果も見ていきましょう。
上の幾何学模様に注目します。この結果の面白いところはtrainingデータセットであるImageNetに含まれていないクラスの画像でも特徴的な部分を捉えられていることです。
またフラミンゴの画像では最終層付近でフラミンゴが別の場所に現れています。これらのことからCNNはスケールや場所に依存しない特徴を捉えられていることがわかります。
では元画像をある一部分に制限するとどうなるでしょうか。下の画像は元の猿の画像を中心の5x5サイズの部分だけ使い、逆変換画像を取得したものです。白の枠はその5x5の画像が出力先に影響を与える部分です。かなり局所的な特徴が大きな影響を与えていることがわかります。
最後に特徴mapをいくつか制限した上で、逆変換します。これによって以下のように「低周波な色の変化」「高周波な輝度の変化」を司るマップが分かれていることが分かります。CNN構成時にこのような影響を与えるインセンティブは何も与えていないのにこのような結果になるのは驚きです。この実験は最初の数レイヤーにしか行えません。なぜならその後の出力では各出力mapが独立ではないからです。