APP下载

基于改进YoloX的输电通道工程车辆检测识别

2022-09-29张智坚曹雪虹焦良葆邹辉军

计算机测量与控制 2022年9期
关键词:卷积样本图像

张智坚,曹雪虹,焦良葆,孟 琳,2,邹辉军

(1.南京工程学院 人工智能产业技术研究院,南京 211167;2.江苏省智能感知技术与装备工程研究中心,南京 211167)

0 引言

随着我国经济的飞速发展,城镇经济基础建设的不断加快,大型工程器械得到了广泛的使用,导致高压输电线路原有的安全通道环境被挤压。输电线路设备发生外力破环的事件逐渐上升,已经成为目前我国电网输配电线路安全运行的主要隐患,而单纯依靠电力巡检人员进行定期检查,不仅效率低下,而且更受到自然方面的影响[1]。因此,采用有效的目标检测方法对输电通道下的工程车辆进行精准的检测具有重大的意义。

在利用深度学习进行目标检测之前,传统的目标检测主要是采用滑动窗口的方式。首先寻找图像中感兴趣的区域,即选取可能包含检测对象的区域。然后对可能包含检测对象的区域进行特征提取,例如尺度不变特征变换(SIFT,scale-invariant feature transform)等特征提取算法[2]。最后利用支持向量机(SVM,support vector machine)等算法对提取好的特征进行检测分类[3]。但是,图片中物体尺度不一,所占图片面积有大有小,当利用一个固定的窗口进行滑动时,物体所占图片面积越小,候选框区域中背景区域的占比就越大;物体所占图片面积越大,候选框区域只能包含物体的局部。因此在对候选区域中的物体进行特征提取时,一方面分类的时候可能产生误分类,另一方面可能对于同一个对象产生多个正确识别的结果。若设计各种尺寸的窗口,这样就会产生大量的计算,无法满足日趋复杂的输电通道场景的需求。

近年来,由于卷积神经网络在计算机视觉领域中得到了广泛的应用,给以深度学习为基础的目标检测算法提供了快速发展的机遇。基于深度学习的目标检测算法主要分为两类,第一类是基于候选区域的双阶段目标检测算法,第二类是基于回归问题的单阶段目标检测算法[4]。双阶段的目标检测算法主要有Fast R-CNN、Faster R-CNN、R-FCN等,首先由特定的算法生成一系列待识别对象的候选框,再通过卷积神经网络对待识别对象进行分类。Girshick[5]等提出Fast R-CNN,利用卷积网络进行特征的提取分类以及边界框的回归,通过感兴趣池化层进行不同尺寸感兴趣区域的统一。Ren[6]等提出Faster R-CNN,使用区域预测网络(RPN)替代传统特征提取方法,提高了网络的训练速度。Dai[7]等提出R-FCN方法,应用全卷积网络提升检测速度,通过位敏池化层,解决因图片自身变化所引起的属性改变问题。这类算法虽然准确度较高,但是计算量较大,导致检测速度较慢。单阶段的目标检测算法主要有Yolo,SSD,Retina-Net等,不需要产生候选框,直接对预测的目标物体进行回归。谢俊章[8]等利用自适应激活函数改进Yolov4的残差结构,提升了小型密集分布的车辆检测精度,但是模型结构复杂。于硕[9]等利用Yolov5网络,通过数据增强以及网络改进对小目标进行识别,提高了定位精度。Raj[10]等以SSD目标检测算法为基础,应用Canny算子和log滤波器进行图像增强,提高了夜间车辆的检测精度。宋欢欢[11]等利用Retina-Net算法,结合迁移学习,并结合模型压缩,对光照变化明显,车辆遮挡严重导致的检测精度下降问题有较大改善,但能识别车辆种类少。

综上,当前基于深度学习的目标检测算法大多数对样本的质量要求较高,一旦受到时间和气候的影响,如傍晚或者阴天光线不足的情况,会极大影响检测效果。此外,在保证检测速度的同时,往往精度会有大幅下降。

为了有效解决上述问题,本文通过对光线较暗的图片进行筛选,对MSR算法进行优化,提高图片亮度。以YoloX算法为基础对工程车辆进行目标检测,通过修改网络的损失函数来平衡正负样本以及难易样本,通过添加CBAM注意力机制,结合内部通道信息和位置信息,提高YoloX算法的提取能力,并通过修改Neck中CspLayer层,在保证检测速度的前提下,提高模型的检测性能。

1 YoloX网络介绍

