スタイル転移によるフォント画像変換
電気通信⼤学
情報理⼯学研究科 情報学専攻
成沢 淳史 柳井啓司

研究背景

ニューラルネットワークによる画像⽣成
http://gurneyjourney.blogspot.jp/2016/10/style-transfer.html

研究背景
⼊⼒

津

ゴシック体

形状変換
ネットワークケチャップ⽂字

任意パターンからの⽂字画像⽣成

出⼒津⼀般的なフォント変換

フォント作成のコスト削減

オリジナルフォントの作成

素材変換を伴うフォント変換

研究⽬的
⽬的

• 素材変化を伴うフォントセットの自動生成

• 可読性
課題

• 素材変化への対応• 少数サンプルからの学習

従来⼿法

従来⼿法１ (深層学習を使わない⼿法)

T. Miyazaki et al., arXiv:1701.05703 より引⽤

従来⼿法１ (深層学習を使わない⼿法)

スケルトンの作成にはサンプルポイントを⼿動で調整
T. Miyazaki et al., arXiv:1701.05703 より引⽤

従来⼿法１(深層学習を使わない⼿法)

⾻格にストロークを⾁付けのため綺麗に⽣成できるストローク抽出のためスケルトンデータセットの作成が必要フォントからフォントへの変換を想定

深層学習の場合にはストロークを自動抽出フォント（文字）以外への変換、応用が可能

従来⼿法２（Neural Style Transfer）=＋コンテンツ

スタイル⽣成画像

