APP下载

基于RGB-D图像的自动化膳食调查系统

2023-01-17李仕超高梓成邓志扬

中国农业大学学报 2023年2期
关键词:采集器营养素膳食

李仕超 高梓成 郭 浩 邓志扬 马 瑞 雷 杰 张 昊

(1.中国农业大学 土地科学与技术学院,北京 100083; 2.中国农业大学 信息与电气工程学院,北京 100083; 3.中国农业大学 食品科学与营养工程学院,北京 100083)

不合理膳食导致的健康风险是当今社会重点关注的问题[1-3],及时有效的膳食调查方法可以记录和评价被调查对象在一定时间内能量和营养素的摄入情况,帮助个人和群体实现营养干预,降低不合理膳食导致的肥胖、高血压、糖尿病和心脏病等健康风险[4-5]。

目前,膳食调查中常用的方法主要有24 h膳食回顾法、化学分析法、称重记账法、食物频率法等经典方法[6-9]。针对回顾性膳食调查,王之顼等[10]根据食物外形和份量构建了包含13大类195种食物和5种餐具等共659张三维参照的食物或餐图的食物图谱来提高回顾法的准确性。另外,采用标准化食物餐具和电子食物秤同样可以提高参与者对日常摄入食物分量的掌握程度[11]。膳食调查中的统计分析同样十分重要,目前关于营养素摄入量分析的软件大多需要参与者手动输入食物的种类和摄入量,并通过食物营养成分数据和中国营养学会发布的中国居民膳食营养素参考摄入量进行营养素摄入量分析[12-13]。然而以上方法大多需要参与者的配合,对食物摄入量的评估可能不够准确,同时由于其使用过程繁琐,也不适用于大样本的群体膳食调查。

本研究充分利用深度图像所具有的三维信息优势,实现对RGB-D食物彩色图像的语义分割[14],同时利用采集的人体单视角深度图像序列拟合人体三维模型[15],在满足目前膳食调查关键环节的基础上拟建立一种更加完善的膳食调查系统,以期为营养干预提供依据。

1 材料与方法

1.1 材料

材料选择某大学食堂内所经营的各类单份食用餐食。为了减少外在因素对食物体积计算的影响,本研究选择食物形状较为规则,并且餐具容器对体积影响较小的食物类别作为计算样本,食物主要是面条、米饭、粥和汤等各类主食,用于采集食物彩色图像以及深度图像,构建某大学食物样本数据集和测试集。

1.2 系统结构及功能

1.2.1系统平台搭建

本系统主要由硬件和软件组成。硬件部分主要包括食物信息采集器、光照箱、人体信息采集器以及计算主机4个组成部分。英特尔公司研发的RealSense深度相机作为食物信息采集器,型号为D435,其彩色图像分辨率为1 920像素×1 080像素,深度图像分辨率为1 280像素×720像素。食物信息采集器搭配光照箱作为食物信息采集平台,为避免因镜面反射在需要采集图像的物体表面产生光斑,光照箱内外部分均使用喷漆喷为黑色,内部顶端设有白炽灯为采集环境提供光照。另外一个RealSence深度相机作为人体信息采集器,用于获取人体RGB-D图像序列。计算主机主要利用软件控制各传感器进行数据采集和处理任务。软件部分基于Linux操作系统,在python环境下使用PyQT进行开发实现。

1.2.2系统功能与操作

本系统主要通过主机端软件实现食物和人体的信息采集,食物营养素计算和人体参数计算。系统工作流程见图1。具体操作如下:

1)当开启系统后,首次使用需要输入试验者性别、年龄和体重等基本信息,同时将本次在食堂购买的食物菜品放置在光照箱中,使得食物信息采集器可以正好对准食物,同时实验者如果选择了中心性肥胖估计功能,需要站在软件提示的指定位置,人体信息采集器和食物信息采集器开始同步采集数据。人体信息采集器获取人体深度图像序列数据,食物信息采集器获取食物RGB-D图像数据。

2)计算主机处理数据,首先进行食物分割。之后利用对应的深度图像计算出该类别食物的体积,同时根据采集到的实验者人体深度图像序列和体重信息拟合三维人体模型,计算出实验者的身高、腰围、臀围以及BMI和WHR值。

3)根据采集的食物体积和类别信息,上传至云端服务器后通过食物营养素数据库计算出实验者在本次就餐中摄入的营养素含量和能量。该数据后续为营养师提供膳食调查基础数据。

