DEIM2019 F4-5

深度付き画像と深層学習による食事カロリー量推定システムの開発
安蒜 祥和* / 會下 拓実** / 柳井 啓司**
* 電気通信大学 情報理工学部 総合情報学科 メディア情報学専攻** 電気通信大学 大学院情報理工学研究科 情報学専攻

はじめに

1

スマートフォンでカロリーの記録ができるアプリの需要が高まっているはじめに: 例2

あすけん (株式会社ウィット)はじめに: 例3

カロナビ (株式会社クオリア)

関連研究: CalorieCam
CalorieCam(岡元ら, 2016)4

関連研究: CalorieCam
表面積のわかっている基準物体が必要

5

関連研究: CalorieCam

表面積からカロリー量を推定→体積からの推定に精度で劣る

6

関連研究: AR DeepCalorieCam V2
AR DeepCalorieCam V2(丹野ら, 2018)7

関連研究: AR DeepCalorieCam V2

複雑な形のものはズレが大きい
またはユーザー依存8

関連研究: AR DeepCalorieCam V2

表面積からカロリー量を推定→体積からの推定に精度で劣る

9

体積の推定10

カロリー量の正確な推定→ 体積の推定が必要不可欠
120cm3 = 160 kcal

関連研究: 深度つき食事画像
深度付き食事画像からCNNでボクセル復元→カテゴリ+体積推定(Im2Calorie, 2015)

3D食事データが足りず断念

11

はじめに

12

一部のiPhoneに深度 が測定できるカメラ• iPhone 7/8 Plus
• iPhone X/XS/XS Max

はじめに: 目的

13

本研究の目的:

深度カメラ+深層学習で体積ベースのカロリー量推定システムの開発

DepthCalorieCam

提案手法: 全体の流れ

14撮影

RGB

深度

提案手法: 全体の流れ

撮影
食事領域分割15

提案手法: 全体の流れ

撮影
食事領域分割
体積推定

16

提案手法: 全体の流れ

17撮影
食事領域分割 カテゴリー
認識
体積推定

唐揚げ

提案手法: 全体の流れ

18

撮影
食事領域分割 カテゴリー認識
体積推定
カロリー量推定回帰式

提案手法: 食事領域分割

••

U-Net
UECFOOD100に研究室内でアノテーションマスクを付与したデータセット••

Train 4771枚 / Test 530枚

mIoU: 80.0%19提案手法: 体積推定
0. 深度画像を補正

画像の周辺部の異常値

20提案手法: 体積推定
0. 深度画像を補正

80パーセンタイル値を上限21

提案手法: 体積推定

220. 深度画像を補正
80

 [cm]6040

20

y = 1.0632x + 3.243
002040 [cm]6080

提案手法: 体積推定
1. カメラから基準面までの距離を推定

机(基準面)

23

提案手法: 体積推定
1. カメラから基準面までの距離を推定

机(基準面)

24

提案手法: 体積推定
1. カメラから基準面までの距離を推定

机(基準面)

25

提案手法: 体積推定
2. 基準面の面積を推定

机(基準面)

26

提案手法: 体積推定
2. 基準面の面積を推定机(基準面)27提案手法: 体積推定
3. 体積を推定近くにある面ほどピクセルあたりの面積が小さい

机(基準面)

28

提案手法: 体積推定
3. 体積を推定

机(基準面)

29

提案手法: 食事カテゴリーの認識

30

各カテゴリーのスコア[0.7, 0.1, 0.2]

• Xception•

モデルサイズと認識精度のバランス

提案手法: 食事カテゴリーの認識

31

各カテゴリーのスコア[0.7, 0.1, 0.2]

• ImageNet → Food-101 → Twitter画像• Top-1 正答率: 97.9%

デモ

評価実験

34

CalorieCam(ベースライン1)

AR DeepCalorieCam V2(ベースライン2)

DepthCalorieCam(提案手法)

評価実験

35• 回帰式作成に用いたものとは別のお店で購入•

カロリーの記載のあるもの

酢豚
500 [kcal]

唐揚げ
655 [kcal]

コロッケ
246 [kcal]

