単一画像からの食事(食器含む)と食器単体の三次元形状の同時復元を用いた食事領域の体積推定

電気通信大学 情報理工学研究科
成冨志優, 柳井 啓司

はじめに- 食事のカロリー量管理は、実需が高い。
- スマートフォン向けサービスなども存在

2

はじめに
- カロリー量推定はマルチメディア界隈で研究が盛ん。
- 2Dベースが多い- 深度ベース- センサーベース3

はじめに- 単一食事画像から食事(食品+食器)と食器の2つの三次元形状を別々に復元して食品の体積を推論- 復元される2つの三次元形状の食器の一貫性も考慮

4

関連研究 : 食事のカロリー量推定- 画像から直接カロリー量を回帰[Egeら, IEICE2018][Egeら, ACM Multimedia Thematic ws][Egeら, IEICE2018]から引用- 検出/領域分割を用いる手法[Egeら,ACPR 2017][Egeら,MADiMa 2018][Egeら,ACPR 2017]から引用[Egeら, IEICE2018] Ege, T. et al. : Image-Based Food Calorie Estimation Using Recipe Information, IEICE Transactions on Information and Systems(2018)[Egeら, ACM Multimedia Thematic ws] Ege, T. et al. : Imag-Based Food Calorie Estimation Using Knowledge on Food Categories, Ingredients and Cooking Directions, Proc. of ACM Multimedia
Thematic Workshop (2017).
[Egeら,ACPR 2017] Ege, T. et al. : Estimating Food Calories for Multiple-dish Food Photos, ACPR(2017).
5[Egeら,MADiMa 2018] ] Ege, T. et al. : Multi-task Learning of Dish Detection and Calorie Estimation, MaDiMa(2018).関連研究 : 食事のカロリー量推定- デバイスを用いて実寸を測定してカロリー量を推定[CalorieCaptorGlass, IEEE VR 2020][AR DeepCalorieCam V2, VRST2018]- RGB画像だけでは実スケールは分からない。

[CalorieCaptorGlass, IEEE VR 2020]から引用[AR DeepCalorieCam V2, VRST2018]から引用[CalorieCaptorGlass, IEEE VR 2020] Naritomi, S. et al. : CalorieCaptorGlass: Food Calorie Estimation Based on Actual Size using HoloLens and Deep Learning, IEEE VR (2020)[AR DeepCalorieCam V2, VRST2018] Tanno, R. et al. : AR DeepCalorieCam V2: food calorie estimation with CNN and AR-based actual size estimation, VRST (2018)6

関連研究 : 食事のカロリー量推定- 食事は3次元。故に、3Dベースが好ましい。
-

深度画像を使うのが主流。

-

深度カメラを利用[Andoら, MADiMa2019], CNNを使った深度推定を利用[Luら, MaDiMa2018][Luら, MaDiMa2018]から引用[Andoら, MADiMa2019]から引用

7

関連研究 : 食事のカロリー量推定- 深度画像推定 -> ボクセルに変換[Im2Calories, ICCV 2015][Im2Calories, ICCV 2015]から引用- 深度画像推定 -> 点群 -> Meshに変換[Alexandrosら, HCII2020][Alexandrosら, HCII2020]から引用

8深度画像ベースの手法の問題点- 全て、平らな食器の上に食品がある制約つき。
- 丼などに対応できない。

9

関連研究 : 単一画像からの三次元復元- 単一画像からの三次元復元-

深層学習のパワーですごいスピードで進化- 三次元形状は3つの表現に分類できる- ボクセル
- 点群- メッシュ

10

関連研究 : 単一画像からの三次元復元- ボクセル[wuら, CVPR2015][3D-R2N2, CVPR2015]-〇シンプル-〇畳み込みとの相性良し。

-✖メモリを非常に使う。

-✖高解像度にするのが難しい。
[3D-R2N2, CVPR2015]から引用

11

関連研究 : 単一画像からの三次元復元- 点群[Fanら, CVPR2017]-〇 メモリ効率-✖ 点と点の接続がわからない。構造がわからない。

-✖ 点と点の接続には後処理が必要[Fanら, CVPR2017]から引用

12

関連研究 : 単一画像からの三次元復元- メッシュ
-〇 点と点の接続, 面で構成される。 ← 形状がわかる。

-〇 ボクセルよりメモリ効率が良い。

13

