経緯

最近論文を読んでいて、たまに出てくる単語がありました。AdaIN というものです。 normalization の手法の一種という感じで流していましたが、割と出てくる(styleGANStarGAN v2など)ので論文を読みました。論文自体が2017年のものなので、もしかしたらもっと良い手法が出ているかもしれません。基本的に論文の和訳をしていますが、所々省いたり、まとめたりしています。元論文はこちらです。コードとpretrainedモデルはこちらです。

ざっくりとはどんな論文?(忙しい方へ)

  • リアルタイムで任意のstyle transferを可能にするAdaptive instance normalizationという手法を開発しました。
  • コンテンツ画像に対するスタイルの様々なコントロールが可能になりました。

要約

これまで style transfer には低速な iterative optimization process が必要でした。高速なものも提案されましたが、そのネットワークは通常、固定されたスタイルのセットに関連付けされており、任意の新しいスタイルに適応できませんでした。この論文では、シンプルで効果的なアプローチを初めて提示し、リアルタイムで任意の style transfer を可能にします。私達の手法の中心にあるのは、コンテンツの特徴量の平均と分散をスタイルの特徴量の平均と分散に合わせる Adaptive instance normalization(AdaIN) レイヤーです。事前定義されたスタイルのセットに制限されることなく、既存の最速のアプローチに匹敵する速度を実現しています。さらに、コンテンツスタイルのトレードオフ、スタイルの補間、色と空間のコントロールなど、柔軟なコントロールがすべて単一の feed-forward neural network を使用して可能になっています。

補足: style transfer について

style transfer とはコンテンツ画像(下の画像の真ん中)の内容と、スタイル画像(下の画像の左)の画風を混ぜ合わせた画像(下の画像の右)を出力するタスクです。左の絵の画風にアレンジされたようなブラピになっています。

導入

Gatys の研究では、Deep neural network が画像の内容だけでなく、スタイル情報も encode することを示しています。さらに、画像のスタイルとコンテンツはある程度分離可能であり、コンテンツを保持したまま画像のスタイルを変更することが可能です。Gatys の style transfer の手法は、任意の画像のコンテンツとスタイルを組み合わせることができる柔軟性を持っています。しかし、この手法は処理に長い時間がかかります。この問題に対処した最近の研究がいくつかありますが、それらはまだ有限のスタイルセットに限定されているか、または単一の style transfer の手法よりもはるかに遅いです。本研究では、この柔軟性と速度のジレンマを解決する最初の neural style transfer アルゴリズムを提案します。私達の手法は instance normalization(IN) layer に触発されており、feed-forward style transfer において驚くほど効果的です。instance normalization の成功を説明するために、画像のスタイル情報を伝達することがわかっている特徴量の統計値を正規化することによって、instance normalization が style normalization を行うという新しい解釈を提案します。この解釈に基づいて、IN のシンプルな拡張、Adaptive instance normalization(AdaIN) を導入します。コンテンツ入力とスタイル入力が与えられると、AdaIN はシンプルにコンテンツ入力の平均と分散をスタイル入力のものと一致するように調整します。実験により、AdaIN は特徴量の統計値を伝達することで、前者の内容と後者のスタイルを効果的に組み合わせていることがわかりました。その時 decoder network は画像空間に AdaIN の出力を落とし込むことによって、スタイル化された画像を生成するように学習されます。私達の手法は、入力を任意の新しいスタイルに変換する柔軟性を持ちつつ、Gatys の手法よりも3桁近く高速です。さらに学習プロセスに手を加えることなく、実行時に豊富なユーザコントロールを提供します。

関連研究

Style transfer

Gatys は、DNN の畳み込み層の特徴量の統計値をマッチングさせることで、印象的な style transfer の結果を初めて示しました。また、Gatys はこちらの論文で色の保存、空間的な位置、sytle transfer のスケールをコントロールする方法を提案しています。Gatys らのフレームワークは,損失ネットワークによって計算されたコンテンツ損失とスタイル損失を最小化するために画像を反復的にアップデートする低速な最適化プロセスに基づいています。 最近の GPU でも収束するのに数分かかることがあります。そのため、モバイルアプリケーションでのオンデバイス処理は遅すぎます。一般的な回避策は、最適化プロセスを、同じ目的関数を最小化するように訓練された feed-forward neural network に置き換えることです。このアプローチは、最適化ベースの代替手法に比べて約3桁分速く、リアルタイム・アプリケーションへの扉を開いています。

