Shixin Gu作者Joni编辑

吃前扫一扫,扫出卡路里——深度学习帮你保持好身材

保证合理身材的关键是能量摄入和能量消耗的平衡。利用计算机视觉技术识别食物中的卡路里量也许能帮助我们更好地选择适合自己的饮食量。华东理工大学信息科学与工程学院的两位研究者 Yanchao Liang 和 Jianhua Li 提出了一种基于 Faster R-CNN 和 GrabCut 算法来检测食物体积,并进而求取卡路里量的方法。机器之心技术分析师 Shixin Gu 对该研究进行了解读。

论文链接:https://arxiv.org/abs/1706.0406

随着人们生活标准的提高,肥胖率也正以惊人的速度增长,这也反映了人们的健康风险。人们需要通过吃更健康的食物来控制自己的每日卡路里摄入量,这是避免肥胖的最基本方法。但是,尽管食品包装上带有营养(和卡路里)标签,但仍然不是很方便人们参考。因此,科学家开始使用计算机视觉领域的机器学习算法来帮助人们确定他们吃的食物的卡路里。在 2015 年于波士顿举办的 Rework 深度学习峰会上,谷歌科学家 Kevin Murphy 展示了一种可用于分析静态食物图像的深度学习算法。通过分析图片中食物的成分,该算法可以计算该食物含有多少卡路里。

这篇论文试图提供一种更有效的卡路里估计方法。首先,它需要被分析食物的俯视图和侧视图。然后,它会使用 Faster R-CNN 来检测该食物和校准目标,之后再使用 GrabCut 算法来确定食物的外形轮廓。在估计了食物的体积之后,最终再估计出卡路里的量。

引言

当一个人的身体质量指数(BMI)超过 30 (kg/m2) 时,通常就认为这个人是肥胖的。高 BMI 会增加心脏病等疾病的患病风险 [1]。肥胖的主要原因是卡路里摄入(消费)和能量输出(支出)不平衡。由于不愿意记录和跟踪、缺乏相关的营养信息或其它原因,肥胖症患者常常在控制自己的卡路里消费量上遇到麻烦。研究者已经提出了很多基于计算机视觉的卡路里估计方法 [2, 3, 4, 5],但据该论文的作者分析,这些方法的检测和体积估计的准确度仍还有待提升。这篇论文所提出的方法的不同之处在于它需要输入两张图像,并且还使用了 Faster R-CNN 来检测目标,使用了 GrabCut 算法来获取每个食物的轮廓。之后就可以估计出每个食物的体积和卡路里。

材料和方法

A.基于深度学习的卡路里估计方法

图 1 展示了该方法。如前所述,这个卡路里估计过程需要俯视图和侧视图两张图像,而且其中每张图像都应该包含一个校准目标。该论文选择了基于 Faster Region 的卷积神经网络(Faster R-CNN)[5] 来检测目标,使用了 GrabCut 算法 [6] 作为分割算法。

图 1:卡路里估计流程图

B.基于深度学习的目标检测

该论文选择了 Faster R-CNN,而没有使用全卷积网络(FCN)等语义分割方法。这里,在图像以 RGB 通道的形式输入之后,会得到一系列边界框,这意味着该类别得到了评价。

C.图像分割

这个过程会使用一种图像处理方法来分割每个边界框。如上所述,GrabCut 所需的目标周围的边界框可由 Faster R-CNN 提供。在分割之后,我们可以得到一系列存储在矩阵中的食物图像,但其中背景像素的值被替换成了 0。这将只留下前景像素。

D. 体积估计

为了估计体积,该论文基于校准目标来计算比例因子。该论文使用一枚 1 元人民币硬币展示了计算体积的特定过程。硬币的直径是 2.5cm,侧视图的比例因子用公式(1)计算。

其中,Ws 是边界框的宽度,Hs 是边界框的高度。类似地,俯视图的比例因子可用公式(2)计算。

之后,研究者又根据形状将食物分成了三种类别:椭球形、柱体、不规则形状。形状不同,体积估计的公式也不一样,具体情况参见公式(3)。其中 HS 是侧视图 PS 的高度,是第 k(k ∈ 1,2,...,HS)行中前景像素的数量。,其记录 PS 中前景像素的最大数量。β 是一个补偿因子(默认等于 1.0)。之后,每种食物类型都会有一个特定值。

E. 卡路里估计

估计了体积之后,下一步是估计每个食物的质量。这可以通过公式(4)计算,其中 v(cm^3)是当前食物的体积,ρ(g/cm^3)是该食物的密度。

然后可以通过公式(5)得到食物的卡路里。

