APP下载

一种改进神经网络的苹果快速识别算法

2023-06-08曹志鹏袁锐波林红刚

关键词:池化主干卷积

曹志鹏,袁锐波,杨 肖,林红刚,朱 正

(昆明理工大学 机电工程学院, 昆明 650504)

0 引言

随着产业化的升级,农业生产也要进行产业化的升级,智能化、自动化的农业化装备也会有大量需求[1]。苹果采摘机器人[2]是未来的一大发展方向,可以极大地缓解我国因劳动力的持续下降带来的劳动力短缺问题。其中苹果的视觉识别定位是一个很重要的环节,是决定采摘机器人采摘效果的关键。

最开始,蔬果识别的方法是采用摄像头采集到图片,通过对图片的简单处理,一般是对颜色的处理,实现对不同颜色的识别。后来,蔬果识别方法采用聚类法,通过对目标聚类进行识别。聚类方法有K-means聚类算法、KNN聚类算法,以及SVM算法。Moallem等[3]就采用了K均值聚类的方法对苹果进行识别,首先将不是苹果的像素进行去除,通过对YCbCr颜色空间中的Cb分量应用K均值聚类识别苹果。朱玲[4]使用K-means聚类加BP神经网络结合对水果等级进行分类,识别的准确率显著提升。

现在的水果识别方法大多采用的是卷积神经网络,神经网络有着比传统的分割方法更精准的识别效果,神经网络有YOLO[5-7]、Faster R-CNN、SSD等。李林升等[8]使用Faster R-CNN对苹果进行识别,该网络模型可以得到一个不错的识别准确率,准确率能达到97.6%。Lin等[9]将Faster R-CNN应用到草莓花识别,在不同场景下可以较好地识别草莓花,为室外的草莓产量提供参考。然而Faster R-CNN的检测速度比较低,不太适合实时识别。还有张恩宇等[10]使用的SSD算法对苹果的识别,能够得到不错的检测效果。熊俊涛等[11]对YOLOv3修改后,可以对夜间环境的柑橘有较好鲁棒性,显著提高果实的检测精度。刘芳等[12]采用YOLO算法对番茄进行识别,也可以得到较好的识别效果。

本文以更新的YOLOv4[13]作为基础算法,为了达到轻量化的效果,采用Ghostnet[14]网络替代原来的主干网络,并且以深度可分离卷积代替颈部网络,同时将在空间金字塔池化前后的卷积层增加为5层。结果显示,在精度损失很小的情况下,可以增加检测速度。

1 YOLOv4的网络

YOLOv4的网络结构如图1所示,YOLOv4的网络分为3个部分。

第一部分是Backbone:CSPDarknet53;第二部分是Neck:SPP,PANet;第三部分是Head:YOLOv4的头部。每个部分都有各自的功能,第一部分Backbone的作用是获取图片中的信息。接下来的部分SPP的作用是增加网络的感受野,PANet结构的作用是将空间信息保存,通过上采样和下采样将13×13、26×26、52×52的特征信息融合,可以更好地提取特征。最后的部分是yolo网络系列中的预测的头部,用来预测图片中的信息进行目标检测。

图1 YOLOv4的框架

2 改进YOLOv4网络设计

2.1 Ghostnet网络

Ghostnet是华为公司设计出来的一个卷积网络,可以采用Ghostnet替换CSPDarknet53主干网络。CSPDarknet53的网络层有53层,大部分是卷积层,这样就会产生很多的参数量和计算量。Ghostnet网络的加入可以用更少的参数和计算量达到与CSPDarknet53类似的特征提取。

2.1.1Ghost模块

Ghostnet网络的内部有Ghost模块,该模块采用的理念分两步:第一步是先降低通道数,第二步是进行卷积提取特征。这种理念使得Ghost模块的参数量和计算量都相应减少,从而增加了运算速度。图2为普通卷积,图3为Ghost模块。

