改进Yolov5s的移动端AR目标识别算法
2023-11-15曹献烁陈纯毅胡小娟于海洋李延风
曹献烁,陈纯毅,胡小娟,于海洋,李延风
(长春理工大学 计算机科学技术学院,长春 130022)
0 引言
增强现实(augment reality,AR)这一概念最早是由Azuma[1]提出的,他认为增强现实必须包含三个方面的内容:虚实结合、实时交互、三维注册。其中,三维注册部分受到自然图像的识别能力和移动设备性能的限制,存在识别速度慢、准确率低的问题。随着人工智能的飞速发展,现阶段涌现大量优秀的目标检测算法,其中包括以Yolo[2]算法、SSD[3]算法为代表的one-stage目标检测算法,单阶段网络流程简单,直接产生物体类别率及位置情况,单次检测即可完成,检测速度较快[4];以RCNN[5]、Fast R-CNN[6]和Faster R-CNN[7]为代表的two-stage目标检测算法,双阶段网络首先产生区域候选框并提取特征,然后产生位置框并预测类。目前其他研究人员提出的基于深度学习的目标检测算法,大都需要依赖强大算力的GPU,价格比较昂贵。针对类似问题,何雨等[8]在Yolov5s网络的基础上引入ShuffleNetv2特征提取机制来实现网络的轻量化,同时采用加权双向特征金字塔BiFPN获取特征信息更为丰富的特征图,来提升目标检测精度,得到一种新的室内目标检测模型。Wang等[9]提出了DDH-YOLOv5目标检测模型,采用双IoU感知解耦头,在不显著增加FLOPS和参数的情况下,大幅提高了模型的定位精度。Naritomi等[10]开发了HoloLens应用程序以负责食品分类的信息增强,用户可以选用不同可选类别的虚拟视频注册到真实食品表面上,外部服务器负责图像分割的神经网络计算,全息透镜本身仅负责视觉渲染的显示。
为解决以上不足,将改进后的Yolov5s模型转化为开放式神经网络(open neural network exchange,ONNX)格式移植到手机上,主要贡献如下。
1) 针对在移动端部署目标检测模型出现的模型参数量大、识别速度慢的问题,对Yolov5s进行改进。首先将MobileNetV3网络作为Yolov5s主干网络以降低模型参数量。为了更好地拟合非线性数据优化模型收敛效果,将MobileNetV3网络ReLU激活函数替换成Mish激活函数以避免梯度消失和梯度爆炸。其次将Neck部分原有的PANet[11]网络替换成加权双向特征金字塔网络BiFPN[12],利用一种迭代式的特征融合方法提高检测精度。此外,引入坐标注意力机制使得模型关注大范围的位置信息以提高检测性能。为了优化模型训练收敛速度,采用Focal-Loss EIoU[13]作为边框回归损失函数以解决低质量样本产生损失值剧烈震荡的问题。
2) 针对部分手机应用需要通过连接Wi-Fi和在外部服务器进行复杂运算的问题,设计一种可以在手机移动端使用Pytorch训练模型的目标识别方案,完全本地工作,不需要Wi-Fi连接与外部设备接入。
1 相关知识内容介绍
1.1 Yolov5s
Yolov5[14](You only look once version 5)是Ultralytics公司于2020年提出的,是目前单阶段目标检测算法中检测速度和识别精度比较优秀的算法。由于将模型部署到手机移动端要求实时监测的速度快、延时低,因此选择检测速度最快的Yolov5s模型,对Yolov5s算法进行改进。其网络一共由4个部分组成,分别是输入部分(Input)、主干网络(Backone)、颈部网络(Neck)和目标检测头(Head),网络结构如图1所示。
1.2 MobileNetV3
MobileNetV3[15]是谷歌提出的轻量级网络模型,综合了MobileNetV2和MobileNetV1的优点,在MobileNetv2网络基础上进行改进的。其主干网络Bneck如图2所示。
图2 MobilenetV3 网络Bneck结构图
MobileNetV3由1×1普通卷积和深度可分离卷积堆叠形成的倒残差结构搭建而成,即先用逐点卷积(point wise convolution,PW)进行升维,之后在一个高维空间中使用深度卷积(depth-wiseconvolution,DW)来提取特征,然后用PW卷积进行降维,并将SE注意力机制插入其部分倒残差结构以提升网络的特征提取能力。网络模型的构建采用了自动网络架构搜索技术(neural architecture search,NAS)和NetAdapt算法,即先通过优化每个网络块来搜索全局网络结构,然后通过NetAdapt算法对各个模块确定之后的网络层进行微调。
2 改进的Yolov5s算法
实验基于Yolov5s算法提出了改进网络Yolov5-MCB。主干网络采用轻量化的MobileNetV3,减少参数量,提高检测速度。MobileNetV3的ReLU激活函数替换成Mish激活函数,提高网络的泛化能力,在Backbone部分引入CA模块,增强获取全面区域信息特征的能力,提高检测精度。将原有的PANet网络替换成加权双向特征金字塔网络BiFPN,实现自上而下与自下而上的深浅层特征的双向融合,提高检测精度。损失函数采用Focal-Loss EIoU损失函数,解决样本不均衡问题,加快网络收敛速度。改进的网络结构如图3所示。
图3 Yolov5s-MCB网络结构图
2.1 改进的Mobilenetv3
MobileNetV3原本使用ReLU激活函数,为了提高网络的泛化能力,将其替换为Mish激活函数。Mish激活函数是非单调函数,其取值范围为[≈0.31,∞),无上界避免了导致训练速度急剧下降的梯度饱和,无下界有助于实现强正则化效果,适当的拟合模型有助于保持小的负值以及稳定网络梯度流。ReLU的函数表达式为f(x)=max(0,x),不能保持负值导致大多数神经元得不到更新。
Mish是光滑函数,具有较好的泛化能力和对结果的优化能力。如图4所示,ReLU和Mish之间的一个随机初始化的神经网络在宏观平滑度上的剧烈变化。平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化性。
图4 ReLU和Mish曲线
表1是改进后的Mobilenetv3网络结构,共计6列。
表1 改进Mobilenetv3网络结构
第1列Input代表输入特征层的尺寸。3代表输入特征图的通道数,640×640代表输入特征图的长宽尺寸。
第2列Operator代表卷积核的类型与大小。conv2d,n×n表示n×n大小卷积核的2D卷积操作;bneck全称bottleneck,表示深度可分离卷积操作。
第3列Size代表bneck中的第一层1×1卷积升维操作后的通道数。
第4列SE代表是否使用SE注意力模块。
第5列NL代表使用的激活函数类型。其中HS代表使用hard-swish激活函数,Mish代表使用Mish激活函数。所提算法将原有的ReLU激活函数替换为Mish激活函数,使得模型训练时具有更好的收敛能力,提升了模型的泛化能力。
第6列Stride代表卷积核的步长。Stride=2时,输出特征尺寸是输入尺寸的一半。
2.2 CA注意力机制
传统主流的注意力机制用于神经网络都可以带来不错的性能提升,例如使用Self-Attention[16],但是这种注意力的计算复杂度过大,对轻量化网络而言是无法承受的,因此目前主流在轻量化网络上主要使用SE[17](squeeze-and-excitation)和CBAM[18](convolutional block attention module)。但SE注意力机制不足之处在于仅重视通道间的特征信息,忽视了因位置信息确定生成空间选择性带来的影响[14]。CBAM通过在通道上进行全局池化捕获位置信息,但只能捕获局部的信息,大范围相互依赖的信息容易被忽视。
坐标注意力是新加坡国立大学提出的一种应用于轻量级网络的注意力机制。CA[19](coordinate attention)是一种新的高效注意力机制,其主要思想是将位置信息嵌到通道注意力中,使得轻量级网络能够获取更加全面的区域信息特征,降低了计算的复杂度,避免了大量计算。
CA注意力机制全面考虑特征图通道和空间的位置信息间的关系,在几乎没有额外消耗计算资源的情况下灵活地插入网络,对于算法性能的提升效果更好。其结构如图5所示。
图5 CA注意力结构图
CA模块工作流程如下:首先将C×H×W的特征图作为模块的输入,对于CA注意力模块编码高度H和宽度W,分别用H×1和W×1的池化核沿着X水平方向和Y垂直方向对每个通道进行平均池化操作,宽度W平均池化与高度H平均池化的输出定义分别如下:
(1)
(2)
CA模块得到水平方向与垂直方向的特征图后,经过特征图拼接、卷积、激活及拆分操作,y分解为yi和yj。之后对yi通过卷积和激活操作完成对W的加权,对yj通过卷积和激活操作完成对H的加权,相关定义为:
wi=σ(Fi(yi))
(3)
wj=σ(Fi(yj))
(4)
将输入特征图与上述2个注意力权重相乘,从而得到表达能力更强的特征图。CA注意力机制的特征图输出定义为:
(5)
2.3 BiFPN
Yolov5s的特征融合网络采用FPN+PAN网络结构。FPN的网络结构如图6(a)所示。FPN只能自顶向下传达强语义信息,深层特征图上采样后与浅层特征图融合。但在深层的神经网络中,下采样过程中丢失了目标的大部分信息,这种方式不能很好地进行特征融合。
图6 FPN PAN BiFPN网络结构图
PANet的网络结构如图6(b)所示。该网络包含从上到下和从下到上的2条特征融合路径,缩小了表面特征与深层特征之间的距离,在一定程度上优化了FPN网络的特征融合方式,提高了目标检测效果,但也增加了网络的参数和计算量。
BiFPN的结构如图6(c)所示。在PANet网络中验证了双向特征融合的有效性,但结构较为简单。2020年Tan等在EfficientDet网络中提出BiFPN,进一步优化了PANet网络。
由于不同的输入特征具有不同的分辨率,因此特征对网络的影响也是不同的。无界融合、Softmax基础融合和快速归一化融合方法的比较结果表明:无界融合训练是不稳定的,需要权重归一化约束才能稳定;Softmax基础融合能量表明每个输入的重要程度,但会导致计算量的增加;快速归一化融合与Softmax基础融合类似,但不对参数应用Softmax函数,因此其操作精度与Softmax基数融合相似,而计算速度比前者快。
为此,所提算法引入BiFPN加权双向特征金字塔网络来学习不同输入特征信息的重要性,对重要的特征信息进行融合。BiFPN计算如下:
(6)
式中:ω为可学习的权重;Ii为特征图。这种思想类似于Softmax将每个归一化权重放缩到[0,1]之间,这种融合方法使得训练速度快、效率高,所以研究选用这种带权特征融合方法替换原有Yolov5s的特征融合模块。
2.4 损失函数的改进
所提算法对原算法采用的CIoU Loss进行改进,实现目标监测中预测框与真实包围框更准确的定位损失计算。CIoU的定义如下:
(7)
式中:b为包围框的中心点;ρ为2个中心点之间的欧氏距离;c为真实框和预测框最小闭包区域的对角线距离。v和α是分别为衡量长宽比的参数和权重参数,其计算公式分别为:
(8)
(9)
其中的v使用的是宽和高的相对比例,不是实际值,存在低质量样本造成的损失剧烈震荡的问题,因此所提算法采用Focal-Loss EIoU作为边框的回归损失函数。
损失函数包括IoU损失LIoU、中心距离损失Ldis和纵横比损失Lasp:
(10)
式中:Cw和Ch分别为覆盖2个包围框的最小外接框的宽和高。由于存在边界返回样本比例失调问题,图像中的目标物体稀少,与回归误差小的高质量样本的数量远远低于低质量样本的数量。异常值会产生过大的梯度,这对训练过程是不利的,所以所提算法结合了Focal Loss[20]损失函数,惩罚计算为:
LFocal-EIoU=IoUγLEIoU
(11)
式中,γ为一个控制曲线弧度的超参,减少了与目标框重叠部分IoU较小框对边框回归的优化贡献,提高高质量锚框的贡献。
3 实验与分析
实验所用的操作系统为Win10 64位;内存大小为16 GB;显存大小为8 GB;GPU为NVIDIA Quadro P4000;深度学习框架采用Pytorch1.7.0/cuda10.1/cudnn7.0;编译环境为Pycharm/Python语言。
3.1 数据集简介
采用的数据集为VOC 2007+VOC 2012联合数据集,总共20个小类。VOC 2007数据集和VOC 2012数据集两者本身是互斥的,联合起来的图片量可以达到33 043张,目标个数可以达到 79 540个,训练集和测试集的比例为9∶1。
3.2 基于k-means++检测框获取方法
Yolo系列算法中的anchor box作为目标箱的潜在候选箱,anchor box的选取会影响Yolo算法的准确性以及速度,因此要保证anchor box的长宽值接近真实的目标包围框。由于Yolo网络的目标检测头包含3种不同大小感受野的信息,每个感受野有3个anchor box,因此在模型训练前要将目标的大小聚类成9类,替换初始的Yolov5的anchor box。常用的k-means方法,通过计算样本之间的距离将较近的样本聚为同一类别,由于初始的聚类中心点是随机选取的,k-mean对初始的聚类中心和样本顺序敏感,因此算法收敛得到的是局部最优解而非全局最小值。
研究采用基于k-means的改进算法k-means++,最后在80×80的网络上聚类出anchor box为(10,13)、(16,30)、(33,23)。在40×40网络上聚类结果为 (30,61)、(62,45)、(59,119)。在20×20网络上聚类结果为(116,90)、(156,198)、(373,326)。实施过程如下。
1) 随机选取一个样本点作为第一聚类中心C1。
2) 对于剩下的样本,计算每个样本距离最近的簇中心的距离,用D(x)表示;这个值越大,表示被选取作为聚类中心的概率较大,概率P(x)计算公式如下:
(12)
3) 重复步骤2,直到选出k个聚类中心[C1,C2,…,Ck]。
4) 使用标准的k-means算法进行聚类。
3.3 评价指标
实验中使用的评价指标为FPS、平均精度均值(mean average precision,mAP)和lamr(log-average miss rate)。FPS用来评估目标检测的速度,即每秒可以检测的图片数量,其计算过程主要考虑了模型前向计算、非极大值抑制、阈值筛选和检测框绘制几个步骤。各评价指标计算公式如下。
(13)
(14)
(15)
(16)
式中:FP(false positive)为样本类别为负,预测类别为正;FN(false negative)为样本类别为正,预测类别为负;TP(ture positive) 为样本类别为正,预测类别为正;TN(true negative)为样本类别为正,预测类别为负。P(precision)指的是查准率,视作模型找出来的数据的正确能力;R(recall)指的是查全率,是预测为正且实际为正占总体正样本的比例,视作模型在数据集中检测出目标类型数据的能力;AP是计算某一类P-R曲线下的面积;mAP计算所有类型P-R曲线下面积的平均值即所有类别的AP均值,其值越大表示该模型的定位与识别的准确率越高。
3.4 实验结果与分析
消融实验分别对原Yolov5s网络以及改进的轻量化网络做出对比验证。消融实验如表2所示,其中“√”为使用该策略,“×”为未使用该策略。各个模型由第1列的序号表示。1代表了未经改动的Yolov5s网络;2代表了将MobileNetV3 网络作为Yolov5s的主干特征提取网络;3代表了将原有MobileNetV3网络中的ReLU激活函数替换为Mish激活函数;4代表了引入CA注意力机制;5代表了将原有的特征融合网络替换为加权双向特征融合网络BiFPN;6代表了将Focal-EIoU Loss损失函数作为边框回归损失函数。
表2 消融实验结果
对比实验1和实验2的模型大小与FPS可知,Yolov5s的模型大小为14.1 MB,该模型具有参数量大、计算量大、存储量高以及推理速度相对较慢的问题。将原有的主干特征提取网络CSP残差结构换为MobileNetV3网络,模型大小由原来的14.1 MB减小到7.53 MB,降低了46.6%;FPS由原来的84增加到116,增加了近35%;mAP由90.3%下降到85.5%,降低约5%,在牺牲了小精度的情况下换来模型参数量的大幅缩减和推理速度的提高。
对比实验2和实验3的mAP和FPS可知,实验2的mAP从85.5%增加到86.1%,增加了0.5%,FPS从116减小到112,仅减少约3.5%。模型的主干特征网络MobileNetV3使用了Mish激活函数,训练的稳定性和最终精度得到提高。
对比实验3和实验4的mAP和FPS可知,实验3的mAP从86.1%增加到88.0%,增加了1.9%,FPS从112减少到104。模型引入CA注意力机制,学习特征图通道和空间的位置信息间的关系,在几乎没有额外消耗计算资源的情况下提高了网络识别的准确性。
对比实验4和实验5的mAP和FPS可知,实验4的mAP从88.0%增加到89.4%,增加了1.4%,FPS从104减小到99,仅减少了4.6%。实验5的Neck部分学习不同输入特征信息的重要性,对重要特征信息进行加权融合,从而使得mAP增加了1.4%。
对比实验5和实验6的mAP和FPS可知,实验5的mAP从89.4%增加到90.5%,增加了1.1%,该模型使用了Focal Loss损失函数,将高质量的锚框与低质量的锚框分开,提升模型的识别精度。
在相同的基础数据集上,Yolov5s-MCB算法的精度相比于Yolov5s、Yolov-x、SSD模型优化效果更好。SSD作为一阶段目标检测的代表,虽然在保持高速度的基础上目标检测精度尚可,但低级特征卷积层相对较少,特征信息提取不充分,导致目标的漏检率高。Faster-RCNN精度最高,但是由于网络结构过于复杂,模型参数量大,因此达不到实时检测的效果。Yolov5s-MCB相比于Faster-RCNN的FPS提高了94,相比于Yolov4提高了2.9倍,相比于原Yolov5s的FPS也提高了15,提升了约17%。在模型参数量方面,Yolov5-MCB也是最小的,相较于原Yolov5s算法模型参数量减小了6.47 MB,变为原来的54.1%。
Yolov5s-MCB模型的体积是最小的,在不降低识别精度和推理速度的情况下,模型的参数量下降明显,在Yolov5s的基础上体积又降低了6 MB。综上所述,Yolov5s-MCB模型相较于其余模型,其检测精度、识别速度都有提升,这说明YOLOv5s-MCB模型更适用于部署在移动端设备。模型性能的对比如图7所示。
图7 网络模型性能柱状图
为了直观感受Yolov5-MCB的效果,选取了几张多目标复杂背景且光照条件欠佳的场景图片进行检测效果对比,检测结果如图8和图9所示。可以看出,Yolov5-MCB算法在光线不好、背景复杂、目标多的场景下能检测出更多的目标,拥有更高的召回率,对目标的检测置信度也高于原Yolov5s算法。这说明所提的Yolov5-MCB算法在识别精度和使用场景稳定性方面都超过了原算法。
图8 Yolov5s检测结果
图9 Yolov5s-MCB检测结果
3.5 移动端AR的目标识别
为了验证Yolov5s-MCB模型的实时性、可移植性,根据Yolov5s-MCB网络模型,在Android设备上构建了一个带有目标识别的增强现实系统,且在实际应用中表现良好。AR系统的目标识别模块采用上述的Yolov5s-MCB,需要将训练好的pth文件转换成ONNX[21]格式的中间形式移植到手机上,使用Barracuda[22]库进行推理,结合ARCore的环境理解和运动跟踪功能开发一个带有目标识别功能的AR应用。
实验要求运行AR应用程序的手机系统为Android 7.0及以上,手机安装系统apk文件时需要允许移动设备的相机访问权限,以便获取现实场景的视频流和拍摄照片等数据。AR应用使用的实验机型是三星的入门智能机Galaxy A51,硬件参数如表3所示。
表3 手机硬件测试环境
测试结果如图10所示。实验结果表明,移动手机到不同视角识别物体,虚拟3D标签和物体相对位置不发生变化,具有较强的稳定性。图11为第三视角下用户使用的示例图。
图10 移植手机的目标识别注册结果
图11 第三视角下的用户使用示例图
4 结论
针对现有目标检测算法存在模型存储大、参数量大、检测速度慢、不利于在移动端设备部署等问题,对Yolov5s算法进行轻量化改进。使用k-means++算法进行聚类,获得更合适的锚框参数;采用改进的MobileNetV3网络作为主干特征提取网络,减小模型体积、加快检测速度;将BiFPN作为Neck的特征融合网络,提高多尺度特征的融合效率;最后引用CA注意力机制更加精准地定位和识别感兴趣的目标。通过实验和系统测试可以看出,改进后的模型大小是原算法的54.1%,识别精度几乎不变。所提模型仍有改进空间,具体包括在终端设备进行优化,提高模型的处理速度和识别精度。