面向慢性病人群的智能膳食评估系统
2021-04-28马兰芳薛怡蓉
马兰芳 薛怡蓉
(1. 北京邮电大学医院院长办公室,北京 100876;2. 北京邮电大学人工智能学院,北京 100876)
慢性病是严重威胁我国居民健康的一类疾病,已成为影响国家经济社会发展的重大公共卫生问题[1]。随着我国工业化、人口老龄化进程不断加快,居民生活方式对健康的影响逐步显现,慢性病患病及死亡人数不断增加,群众慢性病疾病负担日益加重,这也给我国的医疗体系带来沉重的压力。不健康的饮食习惯是心血管疾病、糖尿病等一系列慢性病发生和发展的主要危险因素[2],而合理饮食与营养干预是治疗慢性病的重要手段。一方面,营养干预投入的经济和医疗资源都相对较少,患者易于接受,另一方面,也能有效降低多种慢性病并发症的发生率和病死率,延长患者生存时间。
临床常见的膳食调查方法有24 h膳食回顾法和食物频率问卷法[3],营养师将通过患者每天记录的摄入食物数量及种类,估算食物热量及蛋白质总量,并进行膳食摄入情况的评估。此类方法操作简单,但高度依赖于患者的有效合作与营养师的专业知识及经验,且较为耗时,难以进行及时反馈。
由于手机等移动端设备的普及,食物图像的获取更为方便,这为智能营养评估提供了数据支持[4-5]。而随着人工智能(artificial intelligence,AI)技术的发展,深度学习技术在食物图像的识别分类与检测领域取得了较大进展[6-8],使得膳食评估的智能化成为可能。
因此本研究基于慢性病患者每日摄入食物的图像信息,使用深度学习技术与图像分割算法,建立智能营养评估系统。患者可随时随地上传每日摄入食物的图片,即可获得食物的食谱、食材种类及对应的能量、蛋白质等营养素信息。整个过程方便快捷,且大大节省了评估时间。该系统能够给予患者及时高效的反馈,一定程度上减轻了营养师的工作压力,也可提高患者的依从性,方便患者进行每日膳食摄入的自我监督,有利于病情的改善。
1 资料与方法
1.1 数据来源
本研究使用目前业界公认的中餐基准食谱数据集Vireo Food-172[9],进行食谱与食材的分析和识别;采用“美食天下”网站(https://home.meishichina. com/recipe.html)上的食谱数据并对其进行处理,用于构建质量参考库;查询《中国食物成分表》[10]中的食材信息,建立营养成分表,以上数据均可公开获取。
1.2 数据集构建
Vireo Food-172数据集:是由香港城市大学陈晶晶团队公开发布的食谱数据集,包含172种常见的中餐食谱及353种食材,共有110 241张食物图片,尺寸均为256×256像素,平均每张图片包含3种食材。该数据集已划分好训练集、验证集与测试集,分别对应66 071张、11 016张与33 154张食物图像,测试集可直接用于验证本文模型在食谱与食材分类上的性能。
质量参考库:处理“美食天下”网站上的食谱信息,得到与Vireo Food-172数据集中172类食谱相关的数据,具体包含食谱图片、食材种类及质量;利用超像素分割算法计算每张食谱图像的食物与餐盘面积比Ratio0,该数值用于后续的食材质量计算,接着将每类食谱中的图片包含的食材种类、质量以及面积比取均值,得到172类食谱的食材质量参考值。具体示例如表1所示。
表1 质量参考库示例Tab.1 Example of weight reference table
营养成分表:查询《中国食物成分表》[10]的食材营养成分数据,获取Vireo Food-172数据集中353种食材对应的营养素信息,建立营养成分表。具体示例如表2所示,表格中的数据表示100 g食材对应的营养素信息,Portion为食材的生物利用度,该数值用于计算食材的可食用质量,如100g排骨中仅有68 g可供人们食用。
表2 营养成分表示例
1.3 数据增强
为增加训练样本的数量及多样性,提升模型鲁棒性,本文模型针对食谱图像实现数据增强,具体包括随机长宽比例裁剪、随机水平翻转。模型的输入图像尺寸大小应一致,依据常见分类网络的数据增强策略[11],原始食谱的图像分辨率为256×256,将其随机裁剪为224×224,此时一张图可扩充为32×32张图片,从而达到扩充样本的目的。随机水平翻转是将原始图像像素在位置空间上进行变换,从而增加样本的多样性。
1.4 模型算法
基于深度学习技术与图像处理方法,构建针对慢性病患者的智能膳食评估系统。该系统将采用移动终端拍摄的食物图像作为研究对象,首先采用卷积神经网络对食谱及食材种类进行预测,得到图像的食谱及食材信息,接着借助超像素分割方法与质量参考库,计算出食材质量;最后查询营养成分表,得到食谱的营养素信息,从而模拟出营养师对食物的营养素计算过程。具体流程如图1所示。
图1 智能营养评估系统框架图Fig.1 Architecture of nutrient assessment systemDB:database.
该系统主要分为四大模块:食谱与食材分类、食物分割、食材质量生成与营养估算。
食谱与食材分类模块:本文采用高分辨率的卷积神经网络[12](high-resolution network, HRNet),通过并行连接高低分辨率的子网络保持图像的高分辨率,同时采用重复的多尺度特征融合得到食物图像丰富的多尺度特征,最终使用两个独立的全连接层分别进行食谱与食材的分类预测。
食物分割模块:基于线性迭代聚类算法(simple linear iterative clustering,SLIC)对食物图像进行超像素分割[13],利用图像像素之间纹理、颜色、亮度等特征的相似性将像素分组,得到食物与餐盘的二值化图像,图2A表示食物原图;图2B图为经过超像素分割提取到的食物部分,其中白色部分为食物;图2C中的白色部分则为未被食物覆盖的餐盘部分。
图2 超像素分割示例Fig.2 Example of super-pixel segmentationA: original image of food; B: region of food (white part) extracted by simple linear iterative clustering algorithm; C: region of plate (white part) extracted by simple linear iterative clustering algorithm.
食材质量生成模块:依据公式(1)计算食物分割模块提取的食物图(Food)与餐盘图(Plate)面积之比(Ratio);查询质量参考库,获取预测食谱种类对应的标准(Ratio0)与质量参考值(Weightrefk),依据公式(2)计算出预测的食材质量;其中k为预测的食材种类。
(1)
其中Foodi,j表示二值化食物图Food坐标为(i,j)位置对应的像素值,非0即1。
(2)
营养估算模块:考虑到排骨、玉米等食材的不可食用部分不必计入营养素的计算中,本模块首先依据公式(3)计算食材的可食用部分质量(Weighteatk);接着查询营养成分表,得到100 g食材的营养素信息(Nutrition0),即可计算出食材对应的营养素(Nutritionk),最终对所有食材的各个营养素进行累加,得到慢性病患者日常饮食中各种食材对应的营养素信息。
(3)
针对模型预测的食材种类及质量,慢性病患者可默认选择系统自动生成的质量;而当患者认为食材种类与质量不够准确时,系统也预留了修正接口,允许患者对结果进行增加、修改与删除操作,使营养素的估计更加精准。
1.5 统计学方法与结果评价
为更加准确和全面地评估模型,本文将基于Python 3.7语言,使用深度学习分类评估方法与统计学的分位数统计方法对系统的食谱及食材分类结果、营养素评估结果进行评价。
1.5.1 食谱及食材分类评估
采用Top1、Top5准确率作为食谱分类的评估指标,其中Top1准确率是指对一张图片,若预测概率最大的类别与图片的真实类别一致,则认为分类正确;同理,Top5准确率是指对一张图片,若预测概率前五名的类别中包含图片的真实类别,则认为分类正确,目前Top1、Top5准确率也是图像分类模型的常用评估指标。
在多标签分类任务中,采用Micro-F1与Macro-F1作为食材分类的评估指标[9],其中Micro-F1表示所有食材类别的预测准确率,Macro-F1则单独考虑每类食材的分类准确率,再进行加权平均。
Micro-F1计算公式如下:
(4)
其中micro-P表示所有图像在食材分类任务中的精准率,micro-R表示所有图像在食材分类任务中的召回率,二者的计算公式如下:
(5)
Macro-F1计算公式如下:
(6)
其中macro-P表示所有类别的精准率,macro-R表示所有类别的召回率,二者的计算公式如下:
(7)
1.5.2 营养素评估
由于Vireo Food-172数据集中的食物图片未包含食材的质量信息,即无法得到食谱营养素的真实值,则难以对其评估结果进行客观的量化。为解决该难题,本文则选取“美食天下”食物图片作为测试样本,平均每类食谱包含7张测试图片,共计1 227张,依据图片对应的真实食材种类及质量进行营养素的计算,并将其作为食物图像的营养素真实值。针对系统最终输出的营养素估算结果,计算估计值与真实值之间的绝对误差,采用中位数(Median)和四分位数间距(interquartile range,IQR)进行评估。
1.6 模型训练与测试
采用Python 3.7、OpenCV数字图像处理库与PyTorch深度学习框架进行模型训练与测试。依据以上算法,建立针对慢性病患者的智能膳食评估模型;将经过数据增强后的图像进行多轮迭代训练,对不同参数进行调整测试,得到最优模型。
2 结果
2.1 食谱及食材分类预测
基于HRNet模型进行建模训练并测试,将预测结果与测试集中的真实数据进行比较,最终得到模型分类性能评价。食谱分类Top1准确率达到89.72%,Top5分类准确率达到98.08%。 食材分类指标Micro-F1达到79.06%、Macro-F1达到64.28%,取得了目前最佳性能。
计算353种食材所对应的F1值,取F1值最高的前3类食材进行显示,统计结果如表3所示。其中馒头、螃蟹与小龙虾的指标性能最好,精准率Pi与召回率Ri均达到97%以上,以上3种食材的形态相对固定,且颜色、形状等特征较为明显,样本量也相对丰富,因此网络对它们的识别能力较强。
表3 食材预测结果统计Tab.3 The statistical results of ingredients prediction
图3 图像分类结果可视化Fig.3 Visualized image classification A: true; B: predict.
为了说明模型的可解释性,可视化模型中间结果如图3所示。原图像为图3A,可视化特征图如图3B所示,红色部分表示网络特别关注的区域及特征,可以看出,食物部分对最终分类结果的“贡献度”最高,说明网络可以较好地提取食物的图像特征,从而进行食谱与食材分类。图3B下方为网络预测的食谱与食材类别,均与图像3A下方真实值一致,食材名称右侧为网络预测的食材概率,概率值越大,说明网络预测为该食材的可能性越大,也越接近真实标签,即模型预测能力较好。
2.2 营养估计
依据2.1中模型预测的食谱及食材类别以及食物与餐盘面积比,对食物图像进行营养素估算,统计模型估计结果与真实值之间的误差,评估模型的营养素预测性能。详见表4。
表4 各类营养素的误差分布Tab.4 The error distribution of nutrients
结果显示,系统对脂肪、蛋白质与碳水化合物的评估能力较好,这三者的绝对误差相对较低,误差中位数均小于10 g,而由于能量的度量单位与以上三者不同,其度量值也较大,导致能量的绝对误差值较高;能量真实值的均值为439.35 Kcal,误差中位数与该均值的比值为0.38,说明系统对能量的预测仍处于合理的范围内。
3 讨论
根据《中国居民营养与慢性病状况报告》[14]显示,高血压、糖尿病、心脑血管病等慢性病的患病率在逐年上升,吸烟、过量饮酒、身体活动不足和高盐、高脂等不健康饮食是慢性病发生、发展的主要行为危险因素,而对居民的营养改善是遏制慢性病高发态势的重要手段之一。
对于病情较轻的慢性病患者来说,一般谨遵医嘱即可有效缓解慢性病的发展态势,但由于营养学知识的匮乏,患者对营养师的建议理解可能存在偏差,往往会出现过度控制饮食以致出现营养不良等状况;而对于病情较重的慢性病患者来说,一般则需要营养师对患者进行更为详细和频繁地指导,但目前高水平的营养师资源较为缺乏,患者难以得到有效的指导和监督[15],并且在这个过程当中,患者需亲自记录每日饮食摄入情况并不定期去医院复查,与专业营养师进行沟通交流,整个过程较为繁琐、耗时。
本研究建立的针对慢性病患者的智能膳食评估系统,则可以在一定程度上缓解患者营养学知识较为匮乏、营养师资源较为短缺的情况。一方面,本系统将食物图片与营养学知识结合在一起,利用深度学习技术完成食物的膳食智能评估,提供患者每日饮食摄入的营养素参考信息,方便患者进行营养的合理搭配,从而缓解其营养不良或过剩的状况;针对系统评估结果,本系统食谱准确率达到89.72%,食材分类评估指标Micro-F1相较于目前性能[9]提升了23.66%,Macro-F1提升了29.35%,以较高的准确率完成食谱与食材的预测,从而为食物营养素的智能评估奠定了基础,最终的评估结果表明,脂肪、蛋白质与碳水化合物的预测值与真实值的绝对误差较低,能量的误差相对偏高,但仍处于合理的范围内。另一方面,用户随时随地拍摄食物图像并将其上传至系统,本系统即可在几秒内完成食物的营养评估,整个过程方便快捷,且操作简单,大大节省了评估时间与成本;营养素的评估信息也可上传至云端,供营养师访问与查看,方便营养师对患者日常饮食状况进行监督及评估,随时随地给出膳食建议,降低对患者的反馈时间;双方沟通时间的缩短能进一步增加营养师可管理的患者数量,随着管理患者数量的增加,营养师仍可依据患者的病情与症状对患者进行分类管理,提升工作效率。
由于中餐食谱数据集的制作存在较大挑战,如食谱类别难以划分,不同食材组成的食谱可能误分为同一类食谱,目前尚未有较完善的大规模中餐食谱数据集发布,因此本系统所采用的食谱数据集种类及图片数量有限,仍需在更多食谱数据集上进行测试与验证。在实际使用过程当中,系统可以以一种在线的方式收集用户拍摄的大量食物图像与用户的反馈信息,从而扩充食谱训练数据集,增强模型的泛化能力,使其识别得更为广泛、精确。而对于食材质量预测来说,其准确性受质量参考库的影响,而质量参考库的建立需大量食谱的图片、食材种类及质量等信息,目前这部分信息仍有待完善,导致营养素评估结果稳定性欠佳,因此后续仍需继续扩充食谱数据量,完善质量参考库,以期得到性能稳定的营养评估系统。
综上所述,本研究提出了针对慢性病患者的高效便捷的智能膳食评估系统。该系统同样适用于需合理控制每日饮食摄入的健康人群,可为他们提供及时的食物营养信息反馈,方便用户依据营养素信息对食物摄入进行相应的调整,达到饮食摄入的每日监控目的,从而有效预防糖尿病、心血管疾病等慢性病的发生。后续随着与专业营养师的进一步合作,本系统将基于患者的基础信息、食物营养素信息以及营养师的专业知识智能给出膳食建议以及风险评估,进一步缓解营养师资源紧缺问题,改善慢性病患者的诊疗体验,提高其健康水平。