图2 普通卷积

图3 Ghost模块示意图

特征图输入是Hin×Win×Cin(分别代表特征图的高、宽和通道数,后面也是代表相同,下标代表输入输出),卷积核是K×K(分别代表卷积核的高和宽),输出是Hout×Wout×Cout。其中d(代表卷积核的高和宽)与K相等,s是指经过s次变换。

普通卷积的参数量:

params=K×K×Cin×Cout

(1)

普通卷积的计算量:

FLOPs=Cin×K×K×Hout×Wout×Cout

(2)

Ghost卷积的参数量:

(3)

Ghost卷积的计算量:

(4)

普通卷积与Ghost卷积的计算量比:

(5)

由上述可知,Ghost模块相对于普通的卷积模块计算量和参数量更少。

2.1.2SENet注意力模块

Ghostnet网络中使用了SENet注意力模块。SENet注意力模块是为了获得全局感受野,即更大的视野。

SENet分压缩、激发2步。压缩是通过池化对尺寸进行压缩,可以减少整体的计算量,同时更好地将特征提取出来。

2.2 深度可分离卷积

对于YOLOv4的PANet中有大量的卷积模块CBL,模块CBL的网络是Conv+BN+ReLU。在PANet中有CBL*3和CBL*5模块,CBL*3和CBL*5中有3×3的卷积核的卷积模块。这种卷积模块会产生大量的参数量和计算量,使得网络变得更加庞大。因此需要一个方法对卷积进行替换,从而使整体网络变得简洁,提高网络的计算速度,缩短网络对目标的预测时间。

深度可分离卷积[15](depthwise separable convolution)就可以使得参数量和计算量大大减少,如图4和图5所示。

图4 逐通道卷积示意图

图5 逐点卷积示意图

由图2可知,普通卷积有4组3个3×3的卷积核,通过4组3个3×3的卷积核与输入的图像进行卷积从而得到4个Maps,进而得到图像的部分特征。

深度可分离卷积是包含逐通道卷积(depthwise convolution)和逐点卷积(pointwise convolution),逐通道卷积有3个3×3的卷积核,每个卷积核对应的一个通道,单个卷积核对应的通道进行卷积,得出对应的Maps,3个3×3的卷积核对应了3个Maps。逐通道卷积利用每个卷积核对应一个通道,大大减少了参数量和计算量,可以减轻网络的复杂性。

逐通道卷积后面通常跟随逐点卷积,逐点卷积和普通卷积非常类似,只是将普通卷积核替换为了1×1×M的卷积核,M是上个通道的通道数量。逐点卷积利用1×1×M的卷积核对原图片进行点的卷积,从而可以将图片逐点卷积进行通道的信息融合。逐通道卷积是对应相对的通道进行卷积,并没有将各个通道的信息进行融合,这样就会使信息不对称。使用逐点卷积,可以将各个的通道的信息进行融合,这样就可以使得各个通道的信息平衡。

当特征图输入是Hin×Win×Cin,卷积核是K×K,输出是Hout×Wout×Cout时。普通卷积在2.1.1当中已经计算过,这里不再重新计算。

深度可分离卷积中的逐通道卷积的参数量:

params=K×K×Cin

(6)

深度可分离卷积中的逐通道卷积的计算量:

FLOPS=K×K×Cin×Hout×Wout

(7)

深度可分离卷积中的逐点卷积的参数量:

params=Cin×Cout

(8)

深度可分离卷积中的逐点卷积的计算量:

FLOSPS=Cin×Hout×Wout×Cout

(9)

参数量之间的倍数:

(10)

计算量之间的倍数:

(11)

2.3 添加卷积层数

在空间金字塔池化模块的前后各有一组CBL*3,对图片的特征信息进一步提取。本文把CBL*3的3×3的卷积替换为2.2节中的深度可分离卷积。然后将CBL*3替换为CBL*5,可以加强对图片的特征提取以及信息特征的融合,能提高整个网络对图片信息的获取。增加卷积层的目的就是为了增加整个网络的精准度。