Deep generative image modeling

画像生成のためのフレームワークには、variational auto-encodersauto-regressive modelsgenerative adversarial networks などがある。驚くべきことに、GAN は最も印象的なクオリティを実現しています。GAN は style transfer やクロスドメイン画像生成にも応用されています。

背景

Batch Normalization

IoffeとSzegedy は、特徴量の統計値を正規化することで feed-forward network の学習を大幅に容易にする batch normalization(BN) layer を導入しました。BN layers はもともと識別器の学習が加速されるようにデザインされていますが、画像生成モデリングにも効果的であることもわかっています。BN の式は以下の通りです。

Γ と β はデータから学習する affine parameter です。μ(x) と σ(x) はミニバッチごとの平均値と標準偏差であり、各 feature channel ごとにバッチサイズと入力の次元にわたって計算されます。下の図の一番左のようなイメージです(参考元)

BN についてはこちらの記事に詳しくまとめられています。

Instance Normalization

style transfer network はそれぞれの畳み込み層の後にBNを入れ込んでいますが、それを instance normalization(IN) layers に入れ替えるだけで大きな改善があることがわかりました。

BN と違う点は、各チャンネル独立に画像の縦横方向についてのみ平均・分散を取る点です。下の図の右から2番目のような感じです。

他の違いは、IN レイヤーは推論時に変更されずに適用されるのに対し、BN レイヤーは通常、ミニバッチの統計値を母集団の統計値に置き換えます。

Conditional Instance Normalization

Dumoulin らは、単一のアフィンパラメータ γ および β のセットを学習する代わりに、スタイル s ごとに異なるパラメータΓs および βs のセットを学習する conditional instance normalization(CIN) layer を提案しました。

学習の間、s はランダムに選ばれます。コンテンツ画像は、対応する γs と βs が CIN レイヤーで使用される、style transfer network によって処理されます。正規化層のないネットワークと比較して、CIN 層のあるネットワークには2FSの追加パラメーターが必要です。F はネットワーク内の feature maps の総数です。追加のパラメーターの数はスタイルの数に比例して変化するため、そのメソッドを拡張して多数のスタイル(たとえば、数万)をモデル化することは困難です。また、彼らのアプローチは、ネットワークを再訓練することなしに、任意の新しいスタイルに適応することはできません。

Interpreting Instance Normalization

instance normalization は大成功を収めていますが、style transfer に特にうまく機能する理由はいまいちわかっていません。驚くべきことは、IN の affine parameter が出力画像のスタイルを完全に変更できるという事実です。私達は、instance normalization が平均と分散を正規化することによって、style の正規化を実行していると主張します。単一の style tranfer を IN または BN を用いて実行した結果が下の図です。(a)は元画像、(b)は輝度チャネルに対して正規化して同じコントラストになった画像、(C)は予めスタイル正規化した画像を使っています。(a)と(b)では IN の有効性が示されているが、(c)では BN とほとんど変わらない結果となっている。このことから IN が一種のスタイル正規化を実行していることがわかります。

BN はバッチごとに正規化を行うため、全ての画像を同じスタイルに変換するのには適していません。それに対して、IN は個々のサンプルのスタイルをターゲットスタイルに正規化できます。 残りのネットワークは、元のスタイル情報を破棄しながらコンテンツ操作に集中できるため、トレーニングが容易になります。

Adaptive Instance Normalization

ここでは、adaptive instance normalization(AdaIN) と呼ぶ、IN のシンプルな拡張を提案します。 AdaIN はコンテンツ入力xとスタイル入力yを受け取り、x のチャネルごとの平均と分散を調整して、y のそれらと一致させます。 BN、IN、CIN とは異なり、AdaIN には学習可能な affine parameter はありません。 代わりに、スタイル入力から affine parameter を計算します。正規化されたコンテンツ入力を σ(y) でシンプルにスケーリングし,それを μ(y) でシフトしています。