評価実験36• 被験者: 3人• 基準面のテクスチャあり/なし• 各5回ずつ測定テクスチャあり

テクスチャなし

評価実験

37

酢豚の推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

1000
800
600
400
200
0-200-400-600-800-1000

ベースライン1

ベースライン2

DepthCalorieCam(提案手法)

評価実験

38

唐揚げの推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

500
400
300
200
100
0-100-200-300-400-500

ベースライン1

ベースライン2

DepthCalorieCam(提案手法)

評価実験

39

コロッケの推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

150
100
500-50-100-150

ベースライン1

ベースライン2

DepthCalorieCam(提案手法)

評価実験: 被験者ごと40

酢豚の被験者別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

1600
1400
1200
1000
800
600
400
2000-200-400

A

B

C

ベースライン1

AB

C

ベースライン2

AB

C

DepthCalorieCam(提案手法)

評価実験: 被験者ごと

41

唐揚げの被験者別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

200100
0-100-200-300-400-500

ABC

ベースライン1

A

B

C

ベースライン2A

B

C

DepthCalorieCam(提案手法)

評価実験: 被験者ごと

42

コロッケの被験者別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

50
30
10-10-30-50-70-90-110-130-150

ABC

ベースライン1

A

B

C

ベースライン2

AB

C

DepthCalorieCam(提案手法)

評価実験: 基準面ごと43

酢豚の基準面別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

1400
1200
1000
800
600
400
2000-200-400

テクスチャありテクスチャなし

ベースライン1

テクスチャあり テクスチャなし

ベースライン2

テクスチャあり テクスチャなし

DepthCalorieCam(提案手法)

評価実験: 基準面ごと44

唐揚げの基準面別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

200100
0-100-200-300-400-500

テクスチャありテクスチャなし

ベースライン1

テクスチャあり テクスチャなし

ベースライン2

テクスチャあり テクスチャなし

DepthCalorieCam(提案手法)

評価実験: 基準面ごと45

コロッケの基準面別推定結果の誤差の平均 標準偏差
誤差の平均 標準偏差 [kcal]

200-20-40-60-80-100-120-140

テクスチャありテクスチャなし

ベースライン1

テクスチャあり テクスチャなし

ベースライン2

テクスチャあり テクスチャなし

DepthCalorieCam(提案手法)

考察

46

• 高精度な体積の推定• 体積ベースのカロリー量の推定

考察

47

CalorieCam→領域分割に失敗

考察

48

AR DeepCalorieCam V2→AR空間上で対象を囲むの難しいまとめ・今後の課題

深度付き食事画像と深層学習を用いて、従来手法を上回る精度でのカロリー量推定を実現
しかし…
• 対応カテゴリーが少ない• 実物の食品が用意できれば追加可能

49まとめ・今後の課題• 同じ食品内の違いを考慮できていない•

ジューシーな唐揚げ / あっさりした唐揚げ•カテゴリー認識の対応範囲を広げる50

DepthCalorieCam
App Storeで配信中！

https://apple.co/2Uaodog※カロリー量推定ができるのは以下の端末のみ•

iPhone 7/8 Plus•

iPhone X/XS/XS Max

質疑応答

関連研究: スマートフォン上のシステム

54

CalorieCam

AR DeepCalorieCam V2(岡元ら, 2016)(丹野ら, 2018)

表面積からカロリー量を推定→体積からの推定に精度で劣る

はじめに• カロリー量の正確な推定

55

120cm3 = 160 kcal

→ 体積の推定が必要不可欠• 一部のiPhoneに深度 が測定できるカメラ•iPhone 7/8 Plus•

iPhone X/XS/XS Max

評価実験

56

被験者ごとのカロリー量推定結果の誤差の平均 標準偏差  

CalorieCam

AR CalorieCam V2

DepthCalorieCamA

315155-58269

3367

B

79187-11868-1837C

697841-16052-1035

A-14977-30816

673-4816-10412-3522B
CA

 BC

関連研究: 深度つき食事画像
深度付き食事画像からカテゴリー+体積推定(Chenら, 2012)

体積推定は未完成

57

提案手法: カロリー推定の流れ
1.

