Conditional GAN を用いた大規模食事画像データからの画像生成
電気通信大学伊藤 祥文 丹野 良介 柳井 啓司

はじめに• 深層学習を用いた画像生成

野菜炒め

2018/3/9

UEC yanailab 20172

画像生成手法：GAN• GAN (Generative Adversarial Network)[Goodfellow et al. NIPS 2014]• DCGAN (Deep Convolutional GAN) [Radford etal. ICLR 2016 ]
画像を自動生成する手法

2018/3/9

UEC yanailab 2017

3

GAN とは• GAN (Generative Adversarial Network)[Goodfellow et al. NIPS 2014]

Tanno et al. (MIRU 2017) より引用

2018/3/9

UEC yanailab 20174

Conditional GAN (c-GAN)• 一般的なGANでは，特定カテゴリの画像を生成させることが難しい• Conditional GAN [Mirza et al. arXiv 2014]
・カテゴリを指定して画像生成を行うことが可能

Mirza et al. arXiv 2014より引用

2018/3/9

UEC yanailab 2017

5

関連研究
• StarGAN• LCGAN• AG-GAN
2018/3/9

UEC yanailab 20176

目的
• この手法を食事画像に応用したい① 食事画像生成② 食事画像変換

2018/3/9

UEC yanailab 20177

食事画像の収集• Twitterからの画像収集

2018/3/9

UEC yanailab 20178

食事画像の収集• Cookpadデータセットからの画像収集

2018/3/9

UEC yanailab 20179

① 食事画像生成

食材カテゴリ

生成画像

Decoder

2018/3/9

UEC yanailab 201710

目的• Conditional GAN を改良し,食事画像向きの画像生成手法を考案する．

2018/3/9

UEC yanailab 2017

11

方針
画像の収集

c-GAN の学習c-GAN の改良

画像の生成
2018/3/9

UEC yanailab 2017

12

手法
画像の収集

c-GAN の学習

c-GAN の改良

画像の生成
2018/3/9

UEC yanailab 201713

c-GAN の学習• Conditional GAN を用いる
入力:ランダムベクトルz, 条件ベクトルc

C
Z

Generator

Real / Fake
Discriminator

Real Loss

Fake LossC

2018/3/9

UEC yanailab 2017

14

WGAN
• 通常の GAN では、学習が安定しない• WGAN(Wasserstein GAN)

2018/3/9

UEC yanailab 2017

15

WGAN-GP• WGAN では、学習が遅くなる• 損失関数の式を以下のように変更する

2018/3/9

UEC yanailab 2017

16

手法
画像の収集

c-GAN の学習

c-GAN の改良

画像の生成
2018/3/9

UEC yanailab 201717

c-GAN学習の改良：食器形状制約の導入• 食器の形が正しいか識別するDiscriminatorを作成• 学習時に生成画像の食器が丸くなるよう制約を加える
CZC

2018/3/9

Real / FakeDiscriminator

Real Loss
Fake Loss

Generator

DishDiscriminator

UEC yanailab 2017

Dish Loss18

食器識別器の作成• 食器と同じ形の図形を学習させる
Positive

2018/3/9

Negative

UEC yanailab 2017

19

手法
画像の収集

c-GAN の学習

c-GAN の改良

画像の生成
2018/3/9

UEC yanailab 201720

画像の生成• カテゴリ情報を持つ c の値を固定することで、任意のカテゴリの画像の生成が可能

2018/3/9

UEC yanailab 201721

6種類のラーメン画像• 実験に用いた画像

対象としたカテゴリ
具のないラーメン
ラーメン二郎家系ラーメン
激辛ラーメン
台湾ラーメン
尾道ラーメン
合計
2018/3/9

画像枚数790枚
5,901枚
2,836枚
3,578枚
1,567枚
1,228枚
15,900枚

UEC yanailab 201722

実験の結果(ラーメン画像生成)• 通常の Conditional GAN を用いた結果

2018/3/9

UEC yanailab 201723

実験の結果(ラーメン画像生成)• 改良した Conditional GAN を用いた結果

2018/3/9

UEC yanailab 201724

実験データ• Cookpad データセットのうち50万種類のレシピを使用• 出現頻度の高い食材カテゴリを適用

2018/3/9

UEC yanailab 201725

10種類の材料カテゴリ対象としたカテゴリ

画像枚数

たまねぎ

29,610 枚

にんじん

22,450 枚

トマト

18,229 枚

ピーマン

8,143 枚しいたけ

7,568 枚ベーコン

7,978 枚トウガラシ

5,986 枚豆腐

9,540 枚豚肉

7,759 枚鶏肉

10,427 枚

2018/3/9

合計

UEC yanailab 2017

127,690 枚

26

実験の結果(料理画像生成)• 通常の Conditional GAN を用いた結果

2018/3/9

UEC yanailab 201727

実験の結果(料理画像生成)• Conditional WGAN-GP を用いた結果

2018/3/9

UEC yanailab 201728

実験の結果(料理画像生成)• 改良した Conditional WGAN-GP を用いた結果

2018/3/9

UEC yanailab 201729

