APP下载

一种误差梯度变化平滑的目标检测算法

2021-10-21李靖宇

车辆与动力技术 2021年3期
关键词:池化卷积准确率

李靖宇, 康 晓

(中国北方车辆研究所,北京 100072)

2012年,Hinton和Alex等人为了解决图像分类任务,提出了基于卷积神经网络的深度学习算法Alexnet[1],利用GPU加速卷积神经网络算法,使其在图像相关任务中的处理速度快速提升.近年来,随着计算机算力的逐步提高和GPU在深度学习任务中的广泛使用,大量基于卷积神经网络的图像处理算法被提出并应用于相关技术领域.卷积神经网络在近年来常被用于解决目标检测、目标跟踪、语义或实例分割任务.作为图像识别任务的进一步延伸,目标检测任务不仅要识别出图像中的目标物体,还要对这些物体的尺寸和位置进行标识.

常用的目标检测算法一般分为两阶段方法和端到端方法.以Faster RCNN[2]等为代表的两阶段方法第一步是在待检测图像经过卷积处理后得到的特征图上生成候选框,第二步是对得到的候选框做进一步判断,确定其所包含物体类别.两阶段目标检测方法优点是准确率高,缺点是其对图像的处理速度较慢.端到端方法同样对图像进行卷积、池化和激活等操作,但其最终直接输出代表检测结果的张量中包含检测目标的类别及位置信息.端到端方法将整个目标检测流程一体化,其算法结构更加紧凑.除此之外,端到端方法如YOLO系列算法[3]在工作阶段速度较快,因此也经常被应用在实时目标检测任务中.

端到端方法的目标检测算法通常包括backbone、neck以及head 3个部分.backbone通常对算法输入图像进行一系列的卷积及相关操作,得到图像的特征图(feature map);Neck部分对特征图进行处理,通过多尺度等操作提升检测框架对不同尺寸特征的感知能力;Head部分对neck部分的结果进行少量的卷积及相关操作得到输出张量,输出张量一般包含原始图像中全部的目标尺寸及类别信息.

虽然基于端到端方法的目标检测框架的3个主体部分是基本固定的,但是每个部分可以有不同的具体实现方式.在head部分,特征提取网络可以使用VGG、ResNet、DenseNet、Darknet[4-7]等不同框架,设计更加合理的特征提取网络能够显著地提升目标检测算法的性能.Neck部分对于特征图的不同操作会进一步影响检测结果.除此之外,不同的卷积、池化、以及激活函数的操作,也会影响整个算法的检测效果.

本研究在YOLOv5算法的基础上改进其激活函数和池化操作方法,构建新的目标检测算法.经过改进后的目标检测算法在训练阶段具有更准确的梯度变化,权重能够精确迭代更新.在实验部分将对提出的目标检测算法利用现有数据集进行准确度测试,验证其检测性能.

1 算法结构及工作原理

本研究的目标检测算法总体结构如图1所示.该检测算法分别从backbone、neck以及head 3个部分进行构建.

图1 本研究目标检测算法整体结构

首先进行backbone的选取.作为目标检测算法的第一部分,backbone主要用于提取图像的各类特征并生成特征图,并直接影响目标检测算法的检测准确率.本研究选取backbone的思路是寻求一种在骨干网络权重参数数量、算法整体工作速度以及目标检测算法整体准确率之间平衡的结构.基于此思路,使用CSPNet结构[8]作为backbone网络的基础组成单元.CSPNet结构上与DenseNet[9]相似,二者之间的不同在于CSPNet将经过卷积操作的特征图分为两部分,其中一部分继续进行一系列的卷积相关操作,另一部分则不经过处理,直接与第一部分经过处理的结果在特征图深度方向进行拼接.式(1)和式(2)表示DenseNet中图像数据的前向和反向传播过程,而式(3)和式(4)代表输入数据在CSPNet结构中的前向传播和反向传播过程,其中的变量均为张量形式.

x1=w1*x0,
x2=w2*[x0,x1],
……
xk=wk*[x0,x1,…,xk-1].

(1)

(2)

(3)

(4)

接下来对目标检测算法的neck部分进行构建.Neck部分的主要构建思路是将backbone中提取出的特征图进一步处理,拓宽特征图的感受野,令其能够包含不同尺度目标的信息,以方便之后的head部分输出更加精确的结果.基于此思路,本研究借鉴目标检测框架YOLOv5的思路,对backbone中不同阶段的特征图进行提取.之后将得到的较小尺度特征图通过上采样操作与大尺度的特征图在尺寸上进行对齐,并在特征图的深度维度上进行拼接,具体操作如图1的中间分支箭头部分所示.另外,应用空间特征金字塔池化,令网络允许不同尺寸的图像作为输入,并可以得到统一尺寸的池化特征.