其中 m(g)是当前食物的质量,c(Kcal/g)是每克食物所含的卡路里。

结果和讨论

A. 数据集描述

在这篇论文中,研究者使用了他们自己的食物数据集 ECUSTFD,下载地址:https://pan.baidu.com/s/1o8qDnXC 。ECUSTFD 包含 19 种食物。他们使用了一部智能手机拍摄所需的图像,每一对图像都包含一张俯视图和一张侧视图。1 元人民币硬币用作校准目标。此外,对于 ECUSTFD 中的每张图像,他们都提供了注释、体积和质量记录。

B. 目标检测实验

研究者使用了一个比较实验来选择目标检测算法。图 2 给出了训练图像和测试图像的数量。他们使用了平均精度来评估目标检测的结果。在测试集上,Faster R-CNN 得到了 93.0% 的结果,而 Exemplar SVM 的结果为 75.9%。图2:训练和测试图像数量C.食物卡路里估计实验

公式(3)中的 β(补偿因子)可通过公式(6)计算,其中 k 是食物类型,N 是体积估计的数量。

公式(4)中的 ρ 可通过公式(7)计算。

之后,研究者给出了每种食物的形状定义、估计图像数量、β、ρ,见表 1。

表1:实验中的形状定义和参数

然后使用测试集的图像得到测试结果,见表 2。表2:体积和质量估计实验结果

研究者使用了平均体积误差来评估体积估计结果。公式(8)给出了平均体积误差的定义,其中食物类型是 i,2Ni 是 Faster R-CNN 正确识别的图像的数量。

公式(9)给出了平均质量误差的定义。

对于表 2 中的结果,我们看到大多数食物类型的估计结果都接近参考真实值。除了香蕉、面包和月饼,估计体积和实际体积之间的平均误差都不超过 ±20%。即使排水法测体积并不是非常准确,但这种估计方法还是可以接受的。

总结

这篇论文为我们提供了一种卡路里估计方法,实验结果表明这种方法很有前景。

因为这些图像是用智能手机拍摄的,而且这里所用的图像处理方法也已经很成熟,所以这里提出的方法可以轻松整合到健康应用中作为一种工程开发解决方案。尽管如此,从研究角度看,我认为该论文存在两个局限性。第一,没有与之前研究的比较。该论文确实在引言中提供了一点文献综述,但我认为他们应该将自己的结果与之前研究的结果对比一下。如果这种方法能实现更好的表现,那么我们就可以说这篇论文提供了一种更有效的方法。不幸的是,我们不能这样说,因为该论文并未提供比较实验结果。第二,我不确定这个数据集是否准确或是否足够大。该论文只是提到他们使用了一部智能手机拍摄这些图像,但他们并未指出是否存在收集这些图像的标准,比如光照强度和像素数量。此外,我们可以看到表 2 中的平均误差仍然很大,这说明还存在大幅降低平均误差的空间。 

参考文献

[1] W. Zheng, D. F. Mclerran, B. Rolland, X. Zhang, M. Inoue, K. Matsuo, J. He, P. C. Gupta, K. Ramadas, S. Tsugane, Association between body- mass index and risk of death in more than 1 million asians, New England Journal of Medicine 364 (8) (2011) 719–29.

[2] W. Jia, H. C. Chen, Y. Yue, Z. Li, J. Fernstrom, Y. Bai, C. Li, M. Sun, Accuracy of food portion size estimation from digital pictures acquired by a chest-worn camera., Public Health Nutrition 17 (8) (2014) 1671–81. 

[3] Z. Guodong, Q. Longhua, Z. Qiaoming, Determination of food portion size by image processing, 2008, pp. 119–128. 

[4] Y. Bai, C. Li, Y. Yue, W. Jia, J. Li, Z. H. Mao, M. Sun, Designing a wearable computer for lifestyle evaluation., in: Bioengineering Conference, 2012, pp. 93–94. 

[5] P. Pouladzadeh, P. Kuhad, S. V. B. Peddi, A. Yassine, S. Shirmohammadi, Mobile cloud based food calorie measurement (2014) 1–6. 

[6] S. Ren, K. He, R. Girshick, J. Sun, Faster r-cnn: Towards real-time object detection with region proposal networks, in: Advances in neural informa- tion processing systems, 2015, pp. 91–99. 

[7] C. Rother, V. Kolmogorov, A. Blake, Grabcut: Interactive foreground extraction using iterated graph cuts, in: ACM transactions on graphics (TOG), Vol. 23, ACM, 2004, pp. 309–314. 

理论
2
暂无评论
暂无评论~