Neural Style Transfer によるフォント生成への応用( 𝒔𝒕𝒚𝒍𝒆: 𝒙 𝒈𝒆𝒏𝒆𝒓𝒂𝒕𝒆𝒅: 𝒙0
𝒄𝒐𝒏𝒕𝒆𝒏𝒕: 𝒙

Gatys et al., CVPR2016

従来⼿法２（Neural Style Transfer）

Content image (𝑥̅ )Pre trained VGG 16

𝐿=>?9<?9
Noise image (𝑥6)𝐿89:;<Pre trained VGG 16
Style image (𝑥)従来⼿法２（Neural Style Transfer）
Content image (𝑥̅ )Pre trained VGG 16

𝐿=>?9<?9
Noise image (𝑥6)𝐿89:;<Pre trained VGG 16
Style image (𝑥)コンテンツ画像とスタイル画像それぞれ⼀枚で利⽤できる⼀枚の⽂字画像⽣成に時間がかかる従来⼿法３（Fast Style Transfer）

Pre trained VGG 16

𝐿=>?9<?9Content images

𝐿89:;<Pre trained VGG 16

Style image

J. Johnson et al., ECCV2016

従来⼿法３（Fast Style Transfer）

入力（左）、生成例（右）Fast Style Transfer

⾼い可読性
素材⽂字の場合には質感の再現が困難

従来⼿法４（クロスドメイン学習）
馬
データセットシマウマ
データセットJ.Zhu et al., ICCV2017

クロスドメイン学習 と 従来⼿法 の⽐較
ゴシックフォント
ドメイン

明朝フォントドメイン

クロスドメイン学習

従来の変換

クロスドメイン学習 には対応画像が不要従来⼿法４ (Cycle GAN)
Simsum to Gothic

𝐿=:=;<REAL GOTHIC?

𝐿@AB<C8@CD@;

REAL SIMSUM?
Gothic to Simsum

𝐿=:=;<クロスドメイン学習 (成功例)クロスドメイン学習 (失敗例)クロスドメイン学習
変換元と変換先のペアの学習画像が不要
学習後は⾼速な画像⽣成
安定した質感の転写⽣成された⽂字画像の可読性が低い

従来⼿法の問題点
Fast Neural Style
⾼い可読性

Cycle GAN
安定した質感の転写

本研究では 二つのネットワークを組み合わせ文字アートに向けた可読性の改善を行う

提案⼿法 (Cycle GAN With Style Loss + Content Loss)
Simsum to Gothic

𝐿=:=;<REAL GOTHIC?

𝐿@AB<C8D@;

REAL SIMSUM?
Gothic to Simsum

𝐿=:=;<

提案⼿法 (Cycle GAN With Style Loss + Content Loss)
Simsum to Gothic

𝐿=>?9<?9

𝐿=:=;<REAL GOTHIC?

𝐿89:;<

𝐿@AB<C8D@;

REAL SIMSUM?
Gothic to Simsum

𝐿=>?9<?9𝐿=:=;<提案⼿法 (Cycle GAN With Style Loss + Content Loss)
𝐿=>?9<?9

Simsum to Gothic

𝐿=:=;<REAL GOTHIC?

𝐿@AB<<8@CD@;

𝐿89:;<REAL SIMSUM?
Gothic to Simsum

𝐿=>?9<?9

𝐿=:=;<

𝐿9>9@; = 𝛼 𝐿@AB<C8@CD@; + 𝛽 𝐿=:=;< + 𝛾 𝐿89:;< + 𝛿 𝐿=>?9<?9Content Loss & Style Loss
𝐿=>?9<?9 = 𝐹; 𝑥= − 𝐹; (𝑥M )𝐺; 𝑥 = 𝐹; (𝑥)𝐹;O (𝑥)𝐿89:;< = P 𝐺;,D,R 𝑥8 − 𝐺;,D,R (𝑥M )D,R

L : layer
F : Feature maps
G : Gram Matrix
𝑥8 : Style image
𝑥M : Generated image

グラムマトリクス：各フィルターの反応どうしの相関

VGG 19224 x 224

Style Layer
Relu_1_1

Style Layer
Relu_2_1

112 x 112

Style Layer
Relu_3_1

56 x 56

28 x 28

Style Layer
Relu_4_1
Content Layer
Conv_4_1

14 x 14

Style Layer
Relu_5_1

7x71x1

提案⼿法 (Cycle GAN With Style Loss + Content Loss)
Simsum to Gothic

𝐿=>?9<?9

𝐿=:=;<REAL GOTHIC?

𝐿89:;<

𝐿@AB<C8D@;

REAL SIMSUM?
Gothic to Simsum

𝐿=>?9<?9

𝐿=:=;<Encoder-Decoder Network

Encoder-Decoder Net with Res blocks

Discriminator Network実験素材⽂字データ画像セット

SourceTarget
データセット名

サンプル数SimSun フォント (⼊⼒)

893

ケチャップ⽂字 (⽂字 + 絵の⼀部)

445

砂⽂字 (英字 + 簡単なひらがな + 絵の⼀部)

483

紐⽂字 (ランダムなパターン)796

画像セットの構成

⽂字絵ランダムパターン

⼊⼒画像フォーマット

入力(256x256)

ターゲット

単一画像中に 16 文字を配置(トレーニング : 450 枚 , 検証 : 50 枚)

提案⼿法による⽣成例

⼊⼒：左、変換結果：右ケチャップ⽂字⽐較Style Transfer (左), Cycle GAN (中央), 提案⼿法 (右)砂⽂字⽐較

Style Transfer (左), Cycle GAN (中央), 提案⼿法 (右)紐⽂字⽐較

Style Transfer (左), Cycle GAN (中央), 提案⼿法 (右)ロスの組み合わせによる違い

𝑨𝒅𝒗𝒆𝒓𝒔𝒂𝒓𝒊𝒂𝒍+𝑪𝒚𝒄𝒍𝒆(Cycle GAN)

Style+ 𝑪𝒐𝒏𝒕𝒆𝒏𝒕+𝑪𝒚𝒄𝒍𝒆

Adversarial+𝑺𝒕𝒚𝒍𝒆+𝑪𝒚𝒄𝒍𝒆

𝑨𝒅𝒗𝒆𝒓𝒔𝒂𝒓𝒊𝒂𝒍+𝑺𝒕𝒚𝒍𝒆+ 𝑪𝒚𝒄𝒍𝒆+𝑪𝒐𝒏𝒕𝒆𝒏𝒕ロスの組み合わせによる違い

𝑨𝒅𝒗𝒆𝒓𝒊𝒂𝒍+𝑪𝒚𝒄𝒍𝒆(Cycle GAN)

Style+ 𝑪𝒐𝒏𝒕𝒆𝒏𝒕+𝑪𝒚𝒄𝒍𝒆

Adversarial+𝑺𝒕𝒚𝒍𝒆+𝑪𝒚𝒄𝒍𝒆

𝑨𝒅𝒗𝒆𝒓𝒔𝒂𝒓𝒊𝒂𝒍+𝑺𝒕𝒚𝒍𝒆+ 𝑪𝒚𝒄𝒍𝒆+𝑪𝒐𝒏𝒕𝒆𝒏𝒕ロスの組み合わせによる違い

𝑨𝒅𝒗𝒆𝒓𝒔𝒂𝒓𝒊𝒂𝒍+𝑪𝒚𝒄𝒍𝒆(Cycle GAN)

Style+ 𝑪𝒐𝒏𝒕𝒆𝒏𝒕+𝑪𝒚𝒄𝒍𝒆

Adversarial+𝑺𝒕𝒚𝒍𝒆+𝑪𝒚𝒄𝒍𝒆

𝑨𝒅𝒗𝒆𝒓𝒔𝒂𝒓𝒊𝒂𝒍+𝑺𝒕𝒚𝒍𝒆+ 𝑪𝒚𝒄𝒍𝒆+𝑪𝒐𝒏𝒕𝒆𝒏𝒕提案⼿法による変換例

⼊⼒：左、変換結果：右

実験２：様々な⼊⼒フォントの変換結果

明朝体

⼿書き⾵

⾏書体

まとめ
Adversal + Cycle(Cycle GAN)

可読性 : △ 質感 :○Style + Content(Fast Style Transfer)-

Style + Cycle + Content

可読性 : ○ 質感 : ○Adversal + Style + Cycle

可読性 : △ 質感 : ○Adversal + Cycle + Style + Content(Adversal + Style + Content)

可読性 : ○ 質感 : ○今後の課題• ⽣成された素材⽂字画像の質感の向上• 物体中に⾃然な形での⽂字の埋め込み

⾃然な⽂字の埋め込み