複数スタイルの融合と部分的適⽤を可能とする
Multi-style Feed-forward Network の提案
丹野 良介，柳井 啓司
電気通信⼤学 ⼤学院情報理⼯学研究科情報学専攻

Style Transferとはl 画⾵を変換するアルゴリズムのこと(2015年8⽉に公開)– 2枚の画像を⼊⼒として，⽚⽅をコンテンツ画像，⽚⽅をスタイル画像とする– コンテンツ画像に書かれた物体の配置をそのままにして，画⾵をスタイル画像に変換した画像を⽣成
現在このイメージを表示できません。

現在このイメージを表示できません。

コンテンツ画像

スタイル画像現在このイメージを表示できません。

⽣成画像

1

本研究の⽬的「Neural Style Transferをモバイル上に実装」
l 既存⼿法– 1つのモデルで1つのスタイル– 学習に時間を要する– 消費メモリの増⼤

現在このイメージを表示で現在このイメージを表示で

l 提案⼿法– 1つのモデルで複数のスタイルを変換可能– モバイル上でのリアルタイム画⾵変換
2

関連研究

現在このイメージを表示できません。

現在このイメージを表示できません。

l Neural Style Transferを提案 [Gatys+ 2015]– 画像のコンテンツ(形状)を保持したまま，スタイル(画⾵)を変化– AIによる芸術的画像の⽣成
現在このイメージを表示できません。

3

各レイヤの特徴マップから画像を再構築
conv1conv2 conv3 conv4 conv5
現在このイメージを表示できません。

スタイル画像再構築

コンテンツ画像再構築
conv1conv2 conv3 conv4 conv5

4

コンテンツ画像の特徴マップ再構築
現在このイメージを表示できません。

浅いレイヤ
・正確な元画像の情報を保持

深いレイヤ
・空間的な位置関係はそのまま→画像が持つ重要な情報を保持．
・正確な形などの情報は弱まる 5スタイル画像の特徴マップ再構築
浅いレイヤ
・画像の細かなパターン情報を保持深いレイヤ
・画像の⼤きめの空間パターンを保持

現在このイメージを表示できません。

6

Gatysらの⼿法のポイント
l 情報が弱まっている部分を，別の画像の画⾵(スタイル)に変換すれば，コンテンツ画像の形状を保持したまま，別のスタイルに画像を変換できるのでは？
現在このイメージを表示できません。

スタイル画像現在このイメージを表示できません。

コンテンツ画像
⼊⼒画像

現在このイメージを表示できません。

現在このイメージを表示できません。

スタイル画像深いレイヤ・浅いレイヤ
どちらも利⽤
コンテンツ画像CNNの深いレイヤの特徴量から復元した画像

7

Gatysらの⼿法まとめ

現在このイメージを

現在このイメージを表示できl 損失関数に学習済みCNNを利⽤
l ⽣成画像は⼀様乱数で初期化
l 順伝搬＆逆伝搬を反復

l 問題点

現在このイメージをコンテンツ・順伝搬・逆伝搬

現在このイメージを– ⽣成に時間がかかる– GPU利⽤で数⼗秒程度