在构建的目标检测算法中,空间特征金字塔池化操作不采用最大池化操作,而是选择平滑池化[10]操作.图2为平滑池化操作的示意图.图中,左边带有颜色的二乘二网格代表平滑池化操作,三乘三网格代表特征图,右边的二乘二网格代表经过平滑池化操作的输出.

图2 平滑池化操作示意图

平滑池化为待采样区域的每个像素值分配一个权重因子wi,该权重因子wi的计算方式如式(5)所示.

(5)

式中:j为采样区域中包含的所有特征像素数;a为采样区域特定点的像素值.

获得采样区域的全部特征后,按照式(6)计算平滑池化的输出值.在误差反向传播阶段,采样操作中各个像素的梯度计算方式如式(7)所示.不同于最大池化中采样区域仅单个像素能够获得梯度变化的情况,平滑池化能够令采样区域内的所有像素获得误差梯度,使网络权重参数获得更多的有效信息,有利于提升网络整体的识别准确率.

(6)

(7)

head部分负责目标检测算法的最终输出.为了使目标检测算法拥有更强的多尺度目标检测能力,本算法将head结构设计为3个三维张量,对大、中、小3种尺度的目标进行检测.将不同尺度的目标放在不同的张量中进行表示不易使目标信息混淆,能够提高检测算法的准确率.本算法中3组输出在宽度与高度的尺寸分别为13×13、26×26、52×52.

在整个模型中,激活函数是重要的一个组成部分.激活函数可以抑制不重要的特征输出,起到强化特征信息表达的作用.在本研究中,整个目标检测网络使用了两种激活函数,分别为ReLU函数见式(8)和Mish函数[11]见式(9).

f(x)=max(0,x),x∈R.

(8)

f(x)=x·tanh[ln(1+ex)],x∈R.

(9)

由表达式以及图3可以看出,Mish函数相较于ReLU函数在零点附近具有更加稳定的梯度流.根据之前的讨论,更加稳定的梯度流能够使网络在权重的训练阶段更加稳定,不易出现梯度消失现象.

图3 两种激活函数对比图

本研究的检测模型并未全局采用Mish函数作为激活函数,而是在neck部分采用Mish函数,在backbone部分采用ReLU函数.采取这种做法的原因是为了保证backbone骨干网络能够直接加载已经最优化的网络权重参数,这样可以令检测算法在训练过程中减少模型训练次数,提高训练效率.

2 算法训练与工作过程

首先考虑算法的训练过程.基于卷积神经网络的目标检测算法卷积权重初始化的方法有两种,分别是随机初始化和加载预训练卷积权重.随机初始化权重参数一般适用于新提出的算法模型结构,这种初始化方式适用于各种目标检测算法结构.但是采用该种初始化策略使整个网络的训练过程十分缓慢,并易使整个网络参数陷入局部最优,无法取得最佳检测表现.加载预训练卷积权重一般使用Imagenet等图像分类数据集对算法的卷积网络参数进行预训练,调整卷积网络参数,也可以利用其他检测算法中具有同样结构卷积网络的权重数据直接进行数据迁移.加载预训练权重方式的缺点在与其不能在一种结构算法中加载另一种结构的算法权重.由于直接加载预训练权重方式能够节省大量的训练时间且该种权重对整个模型的全局训练影响较小,所以本算法backbone部分采用直接加载预训练权重的方式进行权重加载.对于neck与head部分的权重参数,则采用随机初始化方法.

在算法训练阶段,权重更新依赖于网络输出值与样本标签值的误差所产生的权重梯度变化.这表示网络的损失函数对网络模型能否收敛,以及网络模型的最终表现具有直接的影响.目标检测任务关注的是图像中目标的类别、位置以及尺寸,所以目标损失函数应该包含这些因素.对输入图像中目标类别进行判断,本质上可以定义为多分类问题,而对目标位置及尺寸的确定,则可以被归类为多元回归问题.针对目标类别多分类问题,本算法采用交叉熵损失函数计算模型类别输出值与样本真值的误差.交叉熵函数的表达形式如式(10)所示.

(10)

式中:yic是样本真值;pic是观测样本i属于类别c的概率;M是待检测物体类别数量.

对于目标的定位及尺寸问题,考虑到其回归问题的本质特性,模型采用均方差损失函数计算样本真值与预测值的误差.将上述交叉熵损失函数与均方根损失函数叠加,即得检测模型的整体损失函数,如式(11)所示.

(11)

整个算法模型使用随机梯度下降法进行模型训练,当损失函数值趋于稳定,表示算法模型收敛,此时停止训练.对于网络模型的输出,抑制负样本输出的数量,将正负样本的比例控制在1∶3,对于不影响正负样本区域输出的网络权重参数,在误差反向传播阶段忽略其梯度变化,不对其进行更新.