2.4 改进后的YOLOv4网络

整体的YOLOv4改进网络有3个部分:第一个部分,CSPDarknet53替换为Ghostnet特征提取网络,见图6中的红色部分,减少网络的参数量和计算量。第二个部分,采用深度可分离卷积,替换PANet中的所有3×3的卷积模块,可以减少大量的参数量和计算量。第三个部分,在SPP(空间金字塔池化模块)的前后将CBL*3全部替换为CBL*5,见图6中的绿色部分,能更好地提取图片中的信息。

修改后的YOLOv4整体网络流程如图6所示,先输入416×416像素的三通道的图片,经过一个卷积降维为208×208的32通道,而后将其向后传导至主干网络中的Ghostnet模块,Ghostnet模块一共5个,不断将维度按上一级1/2下降。获得52×52的40个通道部分和26×26的112个通道部分直接传给颈部网络,13×13的160通道部分通过SPP后传导给颈部网络,再由颈部网络传导给3个YOLO检测头。

图6 改进的YOLOv4网络结构框图

3 实验与数据对比

本文以PC为平台,PC的配置是CPU为Intel(R) Core(TM) i7-9750H CPU@2.60GHz 2.59 GHz,GPU是NVIDIA GeForce GTX 1660 Ti。系统采用的是win10,网络编程环境为python3.6,使用Pytorch1.7.1版本。

3.1 数据集和训练

实验数据集采集于昆明市西山区的采摘园,通过反转和色调调整,整体数据集有 1 344张。本文中的网络如图6所示,训练时输入的图片像素为416×416。本实验数据集采用训练集、验证集和测试集分类,训练数据集越大,训练效果越好,验证集和测试集需要一定的数量,本文采用8∶1∶1的数据集分布。bitch_size越大下降梯度越准确,达到一定的程度时梯度精度就不再提高,故输入的bitch_size为8。训练之前先进行anchor重新计算,因为有些先验框并不能更好地适应本数据集,所以进行先验框的聚类算法计算anchor。采用KNN聚类算法计算,可以得到相应的先验框。将得到的先验框放入网络中,可以更好地对目标进行预测。

3.2 改进算法消融实验

本文对整体的网络进行了消融对比,分别对比了Ghostnet主干网络替换后的网络,修改主干网络后PANet更换为2.2节中的深度可分离卷积的网络,修改主干网络后2.3节中的SPP前后网络增加的网络,以及修改主干网络过后2.2和2.3小节中的深度可分离卷积与SPP前后网络增加结合后的网络。

对比各个网络的性能通常会采用recall(召回率)、precision(准确率)、F1(recall和precision关系值)、MAP(平均正确率)等指标对网络性能高低进行评判。

F1值的计算公式:

(12)

recall值的计算公式:

(13)

precision值的计算公式:

(14)

式中:TP为正样本中检测为正样本的量;FP为负样本中检测为正样本的量;FN为负样本检测为负样本的量。

MAP是衡量一个网络的重要指标。

MAP值的计算公式:

(15)

由表1可知,一共有7组对照试验,分别是原来的YOLOv4网络,颈部网络替换为深度可分离卷积的YOLOv4-dw,只对空间金字塔池化前后添加卷积层的YOLOv4-c,只对主干网络替换的YOLOv4-ghost网络,在YOLOv4-ghost网络基础上对空间金字塔池化前后添加卷积层的YOLOv4-ghost-c网络,在YOLOv4-ghost网络基础上对卷积模块全都替换成深度可分离卷积的YOLOv4-ghost-dw网络,最后的是前几个的总和,替换主干网络、添加卷积层和替换普通卷积的YOLOv4-ghost-dw-c网络。在综合性能方面的对比可知,修改后的网络模型F1值与原YOLOv4相同,比最低F1值高0.04。其recall值是最高的,比最低的值要高9.23%,所以修改后网络的recalld值还是比较高的,由此可知修改后的网络漏检最少。综合各项数据对比可知,修改后的网络模型相对于原模型和部分修改的模型有更加优越的性能。

