深層学習を用いた食事カロリー量推定

成冨 志優


Date: 2019 年 2 月 14 日


1 はじめに

近年IT技術による健康管理の需要が高まっている. 例えば腕時計型のデバイスでは常にユーザの心拍数などを監視し, 運動による消費カロリーの記録などを行い, 健康状態を管理している. しかし, ウェアラブルデバイスによる人体に対するカロリーの入力である食事の自動的管理は実現されていない. そのためスマートフォンによる食事の内容やカロリー量の管理アプリなどが存在するが, 使い勝手がいいとは言えない. そこで本卒業論文ではより簡単に正確にカロリー量を推定する方法として2つのアプローチからこの課題に取り組んだ. 1つ目はMRグラスを活用した単一画像からの実面積推定によるカロリー量推定, もう1つは単一の食事画像からの三次元形状復元による体積推定である.

2 関連研究

関連研究として, 画像認識, 画像の3次元再構成, 料理画像からのカロリー量推定の3つが挙げられる. 画像認識技術として, Mask R-CNN [4]では物体それぞれを別々に認識するだけでなく、物体それぞれに領域分割を行い正確なマスクを推論することに成功した. 画像の3次元再構成としては,メッシュのテンプレートなしに単一の画像からメッシュを生成する手法として,Occupancy Networks [6]などが存在する。 カロリー量推定では, 基準物体と共に撮影するものや[8], ユーザが食事領域を設定するもの[9]や深度画像を使うもの [1,2]などが存在する.

3 MRグラスを用いたカロリー量推定システム

カロリー量推定では関連研究であげたように, 研究で提案された手法では食事カテゴリ数や, 実寸の取得が大変などの問題がある. このような問題点を解決するべく, MRグラスを用いた実寸に基づくカロリー量推定システムCalorieCaptorGlassをMRグラスとして最も普及しているHoloLens向けアプリとして作成した. MRグラスのようなウェアラブルデバイスを用いることで自動的に画像を撮影することができるため, ユーザが能動的に毎食食事を撮影する必要もなくなり, ユーザのハードルが低くなる.

1 システム構成

システム構成は大きく以下の4つに分けられる.
(1)
食事の検出, 分類, 領域分割
(2)
食事の実寸の計
(3)
カロリー量推定
(4)
各食事のカロリーの表示と実際に食べる食事の選択
今回作成したアプリケーションの概要図を図1に示す.
Figure 1: アプリケーションの概要図
Image over_view_new

Figure 2: AR空間に表示された食事の情報

Image holo_view

2 食事の検出,分類, 領域分割

提案システムでは食事の検出,分類, 領域分割のためにMask R-CNN [4] を用いた. 学習にはUEC-FoodPix [3]の一部の46種類の食事を使用した. 領域分割の精度はAP50でDetection , Segmentation であった.


3 画像座標と世界座標の対応による実寸測定

カメラのプロジェクション行列を用いることで画像上の2次元座標とカメラ座標系の3次元に相互に変換できる. またHoloLensの機能として提供される環境マップと対応付けて計算することで, 画像上の点が世界座標のどこにあるかを計算可能である. よってbounding boxの4つの頂点に対応する三次元の世界座標上の点が判明する. これらの点で囲まれた領域の面積と segmentation maskが占める割合から, 食事領域のみの面積がわかる.


4 カロリー量推定

46種類の食事カテゴリそれぞれについて, 4つの異なるサイズの食事写真を撮影し, 各食事の実際の面積とカロリーの関係を表す2次曲線を推定した. 回帰式を作成するために使用された画像は基準物体とともに撮影されており, 全ての食事についてカロリー量がアノテーションされている. 基準物体の実面積は既知であるため, 食事領域のピクセル数を基準物体のピクセル数と比較することで食事の実面積を計算することが可能である. 食事領域のピクセル数は領域分割を行い, その結果から取得した.

5 ARスペースでの推定食品情報の表示

クライアント側はMicrosoft HoloLensにアプリケーションとして実装し, 食事認識の機能はHTTPサーバーにREST APIとして実装した. REST APIは画像を投稿すると, 認識した情報が含まれるJSONが返される. この情報に基づいて, クライアント側システムは 3.3節に示されているように実際のサイズを測定することでカロリーを推定し, 図2に示しているようにAR空間の食事の上に表示する. この成果はIEEE VR2020のResearch Demonstrationsで発表予定である [7].

4 単一食事画像からの三次元復元

1 概要

より正確なカロリー量推定には面積ではなく体積が推定できることが望ましい. 体積を計算するためには3次元形状を測定する必要がある. しかし単に画像上の画像の食事の三次元形状を復元するだけでは,食事とともに食器の体積も含まれてしまう. そこで食事の単一RGB画像から食器付きの食事と食器のみの2つの3次元形状を復元することを目標とする.

2 手法

本研究では食事の体積を求めることが最終目標である. 3次元形状の復元には主にボクセル, 点群, Meshの3つの手法があるが, Mesh表現が今回の目標にはもっとも適している. なぜならMeshが水密であり自己交差をしていない場合はシンプルなプログラムで体積を求めることが出来るからだ. 関連研究で示したOccupancy Networks [6]は, 殆どの場合で水密かつ自己交差の無いMeshを単一画像から生成できる. そのため今回の最終的な目標に非常に合致しているので, この手法をベースにした.