1.1 YoloX网络结构

YoloX的具体结构如图1所示。

图1 YoloX网络结构

YoloX的网络结构主要由4个部分构成,分别为输入端、骨干网络Backbone、强特征提取网络Neck以及预测网络Prediction这4个部分构成。输入端采用Mosaic数据增强方法的同时,融合了Mixup数据增强方法,通过随机缩放、随机裁剪、随机排布、不同图片加权融合等方式对图片进行拼接,丰富了数据的多样性,可提升小目标的检测效果。主干网络Backbone中使用了Focus、CSPLayer等结构,Focus结构通过对图片进行切片操作,将图片中每隔一个像素点取一个值,从而将宽高信息都集中到了通道空间,防止信息的丢失。CSPLayer结构主要由组件CBS(卷积层+归一化层+激活函数)和残差组件(由两个CBS结构构成)构成,通过对网络的深度进一步加深,来不断提高网络的特征提取和特征融合能力。在网络的Neck部分,通过利用特征金字塔FPN+PAN结构,将强语义特征和强定位特征进行融合,其中FPN结构以自顶向下的方式将深层的语义特征传到浅层,来增强多个尺度上的语义表达,而PAN结构则将浅层的定位信息传递到深层,来增强在多个尺度上的定位能力。此外,使用CSPLayer结构来进一步加强网络特征融合。在最后的Prediction部分,通过无锚点方式(Anchor-free)减少预测结果数量,完成初步的筛选,再利用SimOTA算法对预测结果进行精细化筛选,得到最终的预测结果。

1.2 改进策略

本文主要利用YoloX算法研究工程车辆的检测,通过在网络中添加注意力机制,修改CSPLayer以及损失函数,对YoloX算法的网络结构进行改进,使YoloX算法能更适用于工程车辆的检测领域。

1.2.1 添加注意力机制CBAM

Woo S[12]等提出了一种轻量的注意力模块Convolutional Block Attention Module,简称CBAM,具体结构如图2所示。该模块主要由两个独立的子模块构成,分别是通道注意力模块(Channel Attention Module)和空间注意力模块(Spartial Attention Module),能够沿着空间和通道两个方向依次推断出注意力权重,然后将权重与原始特征图相乘,从而对特征进行自适应调整,能够更关注对目标物体的识别。

图2 CBAM结构图

CBAM模块的实现主要分为两步,第一步是经过CA模块,该模块主要关注输入图片中有意义的信息,压缩空间维度,通道维度不变,具体结构如图3所示。首先将输入的特征图F分别进行一个空间的全局最大池化(Global Max Pooling)和全局平均池化(Global Average Pooling),得到两个1×1×C的特征图。接下来将得到的两个特征图输入到一个两层的神经网络(MLP),第一层中神经元个数为C/r(r为减少率),使用的是Relu激活函数,第二层神经元个数为C,输出两个激活后的特征。最后,将两个特征相加并利用Sigmoid激活函数,获得一个权重系数Mc,将输入特征F与权重系数Mc相乘得到最后缩放后的新特征图F’。

图3 CA模块结构图

第二步是经过SA模块,该模块主要是关注对象的位置信息,压缩通道维度,空间维度不变,具体结构如图4所示。首先利用一个基于通道的全局最大池化(Global Max Pooling)和全局平均池化(Global Average Pooling)对CA模块中输出的特征图F’进行处理,得到两个H×W×1的特征图。接下来对这两个特征图基于通道进行一个拼接,利用一个7×7卷积操作并使用Sigmoid激活函数,获得一个权重系数Ms。最后将输入的特征F’与权重系数Mc“相乘,得到最终缩放后的新特征。

图4 SA模块结构图

通过以上两个步骤,CBAM模块沿着两个独立的维度完成了通道信息和空间信息的融合,完成自适应的特征优化。相比于注意力机制SE模块[13]只考虑内部通道信息而忽略了位置信息的重要性,CBAM模块结合了空间(spatial)和通道(channel)的注意力机制模块,可以取得更好的效果。将此模块添加在YoloX网络中Backbone部分中20*20*1024的CSPLayer层输出位置,可提高YoloX算法对工程车辆的检测效果。

1.2.2 Neck部分CSPLayer改进

