style transfer
TRANSCRIPT
![Page 1: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/1.jpg)
Style Transfer 概観2016 年 12 月 17 日
今回は Style Transfer に関する手法についていくつかの論文を紹介します.手法自体はシンプルですがとても面白いです.表紙スライドの背景にはスタイルとしてよく使われるゴッホの星月夜を使ってみました.
1 / 16
![Page 2: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/2.jpg)
Style Transfer とは
Gatys et al. 2016 より引用
ある画像にコンテンツ ( 内容 ) を損なわないように別の画像のスタイル ( 画風 ) を写す手法のこと.いわゆる画風変換Neural Network を使った Style Transfer が Gatys et al. 2016a で提案され(プレプリント版 Gatys et al. 2015 は 2015 年 8 月)その後続々と改良版が提案されている
![Page 3: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/3.jpg)
Gatys et al. 2016a で提案された手法の概要
コンテンツ画像
生成画像を,はじめ一様乱数で初期化し,勾配降下法でスタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
コンテンツの損失
生成画像
この線形和を最小化するように勾配降下法を行う
�⃗�← �⃗�−𝜆𝜕ℒtotal
𝜕�⃗�
ℒtotal=𝛼ℒstyle+𝛽ℒcontent
:学習率
スタイル画像
![Page 4: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/4.jpg)
Gatys et al. 2016a で提案された手法の概要
コンテンツ画像
スタイル画像
生成画像を,はじめ一様乱数で初期化し,勾配降下法でスタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
コンテンツの損失
生成画像
:学習率
この線形和を最小化するように勾配降下法を行う
�⃗�← �⃗�−𝜆𝜕ℒtotal
𝜕�⃗�
ℒtotal=𝛼ℒstyle+𝛽ℒcontent
![Page 5: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/5.jpg)
Gatys et al. 2016a で提案された手法の新しい点この損失関数 と を計算するのに訓練済み CNN を使う
conv53conv52conv51
conv 43conv 42conv 41
conv 22conv 21
Dense
Dense
conv12conv11pooling
conv 33conv 32conv 31
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
画像認識のコンペで優勝したモデル VGG を使う を入力した時の中間層 の出力の 番目のチャンネルの座標 の値を次で表す• コンテンツの損失• スタイルの損失次の Gram matrix を用いて
(は層の画素数などの違いを吸収する係数)
2 次元座標をの 1 文字で表す
![Page 6: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/6.jpg)
Gatys et al. 2016a で提案された手法の新しい点この損失関数 と を計算するのに訓練済み CNN を使う
conv53conv52conv51
conv 43conv 42conv 41
conv 22conv 21
Dense
Dense
conv12conv11pooling
conv 33conv 32conv 31
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
画像認識のコンペで優勝したモデル VGG を使う を入力した時の中間層 の出力の 番目のチャンネルの座標 の値を次で表す• コンテンツの損失• コンテンツの損失次の Gram matrix を用いて
(は層の画素数などの違いを吸収する係数)
2 次元座標をの 1 文字で表すGatys et al. 2016a では VGG19 が使われていますが VGG19 でも VGG16 結果があまり変わらず,以降の手法で VGG16 が使われているためVGG16 で例を書きました.
![Page 7: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/7.jpg)
コンテンツの損失について
conv53conv52conv51
conv 43conv 42conv 41
conv 22conv 21
Dense
Dense
conv12conv11pooling
conv 33conv 32conv 31
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
コンテンツの損失
画像を分類するように訓練された VGG では左図の下層に行けば行くほど分類に必要な情報が強調されるようになるそのため下層のみを使うことで色などのスタイルに依存しない損失を計算できる論文では特に言及されていないが,同じ座標を比較しているのでエッジなどの特徴的な部分は変換後も大きくはずれないはず( conv と pool で小さくなるので多少はずれうる)
![Page 8: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/8.jpg)
選ぶ層の深さによるコンテンツ表現の違い
Gatys et al. 2016a より引用
コンテンツの損失を計算するときに使う層として conv4_2 が選ばれているが,これは(おそらく)実験的に最もそれらしい画像が得られる層を選んでいるのだと思う(たぶん).左の図はコンテンツの損失に使う層によって結果として得られる図がどのように変化するか見たもので, conv4_2の方がそれっぽくなっていることがわかる.
![Page 9: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/9.jpg)
スタイルの損失について
conv53conv52conv51
conv 43conv 42conv 41
conv 22conv 21
Dense
Dense
conv12conv11pooling
conv 33conv 32conv 31
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
スタイルの損失
行列各要素は同じ層の各チャンネル間の相関を表す
コンテンツの損失と違って各層の出力を Gram matrixにしてから二乗誤差を計算しているのでどの場所に何があるかの配置は損失に関係してこない
![Page 10: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/10.jpg)
個人的おもしろポイントと問題点• 個人的おもしろポイント一般に損失関数と言えば,二乗誤差などの簡単な関数を使うが
CNN という非常に複雑な関数を損失関数として使ったのが面白い!転移学習とも違う学習済みモデルの使い方( Deep dream と似たような枠組みだが実用性が高い)• 問題点生成のために順伝播・逆伝播を繰り返すのでとにかく遅い!
1 枚の画像を生成するのにハイエンド GPU 使っても 10 秒以上かかるとのことGTX980Ti と Tensorflow を使って実験してみたところ
1000 イテレーションで数分くらいだった
![Page 11: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/11.jpg)
Gatys et al. 2016a で提案された手法の概要 ( 再掲 )
コンテンツ画像
生成画像を,はじめ一様乱数で初期化し,勾配降下法でスタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
コンテンツの損失
生成画像
この線形和を最小化するように勾配降下法を行う
�⃗�← �⃗�−𝜆𝜕ℒtotal
𝜕�⃗�
ℒtotal=𝛼ℒstyle+𝛽ℒcontent
:学習率
スタイル画像
![Page 12: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/12.jpg)
高速化するために…コンテンツ画像
生成画像
なんらかの関数
一様
入力
一様乱数 とコンテンツ画像 を入力し画風変換された画像を出力する変換を何らかの関数で近似したい!→ ここにも CNN を使う!
![Page 13: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/13.jpg)
Ulyanov et al. 2016a で提案された手法の概要コンテンツ画像
スタイル画像
ノイズとコンテンツ画像から画像を生成する CNN を学習する
生成画像
GeneratorNetwork VGG
Gatys et al. 2016a では学習はしていない一様
入力
画像を生成
損失とその勾配を計算
入力
入力 入力500 倍速い!
![Page 14: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/14.jpg)
Ulyanov et al. 2016a のネットワーク構造
図は Ulyanov et al. 2016a より引用
図は texture generation のタスクの場合.Style transfer の場合はまであって各にコンテンツ画像が concat されるGatys et al. 2016a では毎回 1 から生成していたのでスタイルの損失とコンテンツの損失の重み付けを画像ごとにできたが,この手法では学習時に設定した重み付けがテスト時にも使われ調節ができない→ 入力するノイズのスケールを調節することで調節できることを発見ResNet っぽいが逆に Upsampling で大きくなっていく
![Page 15: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/15.jpg)
Ulyanov et al. 2016a における重み付け
Ulyanov et al. 2016a より引用
ノイズのスケールを変化させたときの生成画像の変化スケールが小さい方がコンテンツ(枝にとまった鳥)が大きく残り,スケールが大きくなるとほぼスタイルだけになっている
![Page 16: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/16.jpg)
Johnson et al. 2016 で提案された手法の概要
図は Johnson et al. 2016 より引用
CNN は Downsampling→Residual blocks→Upsampling という構成になっているスタイルとコンテンツの重みの調整はおそらくできない(言及されていない)がGatys et al. 2016a のおよそ 1000倍の速度で画像を生成できる(実装によっては入力画像にノイズを入れて重みの調節をしているものも)この論文のおもしろポイントは同じネットワークを使って画像の高解像度化ができることを示していること→ 大きな CNN を使った損失関数は Style Transfer 以外でも利用できる
![Page 17: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/17.jpg)
Johnson et al. 2016 による高解像度化
Johnson et al. 2016 より引用
![Page 18: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/18.jpg)
Dumoulin et al. 2016 のアイディアこれまでの手法では 1 つのスタイルへの変換を 1 つの CNN で行っている→ 複数のスタイルへの変換を 1 つの CNN で行うことはできないのか?同じ画家の絵なら同じような筆遣いが見られる → ある程度共有できるはず!
![Page 19: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/19.jpg)
Dumoulin et al. 2016 における発見we found a very surprising fact about the role of normalization in style transfer networks: to model a style, it is sufficient to specialize scaling and shifting parameters after normalization to each specific style.
Dumoulin et al. 2016 より引用最近の CNN では一般に Batch Normalization というテクニックが使われている→ 伝播してきたミニバッチの中で各次元の平均を 0 に分散を 1 にするBatch Normalization をかけた後に適当な定数を指定しておいてこれをスケールしたりシフトしたりすることがあるがこのスケールやシフトのパラメータを学習させてスタイル毎に切り替えるだけで(他の畳み込み層などのパラメータは同じのままで)複数のスタイルに変換することができるということを発見したこの発見に基づき conditional instance normalization を提案した
![Page 20: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/20.jpg)
Conditional instance normalization
学習するスタイル数を,このバッチで使うスタイルの番号をとするConditional instance normalization ではチャンネル毎に学習対象となる次元ベクトルを用意しておき入力を正規化した後 でスケールし でシフトしたものを出力する
図は Dumoulin et al. 2016 より引用
![Page 21: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/21.jpg)
実行例(同じ画家の複数の絵から学習)10種類のモネの絵のスタイルを学習した結果の一部一つのネットワークで複数のスタイルを学習することができている
Dumoulin et al. 2016 より引用
![Page 22: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/22.jpg)
実行例(別の画家の複数の絵から学習)32種類の別々の画家による絵のスタイルを学習した結果の一部驚くべきことに大きく異なる画風もスケールとシフトの違いだけで学習できている
Dumoulin et al. 2016 より引用
![Page 23: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/23.jpg)
実行例( 32種類全部)
https://github.com/tensorflow/magenta/tree/master/magenta/models/image_stylizationのコードを用いて生成したもの
Github でコードと学習済みモデルが公開されているので簡単に試せる
![Page 24: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/24.jpg)
Dumoulin et al. 2016 による画風の合成学習された はスタイルの Embedding になっていると考えられ,凸結合でスタイルを合成することができる
Dumoulin et al. 2016 より引用
![Page 25: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/25.jpg)
Dumoulin et al. 2016 における新しいスタイルの追加畳み込み層などの重みは全てのスタイルで共有されているので,学習済みのネットワークに新しいスタイルを追加する場合にはネットワークの重みは固定したまま,新しい だけを学習することで少ない更新で学習することができる
5000 step 程度で 1 から学習させた場合の 40000 step に近い loss になっている図は Dumoulin et al. 2016 より引用
![Page 26: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/26.jpg)
Dumoulin et al. 2016 におけるスタイルのパラメータ数
Dumoulin et al. 2016 より引用
• ネットワークのパラメータ数• チャンネル数の合計• 1 スタイルのパラメータ数
非常に少ないパラメータが結果に大きな影響を与えているネットワーク構成が過剰なのか少ないパラメータで変換できるようにするのが難しいのか…このスタイル毎のパラメータを予測するような NN をつくれたら何の学習もなく画風変換することができるようになる(すごい)
![Page 27: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/27.jpg)
まとめ• Style Transfer に関する論文をいくつか紹介した
• プレプリントが出た 2015 年 8 月から 1 年ちょいで複数スタイルまで出る• すごい
• 時間の関係により紹介できなかったもの• Novak & Nikulin 2016
• 損失関数の工夫などで改善を行っている.職人芸• Gatys et al. 2016b
• 元画像の色を保持したまま画風変換を行う• 色の平均・分散を合わせる方法と輝度値だけ変換する方法
• Ruder et al. 2016• Style Transfer を動画に用いる手法を提案
• Ulyanov et al. 2016b• instance normalization で明度などの影響を除去
• Chen & Schmidt 2016• Patch-based な手法でスタイルとコンテンツの両方を入力とする Feedforward Network を構築.任意のスタイルを適用できる
![Page 28: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/28.jpg)
Reference I
![Page 29: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/29.jpg)
Reference II
![Page 30: Style transfer](https://reader035.vdocuments.site/reader035/viewer/2022070520/58f2331b1a28abf5358b45a3/html5/thumbnails/30.jpg)
Reference III絵の引用元• Vincent van Gogh - The Starry Night
https://commons.wikimedia.org/wiki/File:VanGogh-starry_night.jpg
• Claude Monet - Rouen Cathedral. Facade (Morning effect)
https://commons.wikimedia.org/wiki/File:Claude_Monet_-
_Rouen_Cathedral,_Facade_(Morning_effect).JPG
• Claude Monet - Poppy Field in Argenteuil
https://commons.wikimedia.org/wiki/File%3APoppy_Field_in_Argenteuil%2C_Claude_Monet.jpg
• Claude Monet - Plum Trees In Blossom At Vetheuil
https://www.wikiart.org/en/claude-monet/plum-trees-in-blossom-at-vetheuil
• Claude Monet - Les Nymphéas
https://commons.wikimedia.org/wiki/File:Claude_Monet_038.jpg