ReNomによるNeural Style Transfer
-
Upload
renom-user-group -
Category
Data & Analytics
-
view
159 -
download
0
Transcript of ReNomによるNeural Style Transfer
![Page 1: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/1.jpg)
ReNom User Group #3
ReNomによるNeural Style Transfer
2017/11/08
後藤 昂彦
![Page 2: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/2.jpg)
自己紹介
名前後藤 昂彦(ごとう あきひこ)
仕事特許庁 審査第四部 電子商取引検索技術,データベース等の特許審査を担当非エンジニア
ReNom歴 1ヶ月 2年半ぶりにコード書いた
※本内容は組織の意見を代表するものではありません1
![Page 3: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/3.jpg)
今日話すこと
Neural Style TransferをReNomで実装してみた
Neural Style Transferとは?
アルゴリズムをざっくり説明
ReNomによる実装例
実行結果2
![Page 4: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/4.jpg)
Neural Style Transferとは?
DNNを使ったStyle Transfer(画風変換) Gatys et al., 2016.画像を”名画っぽく”変換してくれる
活用例
3
コンテンツ画像 スタイル画像
↑モバイルアプリ「Prisma」
#ProjectPuppetron →(Adobe Max 2017 Sneaks)
服のデザイン →(Ganesan et al., 2017)
![Page 5: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/5.jpg)
アルゴリズム
コンテンツとスタイルの分離
画素を変数とする最適化問題として定式化
4
StyleRepresentation
ContentRepresentation C
S
![Page 6: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/6.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
5
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 7: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/7.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
6
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 8: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/8.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
7
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
![Page 9: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/9.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
8
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
![Page 10: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/10.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
9
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
![Page 11: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/11.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
10
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
“猫”
画像を入力したときの中間層の出力に着目
![Page 12: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/12.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
11
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 13: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/13.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
12
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 14: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/14.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
13
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 15: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/15.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
14
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
![Page 16: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/16.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
15
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
![Page 17: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/17.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
16
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
![Page 18: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/18.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
17
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
![Page 19: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/19.jpg)
アルゴリズム
学習済みCNNの特徴空間を利用 Content表現:高レイヤーの特徴マップ出力 Style表現:レイヤー内の特徴マップ間の相関
18
Layer1
Layer2
Layer3
Layer4
Layer5
VGG-16
勾配降下法
![Page 20: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/20.jpg)
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におまかせ
![Page 21: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/21.jpg)
実行結果
20
GPU:ONepoch:2000生成時間:11分49秒
![Page 22: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/22.jpg)
画像生成の様子(epoch 0 → 50)
21
![Page 23: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/23.jpg)
その他の結果(1/2)
22
![Page 24: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/24.jpg)
その他の結果(2/2)
23
![Page 25: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/25.jpg)
まとめ
Neural Style TransferをReNomで実装したネットワークの重みではなく画素を更新する枠組み
コードは割とシンプル lossさえ定義できればあとはgrad().update()でOK
入力画像やパラメタにもよるが,比較的きれいな画像を生成できた
24
ReNomチュートリアルに項目があるので,興味のある方は試してみてください!・・・GPUないと数時間かかるけど・・・
![Page 26: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/26.jpg)
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
![Page 27: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/27.jpg)
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
![Page 28: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/28.jpg)
おまけ
特許出願されてるっぽい
出願人は論文著者ら
ヨーロッパに国際出願
最終結果は出ていない模様
27
![Page 29: ReNomによるNeural Style Transfer](https://reader034.fdocument.pub/reader034/viewer/2022051007/5a6758ea7f8b9a656a8b48f7/html5/thumbnails/29.jpg)
28
Thank you!