食事領域分割58

提案手法: カロリー推定の流れ
1.

食事領域分割2.

3120cm体積推定59

提案手法: カロリー推定の流れ
1.

食事領域分割
2.

3.
4.

体積推定

カテゴリー認識回帰式でカロリーを推定

60

提案手法: 食事領域分割
画像中のどこに食事があるかを推定

61

提案手法: 食事領域分割• U-Net• UECFOOD100に研究室内でアノテーションマスクを付与したデータセット• Train 4771枚 / Test 530枚

62

提案手法: 深度付き画像からの体積推定
3. 体積推定
食事領域の1ピクセルごとに体積を推定

63

提案手法: 深度カメラ

ピンホールカメラ64

提案手法: 深度カメラ

デュアルカメラ65

提案手法: 深度カメラ

2つの三角形が相似#$
深度 ! =%

66

提案手法: 深度付き画像からの体積推定
1. 基準面までの距離の推定!"が直接測れない67

提案手法: 深度付き画像からの体積推定

681. 基準面までの距離の推定• 画角(∠"# $"% 、 ∠"& $"' )• 4つの辺の中点までの距離($"#,%,&,' )から計算した$"の平均

提案手法: 深度付き画像からの体積推定
2. 基準面上のX・Y方向の実寸の推定(=!" !# 、!$ !% )69

提案手法: 深度付き画像からの体積推定

702. 基準面上のX・Y方向の実寸の推定• 画角(∠"# $"% 、 ∠"& $"' )• 4つの辺の中点までの距離($"#,%,&,' )から計算

提案手法: 深度付き画像からの体積推定
ここまでで基準面上の1ピクセルあたりの実面積!"#$%& がわかる() (* ×(, (!"#$%& =."#$%&(."#$%& = 画像の全ピクセル数)71

提案手法: 深度付き画像からの体積推定
ここで...

そのピクセルに写っている物体が基準面に比べてどれだけ拡大されているか拡大率!"(# ∈ %、% = 食事領域)

72

提案手法: 深度付き画像からの体積推定73

提案手法: 深度付き画像からの体積推定$%&'!" =$"74(

提案手法: 深度付き画像からの体積推定$%&'!" =$"75(

提案手法: 深度付き画像からの体積推定

近くのものほど大きく映る=近くのものが映るピクセルの面積は小さくなる

拡大率 !"

76

提案手法: 深度付き画像からの体積推定
体積 ! = ∑$∈&'$()*+,$77(.,*/ − .$ )

提案手法: 深度付き画像からの体積推定
注意点

この手法で計測する体積78

提案手法: 食事カテゴリーの推定• Xception•

モデルサイズと認識精度のバランス
ImageNetのPre-trainedモデル↓
Food-101でFine-tuning↓

UECFOOD-100の対応カテゴリーの画像でFine-tuning

79

評価実験

80

3種類のアプリでカロリー量推定の精度を比較•

CalorieCam•

AR DeepCalorieCam V2•

DepthCalorieCam (提案手法)

評価実験

81

カロリー量推定結果の誤差の平均 標準偏差  CalorieCam

364552-112163252-12317134351-564 -4816-10412-3522

AR CalorieCam V2 DepthCalorieCam

評価実験

82

カロリー量推定結果の誤差の平均 標準偏差  CalorieCam

364552-112163

252



-12317134351-564 -4816-10412-3522

AR CalorieCam V2 DepthCalorieCam

どのカテゴリでも誤差を最小に

関連研究: CalorieCam

食器矩形を検出
食品矩形を検出
食品領域を分割83

関連研究: CalorieCam

84

基準物体についてもGrabCutで領域分割

ピクセル数: 43149
ピクセル数: 68066
面積: 46.8 cm2(既知) 面積: ?? cm2
食品のピクセル数
食品の表面積 =×基準物体の表面積å
基準物体のピクセル数

関連研究: CalorieCam

85

基準物体についてもGrabCutで領域分割

ピクセル数: 43149
ピクセル数: 68066
面積: 46.8 cm2(既知) 面積: ?? cm2)$*))!". $ %& =×+). $ %&'+",+'