王长冬
摘要:作者针对中餐主食图像的识别问题研究提出了一种基于卷积神经网络和迁移学习的方法,完成对共计20类中餐主食接近2万张的图片进行了训练和测试,得到了较为满意的结果。将训练得到的网络模型通过应用框架进行了安卓平台的移植开发,实际应用效果表现良好。
关键词:中餐主食;卷积神经网络;迁移学习;图像识别;安卓平台
1 绪论
近年来图像的分类和识别技术被应用于各个不同领域,如卫生、交通、智能机器人和食品加工等。对图像进行分类和识别的方法很多,其中最常用的为提取图像的颜色、形状、纹理等特征,然后将这些特征输入到机器学习算法中进行分类。对食品图像的分类和识别,在全球学者不同的研究工作中有不同的发现。总体来说,有基于形状的特征和关键点[1-4],颜色和纹理[5-7],以及深度学习算法[8-9]。
本论文旨在寻找一种可靠的食物识别方法应用于中餐主食图像识别,并落实于实际应用。根据实际实验条件,识别方法需满足以下条件:小型食物数据集以及可接受的准确率以及为移动平台考虑的低运算成本。基于这三点,最终选择了InceptionV3网络模型进行迁移学习实验,以更快地达到研究目的。
2 卷积神经网络
卷积神经网络是一种深度学习神经网络,它的各个层包含若干个相同神经元的拷贝。它由一个输入层、许多中间层和一个输出层组成。中间层可以包含许多不同的层,如卷积层、池化层和全连接层。卷积神经网络的概念源于动物的视觉系统,即对观察所得图像的分割行为,通过局部特征的判断整合得到全局的判断结果。基于这个分解特征的思想,卷积神经网络在计算机视觉,尤其是图像分类和识别方面应用非常广泛。
2.1 InceptionV3网络
InceptionNet网络的思想是找出用密集成分近似最优的局部稀疏结构的方法,在InceptionV2版本中作者提出了BN正则化方法,对输出进行正态分布的规范化,解决输入输出分布不一致对特征提取造成的阻碍。下图给出的是卷积神经网络训练模型Inception-v3[10]的结构示意图,如图1所示。每个小的圆角矩形代表一个神经网络层。Bottleneck瓶颈层输出Bottleneck feature为所提取出的特征。
Inception V3的优势为在v2版本上的进一步分解卷积操作,丰富了网络中的Inception模块,充分发挥了降低维度的优势,将原5*5卷积分解为两个3*3卷积串联,此改进降低了参数量又降低了计算量,进一步提高了网络性能。
2.2 迁移学习
通常,卷积神经网络需要大量的图片数据和很长的训练时间来获得一个有效的模型,所以对于小型数据集来说,卷积神经网络无法和别的识别方法形成有效的对比。但经研究发现,一个在大型数据集上已经训练好的模型,在另一个小型数据集上进行二次训练,可以得到一个较为不错的结果。这个过程被稱为迁移学习。迁移学习的概念可以从图1中直观地表现出来。以InceptionV3模型为例,当新数据集和网络模型初始训练时所用的原数据集近似,且规模远小于原数据集时,此时模型在新数据集上进行训练时可以把该模型作为特征提取器使用,只需微调参数训练分类器即可。该方法契合本论文的实验背景和条件。
因此,基于迁移学习方法和InceptionV3的性能,结合现有实际实验条件,决定采用InceptionV3网络进行训练实验。
3 模型训练实验
根据实验预计进行分类的种类,数据集由香港城市大学开源数据集VIREO FOOD-172提供部分,并通过在互联网上收集实验相关图像扩充数据集类别,再人工进行数据清理,舍弃无用数据,统一归一化为Inception V3输入尺寸即299×299,构建共计20类图像组合成的数据集。
3.1 数据预处理
初步扩展完的数据集中,因部分类别的数据规模存在较大的差异,部分类的数据量低于200,而部分类的数据量近似达到1000。因此为防止模型在训练时对部分特征产生依赖,影响模型的泛化性能,根据各类的数据量进行对应扩展,最终使所有类的数据量达到近似或等于1000的规模。其中,对图像主要进行了以下方式的扩展,左右水平翻转,逆时针45°旋转,亮度、对比度以及图像锐度增强。
3.2 模型训练
本论文在采用InceptionV3模型进行迁移学习的训练时,舍弃了网络的后三层,并添加新的全连接层作为分类器,将该模型瓶颈层提取的特征向量输出作为新的全连接层输入,训练新的分类器。由于进行迁移学习的训练,整体网络的原有训练参数将不进行大的改动,逐步微调学习率和训练次数以达到满意效果。最终训练次数设定为8000次,学习率以指数形式衰减,起始学习率0.1,衰减后最小学习率限定为0.01,每次输入数据量100,共进行了10次实验,最好正确率为95.5%,最低正确率为93.5%,平均正确率为94.21%,得到了较为满意的实验结果,且可以看出该模型具有较好的稳定性。图2所示为其中一次训练结果,验证集正确率为94.1%。
3.3 移动端应用
TensorFlow Lite是Google公司为应用开发者提供的便于在移动平台部署人工智能的框架,在该框架下可以部署用自己的数据集训练出的模型。
本应用实现基于Android Studio平台,SDK编译版本为28,最低系统版本要求为安卓5.0。首先将前文中训练所得到的基于本论文数据集的新模型固定好网络的参数后进行转换得到tflite量化模型。然后将模型导入新建的安卓应用工程中,基于TensorFlow Lite框架在工程中实现目标功能。主要实现功能包括:模型导入,图片导入和预测功能。最终应用识别效果如图3所示。总计进行了100张图片测试,9张识别错误,测试正确率为91%,达到了预期的识别效果。
4 总结
本论文基于迁移学习方法灵活使用了InceptionV3网络,调整了局部网络结构并优化了參数,得到了理想的分类效果。构建并扩展了新的数据集使用,有效阻止了训练中模型对局部特征的依赖性,增强了模型泛化能力和稳定性能。对迁移学习二次训练得到的新模型进行了跨平台移植,并基于此新模型开发了安卓端手机应用,增加了模型选择功能,有效增强了应用的可拓展性,并在实际应用效果上得到了较为满意的结果。
参考文献:
[1] 廖恩红,李会芳,王华,等.基于卷积神经网络的食品图像识别[J].华南师范大学学报(自然科学版),2019,51(4):113-119.
[2] 何杰.基于集成深度卷积神经网络的中餐菜品识别[D].华南理工大学,2018.
[3] 董天骄.基于卷积神经网络的饮食分类与识别[D].杭州电子科技大学,2018.
[4] 梁华刚,温晓倩,梁丹丹,等.多级卷积特征金字塔的细粒度食物图片识别[J].中国图像图形学报,2019,24(6):870-881.
[5] 苏国炀.基于图像的中餐菜品分割与识别[D].浙江大学,2019.
[6] 丁伟利,李勇,陈瑜.基于区域颜色特征的食物类别识别算法[J].电子科技,2016,29(6):1-4.
[7] 汪聪.基于机器视觉的菜品智能识别技术研究[D].华南理工大学,2019.
[8] Fan-yu Kong,Hong-sheng He,Hollie A.Raynor,Jin-dong Tan.DietCam:Multi-view regular shape food recognition with a camera phone[J].Pervasive and Mobile Computing,2015,19(10):10-16.
[9] KIM YONG SUK.Food Recognition and Diet Management System Using Deep Learning[P].KR20190091774,2019-08-07.
[10] Szegedy C,Vanhoucke V,Ioffe S,et al.Rethinking the Inception Architecture for Computer Vision[J].Computer Science,2015(12).
【通联编辑:张薇】