関連研究 : 単一画像からの三次元復元- メッシュテンプレートを利用[Pixel2mesh, ECCV2018]-

頂点の最適化[Pixel2mesh, ECCV2018]から引用

14

関連研究 : 単一画像からの三次元復元- Meshテンプレートを必要としない手法。
-占有率[Occupancy Networks, CVPR2019][PIFu, ICCV2019]-

Signed distance field[DeepSDF, CVPR2019][Occupancy Networks, CVPR2019] から引用
[DeepSDF, CVPR2019]から引用

15

提案手法(再掲)- 単一食事画像から食事(食品+食器)と食器の2つの三次元形状を別々に復元して食品の体積を推論- 復元される2つの三次元形状の食器の一貫性も考慮

16

適切な三次元表現- 食品の体積を求めたい。
- ボクセル : ✖高解像度に向いてない- 点群: ✖ 点間の接続が分からない。体積が分からない。
- メッシュ: 〇 高解像度かつ、簡単に体積が求められる。

- Meshから体積を求めるための条件- 水密であること。

- 自己交差がない事。
17

適切な出力表現- 体積の条件を満たす表現- Meshテンプレート : 自己交差が頻発してしまう。

- 占有率かSDF表現なら条件を満たせる。

- 食器の一貫性- 占有率とSDF、どちらが最適か？

[Mesh R-CNN, ICCV2019] から引用

18

適切な出力表現- 問題点- 食器の内側に含まれる点𝑝 ∈ 𝑅3が、食事のメッシュの内側に含まれない- ↑の逆は問題ない(食品領域は食器メッシュに含まれないため)- 含まれる/ない、の問題。
- 占有率が妥当。

19

提案手法
- Hungry Networksの提案-

単一の食事画像から、食事と食器の2つのMeshを復元-

占有率ベースの手法であるOccupancy Networks [17]を拡張- 3D shape consistency lossの提案-

食事と食器の三次元形状の、食器部分を一致させるための損失関数

20Hungry Networks
Increase the resolution. (N times)
occupancy
probabilities marchingcubespoint∈ ℝ3image

decoder1

occupancy
probability ∈ ℝ

decoder2

occupancy
probability ∈ ℝ

encoderpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

marching
cubes
21

Hungry Networks
画像の特徴量 Increase the resolution. (N times)
occupancyを抽出
probabilities marching
cubes

point∈ ℝ3
image

decoder1

occupancy
probability ∈ ℝ

decoder2

occupancy
probability ∈ ℝ

encoderpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

marching
cubes
22Hungry Networks
画像の特徴量 Increase the resolution. (N times)
occupancy+
probabilities marching
座標 p ∈ ℝ3
cubes

point∈ ℝ3
image

decoder1

occupancy
probability ∈ ℝ

decoder2

occupancy
probability ∈ ℝ

encoderpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

marching
cubes
23Hungry Networks
画像の特徴量 Increase the resolution. (N times)
occupancy+
probabilities marching
座標 p ∈ ℝ3
cubes

point∈ ℝ3
image

decoder1

occupancy
probability ∈ ℝ

decoder2

occupancy
probability ∈ ℝ

encoderpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

占有確率を推論marching
cubes
24

物体の境界面のみ
解像度を上げ再び推論…というのを繰り返す

Hungry Networks

画像の特徴量 Increase the resolution. (N times)
occupancy+probabilities marching
座標 p ∈ ℝ3
cubes

point∈ ℝ3
image

decoder1

occupancy
probability ∈ ℝ

decoder2

occupancy
probability ∈ ℝ

encoderpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

占有確率を推論marching
cubes
25

Hungry Networks
Increase the resolution. (N times)
occupancy
probabilities marching

cubes

point∈ ℝ3
image

decoder1
encoder

occupancy
probability ∈ℝ
最終的に得られた占有確率をMarching CubeにかけてMeshを抽出
decoder2

occupancy
probability ∈ ℝpoint∈ ℝ3
occupancy
probabilities

Increase the resolution. (N times)

marchingcubes
26

損失関数
- 学習する占有率は、実質2値分類-

Binary cross entropy lossを利用。

𝑝 ∈ 𝑅3

入力のxyz座標𝑥

画像特徴ベクトル𝑜 𝑝 ∈𝑅

点 p の占有率

𝑓𝑑 𝑥, 𝑝 ∈ 𝑅 占有率を出力するデコーダ
27

