Upload
renom-user-group
View
159
Download
0
Embed Size (px)
Citation preview
ReNom User Group #3
ReNomによるNeural Style Transfer
2017/11/08
後藤 昂彦
自己紹介
名前後藤 昂彦(ごとう あきひこ)
仕事特許庁 審査第四部 電子商取引検索技術,データベース等の特許審査を担当非エンジニア
ReNom歴 1ヶ月 2年半ぶりにコード書いた
※本内容は組織の意見を代表するものではありません1
今日話すこと
Neural Style TransferをReNomで実装してみた
Neural Style Transferとは?
アルゴリズムをざっくり説明
ReNomによる実装例
実行結果2
Neural Style Transferとは?
DNNを使ったStyle Transfer(画風変換) Gatys et al., 2016.画像を”名画っぽく”変換してくれる
活用例
3
コンテンツ画像 スタイル画像
↑モバイルアプリ「Prisma」
#ProjectPuppetron →(Adobe Max 2017 Sneaks)
服のデザイン →(Ganesan et al., 2017)
アルゴリズム
コンテンツとスタイルの分離
画素を変数とする最適化問題として定式化
4
StyleRepresentation
ContentRepresentation C
S
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
5
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
6
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
7
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
8
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
9
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
10
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
11
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
12
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
13
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
14
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
15
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
16
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
17
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
18
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
ReNomによる実装(骨子)
19
model = VGG16()model.load("./weights_vgg16.h5")model.set_prevent_update(True)
x = rm.Variable(p.copy())
for i in range(epoch):features_x = model(x)
loss = 0. # Style loss.for layer in ["layer1", "layer2", "layer3", "layer4", "layer5"]:
gram_x = gram_mat(features_x[layer])loss += w * rm.mean_squared_error(gram_x, gram_a[layer])¥
/ (2. * (channels*height*width)**2)# Content loss.layer = "layer4"loss += lam * rm.mean_squared_error(features_x[layer], features_p[layer])
# Updateloss.grad().update(optimizer)
①モデルの定義・学習済みの重みを読み込み・モデルの重みは更新しない
②生成画像をVariable型で初期化
③モデルの順伝播計算(各レイヤーの特徴マップ出力を取得)
④Style lossの計算
⑤Content lossの計算
⑥勾配計算して画素をUpdate
lossさえ定義できればあとはReNomにおまかせ
実行結果
20
GPU:ONepoch:2000生成時間:11分49秒
画像生成の様子(epoch 0 → 50)
21
その他の結果(1/2)
22
その他の結果(2/2)
23
まとめ
Neural Style TransferをReNomで実装したネットワークの重みではなく画素を更新する枠組み
コードは割とシンプル lossさえ定義できればあとはgrad().update()でOK
入力画像やパラメタにもよるが,比較的きれいな画像を生成できた
24
ReNomチュートリアルに項目があるので,興味のある方は試してみてください!・・・GPUないと数時間かかるけど・・・
References(1/2) Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “Image
style transfer using convolutional neural networks.” CVPR 2016.
Simonyan, K. and Zisserman, A. “Very Deep Convolutional Networks for Large-Scale Image Recognition”, arXiv:1409.1556
Prisma [https://prisma-ai.com/]
#ProjectPuppetron: Adobe MAX 2017 (Sneak Peeks) | Adobe Creative Cloud [https://www.youtube.com/watch?v=UYZMyV6bqKo]
Ganesan, Ashwinkumar, and Tim Oates. "Fashioning with Networks: Neural Style Transfer to Design Clothes." arXiv:1707.09899, 2017
25
References(2/2) “The Starry Night” , Vincent van Gogh, 1889.
“Portrait of Mademoiselle Irene Cahen d’Anvers”by Pierre-Auguste Renoir, 1880.
“The Great Wave off Kanagawa”by Katsushika Hokusai, 1847.
“Blue Painting” by Wassily Kandinsky, 1924.
Images from Pixabay [https://pixabay.com/]
26
おまけ
特許出願されてるっぽい
出願人は論文著者ら
ヨーロッパに国際出願
最終結果は出ていない模様
27
28
Thank you!