图1 膳食调查系统工作流程Fig.1 Workflow of dietary survey system

1.3 方法

1.3.1食物语义分割

通过传感器获取的RGB图像作为原始输入数据,对输入的原始数据进行数据增强。数据增强方法包括:图片旋转,尺寸缩放,中心裁剪以及数据标准化等[16]。通过数据增强可以极大限度提高数据的多样性和复杂程度,帮助模型尽可能避免过拟合现象的出现并能够增强模型的泛化能力。

DeepLabv3+作为语义分割领域的主流算法之一,其算法的速度与预测效果已经达到了实际应用的标准。通过结合当下算法中的深度可分离卷积、空洞卷积以及ASPP模块,对卷积网络进行改进创新,并在特征解码部分进行特征融合改进,极大地提高了特征提取效果和算法的预测速度和精度。因此,本研究系统采用DeepLabv3+网络作为食物图像的语义分割算法,通过DeepLabv3+网络对食物图像进行语义解析,将图像中的食物语义和位置信息提取出来。其中特征提取网络可以采用Xception[17]或者ResNet101[18],为使能够最大化的利用算法的优势和设备的性能,本系统选择Xception作为特征提取网络。以特征提取网络的输出作为输入,将输入的特征进行解码,转化为像素的语义信息并根据交叉熵损失函数进行网络权重更新。将原始RGB图像数据输入训练完成的模型后即可获取图像中的食物类别信息和像素级的位置信息。

多分类的交叉熵损失函数公式[19]为:

(1)

式中:N为所需预测的像素个数;M为类别的数量;yic为样本i的类别,取值为0或1,0代表预测结果与真实结果不同,1代表预测结果与真实结果相同;pic为预测样本i属于类别c的预测概率。

1.3.2食物体积计算

根据食物信息采集器采集的深度图像计算食物的体积:首先根据设备摆放的形态设置初始平面P,使得初始平面P的平面法向量Np与Z轴平行;将食物深度图转化为点云并将其所在平面与初始平面P配准,使得放置食物的平面与初始平面P重合;利用1.3.1节中的算法将食物分割出来,再将拍摄的食物图像与通过分割算法分割后的食物图像对照(图2(a)和(b));将二维食物分割结果映射到三维空间,从二维映射成三维的对照(图2(c))。

将二维像素坐标输入式(2)[20]:

(2)

式中:Z为摄像头离食物的距离;u、v为某个食物像素点在像素坐标系中的X、Y轴坐标;X、Y、Z为食物在世界坐标系中的三维坐标;fx、fy为相应方向上焦点的长度;u0、v0为像素坐标系中的光心;R为旋转矩阵,T为转换平移向量。计算得出三维空间坐标。

将食物点云近似看做为一上曲面,上曲面定义为F,初始平面P为下平面,根据式(3)计算出三维空间体积,具体运算公式为:

(3)

式中:pz为初始平面的纵坐标,pz∈P;fz为食物点云中点的纵坐标,fz∈F;S为XOY平面上积分时的单位面积,其中S=1 mm2;Hi为上曲面F某点与初始平面P即下平面对应点的Z轴方向距离;V为最终计算出的食物三维空间体积。

图2 食物图像分割结果及三维映射Fig.2 Food image segmentation results and three-dimensional mapping

1.3.3食物营养素计算

根据食物的种类和体积,结合食物的营养素数据库计算获得被拍摄食物的各种营养素的含量,计算公式为:

C=v×k

(4)

式中:C为食物中某营养物质的含量;v为食物的体积;k为食物单位体积中某种营养素的含量。根据食堂提供的食物配料表以及《中国食物成分表》[21]构建食物营养素数据库,包括不同食物中各种营养素含量的数据库,表1为部分食物能量及营养素含量参考表。

表1 食物能量及营养素含量参考表(部分)Table 1 ReferenceTable of energy and nutrient content of food (part)

1.3.4人体参数计算

为了获得人的身体质量等级需要测量的人体参数包括身高、腰围和臀围,本研究设计了一种利用单视角深度图像快速便捷地测量人体参数的系统:通过计算SMPL参数化人体模型的体型参数和位姿参数来拟合实验者三维模型,根据模型点云数据来获得人体参数信息。SMPL[15]参数化模型是由大量真实人体数据中学习得到的基于顶点的线性人体模型,有6 980个顶点,13 776个三角面片,并包括一个拥有24个关节点的人体模型,模型驱动公式[15]为:

