基于微型计算机和神经网络的果蔬识别
2021-04-16吴衡,董忠
吴 衡, 董 忠
(天水师范学院 电子信息与电气工程学院,甘肃 天水 741001)
近年来深度神经网络在人工智能领域起到了革命性的作用,图像识别方面的准确度已经达到甚至超过了人类的水平.这种神经网络推理复杂、网络参数多、运算量大,需要高性能的硬件支撑.对于微型计算机等计算能力有限的设备,如何运行神经网络,而且达到可以应用到生产环境的水平一直是人工智能领域研究的挑战.
本文设计的果蔬图像识别模型VegNet(vegetable and fruit recognize network,VegNet)基于深度可分离卷积和反向残差网络结构,使用预训练的ImageNet[1]数据集初始化网络参数,在GPU上进行剪枝、量化、调参、训练和测试自定义数据集.优化后的网络部署在微型计算机上平衡了精度和速度,其准确率和推理时间接近在GPU上运行的复杂神经网络的表现,进而将其与重量传感器结合,组成了人工智能的电子秤设备.
1 深度卷积神经网络
微型计算机一般应用在机器人、自动驾驶、医疗辅助、物联网等环境中,具有功耗低、体积小、易于部署等优点,但也正是因为功耗低、体积小的限制,导致微型计算机往往硬件配置较低、计算能力差、设备资源有限,很难运行复杂的深度卷积神经网络.
复杂的深度卷积神经网络模型是目前人工智能研究的前沿领域,它性能优异,在图像识别领域具有其他算法很难达到的准确度,但其对硬件计算能力要求高,难以直接在微型计算机上部署.目前,常用的物体识别算法大多采用基于机器学习的深度卷积神经网络来实现,具有代表性的深度卷积网络有VGG[2],Inception[3],ResNet[4],DenseNet[5]等.它们在ImageNet[6]等公开数据集上均取得过SOTA(state of the art)的表现.VGG16网络的参数有138 357 544个,占用500 MB的存储空间,需要进行309亿次浮点运算才能完成一次图像识别任务.Inception的参数达到23 851 784个,ResNet50网络的参数也有25 636 712[7]个.这些深度神经网络设计复杂、参数多、运算量大,部署在实际环境中需要专业GPU完成计算.
简单的神经网络模型对硬件的运行要求虽然不高,但它很难识别稍显复杂的图像,对于图像中高层次抽象语义的理解能力欠佳,图像识别时很难达到高的推理精度,甚至无法正常识别.
在微型计算机上运行复杂深度卷积神经网络需要解决如何在降低网络模型计算量且尽可能保持网络推理准确度的问题.在目前深度神经网络日趋复杂、计算量呈指数级上升的同时,探索低参数、高性能的神经网络一直是深度学习研究的一个方向.
为了让微型计算机运行复杂卷积神经网络,优化网络模型设计,大幅降低模型参数数量,让模型适合微型计算机的计算量是目前主要的途径.Howard等[8]提出的MobileNet采用深度可分离卷积比传统卷积操作大幅度降低了运算量,仅为复杂深度卷积神经网络VGG16,Inception,ResNet50的3%,18%,17%.Sandler等[9]提出具有反向残差网络结构MobileNetV2,在MobileNet[8]的基础上参数减少了17%,性能提升1%.
1.1 深度可分离卷积
深度可分离卷积(depthwise separable convolutions)将传统卷积运算(normal convolutions)拆分为一次纵向卷积(depthwise convolution)和多次逐点(pointwise convolution)卷积,降低了整体的运算量但得到了相近的输出.
若输入一个hi×wi×di的张量Li,与k∈Rk×k×di×di的过滤器进行卷积运行后生成hj×wj×dj的输出张量,传统卷积的运算量为(由于加法计算相对简单,文中所有运算量计算只计乘法的数量)
hj×wj×dj×di×k×k.
(1)
使用深度可分离卷积时,首先进行一次纵向卷积运算,其计算量为
hj×wj×di×k×k.
(2)
再根据输出张量的通道数的数量,进行逐点卷积运算,其计算量为
hj×wj×di×dj.
(3)
由(2)和(3)式可得,深度可分离卷积操作的总运算量为
hj×wj×di×(k2+dj).
(4)
由(4)和(1)式可得,深度可分离卷积运算量为传统卷积运算量的
(5)
若卷积核k=3,输出通道dj=256,由(5)式可得,深度可分离卷积运算量为传统卷积运算量的11.45%.
深度可分离卷积的结构减少了网络参数,如果网络结构很小,网络的参数可能太少,在训练时网络可能无法得到足够的学习.比较好的使用方法应该是在有效性的基础上尽可能提升网络的效率.
1.2 反向残差网络设计
深度卷积神经网络ResNet[4]中首先出现残差网络结构,通过先降维、卷积(提取特征),再升维回到原始维度,验证了特征向量复用可有效地提升网络性能.MobileNetV2[9]使用反向残差网络设计,它与ResNet的残差结构相反,shortcut连接的是维度缩减后的向量特征,旁支区块内先通过1×1升维,再连接纵向卷积层以及ReLU[10]激活层,通过增加ReLU的输入向量维度,保证了提取的特征的量,并且缓解了特征退化的现象.两种结构的比较见图1.
图1 ResNet采用残差网络结构与MobileNetV2采用的反向残差网络结构的对比
以MobileNet系列模型为出发点,深度可分离卷积和反向残差神经网络结构推动了神经网络技术在微型计算机上的发展.基于这种结构,Sahu等[11]使用手持设备实现了皮肤癌的检测,在预训练的参数集上使用ISIC2017数据集训练网络,筛查成功率达到80.5%.Ahn等[12]开发了儿童语言开发的助理玩具,由运行在树莓派上的深度可分离卷积神经网络完成语言识别任务.Pacheco[13]等在移动设备上使用深度可分离卷积神经网络实现了光线可控的智慧教室系统.
2 系统设计
2.1 VegNet网络的设计
VetNet网络使用了深度可分离卷积和反向残差神经网络结构,并借鉴了深度卷积神经网络MobileNetV2卷积层的设计,这样VegNet就可以使用ImageNet数据集在MobileNetV2网络上预训练的参数.这种设计方法可以利用ImageNet数据集高层次的抽象语义表达能力,弥补自定义数据集数据规模相对较小、表达能力不强的缺点,最大化发挥VegNet的性能.
VegNet网络输入层,首先连接32核的普通卷积层,其次是17个bottleneck residual block,再连接2个全连接层,最后通过softmax函数输出,其网络结构见表1.
表1 果蔬识别神经网络模型的详细结构
网络的非线性激活层采用适合低精度计算的ReLU6函数,所有的卷积核大小均为3×3,在训练中使用Dropout和标准化操作来泛化模型和优化计算.
2.2 果蔬数据集
果蔬数据集由9种不同的水果和蔬菜组成,分别是:苹果、豆角、白菜、胡萝卜、菜花、黄瓜、茄子、蘑菇和火龙果.这些来自果蔬市场的照片经随机挑选并剔除了重复度较高、特征不明显图片来降低样本相关性,再通过剪裁提升目标特征.由于数据集制作所需时间的限制,训练集中暂不包括其他果蔬.
训练集的数量和质量会对系统性能产生较大的影响.果蔬数据集由5 472张训练数据和500张测试数据组成,训练测试比约为10∶1.训练数据集中,9种果蔬的样本数量分为:苹果870张,豆角542张,白菜466张,胡萝卜985张,菜花173张,黄瓜271张,茄子929张,蘑菇569张,火龙果667张.图2展示了每个分类随机选取的一个样本.测试集每类样本数量均为50张.采用提升模型精度和加速网络训练的常规做法,对训练数据进行了剪裁和变预处理操作.将图片剪切掉与主题无关的背景内容后,确保主要内容占整个图像的80%以上,再按照模型输入图片要求进行调整.VegNet网络输入图片的尺寸为224×224像素,对比部分的深度卷积神经网络输入尺寸为299×299像素.
图2 果蔬数据集中每种物体的抽样
2.3 智能电子秤硬件系统设计
VegNet网络部署在微型计算机中具有代表性的硬件Raspberry Pi[14](树莓派)上离线运行.它的软硬件开源、性价比高、接口丰富的特点,被广泛应用于人工智能硬件的研究和开发.
硬件系统使用了树莓派2个不同型号的3块子版,分别是2块3b+(RPi3B)和1块ZERO W(RPi0)两个型号的3块树莓派.一块RPi3B负责图像推理运算神经网络,另一块负责传感器控制,RPi0负责称重物体的图像采集,它们之间的数据传递由RPi3B路由经WIFI信号连通.两个型号的树莓派的主要参数见表2,传感器包括数字电子称、摄像头和蓝牙音箱等.数字电子称(型号:HX711),精度为±1 g,最大称重为5 kg;摄像头(型号:IMX219)采用CSI接口与RPi0连接,800万像素,最高分辨率3 280×2 464;语音播报采用无线微型音箱(型号:XMYX02YM),通过蓝牙与RPi3B主控机连接.
表2 树莓派RPi3B和RPi0关键硬件参数
智能电子秤系统的具体工作流程为:将物体放置在智能电子秤上,重量传感器称重物体并触发RPi3B主控向RPi0发送拍照请求,摄像头拍照后通过无线网络传回给RPi3B主控,再将图像放入VegNet神经网络进行物体识别,最后根据种类和单价计算后通过蓝牙发送至蓝牙音箱进行语音播报,这样就完成了一次称重.需要说明的是,本文对外观进行了简单的设计,没有参考其他任何电子秤的设计.
图3 系统拓扑图及实物图
3 VegNet的训练和调参
3.1 VegNet网络期望
通过获得简化网络之前深度卷积神经网络的图像识别最高的准确率来作为期望值来衡量VegNet神经网络的优化程度.已经证明复杂的深度神经网络仅仅使用一部分权值就足以预测剩余的权值,使用经过修剪、蒸馏、压缩后的神经网络可以获得和原有网络差不多的性能.期望通过实验获得让VegNet网络的准确率尽可能接近复杂网络的表现.
通过对深度神经网络网络InceptionResNetV2,InceptionV3,ResNet50,VGG19和DenseNet网络参数进行ImageNet数据集预训练初始化,再使用果蔬数据集进行迁移学习.这些深度卷积神经网络对果蔬分类的准确率见表3.由表3可知,DenseNet获得了95%的最高识别准确率,以此为目标,对VegNet进行优化和调参.
表3 神经网络在果蔬数据集上的表现
3.2 模型的训练和泛型性分析
VegNet网络训练的主要硬件配置为,GPU NVIDIA 1080Ti,CPU为i7-8750k,优化函数使用RMSprop[15],学习率的初值设为0.1,每个epoch的衰减率设置为0.98,batch为16,训练大概需要10 h完成.
VegNet网络代码由Keras[16]编写,运行在TensorFlow[17]神经网络框架上,训练由迁移学习[18]和传统机器学习两种方法互相对比,各自独立完成.
通过比较不同模型的准确率Accuracy和f1-score[19]来评估这些模型的性能,并由此找出泛型结果最好的模型部署到生产环境.
Accuracy的数学表达式为
(6)
式中:l为总的分类数;tpi为正例的正确分类数;fpi为正例的错误分类数;tni为负例的正确分类数;fni为负例的错误分类数.
f1-score可由Precisionm和Recallm的计算得到[20],即
(7)
(8)
(9)
式中:下标m代表macro.
下面对这两种方法和模型的分数分别进行介绍.使用迁移学习时,预训练会加速模型的收敛,得到的参数更趋向于模型最终的真实参数.Imagenet数据集包含丰富的物体特征,能够较好地表达果蔬数据集的特征,实验证明迁移方法训练的VegNet网络推理更加准确.
进行传统机器学习时,使用正态分布随机数初始化模型所有参数,神经网络的每一层都通过训练来更新参数.从实验看,这种方法不仅训练过程较长,而且由于果蔬数据集的特征抽象有限,果蔬识别的准确率较低.
模型分别采用迁移学习和Scratch方法训练,结果见表4,收敛过程见图4.
图4 迁移学习方法训练过程中模型的准确率随训练轮次的收敛图
表4 迁移学习和传统级机器学习方法得到的Accuracy和f1-score.
通过使用两种不同的训练方法和优化函数,在相同的果蔬数据集上可以训练出准确率很接近DenseNet神经网络准确率的VegNet神经网络.从实验得出的数据可以看出,使用迁移学习训练模型较好.
从表5可以看出,VegNet神经网络较DenseNet神经网络参数压缩了5%,体积压缩了78%,准确率只降低了3%,系统用小的准确率损失换取了大幅度的性能提升.
表5 果蔬数据集在VegNet与DenseNet模型上的准确率
4 结语
针对如何本地化运行深度卷积神经网络使传统设备具有智能化能力的问题,本文利用深度可分离卷积和反向残差网络结构提出VegNet神经网络进行端对端的果蔬识别.实验结果证明,新设计的智能电子秤系统能够精确地识别称重物品,实现了人工智能技术的落地应用,不仅提升了工作效率、降低了企业成本,而且减少了人员接触,降低了传染病人传染人的几率,在公共环境安全建设方面也有积极意义.
本文比较了多种深度卷积神经网络在相同数据集上的表现,通过实验证明了优化后的神经网络在微型计算机上也可以具有良好的鲁棒性和准确度.训练过程中运用了多种不同的方法,确保最终模型的泛化能力达到最优.
针对微型计算机,本地化运行神经网络需要寻找更好的方法来平衡运算的时间和精度,如何在网络结构设计、学习率、优化函数,以及数据集制作上寻找最优参数和最优组合是需要进一步研究的内容.