実験のセットアップ

Fig 2 は、提案された AdaIN 層に基づく style transfer network の概要を示しています。コードと pretrained モデルこちらから入手可能です。

Architecture

私達の style transfer network T は、コンテンツ画像 c と任意のスタイル画像 s を入力とし、前者のコンテンツと後者のスタイルを再結合した出力画像を合成します。encoder f が事前に訓練された VGG-19 の最初の数層に固定されているシンプルな encoder-decoder アーキテクチャを採用します。コンテンツ画像とスタイル画像を特徴空間に encode した後、コンテンツ feature map の平均と分散をスタイル feature map の平均と分散に合わせる AdaIN 層に両方の feature map を送り、目標とする feature map t を生成します。

ランダムに初期化された decoder g は t を画像空間にマップするようにトレーニングされ、スタイル化された image T(c,s) を生成します。

decoder は、checkerboard effects を減らすために全ての pooling layers を nearest up-sampling に置き換えた encoder を、ほとんどミラーリングしています。border artifacts を避けるために encoder f と decoder g の両方で reflection padding を用います。他の重要な選択としては、decoder が instance、batch のどちらかをを用いるのか、それとも normalization layers を用いないのかというものです。

補足: checkerboard effects について

checkerboard effects とは、生成した画像に格子状の模様が発生してしまう現象です。具体的には下のような感じです。このような現象が起こる理由とその回避策はこちらにまとめてあります。

Training

MS-COCO をコンテンツ画像として使用し、主に WikiArt からスタイル画像として収集された絵画のデータセットを使用して、ネットワークをトレーニングします。adam optimizer と8個の content と style image ペアのバッチサイズを使います。学習中、アスペクト比を維持しながら両方の画像を512に変更し、ランダムに256*256にクロップします。私達のネットワークは fully convolutional なので、テストのときにどのサイズの画像でも可能です。FCN(Fully Convolutional Network) は、全結合層を持たず、ネットワークが畳み込み層のみで構成されています。decoder を学習させるために、pre-trained VGG19 を使って下の loss function を計算します。

これは、コンテンツ損失 Lc とスタイル損失 Ls とスタイル損失重み λ の重み付きの組み合わせです。コンテンツの損失は、target feature と出力画像のfeature 間のユークリッド距離です。

AdaIN レイヤーはスタイルフィーチャの平均と標準偏差のみを transfer するため、これらの2乗誤差を計算します。

Results

Comparison with other methods

このサブセクションでは、3つのタイプの style transfer と私たちのアプローチを比較します。(1)柔軟性があるが遅い最適化ベースの方法(Fig 4 の1番右)、(2)単一のスタイルに制限された高速 feed-forward 法(Fig 4 の右から2番目)、(3)中速の柔軟なパッチベースの方法(Fig 4 の右から3番目)。

Qualitative Examples

各手法と output 画像を比較したものが下の Fig4 です。(1)(2)と比較すると同等か若干劣っています。ただ、速度、柔軟性、品質の間には3者間のトレードオフがあると私たちは考えているので、これは予想外のことではありません。(3)と比較するとほとんどの画像でより忠実に style transfer を実行しています。

Quantitative evaluations

私たちのアルゴリズムは、速度と柔軟性を高めるためにいくつかの品質をトレードオフしているか、という問題に定量的に答えるために、コンテンツとスタイルの損失に関して、(1)と(2)を使用して比較します。私たちの方法は IN 統計に基づくスタイル損失を使用するため、公平な比較のために(1)と(2)の損失関数も変更します。
報告された数値は、WikiArt データセットと MS-COCO のテストセットからランダムに選択された10のスタイル画像と50のコンテンツ画像の平均です。

Figure3 を見ると私達の方法と(2:図のオレンジ)は少ない iteration で(1:図の青)に近い loss になっています。また、(2)がテストデータで学習しているのに対して、私達のモデルは学習データに含めていないので汎化性能が高いことがわかります。

Speed analysis