在YoloX网络中,骨干网络Backbone主要是对输入的图片进行特征提取,而Neck部分介于Backbone和Prediction之间,主要是为了更好的提取backbone中的特征,对接下来Prediction部分的定位和分类的结果有很大的影响[14]。强特征提取网络Neck部分中的CSPLayer结构如图5所示,通过利用残差结构,对原来残差块的堆叠进行一个拆分,一共分成左右两个部分,其中主干部分继续对原来的残差块进行堆叠,另一部分则经过少量处理直接连接到最后。图5中(a)先将两个部分进行连接,然后再进行输入到Partial Transion层中,采用这种做法会使得大量的梯度信息被重用,有利于网络学习,(b)中先将部分特征输入Partial Transion层中,然后再进行连接,这样做损失了部分的梯度重用,但是计算复杂度比(b)图低。

图5 原始CSPLayer

改进的CSPLayer通过将图5中(a)和(b)的结构进行结合,具体结构如图6所示,可以进一步提升学习能力,但是也提高了一些计算复杂度,所以需要进一步将CSPLayer中的传统卷积替换成深度可分离卷积,减小计算复杂度。

图6 改进版CSPLayer

对于传统卷积而言,输入一个大小为DF*DF*M的特征图,输出一个小为DF*DF*N特征图,其中卷积核的大小为DK*DK*M,则传统卷积的计算量C如公式(1)所示,其中DF*DF为特征图的长和宽,DK*DK为卷积核的长和宽,M和N为通道数。

C=DK×DK×M×N×DF×DF

(1)

而深度可分离卷积可以将卷积分为两个过程,首先使用大小为DK*DK*1卷积核进行卷积,这样每一个卷积核就会产生M个DF*DF结果,第二步使用 1*1*M的卷积核,这样就只得到一个结果,一共有N个卷积核,最终就得到了DF*DF*N的结果,深度可分离卷积的计算量S如公式(2)所示:

S=DK×DK×M×DF×DF+M×N×DF×DF

(2)

通过将深度可分离卷积的计算量和传统卷积的计算量进行对比,比值K如公式(3)所示,计算量比传统的卷积核小很多,卷积核个数N越大,计算量减少的就更加明显。

K=

(3)

1.2.3 改善obj分支的损失函数

在YoloX网络中,Prediction部分的YoloHead分为3个分支,分别为Cls分支、Reg分支以及Obj分支。Cls分支主要用于判断每一个特征点所包含的物体种类,Reg分支主要用于判断每一个特征点的回归参数,回归参数调整后可以获得预测框,Obj分支主要用于判断每一个特征点是否包含物体,具体结构如图7所示。

图7 YoloHead结构图

原始网络中obj分支采用BCELoss损失函数[15],具体如公式(4)所示。其中M为样本的类别数量,yic代表符号函数(即如果样本i的真实类别等于类别c则取值为1,否则取值为0),pic为观测样本i属于类别c的预测概率。BCELoss损失函数虽然能解决梯度消失问题,平衡正负样本,但是对于难易样本不均衡的情况处理效果不佳,而困难样本对网络的训练结果有一定的影响。

(4)

Focal Loss损失函数是基于二分类交叉熵损失的改进[16],既能平衡正负样本、也能平衡难易样本,具体如公式(5)所示,其中ɑ用来调节正负样本不平衡,γ用来调节难易样本不平衡,y=1表示正样本,y=0表示负样本。通过降低简单样本对于loss的影响、更多关注难样本,避免大量简单负样本的loss在训练过程中占据loss的主导地位。此外通过利用调质因子(1-p)γ,对于正样本来说,预测值p趋向于1,说明是简单样本,(1-p)γ就会趋近于0,损失函数值就会变小,而预测值p趋向于0,说明是困难样本,(1-p)γ就会趋近于1,损失函数值就会变大。所以这样对于简单样本而言,权重就会降低,可以减少简单样本的影响,对于困难样本,权重就会增大,从而增加对困难样本的关注度,让网络更倾向于使用困难样本进行参数的更新。

L=-α(1-p)γlog(p)y=1

L=-(1-α)pγlog(1-p)y=0

(5)

2 Retinex算法

2.1 常见Retinex算法

Retinex是一种建立在科学实验和科学分析基础上的图像增强方法[17],主要包括单尺度的SSR算法(Single Scale Retinex)以及多尺度的MSR算法(Multi-Scale Retinex)等,可以对不同类型的图片在动态范围类压缩、颜色等方面进行自适应的增强。

单尺度的SSR算法主要通过从原始图片中去除低频照射部分,保留原始图片中的高频分量来进行图像增强[18]。光照图像可以分为其入射图像和反射图像,具体如公式(6)所示,入射图像主要决定了其像素能达到的动态范围,需要去除,而反射图像是其本身的反射特性,基本不会发生变化,从而需要保留,具体如公式(7)所示:

(6)

r(x,y)=logS(x,y)-log[F(x,y)⊗S(x,y)]

(7)

S(x,y)表示原始图像,r(x,y)表示输出图像,R(x,y)表示反射图像,L(x,y)表示入射图像,F(x,y)表示中心环绕函数,具体如公式(8)所示。其中C是高斯环绕尺度,C越小,动态压缩能力越强,图像阴暗部分的细节可以得到更好的增强,C越大,颜色保真度越高,λ是一个尺度,需要满足的条件如公式(9)所示。中心环绕函数F(x,y)通过使用低通函数,对入射图像对应原始图像的低频部分进行估计,并从原始图像中除去低频照射部分,最终就会留下原始图像所对应的高频分量[19]。

F(x,y)=λe-(x2+y2)/c2

(8)

(9)

多尺度的MSR算法是在SSR算法的基础上发展来的,可以同时保持图像高保真度与对图像的动态范围进行压缩的同时,实现色彩增强、颜色恒常性、局部动态范围压缩、全局动态范围压缩[20]。MSR计算过程如公式(10)所示,其中K是高斯中心环绕函数的个数。为了能够保持像SSR算法一样同时拥有高、中、低3个尺度的优点,设置K的值为3。因此MSR算法能较好的解决色彩和动态压缩范围的平衡问题,但是还会出现边缘锐化不足等问题。

(10)

2.2 改进MSR算法

传统的MSR算法在提升图片亮度的同时,会导致图片中对象的轮廓模糊[21],而在YoloX网络中,图像中对象的轮廓对识别的效果影响很大,为了更有效的增强整个图片,提出一种基于边缘增强的多尺度Retinex算法AttentionMSR-MSS。

由于图片中对象的轮廓模糊,所以需要对轮廓进行边缘强化,引入拉普拉斯算子,将拉普拉斯模板与原始图像进行卷积操作,拉普拉斯模版如公式(11)所示,通过将中心像素的灰度值与邻域内其他像素的平均灰度值进行对比,如果中心像素的灰度值低于平均灰度值时,就降低中心像素的灰度值,如果中心像素的灰度值高于平均灰度值时,就提高中心像素的灰度值,然后将原始图像减去卷积结果得到图像边缘图像,其过程如公式(12)所示,最后将原始图片与边缘图像进行叠加,获得边缘增强后的图片,这样就可以保留图像背景的同时,增强对象的轮廓细节信息。

(11)

f(x,y)=S(x,y)-S(x,y)*K

(12)

由于MSR算法是利用去除低频部分,保留高频部分来进行图像增强,为了更可靠地增强整个图像,打破它在增强局部细节方面的局限性,将AttentionMSR算法与MSS算法[22]进行结合,通过在经过边缘增强的图像f中加入高频成分,来扩展动态范围以提高局部可见性。首先将高斯核应用于经过边缘增强的图像f,获得处理后图像B1、B2和B3,具体如公式(13)所示,其中G1、G2和G3是高斯核。然后和原图做减法,获得不同程度的细节信息D1、D2和D3,具体如公式(14)所示。再通过一定的组合方式把这些细节信息融合,具体如公式(15)所示,其中w1、w2和w3分别为0.5、0.5和0.25。最后,将整体细节D添加到经过边缘增强的图像f中。

B1=G1*fB2=G2*fB3=G3*f

(13)

D1=f-B1D2=B1-B2D3=B2-B3

(14)

D=(1-W1*sgn(D1))*D1+W2*D2+W3*D3

(15)

通过先对图片进行边缘强化,然后在此基础上加入高频成分,增强后的图像亮度明显提高,图像细节信息也得到了提升,图像边缘更加清晰,具体对比图如图8所示,其中(a)为原图,(b)为使用AttentionMSR-MSS算法的效果图。

图8 效果对比图

3 实验

3.1 实验平台及参数配置

本次实验的实验平台配置如表1所示。

表1 参数配置

3.2 数据集准备

工程车辆的数据原始图是由某市公司提供的,总计12 303张图片,其中吊车的图片共有5 184张,挖掘机的图片共有4 893张,铲车的图片共有710张,混凝土浇灌车的图片共有604张,混凝土搅拌车的图片共有597张,压路机共有369张,其数据集类别数量如表2所示。

表2 数据集类别及数量