⽣成画像
現在このイメージをスタイル𝐿/*0)10)Pre-trained𝐿)*)+,
VGG-16
逆伝搬𝐿4)5,1

argmin 𝐿)*)+, = 𝛼𝐿/*0)10) + 𝛽𝐿4)5,1

8

関連研究

現在このイメージを表示できません。

現在このイメージを表示できません。

l 順伝搬でスタイル変換できる⼿法を提案 [Johnson+2016]– ⼊⼒画像のスタイルを変換するNN (𝒇𝒘 ) を学習– ⽣成時は順伝搬のみなので⾼速順伝搬

現在このイメージを表示できません。

現在このイメージを表示できません。

⼊⼒画像

画像変換NN

𝒇𝒘

⽣成画像

9

現在こJohnsonらの⼿法のイメージを

現在このイメージを

l MSCOCO 8万枚 + スタイル画像で𝑓9を学習
現在この
現在この
イメージ
現在このイメージを表示でイメージを表示できませを表示できませ
きませ

𝒇𝒘
現在この
現在このイメージ
現在このイメージを表示でイメージを表示できませを表示できませきませMS COCO
Dataset 8万枚

MS COCO
Dataset 8万枚𝑦;
画像変換NN

逆伝搬
現在このイメージを𝐿/*0)10)Pre-trained
VGG-16𝐿4)5,1

スタイル

arg𝑚𝑖𝑛 𝑦; = 𝛼𝐿/*0)10) + 𝛽𝐿4)5,1 + 正則化項

10

Johnsonらの⼿法まとめ

現在このイメージを

現在このイメージを

l 特定スタイルを変換可能なCNNを学習
l 順伝搬でスタイル変換可能– ⾮常に⾼速に画像⽣成可能に現在このイメージを表示できません。

l 問題点– 1つのモデルで1つのスタイル

11現在こJohnsonらの⼿法の問題点
l 1つのモデルで1つのスタイル
現在Contet
現在Style 1

Johnson’s
NNのイメージを

現在このイメージを𝑚𝑜𝑑𝑒𝑙 𝑛𝑚𝑜𝑑𝑒𝑙 1𝑚𝑜𝑑𝑒𝑙 2・・・

現在このイメージを表示できません。

𝑚𝑜𝑑𝑒𝑙 𝑛

現在Style 2・・・
現在Style n

問題点

・学習に時間がかかる・消費メモリの増⼤・変換の質が画像の質に依存
12Johnsonらの⼿法まとめ(再掲)

現在このイメージを

現在このイメージを

l 特定スタイルを変換可能なCNNを学習
l 順伝搬でスタイル変換可能

現在このイメージを表示できません。

– ⾮常に⾼速に画像⽣成可能に

l 問題点– 1つのモデルで1つのスタイル– 学習に時間を要する– 消費メモリの増⼤

モバイル
実装困難…
現在このイメージを表示できません。

13

⽬的l Johnsonらの⼿法を拡張し，1つのモデルで複数のスタイルの同時学習を可能に– 学習時間の削減– 消費メモリの削減
従来⼿法
現
在

現
在

1対1

提案⼿法
現
在

現
在

現

現

在

在

現
在

1対複数
14

本研究の貢献① 単⼀のモデルで複数のスタイルを任意の重みで合成② リアルタイムで合成したスタイルを画像に転送③ モバイルアプリとして実装

15

提案⼿法
① 複数のスタイルを同時に学習できるように拡張
現在② モバイル実装のためにConvDeconvNetを縮⼩③ モバイル上での効率的なCNN実装及び⼯夫
現在このイメー𝑚𝑜𝑑𝑒𝑙

ジを表示できません。

16

提案⼿法①l 複数のスタイルを同時に学習できるように拡張– Fusion Layerの追加– 複数の任意重みを合成可能
Fusion layer
Content

StyleRes block
Output17

提案⼿法①l 複数のスタイルを同時に学習できるように拡張
Fusion Layer
Content

Res block
Output① ConvDeconvNetにスタイル変換
ネットワークを追加② スタイルベクトルの線形重ね合せを⼊⼒してスタイル混合

Style 1

Style 2

③ 混合したスタイルベクトルをFusion Layerで結合
18Res block

Fusion Layer

Content

conv_5,6 conv_6,7 conv_8,93x3x128 3x3x128 3x3x128

conv_4
conv_34x4x128
conv_1 conv_2 4x4x64
stride=25x5x16 4x4x32 stride=2
stride=1 stride=2Duplicate1x1x128-> NxNx128

Style 1

conv2_4 Global
conv2_3
4x4x128 Average
conv2_2
4x4x64conv2_1
stride=2 Pooling
4x4x64
stride=2
4x4x32(1x1x128)
stride=2
stride=2

conv_7 conv_8
4x4x64 4x4x32
conv_9 conv_10
stride stride
4x4x16 5x5x3=1/2 =1/2
stride stride=1=1/2

spatialstyle

spatial
style

mixed
style
[1,0,0…]

mixed
style

[0.5,0.5,0…][0,1,0…]weightedsumGlobal
conv3_4
conv3_1
Average
4x4x64 conv3_3
4x4x32Pooling
stride=2 4x4x64 conv3_2 stride=2(1x1x128)
stride=2 4x4x64
stride=2

Style 2

提案⼿法①l 複数のスタイルを同時に学習できるように拡張
Fusion Layer

Res block
OutputContent
現在このイメージを表示できません。

Style 1l Global Average Pooling(GAP)– 各チャネルの平均を出⼒– チャネル分布を表現

Style 2

– 変換後の質が向上[Li+ 2017]20

提案⼿法②l モバイル実装のためにConvDeconvNetを縮⼩– 最初と最後のConv Layerのカーネルを 9x9 -> 5x5 に変更– Residual Elementsを 5 -> 3 に変更

従来
9x9Ours

5 Res block

9x9

3 Res block

5x55x521

提案⼿法③l モバイル上での効率的なCNN実装及び⼯夫
𝑚𝑜𝑑𝑒𝑙

Cコードに変換

現在このイメージを表示できません。

① DNNを直接Cコードに変換(コンパイラ的に実⾏)② Multithread化によるNEON / BLAS の効率的な利⽤③ CNNに掛かる演算の可能な限りの事前計算の実⾏④ Unpooling+Conv -> 1/2 strideを実現ü

Deconvolutional layerの代替
22

Unpooling + Conv -> 1/2 strideを実現
l Convの逆演算を⾏うDeconvをConvで表現したい…
– ⾼速GEMM演算(BLAS)を利⽤したい

l Unpoolingで縦横2倍に拡⼤ -> Conv
patch
1

kernel 1

32✕kernel 2
1kernel 3

patch
2

patch
4

patch5patch 1
patch 2
patch 3
patch 4
patch 5

4

patch3

Unpooling =1/2 stride Conv

im2colkernel 4

conv. kernels

input feature maps
matrix multiplication (=conv. layer computation)

Core1✕Core2kernel 3✕

Core3kernel 4✕

Core4patch 1
patch 2
patch 3
patch 4
patch 5kernel 2

patch 1
patch 2
patch 3
patch 4
patch 5✕patch 1
patch 2
patch 3
patch 4
patch 5kernel 1

patch 1
patch 2
patch 3
patch 4
patch 5NEON or BLASを使ってマルチスレッド処理

23

デモ動画

⼊⼒: 250x250
演算: 13億回
時間: 175ms(iphone 7+)

現在このイメージを表示できません。

24

考察
l 変換ネットワーク

skip connection– Res block 3個は過剰？
– skip connectionの追加

l モバイル実装– 画像の解像度を上げたい -> Conv処理を⾼速化必須– 明⽰的にGPUを利⽤？

現在このイメージを表示できません。

25

まとめl ⽬的– 「Neural Style Transferをモバイル上に実装」

l 既存⼿法

現在このイメージを表示できません。

– 1つのモデルで1つのスタイル– 学習に時間を要する– 消費メモリの増⼤

l 提案⼿法– 1つのモデルで複数のスタイルを変換可能– モバイル上でのリアルタイム画⾵変換

l 今後の課題– 線画のモバイル上でのリアルタイム着⾊26

ご清聴ありがとうございました．

27

損失関数
現在このイメージを表示できません。

スタイル画像現在このイメージを表示できません。

コンテンツ画像
⼊⼒画像

スタイル画像深いレイヤ・浅いレイヤ
どちらも利⽤
現在このイメージを表示できません。

現在このイメージを表示できません。

損失関数

コンテンツ画像の外形を保持しつつ，スタイルを変換したい…

コンテンツ画像CNNの深いレイヤの特徴量から復元した画像
現在このイメージを表示できません。

最⼩化28