実験の結果(料理画像生成)• 改良したConditional WGAN-GPを用いて特定カテゴリの画像生成を行った結果

カテゴリ

2018/3/9

生成画像

UEC yanailab 201730

生成画像を用いた画像検索• 生成画像と用いたカテゴリ名を使って画像検索+ トマト + 豆腐
生成画像2018/3/9

使用した食材UEC yanailab 201731

生成画像を用いた画像検索(改良した GAN )検索元

トマト+鶏肉検索結果

2018/3/9

UEC yanailab 201732

生成画像を用いた画像検索(改良した GAN )
検索元

豆腐+豚肉

検索結果

2018/3/9

UEC yanailab 201733

② 食事画像変換
入力画像

出力画像

Encoder

2018/3/9

Decoder

UEC yanailab 201734

目的
• 食器の形が同じ料理をカテゴリとして用い、カテゴリの変換を行う

食事カテゴリ
変換器

蕎麦風牛丼

牛丼

2018/3/9

冷やし中華風牛丼

UEC yanailab 201735

手法
• 変換前の元の形はなるべく維持する• 課題
1. 高いクオリティで変換する
2. 1つの変換器で複数のカテゴリに変換する

ドメイン変換手法(CycleGAN)を拡張
2018/3/9

UEC yanailab 201736

CycleGANとは• 従来手法(pix2pix[Isola+ CVPR-17])・元画像と変換先画像のペアが必要

2018/3/9

UEC yanailab 201737

CycleGANとは• CycleGAN([Zhu+ ICCV-17])・ペア画像がなくても学習可能に

2018/3/9

UEC yanailab 201738

CycleGANとは• CycleGAN([Zhu+ ICCV-17])
・「元の画像」と、その画像を「変換＋逆変換」して元に戻したものの間の誤差で学習
ペア画像が無くても変換可能に
Cycle Consistency Lossを導入

2018/3/9

UEC yanailab 201739

CycleGANの課題• 1:1対応の変換しかできない→1:n 変換に拡張

牛丼to
蕎麦風牛丼

食事カテゴリ変換器

牛丼to
カレー風牛丼2018/3/9

UEC yanailab 2017

共通特徴
「食事」

・・・

食事カテゴリ
変換器

・・・

牛丼to
冷やし中華風牛丼

・・・

食事カテゴリ変換器

40CycleGANの改良• StarGAN: Unified Generative Adversarial Networks
for Multi-Domain Image-to-Image Translation[Choi+ arXiv-17]• Cycle GAN + AC-GAN

2018/3/9

UEC yanailab 201741

AC-GANとは• Conditional Image Synthesis With Auxiliary
Classifier GANs AC-GAN[Odena+ ICML-17]

2018/3/9

UEC yanailab 201742

ネットワークの概要• 構成要素は3つ

2018/3/9

UEC yanailab 2017

43

損失関数
• 敵対的損失＋再構築損失＋分類損失で構成• 損失重みは実験的に設定

44

実験• 変換対象となる食事カテゴリは多種多様どちらが変換できそうか？

不定形グループ

定形グループ

45

実験• 食器の形が同じ料理をカテゴリとして用いることで、大まかな料理名がカテゴリとして機能するかを見る「丼」という制約を設けて１０個の食事カテゴリを選出

カレー

炒飯

牛丼

冷やし中華

ミートスパ

ラーメン

白飯

蕎麦

うなぎ

焼きそば

2018/3/9

UEC yanailab 201746

実験データ• 合計約２３万枚を利用
学習用：９割
テスト用：１割

2018/3/9

UEC yanailab 2017

47

実験結果
• 画像中に料理が１つのみの場合
入力

2018/3/9

カレー炒飯

牛丼

UEC yanailab 2017

冷やし中華

ミートスパ

48

実験結果
• 画像中に料理が１つのみの場合
入力

2018/3/9

ラーメン白飯蕎麦

UEC yanailab 2017

うなぎ

焼きそば

49

実験結果
• 画像中に料理が複数ある場合

入力

2018/3/9

カレー炒飯

牛丼

UEC yanailab 2017

冷やし中華

ミートスパ

50

実験結果
• 画像中に料理が複数ある場合

入力

2018/3/9

ラーメン

白飯

蕎麦

UEC yanailab 2017

うなぎ

焼きそば

51

デモ動画

2018/3/9

UEC yanailab 2017

52

評価方法

2018/3/9

UEC yanailab 2017

53

評価

画像生成 画像変換
生成画像を本物と誤認識した割合

12%

30%

本物を生成画像と誤認識した割合

16%

32%

平均14%

31%

2018/3/9

UEC yanailab 201754

まとめ• 料理画像についての画像生成
・食器識別機を用いることによる生成画像の質の向上• 料理画像を用いた画像変換
・Cycle GANの改良による一対多変換器の作成

2018/3/9

UEC yanailab 201755

課題
• 誤認識率が低い
生成: 用いた画像に多様性がありすぎる
変換: カテゴリによっては不自然な食事画像に• 生成画像の形が固定される生成: 食器識別器が円形にのみ対応させたため
変換: 定型のカテゴリのみを用いた学習による

2018/3/9

UEC yanailab 201756