鄢 紫 陈良艳 刘卫华 赖华清 叶 胜
(武汉轻工大学电气与电子工程学院,湖北 武汉 430023)
水果品质管理问题涉及到人们身体健康和经济活动,因此对水果的检测和新鲜度分拣变得非常重要。目前,中国水果分拣主要依赖于人工操作,采用计算机算法进行自动化分级是发展趋势。对水果的检测和新鲜度分级主要有传统机器学习方法以及深度学习方法。
目前大多数研究都围绕水果识别或多品种分类展开[1-3],传统的计算机视觉方法解决水果新鲜度分级问题大多通过K-近邻(KNN)、支持向量机(SVM)、人工神经网络(ANN)等机器学习方法建立模型。刘禾等[4]利用人工神经网络来分析检测苹果体形并进行分类,达到了80%的识别率。Semary等[5]使用支持向量机和主成分分析(PCA)从HSV和RGB颜色空间的纹理和颜色特征中检测番茄样本表面缺陷,达到了92%的准确率。Moallem等[6]使用支持向量机、人工神经网络和K-近邻3种机器学习技术分别检测苹果的腐烂或感染部分,结果显示使用SVM分类器的评分结果最高,为92.5%。以上传统机器学习方法在检测果蔬等产品的新鲜度方面是有效的,但是这些模型主要基于手工特征提取方法,耗时而且依赖于所研究的对象类型,具有局限性。
基于深度学习的方法近年来在农业领域也得到了更广泛的应用。基于深度学习的模型可以自动提取相关特征,无需人工干预。Suharjito等[7]在MobileNetV1的基础上基于相应的标准将油棕分成6个等级,达到了81.1%的精度。Gai等[8]基于YOLOv4网络引入DenseNet结构检测不同成熟度樱桃果实的位置,准确率达到了94.7%。Chen等[9]利用YOLOv5s先识别柑橘再结合该目标的显著性图输送到ResNet34网络中确定果实成熟度等级,最终成熟度检测准确率达到了95.07%。Ananthanarayana等[10]提出了一种利用SSD网络和MobileNetV2网络进行水果新鲜度分类和检测的方法,所提出的方法在图像分类和目标检测任务中的准确率分别达到97%和62%。尽管上述研究采用深度学习的方法在一定程度上有效解决了水果新鲜度分类的问题,但这些模型大多数都是仅针对单一品种,泛化能力不高,背景单一忽略真实场景下因遮挡重叠因素造成的识别困难,抗噪能力弱。
针对日常复杂场景下,识别多种水果不同新鲜度级别的需求,克服密集场景、遮挡障碍等困难,同时为了便于模型部署在移动端设备和满足实时检测任务的速度和精度要求,网络结构应轻量化。研究拟提出一种水果新鲜度检测算法YOLO-FFD,设计一种基于深度可分离卷积的轻量化模块LightweightC3作为主干网络的基本单元,并引入GSConv和大核卷积块EnhancedC3改进特征融合网络,以期为实现日常场景下水果品种及新鲜度识别的精度和速度要求。
YOLO-FFD模型结构如图1所示,其以YOLOv5n为基本框架做了三方面的改动。
图1 YOLO-FFD模型结构图
(1) 在特征提取网络中提出LightweightC3模块作为主干网络的基本构建模块,对模型进行轻量化,减少参数量。
(2) 设计EnhancedC3模块在模型的特征融合部分取代原有的C3模块,充分利用特征信息,提高模型的特征表达能力,提高检测精度。
(3) 替换颈部网络中的普通卷积为GSConv,进一步压缩模型参数量。
1.2.1 基本单元 一阶段目标检测算法YOLOv5具有运行速度快、检测效果好的优点。该网络由输入端(Input)、主干网络(Backbone)、颈部网络(Neck)和检测端(Head) 四部分组成。目前包含有5个不同版本,即YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。其中YOLOv5n网络的深度和宽度最小,而其他网络则在其基础上加深和加宽。因此,选用YOLOv5n为基础框架。
原始YOLOv5n的主干网络采用普通卷积构成的C3模块进行特征提取,受MobileNet的启发,使用深度可分离卷积取代普通卷积,把对输入进行的滤波组合的连续步骤分解为两步,降低计算量和模型大小,减少图像处理所需的内存,并加快目标的检测速度。因此,采用轻量级的LightweightC3(LC3)模块作为原始YOLOv5n的主干网络的基本单元。其结构如图2所示,将输入的特征图分为两个分支,其中一个分支进行普通卷积后再经过一个由普通卷积和深度可分离卷积组成的残差结构,与另一个经过普通卷积的分支的结果进行Concat操作,最后经过一个1×1普通卷积后得到输出的特征图。
图2 LightweightC3模块
深度可分离卷积是由分组卷积和点卷积两个卷积组成,如图3所示,首先由分组卷积对输入特征图的每个通道分别使用一个卷积核进行卷积,然后将卷积核的输出进行拼接得到输出。接着由逐点卷积对分组卷积输出的特征图进行通道融合得到最后的输出特征图。假设分别使用k×k大小的普通卷积和k×k大小的深度可分离卷积对尺寸大小为Hin×Win×M的输入特征图进行运算,最终得到大小为Hout×Wout×N的输出特征图,那么普通卷积的计算量QSC如式(1)所示,深度可分离卷积的计算量QDWC如式(2)所示,深度可分离卷积的计算量与普通卷积计算量的比值如式(3)所示。
图3 深度可分离卷积
QSC=k2×Hout×Wout×M×N,
(1)
QDWC=k2×Hout×Wout×M+M×N×Hout×Wout,
(2)
(3)
式中:
QSC——普通卷积的计算量;
QDWC——深度可分离卷积的计算量;
Hin、Win、M——输入特征图的长、宽以及通道数;
Hout、Wout、N——输出特征图的长、宽以及通道数;
k——卷积核的大小。
1.2.2 激活函数 由于各品种水果的种内相似度和种间相似度都相对较高,因此在LightweightC3模块中采用GELU激活函数(gaussian error linear unit,高斯误差线性单元),以提高模型的泛化能力。GELU激活函数结合了dropout策略和ReLU函数丢弃不重要的激活信息的共性。dropout按照指定的概率值对输入神经元随机乘以0,ReLU则按照输入值的正负对输入神经元乘以0或1。而GELU激活函数就是将神经元输入乘以0或1的概率Φ(x)与神经元输入x本身结合起来,当x变大,Φ(x)随之变大,x越容易被保留,当x变小,Φ(x)也随之变小,x越容易被丢弃。这样操作既保留了概率性也提高了对于神经元输入值本身的依赖性。GELU激活函数的数学表达式如式(4)所示。
(4)
式中:
Φ(x)——x的高斯正态分布的累积分布。
VGG的出现使得大核卷积逐渐被淘汰,虽然大核卷积带来的大的感受野获得了丰富的特征信息,但随之暴涨的计算量使得其成本是昂贵的,然而最近的研究[11-12]发现通过应用深度可分离卷积可以改善这一情况,在不增加太多参数的情况下有效扩大模型的感受野。因此为了增强网络的特征提取能力,在模型的特征融合部分针对原有的C3模块进行改进,设计了一种由大核深度分离卷积构成EnhancedC3(EC3)模块,如图4所示,它是由一个3×3的普通卷积和一个5×5的深度可分离卷积取代原始的C3模块中瓶颈层中的一个1×1的普通卷积和一个3×3的普通卷积,以增加有效感受野,利于对于密集目标的检测任务场景。
图4 EnhancedC3模块
当特征映射到达模型的颈部时,特征的通道尺度达到最大值,宽度和高度达到最小值,因此在此处使用GSConv[13]可以减少冗余信息,处理连接的特征映射,减少推理时间和降低检测的计算复杂度,进一步对模型进行精简。GSConv (Ghost-shuffle convolution)是由普通卷积和深度可分离卷积拼接组成的卷积。如图5所示,对输入的特征图进行卷积后通过深度可分离卷积得到另一个特征张量。根据通道数将两个特征张量连接起来。最后,利用通道混洗操作(shuffle)将生成的信息渗透到特征张量的各个部分。通道混洗操作是一种均匀混合策略,这种方法可以在不增加计算量的情况下完成通道间的信息融合。经过混洗操作使来自普通卷积的信息完全混合到深度可分离卷积的输出中,在不同的通道上均匀地交换本地特征信息,实现通道之间信息的流通。
图5 GSConv结构图
试验环境的处理器型号为Intel(R) Core(TM) i9-12900K CPU@3.20 GHz,内存为128 GB,显卡型号为NVIDIA GeForce RTX 3090(24 G显存),开发语言使用Python 3.8.13,深度学习框架为Pytorch 1.11.0,CUDA 11.3,CUDNN 8.2.0。
由于水果目标检测领域缺乏可供研究的完善的开源数据集,数据集采用kaggle网站开源图片以及百度图库网络爬虫所得图片构建。考虑到水果种类繁多且根据地域分布,数据集中选取具有代表性的3种常见水果苹果、香蕉和柑橘,图片标签分为六类,分别是新鲜苹果(fresh_apple)、不新鲜苹果(stale_apple)、新鲜香蕉(fresh_banana)、不新鲜香蕉(stale_banana)、新鲜柑橘(fresh_orange)以及不新鲜柑橘(stale_orange)。为了避免数据集中图片有效信息不充足对于模型训练的影响,也为了更贴合实际生活场景中水果检测的环境,该数据集中既包含实验室中单调背景下拍摄的单一水果图片,也包括日常生活场景下的同品种多数量水果和多品种的图片。数据集共包括15 372张图片,其中含苹果5 496张、香蕉5 170张、柑橘4 261张以及多品种水果图片445张,按照7∶3的比例将其划分为训练集和测试集。
选用平均精度均值(mAP)、参数量、计算量和每秒处理帧数(FPS)作为模型的评价指标。mAP是衡量模型对各个类别整体检测效果的常用指标,是所有类别平均精度(AP)的平均值,而AP是以召回率(R)为横坐标,精度(P)为纵坐标的PR曲线下的面积,模型的召回率是预测正确结果在所有正样本中的比例,即“查全率”,精度是模型预测的所有结果中,预测正确的比例,即“查准率”。参数量是模型的所有参数的数量,计算量是模型的总浮点运算次数,这两者都是用来反映模型的轻量化程度。FPS是模型每秒处理的帧数,FPS越大则说明模型处理图片的速度越快,实时性越好。具体的计算公式:
(5)
(6)
(7)
(8)
式中:
P——模型所有结果中预测正确的比例,%;
TP——检测为正样本的正样本(真实正样本);
FP——检测为正样本的负样本(虚假正样本);
FN——检测为负样本的正样本(虚假负样本);
R——模型正样本中预测正确的比例,%;
AP——平均精度均值,%;
mAP——所有类别的平均精度的均值,%;
c——类别数;
AP,i——第i个类别的AP值。
图6展示了训练过程中损失值下降过程。随着训练次数的递增,模型在前25轮次急速下降,迭代至75轮时趋于平缓,最终稳定在0.015附近。两组数据分别是采用SiLU和GELU作为主干网络激活函数时的损失变化曲线。由此可得,在相同轮次下,采用GELU时的损失值更小,它提高了模型损失值下降的速度,使模型更快收敛。
图6 损失下降曲线图
2.3.1 轻量化试验 YOLOv5虽然检测精度高,运行速度快,但它复杂的网络结构和较大的参数量使其不易在移动端设备上部署。为了降低模型参数量和运算量,现将YOLOv5模型的主干特征提取网络替换为轻量级网络。为了进行正确有效的模型轻量化,将研究提出的YOLO-FFD模型与目前已有的经典轻量级网络MobileNetV3[14]、ShuffleNetV2[15]、GhostNet[16]、PP-LCNet,替换原YOLOv5中的主干网络CSPDarknet进行对比试验。
如表1所示,采用轻量级主干网络后,其模型计算量基本都得到了大幅度减少。5组试验中,ShuffleNetV2作为主干网络时虽然得到了较好的轻量化表现,但精度损失较大;MobileNetV3和PP-LCNet精度稍微高一些但比原始网络仍有损失;GhostNet作为主干网络损失的精度最少但轻量化程度也是最低的。以上模型都因为轻量化处理损失了检测精度,而使用LightweightC3模块替换主干网络中的C3模块时,提高检测速度的同时并未带来性能损失,不仅模型计算量降低了26%,精度还提高了0.79%,FPS也上涨到120。因此选用LightweightC3模块搭建模型的主干特征提取网络。
表1 不同骨干网络的试验结果
2.3.2 消融试验 为了验证各种改进方法的有效性,进行了一系列消融试验。以原始YOLOv5n模型为基准,在显卡为RTX3090的PC平台和嵌入式设备Jetson TX2平台上使用相同的数据集和相同的超参数分别进行5组消融试验,结果如表2所示。将原始的C3模块改为LightweightC3模块之后,计算量减少了26%,模型得到进一步轻量化的同时精度增加了1.39%,mAP增加了0.79%。在原始网络中的颈部使用EnhancedC3模块时,精度和mAP分别上涨了2.14%和1.3%。EnhancedC3的引入使模型中不同通道的特征信息得到了充分的流通与融合,提高了模型的检测精度。同时加入LightweightC3和EnhancedC3模块时,模型减少了24%的计算量,mAP上涨1.77%。采用LightweightC3 模块、在颈部引入EnhancedC3模块和GSConv时,改进后的模型比较改进前模型,模型的精度增加了1.81%,mAP增加了2.21%,模型计算量减少了26%的同时在RTX 3090上速度为原来的3倍,在嵌入式设备Jetson TX2上速度达到了20帧/s,整体性能得到提升。
表2 消融试验结果†
2.3.3 与其他算法对比试验 为了验证所提YOLO-FFD模型的性能与优势,与目前经典的轻量化目标检测算法分别在RTX3090平台和嵌入式设备Jetson TX2平台上进行对比试验,选择的目标检测算法包括SSD[17]、YOLOv3-Tiny[18]、YOLOv4-Tiny[19]、YOLOv5-Lite。如表3所示,相较于YOLOv3-Tiny、YOLOv4-Tiny、YOLOv5-Lite,研究提出的模型的运行速度和检测精度最高,浮点运算量仅次于YOLOv5-Lite。说明研究所提出YOLO-FFD模型明显改善了轻量化模型所带来的精度损失,减少了检测时的漏检问题,在运行速度和检测精度上都有一定的提升,提高了在移动端设备上部署模型的可行性。
表3 不同模型在研究数据集的对比试验
2.3.4 检测效果展示 为了直观对比改进模块对于原始模型的有效性,现对不同环境背景条件下水果图片作为测试对象进行新鲜度检测。图7(a)为YOLOv5n模型误将背景物检测为目标,而YOLO-FFD模型检测结果正常;图7(b)为密集场景下测试结果,原始模型不仅漏检了许多目标,而且检测到的目标也出现错检情况,而YOLO-FFD模型准确地分辨出了目标的新鲜程度,漏检情况也得到了极大改善;图7(c)为出现遮挡物时检测结果,YOLOv5n模型无法识别目标,而YOLO-FFD模型识别出目标,虽然存在漏检情况但相比原始模型结果得到改善;图7(d)为多种类水果混合的场景,YOLOv5n模型误将背景中带花纹的黄色木板错检为香蕉,多个被遮挡住的目标也未能识别,而YOLO-FFD模型未出现错检,漏检情况也得到改善;图7(e)为对研究选取的3种水果按新鲜与否分成的6类对象的检测情况,YOLOv5n模型未能完全识别出所有种类的对象,存在一处漏检和一处错检情况,此外,被遮挡的不新鲜香蕉被重复识别,出现了两个检测框,而YOLO-FFD模型对各个类别的目标均能准确识别,置信度也明显提高。
左图为YOLOv5n模型检测效果,右图为YOLO-FFD模型检测效果
改进后模型的主干网络中由于LightweightC3模块的添加,增强了目标的位置信息,过滤掉复杂背景带来的冗余信息或冲突信息,只保留特征的关键信息,提高模型对于重要目标位置的关注度,因此模型对于目标的错检减少。同时,在模型的特征融合网络中引入了EnhancedC3模块和GSConv,丰富了模型的感受野,保留了更多融合后的目标特征信息,其对于密集目标的检测能力大大提高,改进后模型在漏检方面表现优于改进前模型。试验结果表明,提出的YOLO-FFD模型对于水果新鲜度检测精度有明显提升,对不同种类及不同新鲜程度水果在不同场景下的错检、漏检情况有明显改善。
为了满足日常密集场景下水果品种及新鲜度识别的需求,研究提出了一种轻量化的水果目标检测与新鲜度分类模型YOLO-FFD。网络基于YOLOv5n网络框架,将特征提取网络基本单元替换为由深度可分离卷积构成的轻量化模块LightweightC3可以使模型参数量和运算量大幅减少,采用基于大核深度可分离卷积的EnhancedC3替换特征融合网络中的C3模块可以提高模型的特征融合能力,弥补因模型参数量减少而造成的精度损失;引入的GSConv替换特征融合网络中原来的普通卷积可以对模型进行进一步轻量化处理,提高模型的检测精度。YOLO-FFD模型平均精度均值达到了96.12%,在RTX 3090上的检测速度达到了172帧/s,在Jetson TX2上的检测速度达到了20帧/s,相较于原始模型平均精度均值提高了2.21%,模型计算量减少了26.1%,在RTX 3090上的检测速度增加了2倍,在嵌入式设备Jetson TX2上的速度增加了1倍,提升了部署在嵌入式设备端实时检测的可行性。