ディープニューラルネットワークを用いた画像生成モデル(DCGAN)を調べていたところ、Deconvolutionという単語が出てきたので調べてみました。
Convolutionとは?
Convolutionは日本語だと畳み込みと訳されます。
Deep Convolutional Neural Network = 深層畳み込みニューラルネットワークが画像認識タスクで高い識別率を叩き出して話題になっているやつですね。
詳しいことはこっちの記事へ
Azure Machine Learningをわかった気になるために細かいことは気にせずに機械学習のことをまとめてみる - ディープラーニング
イメージとしてはこの画像の通りで、元画像のピクセルや特徴マップの値にカーネル(フィルタ)をかけて、そのカーネルが表す特徴っぽさを抽出するような作業です。
画像引用:深層畳み込みニューラルネットワークを用いた画像スケーリング
Deconvolutionとは?
Deconvolutionが日本語で一般になんと訳されるのかはわかりませんが、語感的には逆畳み込みでしょうか。
画像処理でDeconvolutionというと、画像にぼけなどのノイズが入っている場合に、それを元画像にぼけの原因となる関数がかかっている(畳み込みされてる)と考え、その関数を推定して元画像を復元することのようです。
画像の高解像度化技術 ~新型画像処理技術(デコンボリューション)の説明~
ニューラルネットワークにおけるDeconvolutionとは?
Deconvolution = 逆畳み込みという言葉から特徴マップから畳み込む前の画像・特徴を復元するのかな?でも隣り合った特徴同士が影響し合いそうだし、どうするんだろう?難しそうだな……そう思ってた時代が自分にもありました。
調べてみると、ニューラルネットワークにおけるDeconvolutionというのは、transposed convolution = 転置畳み込みと言うほうがわかりやすく、元となる特徴マップを拡大してから畳み込むようです。
画像引用:What are deconvolutional layers?
青が元の特徴マップ(3X3)で、周囲や間に空白を足してサイズを拡大した後でカーネルを適用し、緑の画像・特徴マップ(5X5)を得ています。
こちらのページは色々な畳み込みが視覚化されていてわかりやすいですね。
これなら実装も難しくなさそうですね。
waifu2xなどの画像拡大でも同じものが使われているんですかね?
以下の例だと畳み込み層と全結合層を組み合わせているようですが、どうして全結合層を使っているんでしょうか?