表1 YOLOV4的修改网络的消融实验

3.3 与其他算法效果对比实验

本文在相同实验的环境配置和同一数据集下进行对比实验,分别对原算法YOLOv4、YOLOv3网络、efficientnet网络算法,以及修改后的网络进行对比。在输入图像尺寸为416×416的像素时,对各个网络的速度、对应的准确值和对应的权重进行对比分析。

由表2可知, YOLOv3算法模型的FPS的速度由原YOLOv4的算法模型的24FPS提高到了30FPS,提高了将近25%。但是从MAP(平均精确度)值来看,YOLOv3算法模型的MAP值比原YOLOv4算法模型的MAP值低了6.56%。虽然速度得到了提升,但是MAP值下降得较多,在实际应用场合中不太合适。YOLOv3算法模型是原YOLOv4算法模型的上一级网络算法,YOLOv3算法模型的权重比原YOLOv4算法模型少186 M,减少了权重占比。

表2 YOLOv4对比实验

修改后的网络YOLOv4-ghost-dw-c对比前3个网络,在MAP值上,修改后的网络与YOLOv4算法模型的MAP值相差很小,在实际应用的场合可以接受,且比另外2种网络算法模型要高。在FPS检测速度上,修改后的网络算法模型要比前2个网络都快,达到35FPS可以达到实时检测的目的,对比YOLOv4算法模型速度提升了45.8%,极大地加快了检测速度。修改后的网络的权重只有很少的50 M,对比原YOLOv4算法模型减少了196 M的权重,减少了79.7%,对比YOLOV3算法模型减少了10 M。对于efficientnet网络,修改后的网络MAP要高于efficientnet网络1.19%,速度高于efficientnet网络94.4%。

综合来看,修改后的网络整体的效果要优于原YOLOV4算法模型,比其他2种网络更精确、快速,可以应用到实际中。

3.4 实验效果对比

在PC上对各个模型进行预测,通过原YOLOv4网络、YOLOv3网络、efficientnet网络和修改后的模型YOLOv4-ghost-dw-c网络对图片进行检测。图7中图片的顺序由左往右分别为阴天、遮阳、顺光、多果的各种情况,可以较好地模拟复杂环境下的各种情况。

图7 实验的效果图

由图7可知,修改后的网络检查效果较好。其中,在YOLOv3中多果有遮挡检测不到的情况。不管阴天、遮阳、顺光,还是多果的情况,修改后网络的选框也更加精准,可以更好地知道目标在摄像头中的大小以及位置。

4 结论

本文提出了一种对于原YOLOv4的轻量化修改方法。首先通过更换主干网络Ghostnet减少参数量和计算量,增加了空间金字塔池化模块的前后的卷积层数,而且通过深度可分离卷积替换部分卷积,进一步减少参数量和计算量。上述方法虽然可以提高检测速度,但精度还有一定欠缺,因此为了提高精准度增加了空间金字塔池化的前后卷积层。对于原YOLOv4算法模型,修改后的网络在检测速度上提高了45.8%,权重减少了79.7%。综合以上性能,修改后的网络整体性能相对原YOLOv4更好。本文的模型可以提高检测速度,但不能提升检测精度,检测精度和原来的YOLOv4网络几乎相同。在后期的研究中要在检测速度保持不变的情况下提高检测精度。

猜你喜欢

池化主干卷积
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
抓主干,简化简单句
设施蔬菜病害识别中的CNN池化选择
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
基于傅里叶域卷积表示的目标跟踪算法
左主干闭塞的心电图表现
整合内容 构建高效课堂——开展非线性主干循环活动型单元教学模式