由于时间和气候的影响,会存在傍晚或者阴天光线不足的情况,所以需要对所有图片进行预处理,提高图片的亮度。首先,对输入图片进行灰度化处理,通过设置灰度阈值规定0~39为偏暗像素点,统计偏暗的像素个数,统计过程如图9所示,其中(a)图为灰度化后的图片,(b)图为像素点统计图。然后计算偏暗像素点占图片总像素点的百分比P,根据实际情况设定P超过20%即表示图片偏暗。最后将P高于20%的图片筛选出来,并通过改进版MSR算法进行亮度调节。

图9 像素点统计图

对于进行预处理后的图片,采用LabelImg软件进行标注。操作界面如图10所示,按照对应标签进行标注,此标注为crane,标注完的信息以xml的格式保存在相同路径下。

图10 LabelImg操作界面

3.3 实验结果

3.3.1 不同模块效果分析

为了更加直观的对比不同模块对检测效果的影响,本文通过消融实验,依次减少改进版CspLayer层、Focal loss损失函数以及CBAM模块对改进版YoloX算法进行效果验证,实验结果如表3所示。

表3 不同模块效果分析

由表可以看出,当所有模块全都加入时,对工程车辆检测效果最好,mAP值比传统YoloX算法提升了4.64%。与此同时,实验结果表明,将CBAM注意力机制与改进版CspLayer层结合对算法检测性能的提升起到了最为关键的作用。通过替换原始obj分支的损失函数,也能带来0.53%的mAP值的提升。

3.3.2 不同模型效果分析

本文通过将YoloX算法与其他目标检测算法进行对比,具体结果如表4所示。为了保证实验对比的有效性,模型的训练和测试都安排在同一台GPU服务器上进行操作,并且每次训练的过程保持一致。训练过程中设置的参数如下,输入的图片尺寸Img-Size统一缩放到640×640,一次输入网络中的图片张数Batch-Size设置为64,对于整个训练集的数据,迭代次数Epochs设置为200轮。测试时,设置输入的图片尺寸为640,置信度IOU设置为0.6。通过结果对比可知,YoloX算法的检测效果最好,因此选择YoloX算法作为目标检测的基础算法,并对其进行改。

表4 不同深度学习网络对比

首先,将改进版的YoloX算法部署在GPU服务器中,并对COCO数据集进行训练,利用训练好的权重对COCO数据集进行检测,检测效果如图11所示,其中图(a)为原始YoloX算法的测试结果,图(b)为改进后YoloX算法的测试结果,可见原模型中未被识别的对象,改进后的模型可以识别出来。

图11 COCO数据集检测效果图

然后利用改进版的YoloX算法检验自建数据集的识别效果,通过训练自建工程车辆的数据集,获得最终工程车辆检测模型权重。改进后的YoloX检测网络相较于原YoloX检测网络模型mAP提高4.64%,具体如图12所示,其中图(a)为原始YoloX算法的测试结果,图(b)为改进后YoloX算法的测试结果。

图12 YoloX算法测试结果对比图

改进后的YoloX算法在实际应用中的效果如图13所示,图(a)为来自摄像头拍摄的输电通道图片,图(b)为原始YoloX算法检测效果图,图(c)为改进后YoloX算法检测效果图。选取的部分图片中一共有10个工程车辆,原始YoloX算法共识别出4个工程车辆,改进后YoloX算法共识别出7个工程车辆。由对比图可知,改进后的YoloX算法训练出的模型在不同的场景中对工程车辆的检测效果较为理想。

图13 工程车辆检测效果图

4 结束语

本文提出了一种改进版YoloX算法,该方法通过改进YoloX算法的CspLayer结构,添加CBAM注意力机制模块,将obj分支的BCELoss损失函数替换为Focal Loss损失函数,对工程车辆进行检测。与此同时,通过利用改进MSR算法进行图片的亮度提升,提高了数据集的质量,更有利于提高了YoloX网络的识别。由于在实际大规模的应用场景中,使用YoloX算法会存在一些误检,影响检测效果,后续工作可以进一步研究场景识别,来进一步提升工程车辆的检测效果。

猜你喜欢

卷积样本图像
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
基于深度卷积网络与空洞卷积融合的人群计数
A、B两点漂流记
卷积神经网络概述
直击高考中的用样本估计总体
随机微分方程的样本Lyapunov二次型估计
名人语录的极简图像表达
基于支持向量机的测厚仪CS值电压漂移故障判定及处理
七年级数学下册期末检测题(B)