Más contenido relacionado Style transfer2. Style Transferとは
Gatys et al. 2016より引用
ある画像にコンテンツ(内容)を損なわ
ないように別の画像のスタイル(画風)
を写す手法のこと.
いわゆる画風変換
Neural Networkを使ったStyle Transfer
がGatys et al. 2016aで提案され(プレ
プリント版 Gatys et al. 2015 は 2015
年8月)その後続々と改良版が提案さ
れている
3. Gatys et al. 2016a で提案された手法の概要
コンテンツ画像 𝑝
生成画像を,はじめ一様乱数で初期化し,勾配降下法で
スタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
ℒstyle
コンテンツの損失
ℒcontent
生成画像 𝑥
この線形和を最小化するように勾配降下法を行う
𝑥 ← 𝑥 − 𝜆
𝜕ℒtotal
𝜕 𝑥
ℒtotal = 𝛼ℒstyle + 𝛽ℒcontent
𝜆:学習率
スタイル画像 𝑎
4. Gatys et al. 2016a で提案された手法の概要
コンテンツ画像 𝑝
スタイル画像 𝑎
生成画像を,はじめ一様乱数で初期化し,勾配降下法で
スタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
ℒstyle
コンテンツの損失
ℒcontent
生成画像 𝑥
𝜆:学習率
この線形和を最小化するように勾配降下法を行う
𝑥 ← 𝑥 − 𝜆
𝜕ℒtotal
𝜕 𝑥
ℒtotal = 𝛼ℒstyle + 𝛽ℒcontent
5. Gatys et al. 2016a で提案された手法の新しい点
この損失関数 ℒstyle と ℒcontent を計算するのに訓練済みCNNを使う
conv5_3conv5_2conv5_1
conv4_3conv4_2conv4_1
conv2_2conv2_1
Dense
Dense
conv1_2conv1_1
pooling
conv3_3conv3_2conv3_1
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
画像認識のコンペで優勝したモデルVGGを使う
𝑥 を入力した時の中間層 𝑛_𝑚 の出力の
𝑖 番目のチャンネルの座標 𝑗 の値を次で表す
conv 𝑛_𝑚 𝑥 𝑖,𝑗
• コンテンツの損失
ℒcontent =
𝑖,𝑗
conv4_2 𝑥 𝑖,𝑗 − conv4_2 𝑝 𝑖,𝑗
2
• スタイルの損失
次のGram matrix 𝐺 を用いて
𝐺( 𝑥)𝑖1,𝑖2
𝑙
=
𝑘
(conv𝑙 𝑥 𝑖1,𝑘conv𝑙 𝑥 𝑖2,𝑘)
ℒstyle =
𝑛=1
5
1
𝐴𝑙
𝑖1,𝑖2
𝐺 𝑥 𝑖1,𝑖2
𝑛_1
− 𝐺 𝑎 𝑖1,𝑖2
𝑛_1 2
(𝐴𝑙は層の画素数などの違いを吸収する係数)
2次元座標を
𝑗の1文字で表す
6. Gatys et al. 2016a で提案された手法の新しい点
この損失関数 ℒstyle と ℒcontent を計算するのに訓練済みCNNを使う
conv5_3conv5_2conv5_1
conv4_3conv4_2conv4_1
conv2_2conv2_1
Dense
Dense
conv1_2conv1_1
pooling
conv3_3conv3_2conv3_1
pooling
pooling
pooling
pooling & flatten
VGG 16 layers (Simonyan & Zisserman, 2014)
Dense
画像認識のコンペで優勝したモデルVGGを使う
𝑥 を入力した時の中間層 𝑛_𝑚 の出力の
𝑖 番目のチャンネルの座標 𝑗 の値を次で表す
conv 𝑛_𝑚 𝑥 𝑖,𝑗
• コンテンツの損失
ℒcontent =
𝑖,𝑗
conv4_2 𝑥 𝑖,𝑗 − conv4_2 𝑝 𝑖,𝑗
2
• コンテンツの損失
次のGram matrix 𝐺 を用いて
𝐺( 𝑥)𝑖1,𝑖2
𝑙
=
𝑘
(conv𝑙 𝑥 𝑖1,𝑘conv𝑙 𝑥 𝑖2,𝑘)
ℒstyle =
𝑛=1
5
1
𝐴𝑙
𝑖1,𝑖2
𝐺 𝑥 𝑖1,𝑖2
𝑛_1
− 𝐺 𝑎 𝑖1,𝑖2
𝑛_1 2
(𝐴𝑙は層の画素数などの違いを吸収する係数)
2次元座標を
𝑗の1文字で表す
Gatys et al. 2016a ではVGG19が使われています
がVGG19でもVGG16結果があまり変わらず,以降
の手法でVGG16が使われているためVGG16で例
を書きました.
8. 選ぶ層の深さによるコンテンツ表現の違い
Gatys et al. 2016aより引用
コンテンツの損失を計算するときに使う
層としてconv4_2が選ばれているが,
これは(おそらく)実験的に最もそれらし
い画像が得られる層を選んでいるのだと
思う(たぶん).
左の図はコンテンツの損失に使う層に
よって結果として得られる図がどのように
変化するか見たもので,conv4_2の方が
それっぽくなっていることがわかる.
11. Gatys et al. 2016a で提案された手法の概要(再掲)
コンテンツ画像 𝑝
生成画像を,はじめ一様乱数で初期化し,勾配降下法で
スタイルの損失とコンテンツの損失が小さくなるように変化させる
スタイルの損失
ℒstyle
コンテンツの損失
ℒcontent
生成画像 𝑥
この線形和を最小化するように勾配降下法を行う
𝑥 ← 𝑥 − 𝜆
𝜕ℒtotal
𝜕 𝑥
ℒtotal = 𝛼ℒstyle + 𝛽ℒcontent
𝜆:学習率
スタイル画像 𝑎
13. Ulyanov et al. 2016a で提案された手法の概要
コンテンツ画像 𝑝
スタイル画像 𝑎
ノイズとコンテンツ画像から画像を生成するCNNを学習する
生成画像 𝑥
Generator
Network
VGG
Gatys et al. 2016a では
学習はしていない
一様乱数 𝑧
入力
画像を生成
損失とその勾配
を計算
入力
入力 入力500倍
速い!
14. Ulyanov et al. 2016a のネットワーク構造
図はUlyanov et al. 2016aより引用
図はtexture generationのタスクの場合.
Style transferの場合は𝑧6まであって各𝑧にコンテンツ画像がconcatされる
Gatys et al. 2016a では毎回1から生成していたので
スタイルの損失とコンテンツの損失の重み付けを画像ごとにできたが,
この手法では学習時に設定した重み付けがテスト時にも使われ調節ができない
→ 入力するノイズのスケールを調節することで調節できることを発見
ResNetっぽいが逆にUpsamplingで大きくなっていく
15. Ulyanov et al. 2016a における重み付け
Ulyanov et al. 2016a より引用
ノイズのスケール𝑘を変化させたときの生成画像の変化
スケールが小さい方がコンテンツ(枝にとまった鳥)が大きく残り,
スケールが大きくなるとほぼスタイルだけになっている
16. Johnson et al. 2016 で提案された手法の概要
図はJohnson et al. 2016より引用
CNNは Downsampling→Residual blocks→Upsampling という構成になっている
スタイルとコンテンツの重みの調整はおそらくできない(言及されていない)が
Gatys et al. 2016a のおよそ1000倍の速度で画像を生成できる
(実装によっては入力画像にノイズを入れて重みの調節をしているものも)
この論文のおもしろポイントは
同じネットワークを使って画像の高解像度化ができることを示していること
→ 大きなCNNを使った損失関数はStyle Transfer以外でも利用できる
18. Dumoulin et al. 2016 のアイディア
これまでの手法では1つのスタイルへの変換を1つのCNNで行っている
→ 複数のスタイルへの変換を1つのCNNで行うことはできないのか?
同じ画家の絵なら同じような筆遣いが見られる → ある程度共有できるはず!
19. 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 を提案した
24. Dumoulin et al. 2016 による画風の合成
学習された 𝛾, 𝛽 はスタイルのEmbeddingになっていると考えられ,
凸結合でスタイルを合成することができる
𝛾new =
𝑠=1
𝑁
𝑤𝑠 𝛾𝑠 , 𝛽new =
𝑠=1
𝑁
𝑤𝑠 𝛽𝑠 但し 𝑤𝑠 ≥ 0 かつ
𝑠=1
𝑁
𝑤𝑠 = 1
Dumoulin et al. 2016 より引用
25. Dumoulin et al. 2016 における新しいスタイルの追加
畳み込み層などの重みは全てのスタイルで共有されているので,
学習済みのネットワークに新しいスタイルを追加する場合には
ネットワークの重みは固定したまま,新しい 𝛾, 𝛽 だけを学習することで
少ない更新で学習することができる
5000 step 程度で1から学習させた場合の40000 step に近いlossになっている
図はDumoulin et al. 2016 より引用
26. Dumoulin et al. 2016 におけるスタイルのパラメータ数
Dumoulin et al. 2016 より引用
• ネットワークのパラメータ数
1674432 ≓ 𝟏. 𝟔𝐌
• チャンネル数の合計
1603
• 1スタイルのパラメータ数
2 × 1603 ≓ 𝟑. 𝟐𝐊
非常に少ないパラメータが
結果に大きな影響を与えている
ネットワーク構成が過剰なのか
少ないパラメータで変換できる
ようにするのが難しいのか…
このスタイル毎のパラメータを
予測するようなNNをつくれたら
何の学習もなく画風変換する
ことができるようになる(すごい)
27. まとめ
• 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を構築.任意のスタイルを適用できる
30. 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