損失関数
- 3D shape consistency loss (新提案)-

食器形状を一致させるためのロス

食事の占有率𝑓𝑑1 𝑥, 𝑝0

食器の占有率𝑓𝑑2 𝑥, 𝑝0𝑓𝑑2 𝑥, 𝑝
− 𝑓𝑑1 𝑥, 𝑝101011-1100

従来

提案ロスあり28

損失関数- 3D shape consistency loss (新提案)-

食器形状を一致させるためのロス

食事の占有率𝑓𝑑1 𝑥, 𝑝0

食器の占有率𝑓𝑑2 𝑥, 𝑝0𝑓𝑑2 𝑥, 𝑝− 𝑓𝑑1 𝑥, 𝑝101011-1101が問題あるパターン。

0従来

提案ロスあり29

損失関数-1は問題ないパターン- 3D shape consistency loss (新提案)-

食器形状を一致させるためのロス

食事の占有率𝑓𝑑1 𝑥, 𝑝0

食器の占有率𝑓𝑑2 𝑥, 𝑝0𝑓𝑑2 𝑥, 𝑝− 𝑓𝑑1 𝑥, 𝑝101011-1101が問題ある
パターン。

0従来

提案ロスあり30

損失関数- バッチ毎の損失関数
𝑓𝑒 𝐼𝑖 画像を入力に特徴量を出力するエンコーダ
𝐼𝑖

バッチ中のi番目の画像

ℬ

ミニバッチ

31

データセット- 食事の3D Meshを含むデータセットは存在しない。
-

新しくデータセットを構築- 食事の3Dモデルに240個、食器のモデルに38個用意。
- 市販の3Dスキャナを利用

32スキャンデータの問題点- スキャナが出力したMeshはそのまま学習できない。
- 問題点- (1)原点とモデル中心が一致しない- (2)水密ではない- (3)サイズが統一されてない- (4)ノイズを含んでいる- (5)食事と食器のMeshの食器部分の座標がずれてる。

33

スキャンデータの問題点- スキャナが出力したMeshはそのまま学習できない。
- 問題点- (1)原点とモデル中心が一致しない- (2)水密ではない- (3)サイズが統一されてない- (4)ノイズを含んでいる- (5)食事と食器のMeshの食器部分の座標がずれてる。

34スキャンデータの修正- (2)水密ではない- スキャナが撮影したモデルは床に接していた面が欠落- Poisson Surface Reconstruction[27,28]で補完- (4)ノイズを含んでいる- TSDF Fusion[10]を用いて排除

35スキャンデータの修正- (5)食事と食器のMeshの食器部分の座標がずれてる。
- ICP(Iterative closest point)を利用して食事と食器のMeshの位置を合わせる。

- 3D shape consistency lossが使えるようになる。

36

学習用画像の作成- 3D-R2N2[13]と同様にblenderを用いてレンダリング。
- モデル単体のレンダリングと、背景を合成した2パターン用意。

37

実験- 実験項目は3つ。
- (1) 3D shape consistency loss の重みを3パターン- (2) バックボーンネットワークを3パターン- (3) 学習画像を背景なし/ありの2パターン

38

実験- 評価指標- Volumetric IoU
3d volumeの重なり具合- Chamber L1 distance
生成されたMeshの表面か真値のMesh表面までの距離とその逆の平均- plate consistency
食器の一貫性のスコア- Volume error
食事の体積の誤差39

実験 : 定量評価
- (1) 3D shape consistency loss の重み40実験 : 定量評価
- (1) 3D shape consistency loss の重み

41実験 : 定量評価
- (2) バックボーンネットワークを3パターン

42

実験 : 定量評価
- (3) 学習画像を背景なし/ありの2パターン- 背景つき画像 + ResNet18 + 𝜆3=20 が最も精度がよい。

43

実験 : 定性評価
- ResNet18- 𝜆3=20- 背景無し

44

実験 : 定性評価
- ResNet18- 𝜆3=20- 背景あり

45

おわりに
- Hungry Networksの作成- 単一食事画像から食事と食器の三次元形状を復元- 3D shape consistency lossの提案- 生成される2つの三次元形状の食器形状が一致。
- 体積推定の精度に貢献- 学習のための3D食事データセットの作成- 実際の食事画像に対応できる事を示した。
46