機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ

はじめに

SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ. 従来のdeep super resolutionが決定的な出力をすることに対し,超解像はそもそも決定的に決まる問題ではないという考えからconditionalなgenerative flowを使って,低解像度画像を条件とする確率モデルとして超解像を実現.

SRFlow

手法はシンプルで,基本的にはGlowをベースとしている. 低解像度画像を条件としてモデルに与えるために,まず低解像度画像\mathbf{x}をCNN g_\theta(\cdot)により,\mathbf{u}=g_\theta(\mathbf{x})と変換する. このCNNはinvertibleではなく通常のCNN. 得られた表現\mathbf{u}をaffine coupling層へ次のように導入することでconditionalなモデルとする.

\displaystyle
\mathbf{h}_A^{n+1}=\mathbf{h}_A^n\\
\mathbf{h}_B^{n+1}=\exp(f_{\mathbf{\theta},s}^n(\mathbf{h}_A^n;\mathbf{u}))\cdot\mathbf{h}_B^n+f_{\mathbf{\theta},b}^n(\mathbf{h}_A^n;\mathbf{u})

\mathbf{h}^n=\{\mathbf{h}^n_A,\mathbf{h}^n_B\}n層目の出力を2分割したもの. アフィン変換のパラメータを出力するニューラルネット\mathbf{u}も同時に入力するというのが通常のgenerative flowとの違い.

さらにAffine Injector層も導入する. Affine injector層は次のように表現される.

\displaystyle
\mathbf{h}^{n+1}=\exp(f_{\mathbf{\theta},s}^n(\mathbf{u}))\cdot\mathbf{h}^n+f_{\mathbf{\theta},b}(\mathbf{u})

Coupling層のようにアフィン変換のパラメータをニューラルネットに出力させるもので,変換対象はgenerative flowの中間出力で,パラメータを出力するニューラルネットへの入力が\mathbf{u}となっている. これも条件付けを強めている.

モデルの学習は通常のgenerative flowと同様に変数変換の公式から導かれる尤度の最大化によって実現され,従来のdeepモデルによる超解像と違い複数の損失の組み合わせなどが必要ない.

まとめ

結果がかなり良い.特に低解像度画像で潰れてしまい超解像の際に不定性が残るような画素はサンプリングごとに変化しており(Fig. 3参照),期待通りの働きができていることがわかる.