算法模型在推理阶段要求准确地输出目标的位置及尺寸信息.由算法的结构图可以看出,本研究构建的目标检测算法输出密集,这说明一个正确的输出周围有可能存在若干个与真值相近但并非最优的输出.这种输出将导致图4所示的情况发生.

图4 未经过非极大值抑制的输出

为了避免上述情况的发生,可以采用非极大值抑制算法(Non-maximum suppression, NMS)减少候选框的重复产生.非极大值抑制算法的核心思路是计算不同候选输出之间的交集与并集,并通过它们的比值来确定最后需要保留的候选输出,其算法伪代码如图5所示.

图5 非极大值抑制流程图

图中,B是候选输出合集,S是候选框对应置信度,D代表最终得到的输出合集.通过对候选输出进行非极大值抑制操作,多余的目标检测结果被去除,目标检测模型的输出能够更加准确简洁.

3 实验与结果分析

为了测试目标检测算法各个部分独立的有效性以及模型整体的表现,实验首先对backbone骨干网络框架、Mish函数、平滑池化部分的有效性进行测试,之后再对模型的整体有效性进行测试.

首先对backbone的有效性进行实验.常见的图像分类数据集有CIFAR、Caltech101、ImageNet等.其中CIFAR数据集对象种类为10种或100种,数据集内图像像素数为32×32,尺寸较小;Caltech101数据集由101类对象图片组成,每张图片的像素大小在300×200;ImageNet数据集规模最大,包含了上万类对象,以及超过1500万张图片,其子集ISLVRC 2012也为常用数据集.综上,从算法模型大小以及训练时间两方面因素考虑,选用ISLVRC 2012的部分数据并分割为训练集和测试集,对不同的backbone进行测试,所得结果如表1所示.

表1 各类backbone识别准确率

表1中,Top-1准确率指分类模型输出结果概率最高项与测试数据标签类别相同的比率.由于数据集种类共1000类,所以引入Top-5准确率,表示对于测试集所有数据,分类网络输出概率中最大的5类中包含测试数据标签类别的比率.由表1看出,特征提取网络在分类任务上的准确率较高,反映了其优秀的特征提取能力.

为证明Mish函数在卷积网络模型中具有比其他激活函数更优秀的性能,利用图像分类网络CSPResNeXt作为分类器,分别用ReLU、Swish、Mish 3种激活函数在ISLVRC 2012子集上进行测试,其分类结果如表2所示.

表2 各类激活函数识别准确率

表2中,运用Mish函数网络模型较其他激活函数具有更高的分类准确率.可见Mish函数的运用能够增强卷积神经网络对特征的提取能力.

接下来对平滑池化的性能进行评价,采用的评价方式是分别将常用分类卷积网络中的最大池化操作替换成平滑池化层,数据集同样采用ISLVRC2012子集,其结果如表3所示.

表3 各类池化操作识别准确率

由表3中结果可以看出,替换为平滑池化操作之后的分类网络具有更高的识别准确率,这证明了平滑池化的有效性.

现对本研究构建的目标检测算法进行评价.根据前文所述,目标检测算法不仅要对检测对象的类别进行判断,还要给出检测对象的尺寸和位置.在这种情况下,单纯的图像分类数据集由于缺少检测对象位置及尺寸信息,已经变得不再适用.在这种情况下,使用符合目标检测模型输出格式的数据集才能使模型在反复迭代训练后具有良好的表现.本研究选用COCO数据集的子集对网络模型进行训练及评价.采用全类别平均准确率(mean Average Precision, mAP)对不同模型的表现进行评价,结果如表4所示.

表4 不同模型目标检测平均准确率

由表4可以看出,在测试数据集上,本文提出的方法具有良好的表现.

4 结 论

本研究构建的目标检测算法侧重于在训练阶段的误差反向传播过程中为所有的权重参数提供更加稳定与精确的梯度变化信息.本研究提出的算法模型架构并未引入额外的参数,故模型占用空间相较于使用其他激活函数和池化操作的网络模型没有增加,这也是本研究所构建算法模型的一个优点.与现有的算法相比,本研究构建的目标检测算法的平均准确率表现并不是最突出的.究其原因,主要有两方面的因素:

1)算法的一些超参数如预设检测框尺寸等并未经过准确优化,图像数据集的预处理以及数据增强工作仍有待完善;

2)本研究构建的目标检测网络模型在设计方面仍有待改进之处,如损失函数的回归部分可将坐标均方差损失替换为交并比损失等.

对以上方面进行改进,可以进一步提升本研究所设计的目标检测算法的表现.

猜你喜欢

池化卷积准确率
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
设施蔬菜病害识别中的CNN池化选择
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
高速公路车牌识别标识站准确率验证法