M(β,θ)=W(Tp(β,θ),J(β),θ,ω)

(5)

式中:β为长度为10的向量,控制模型的形状;θ为模型23个关节点相对旋转弧度值和原点坐标组成的长度为75的向量;Tp(β,θ)为在β和θ的作用下网格顶点的坐标计算公式;J(β)为在β作用下人体关节点计算公式;ω表示各个关节的混合权重;W表示进行骨骼蒙皮并生成人体模型。

计算体型参数和位姿参数时,对单张人体深度图像进行背景去除得到分割后的人体深度图像,利用文献[22]的方法采用随机森林对人体深度图像人体骨架的关节点位置进行预测,从而得到骨架关节点和人体各组件点云数据,之后根据人体点云与SMPL模型点云迭代优化参数β和θ,构造能量函数使其最小:

E(β,θ)=Ed(β,θ)+α1Eθ(θ)+α2Eβ(β)

(6)

式中:Ed为人体点云与SMPL模型对应点距离d误差项,分别构建人体点云和SMPL模型点云对应组件的kd-tree来寻找对应点对,通过β和θ参数驱动SMPL模型使得对应点欧氏距离之和最小;Eθ为姿态约束项,通过高斯混合模型先验来约束参数θ避免出现不正常的姿态;Eβ为体型约束项,通过计算当前模型与原SMPL模型的差异来避免产生极端体型;α1和α2为权重参数。

本研究通过计算得到的体型参数和姿态参数驱动SMPL模型拟合出最佳的人体模型。由于所有拟合的人体模型具有拓扑一致的特点,可以通过预先定义的两个点集来表示腰围和臀围。以脊柱关节点为例,寻找拟合后的模型点云中满足脊柱关节点Z坐标增减3 cm范围内,且能构成一个近似封闭圆环的点集来表示腰围,并储存该点集内各点在模型上的索引,计算相邻点距离和作为最终腰围的计算值。臀围参数值测量方法同理,共预定义腰围点40个,臀围点32个(图3)。人体高度同样采用预定义Z坐标最大和最小点的取值来计算。由于采集的人体数据为RGB-D图像序列,因此各项人体参数的最终结果为各单帧测量结果总和的平均值。

身体质量指数(BMI)[23]是评估人体肥胖程度的一个常用指标,设人体身体质量为M,身高为H,则身体质量指数的计算公式为:

(7)

中国肥胖问题工作组确定适宜我国成人超重和肥胖的BMI界限[24]为:BMI<18.5 kg/m2为偏瘦,18.5 kg/m2≤BMI<23.9 kg/m2为正常,24.0 kg/m2≤BMI<27.9 kg/m2为超重, BMI≥28 kg/m2为肥胖。

腰臀比(WHR)[23]是判定中心性肥胖的重要指标,能够反映身体脂肪分布情况。设腰围为W,臀围为H,则腰臀比计算公式为:

图3 SMPL模型关节点和腰围、臀围预定义示意图Fig.3 Schematic diagram of SMPL model joint points and predefined waist and hip circumference

(8)

中国肥胖问题工作组建议我国成人腹型肥胖的标准为:男性WHR≥0.90,女性WHR≥0.85。

2 模型训练与结果分析

2.1 食物图像识别模型性能

首先将采集的食物RGB图像根据大体类别进行划分,可分为如面条、馒头和粥类等类别,并制作数据集1 900张和测试集200张,共包含19个大类,其中2个食物大类中的部分图像数据见图4。

图4 食物图像分类示例Fig.4 Examples of food image classification

基于DeepLabv3+模型进行建模训练并测试,将预测结果与测试集中的真实数据进行比较最终得到模型的分类性能评价。在训练过程中,本研究将训练集与测试集比例设置为9∶1,并在原有的模型基础上进行微调(fine-tuning),对模型的主干部分先进行冻结训练50个周期,然后解冻训练50个周期。冻结训练的批量大小(batch size)为4,解冻后降低batch size为2,优化器为Adam。对模型进行训练并测试和评价。

本研究采用图像语义分割基本评价指标[25]进行评价,指标包括像素准确率(PA,Pixel accuracy)、像素准确率平均值(MPA,Mean pixel accuracy)和平均交并比(MioU,Mean intersection over union)。