3 手法の構成

本章で提案する手法の概要図を図3に示した.

Figure 3: 手法概要図

Image occ_2stream

3のdecoder1では食事+食器の生成を, decoder2では食器の生成をするための占有確率をそれぞれ学習する. decoderから得られた結果に対してMarching cubesアルゴリズム [5]を適用して等値面をMeshとして抽出する.

4 データセットの作成

既存のデータセットにはカラー画像+深度画像の食事データセットは存在するが, 3D Meshの食事のデータセットは存在しない. そこで本研究のため, 新しく食事の3Dモデル252個, 食器のモデル38個用意した. ネットワークの学習のためにはスキャンした3Dモデルはそのまま使用できない. 主な問題点は原点中心ではなく、水密でもなくサイズがバラバラで, ノイズが含まれているからである. これらの問題に対して様々な前処理をし、学習しやすいモデルのデータセットに加工した. 学習用の画像のデータセットは各食事モデルを様々な角度からレンダリングして作成した.

5 学習

学習は2種類のネットワークで行った. 一つは食事の3Dモデルのみを生成するネットワーク. もう一つは食事と食器の2つの3Dを生成ネットワークである. 双方共に学習には228モデル, テストに24モデルを使用した.

6 結果

ネットワークの評価にはIoUを用いた. 3DモデルのIoUの計算にはモデルの中から10万点取ってきて, それら物体内部として推論された結果と正しい結果の積集合と和集合の計算することでわかる. その結果を表1に示す.

Table 1: 学習結果
  batch size IoU(食事) IoU(食器) 平均 IoU
食事のみ 32 0.6287   0.6287
食事と食器 32 0.3887 0.3214 0.3550
食事と食器 128 0.5902 0.8163 0.7033

また図4に入力画像と生成結果を示した.

Figure 4: 単一画像からのMeshの生成の結果
Image generate_result2

5 おわりに

本卒業論文ではカロリー量推定のため, MRグラスを用いた実寸に基づくカロリー量推定と単一画像からの3D形状の復元に取り組んだ. MRグラスを用いた手法ではカメラの内部パラメータやMRグラスの環境認識機能, 深層学習を用いたインスタンスセグメンテーションを用いることで, 実寸に基づくカロリー量推定を実現した. 単一画像からの3D形状の復元では一枚の画像から食事と皿の2つの3Dモデルの復元を平均IoU0.7程度で実現した. しかしまだ単一画像からの三次元形状の復元を用いたカロリー量推定を実現できていない. 今後はMRグラスを用いた実寸計測と三次元形状の復元を用いたカロリー量推定に取り組んでいく.

Bibliography

1
Y. Ando, T. Ege, J. Cho, and K. Yanai.
DepthCalorieCam: A mobile application for volume-based foodcalorie estimation using depth cameras.
In Proc.of the 5th International Workshop on Multimedia Assisted Dietary Management, pp. 76-81, 2019.

2
M. Y. Chen, Y. H. Yang, C. J. Ho, S. H. Wang, S. M. Liu, E. Chang, C. H. Yeh, and M. Ouhyoung.
Automatic chinese food identification and quantity estimation.
In Proc.of SIGGRAPH Asia 2012 Technical Briefs, pp. 1-4, 2012.

3
T. Ege, W. Shimoda, and K. Yanai.
A new large-scale food image segmentation dataset and its application to food calorie estimation based on grains of rice.
In Proc.of the 5th International Workshop on Multimedia Assisted Dietary Management, pp. 82-87, 2019.

4
K. He, G. Gkioxari, P. Dollár, and R. Girshick.
Mask R-CNN.
In Proc.of IEEE International Conference on Computer Vision, pp. 2961-2969, 2017.

5
W. E. Lorensen and H. E. Cline.
Marching cubes: A high resolution 3d surface construction algorithm.
ACM siggraph computer graphics, Vol. 21, No. 4, pp. 163-169, 1987.

6
L. Mescheder, M. Oechsle, M. Niemeyer, S. Nowozin, and A. Geiger.
Occupancy Networks: Learning 3d reconstruction in function space.
In Proc.of IEEE Computer Vision and Pattern Recognition, pp. 4460-4470, 2019.

7
S. Naritomi and K. Yanai.
CalorieCaptorGlass: Food calorie estimation based on actual size using hololens and deep learning.
In Proc.of IEEE Conference on Virtual Reality and 3D User Interfaces, 2020.

8
K. Okamoto and K. Yanai.
An automatic calorie estimation system of food images on a smartphone.
In Proc.of the 2nd International Workshop on Multimedia Assisted Dietary Management, pp. 63-70, 2016.

9
R. Tanno, T. Ege, and K. Yanai.
AR DeepCalorieCam V2: food calorie estimation with cnn and ar-based actual size estimation.
In Proc.of the 24th ACM Symposium on Virtual Reality Software and Technology, pp. 1-2, 2018.