私たちの方法の計算のほとんどは、コンテンツの encode、スタイルの encode、および docode に費やされ、それぞれおよそ3分の1の時間がかかります。 動画処理などのアプリケーションでは、スタイル画像を1回だけ encode する必要があり、AdaIN は保存されたスタイル統計値を使用して後続のすべての画像を処理できます。 他のいくつかのケース(たとえば、同じコンテンツを異なるスタイルに転送する)では、コンテンツの encode に費やされた計算を共有できます。

Table 1 では、私達の手法の速度を既存の手法と比較します。スタイル encoding の時間を除くと、アルゴリズムは256×256および512×512の画像に対してそれぞれ56および15 FPS で実行され、ユーザーがアップロードした任意のスタイルをリアルタイムで処理できます。いくつかの手法より私達の手法がわずかに長いのは、主に手法の問題ではなく、大規模な VGG ベースのネットワークが原因です。より効率的なアーキテクチャを使用すると、速度をさらに向上させることができます。

Additional experiments.

このサブセクションでは、私達の重要な設計上の選択を正当化するために実験を行います。Enc-AdaIN-Dec として Sec6 で記述されたアプローチについて特に言及します。AdaIN を concatenation に置き換えた Enc-Concat-Dec と呼ばれるモデルを実験します。これは、コンテンツとスタイル画像からの情報を組み合わせるための自然なベースライン戦略です。それに加えて、decoder に BN/IN layers を加えたモデル、Enc-AdaIN-BNDec と Enc-AdaIN-INDec をそれぞれ実験します。学習における他の設定は同じです。Fig5 と Fig6 で比較された方法の training curvesとexamples を示します。

Enc-Concat-Dec baseline (Fig. 5 (d)) で生成された画像において、スタイル画像の物体の輪郭(鳥みたいなやつ)ははっきりと見られ、ネットワークがスタイル画像からスタイル情報だけ取り出すことに失敗していると思われます。これは Enc-Concat-Dec が style loss は低くなっているが、content loss を低くするのに失敗している Fig6 にも一致しています。BN/IN layers があるモデルも画像の質的に悪い結果かつ一貫して高い loss となっています。IN layers がある結果は特に悪いです。これは、IN layers が単一の style の結果を正規化する傾向にあり、異なるstyleにおける画像を生成したいときには避けるべきであるという私達の主張を確認するものになっています。

Runtime controls

メソッドの柔軟性をさらに強調するために、style transfer network を使用して、スタイル設定の度合いを制御し、異なるスタイル間を補間し、色を保持しながらstyle transfer を行えることを示します。

Content-style trade-off

style weight λ(11の式) を調整することで学習中に style transfer をコントロールできます。

networkはα = 0 のとき忠実にコンテンツ画像を再構築し、α = 1 のときほとんどスタイル化された画像を生成します。Fig.7 で示されるように α を0から1に変えることによって、content-smilarity と style-similarity の間の滑らかな変化が見られます。

Style interpolation

K 個の重み w がある style images s1, s2, …., sK の間を補間するためには、Fig8 の結果のように feature maps の間を補間します。

Spatial and color control

コンテンツ画像の色を保持するには、最初にスタイル画像の色分布をコンテンツの色分布と一致させます。次に、色調整されたスタイル画像をスタイル入力として使用して、通常のスタイル転送を実行します。Fig 9 がその結果です。

Fig 10 では、この方法でコンテンツ画像のさまざまな領域をさまざまなスタイルに転送できることを示しています。

結論

この論文では、リアルタイムでの任意の style transfer を初めて可能にする AdaIN layer を発表しています。魅力的なアプリケーション以上に、この技術は深い画像表現の理解に光を投げかけると信じています。私達のアプローチのシンプルさを考えると、まだまだ改善の余地があると考えています。今後の研究では、残差アーキテクチャや encoder からのスキップ接続を追加したアーキテクチャなど、より高度なネットワークアーキテクチャを探索する予定です。もう一つの興味深い方向性は、AdaIN を文章合成に適用することです。

感想

これだけ自由自在に style transfer をコントロールできるのには驚きました。GAN では、男性の顔を少しずつ女性の顔にしたりなど、画像のスタイルをコントロールするものがあるので、AdaIN を使う必要性が出てくるのだと思います。

本記事は qiita にも投稿されております。
元記事:https://qiita.com/Hiroaki-K4/items/bd4ea4e74200cbd277de