PA为正确像素与整个图像总像素的比例:

(9)

式中:k表示类别,假定一定有(k+1)类(包括k个目标类和1个背景类),pii表示真实正例像素数,pij表示属于i类被分为j类的像素数。

MPA为每个类别分类正确的像素数与该类别的总像素的比例然后求平均:

(10)

MIoU为平均交并比,计算的是2个集合的交集与并集的重合比例,在语义分割中,计算的是真实分割与系统预测的分割间的交并比:

(11)

模型评价结果见表2,食物图像识别模型分割样例见图5。

表2 食物图像识别模型性能评价Table 2 Performance evaluation of food image recognition model

图5 食物图像识别模型分割示例Fig.5 Examples of food image recognition model segmentation

2.2 食物体积计算方法分析

对膳食调查系统中的体积计算方法进行误差分析。首先通过相机从正上方拍摄某个边长为10 cm的规则立方体,利用1.3.2节体积计算方法对该规则立方体深度图进行体积计算,最终得到的体积计算系统误差小于3%。本研究是在深度学习模型图像分割结果的基础上,进一步计算得到每种食物类别中各食物体积的估计值,再以人工标注的食物图片计算得到的食物体积为真实值进行对比。为了避免碗装类食物在进行体积计算时由于乘装容器形状造成的误差,在测试集中只选择分割后非碗装类食物,选择其中8类共计106个样本进行测试,每种食物样本大于5个。计算它们的体积并与真实值比较,体积计算的评价标准为平均绝对误差(Mean absolute error,MAE)[26]:

(12)

2.3 人体参数计算结果分析

本研究选取男女各10名真实人体样本,测量时均身穿较为紧身的衣服,利用皮尺分别测量出样本人体的身高、腰围和臀围,并计算出各自的腰臀比,作为真实值。

图6 食物体积计算平均绝对误差Fig.6 Mean absolute error of food volume calculation

自动计算人体参数时,利用本研究1.3.4节的方法,计算采集数据中10帧图像结果总和的平均值作为最终计算结果,每帧计算时间约为1.5 s。本研究1位男性人体样本在某一帧动作下三维拟合SMPL模型的重建结果见图7。

图7 男性人体样本三维拟合SMPL模型示例Fig.7 Example of a three-dimensional fitting SMPL model for male human sample

将本研究计算结果与皮尺测量结果进行比较,采用平均绝对百分比误差(Mean absolute percentage error,MAPE)[26]进行评定:

(13)

女性腰围测量结果与真实值偏离最大,平均偏离为8.5%,其余测量类别与真实值偏离值均小于7%;身高测量值的测量精度最高,男性和女性的测量精度均小于3%;腰围测量值精度最低。最终计算得到的腰臀比偏离程度均小于4%,结果见表4。

表4 人体三维测量参数平均绝对百分比误差Table 4 Mean absolute percentage error of human body three-dimensional measurement parameters %

3 结 论

本研究利用DeepLabv3+网络模型对RGB-D食物彩色图像进行语义分割,通过二维像素到深度图的映射得到食物点云计算食物的体积,并根据收集的食物配料信息及营养成分表计算蛋白质、脂肪和碳水化合物等含量;同时利用采集的人体单视角深度图像序列计算SMPL参数拟合人体三维模型,计算腰臀比和身体质量指数,初步判定人体体重状况以及中心性肥胖程度。营养素摄入结合人体健康状况分析更有利于接下的营养干预,从而降低因不合理膳食导致的各类慢性疾病的发生率。研究结果表明:1)本系统在食物图像分割中的像素准确率为72.1%,像素准确率平均值为97.13%,平均交并比为82.03%;2)在食物体积计算中的平均绝对误差均小于40 cm3;3)所有人体样本计算的腰臀比与真实值偏离程度均小于4%,验证了膳食调查系统对食物营养素和人体健康状况进行分析的实际可行性。下一步将继续扩充数据集的数量和类别,以提高食物分割精度和人体参数计算精度。

猜你喜欢

采集器营养素膳食
老年人护眼七大营养素
食物中的“有色”营养素
因人而异合理补充营养素
COVID-19大便标本采集器的设计及应用
中老年人健康膳食如何安排
秋天膳食九字诀
揭秘“食品级”肌肤营养素
六个问题读懂膳食纤维
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发