基于可变形卷积的改进YOLO 目标检测算法

2021-10-15 10:08黄凤琪冯国富
计算机工程 2021年10期
关键词:特征提取卷积聚类

黄凤琪,陈 明,冯国富

(上海海洋大学 信息学院,上海 201306)

0 概述

目标检测需判断图像中目标的类别及不同目标的边界框位置,是计算机视觉里的主要任务,被广泛应用于视频监控[1-2]、行人检测[3-4]等领域。传统的目标检测方法依赖人工选择的特征进行计算,如HOG[5]、SIFT[6]、Haar[7]等,但计算复杂,运算速度慢,且对目标形变和背景复杂变化的图像检测鲁棒性较差。而深度神经网络依赖其强大的特征提取和特征表示功能,被广泛应用于目标检测任务。

目前主流的目标检测算法有以YOLO[8-10]系列算法、SSD[11-12]系列算法为代表的单阶段算法和以R-CNN[13-14]系列算法为代表的两阶段算法。单阶段算法将目标检测过程看作回归问题来处理,使用一个统一的深度神经网络进行特征提取和目标分类及边界框回归,实现了端到端的推理,具有较快的检测速度,但检测精度没有两阶段算法高;而两阶段目标检测算法先使用区域建议网络(Region Proposal Network,RPN)提取出感兴趣区域,即含有目标的区域,再用深度神经网络对感兴趣区域进行分类及边界框回归,具有更高的检测精度,但其检测速度太慢,达不到实时的要求。

目前对目标检测算法的改进方法主要包括:使用更复杂更深层的骨干网络,以提取更有效的特征;融合多尺度特征,使浅层特征传递到深层,从而提高定位精度;加入新型网络模块,以增强网络的特征提取能力等。FU 等[12]提出在SSD 检测框架的基础上,采用更深的ResNet-101 网络来进行特征提取,并且采用了反卷积层,引入额外的大量语义信息,改进了SSD算法对于小物体的检测能力,但使用更深的基础网络和反卷积层,增加了大量的计算,使得检测速度大幅降低,无法满足实时的要求。JIANG 等[15]通过在SSD网络中引入空洞卷积,扩大特征点的感受野,优化网络的特征提取能力,从而提高了网络的检测精度,但增加了模型的复杂度,导致检测速度的降低。XU等[16]提出在YOLO 算法中引入注意力机制和改进的特征融合方法,以提高网络的定位精度,形成了Attention-YOLO 算法,但检测速度较慢。

以上研究从不同角度提升了目标检测算法的性能。但单纯地使用反卷积或空洞卷积等操作,扩大了特征点的感受野,可能增加背景区域对特征点信息的影响,导致目标定位不准或把背景误检为目标。对不同尺寸和形状的目标自适应地提取感受野,可以有效地避免这个问题。DAI 等[17-18]提出了可变形卷积(Deformable Convolution),通过在常规卷积操作上增加平行网络预测常规卷积采样点的偏移,使得每个采样点都具有一定的偏移量,可以学习到自适应的感受野,从而提高网络对不同尺寸和形状的物体进行特征提取的能力。

本文在YOLO 算法的基础上,提出基于可变形卷积的改进dcn-YOLO 算法。通过构建残差可变形卷积模块res-dcn,并将其嵌入YOLO 特征提取头模块和替换YOLO 特征提取层,形成两种改进的dcn-YOLO 模型,使网络能够自适应地学习不同尺寸和形变目标的特征,提高目标检测的精度。

1 YOLO 算法

YOLO 是一个端到端的深度神经网络模型,其网络结构如图1 所示,主要由Darknet53 主干网络、3 个FPN[20]多尺度特征提取头加上3 个YOLO 多尺度检测层组成,其中所有卷积模块都由卷积层、Batch Normalization(BN)层和leaky 激活层组成。Residual为残差模块,将上一模块的输入累加到当前层,以实现浅层特征向深层的传递,提高定位精度。整个特征提取网络由常规卷积层组成,使用3×3 的卷积核进行特征提取,采用1×1 的卷积核进行通道数压缩,动用步长为2 的卷积层来减小特征图分辨率,替代池化操作。

图1 YOLO 网络结构Fig.1 Network structure of YOLO

YOLO 的核心思想是利用整个图像作为网络的输入,将其分成S×S个网格,如果某个目标的中心落在这个网格中,则该网格就负责检测这个目标,如图2所示。每个网格检测B个目标,每个目标需要预测边界框坐标(x,y,w,h),其中(x,y)为目标边界框中心坐标,(w,h)为边界框的宽和高;一个置信度得分(该位置有目标的置信度)和C个类别得分(该目标属于某类的概率),所以YOLO 检测层输出张量大小是S×S×B×(4+1+C)。以输入图像尺寸为416 像素×416 像素和VOC 数据集为例,3个多尺度YOLO检测层尺寸分为13×13×75,26×26×75,52×52×75,分别负责对大、中、小型目标进行检测,提高了YOLO 的检测性能。

图2 YOLO 的检测过程Fig.2 Detection process of YOLO

虽然YOLO 使用了FPN 结构进行多尺度检测,有效提高了对目标的检测能力,但同一特征图上的特征点具有相同的感受野,对形变较大的目标提取的特征容易受到背景区域的干扰,导致检测边界框定位不准,同时背景干扰也会导致小目标检测精度不高。

2 改进的dcn-YOLO 模型

卷积网络对大尺寸多形变目标的建模存在固有的缺陷,这是因为卷积网络只对输入特征图的固定位置进行采样[21]。例如,在同一层特征图中,所有的特征点的感受野是一样的,但由于不同位置可能对应着不同尺度或变形的物体,因此能够对尺度或者感受野大小进行自适应学习精确定位的目标。

可变形卷积可以提高模型对形变目标的建模能力,使用平行卷积层学习offset 偏移,使得卷积核在输入特征图上的采样点发生偏移,可集中于人们感兴趣的区域或者目标。即对卷积核中每个采样点的位置都增加了偏移量,可以实现在当前位置附近随意采样而不局限于常规卷积的规则采样点。如图3所示为常规卷积的采样点和可变形卷积采样点的对比。图4 所示为可变形卷积的计算流程,使用卷积层对输入特征图计算偏移量,偏移量和输出特征图有相同的分辨率,输出通道数为3N(N为卷积核采样点个数),其中2N为预测的x、y方向偏移量,因为不同采样点对特征有不同的贡献,所以还要预测N个采样点的权重。

图3 常规3×3 卷积和可变形卷积采样点对比Fig.3 Comparison of sampling points between conventional 3×3 convolution and deformable convolution

图4 可变形卷积的计算流程Fig.4 Computational procedure of deformable convolution

常规的卷积操作主要分为2 步:1)在输入的特征图上使用规则网格R进行采样;2)使用卷积核w对采样点进行加权运算。R定义了感受野的大小和扩张,如式(1)所示定义了一个大小为3×3、扩张率为1 的卷积核。

对于在输出的特征图上的每个位置p0,通过式(2)计算输出值y(p0):

其中:pn是对R中所列位置的枚举。

在可变形卷积的操作中,通过对规则网格R增加一个偏移量{Δpn|n=1,2,…,N},N=|R|进行扩张,同时对每个采样点预测一个权重Δmn。那么同样的位置p0的值y(p0)变为如式(3)所示:

由于偏移量Δpn通常是小数,因此需要通过双线性插值法计算x的值,如式(4)~式(6)所示:

图5 所示为常规卷积和可变形卷积的特征点感受野之间的对比。2 个特征点(分别在大羊和小羊身上)代表不同尺度和形状的目标。对比可知,通过两层卷积运算,常规卷积的特征点都具有固定尺寸的感受野,而可变形卷积可自适应的学习感受野的采样位置更符合物体本身的形状和尺寸,更有利于特征提取。

图5 常规卷积和可变形卷积的特征点感受野对比Fig.5 Comparison of receptive fields between conventional convolution and deformable convolution

本文基于可变形卷积构建res-dcn 模块,在常规的卷积网络中,首先使用3×3 的卷积进行特征提取,然后使用1×1 的卷积进行特征压缩。对于可变形卷积来说,使用1×1 的可变形卷积对采样点计算偏移容易导致采样不稳定,因此,本文的res-dcn 模块连续使用3 个3×3 的可变形卷积进行特征提取。最后再将输出和输入按通道数进行拼接,以保留多层次的语义信息。如图6 所示,Deform able conv 是由1 个可变形卷积、1 个BN 层和1 个leaky 激活层组成。其中,concat 为按通道数拼接。

图6 res-dcn 模块结构Fig.6 Module structure of res-dcn

本文设计了2 种改进的dcn-YOLO 模型,第1 种是在第1 个YOLO 特征提取头部嵌入res-dcn 模块,第2 种是将YOLO 网络中3 个特征提取头的卷积模块替换为res-dcn,以实现对各个尺度都能更好的自适应提取特征。如图7 所示,该设计参考了YOLO-spp[22]的网络结构。YOLO-spp 将YOLO 网络中的Head-1 特征提取头替换为YOLO-spp Head-1,使用1×1,5×5,9×9,13×13 的最大池化层,提取不同尺寸感受野的特征,再将特征按通道数进行拼接以融合多尺度的特征,提高了YOLO 的检测性能。由此可知,YOLO 网络中Head 特征提取头模块具有丰富的语义信息。

图7 YOLO-spp Head-1 模块结构Fig.7 Module structure of YOLO-spp Head-1

本文先将dcn-YOLO1 模型在Head-1 的第2 卷积层后使用1×1 的常规卷积压缩特征通道数到512以减少计算量;然后将res-dcn 模块嵌入该卷积层后进行特征提取,3 个可变形卷积通道数均为512,网络中其他结构和YOLO 保持一致;而dcn-YOLO2 则将res-dcn 模块替换YOLO 中所有Head 特征提取头的第2、3、4 卷积层,以实现对大、中、小目标分别自适应提取特征。每个res-dcn 模块中可变形卷积的通道数分别为512、256、128,网络中其他结构和YOLO保持一致,如图8 和图9 所示。

图8 dcn-YOLO1 Head-1 模块结构Fig.8 Module structure of dcn-YOLO1 Head-1

图9 dcn-YOLO2 Head 模块结构Fig.9 Module structure of dcn-YOLO2 Head

3 实验结果与分析

本文所用到的实验平台是Intel酷睿i79700KCPU,64 GB 内存,NVIDIARTX2080Ti11GBGPU,软件环境是ubuntu18.04,pytorch1.3,cuda10.0,cudnn7.5。本文实验使用pascalvoc2007 和voc2012 公开数据集,共有20 类目标;使用voc2007trainval和voc2012trainval作为训练集,共有16 551 张图像;使用voc2007test作为测试集,共有4 952 张图像;使用平均精度(mAP)和检测速度(FPS)来检验模型的有效性。

3.1 锚盒计算

YOLO 使用锚盒作为先验框辅助预测目标边界,尺寸合适的锚盒可以使目标检测精度提高。为了获得平均交并比(avg-iou)更大的锚盒,本文使用k-means++算法进行锚盒计算,使用(1-iou)作为聚类距离。算法流程如下:

算法1k-means++聚类锚盒算法

输入训练集所有目标的宽高集合S,聚类中心数K

输出K组锚盒

步骤1从S中随机取一个值作为初始聚类中心C1

步骤2计算S中所有样本与已有聚类中心的最小iou 距离d(x),概率计算公式如式(7)所示,并选取下一个聚类中心Ci。

步骤3重复步骤2 直到找到K个聚类中心。

步骤4对数据集中的每个样本xi,计算其到K个聚类中心的iou 距离,并将其划分为距离最小的聚类中心所对应的类别。

步骤5根据划分结果重新计算K个聚类中心,计算式如式(8)所示:

步骤6重复步骤4 和步骤5,直到聚类中心位置不再变化,输出最终的聚类中心。

经过聚类,得到了9 组锚盒{(28,55),(65,80),(66,179),(145,114),(116,273),(187,196),(334,200),(215,333),(362,360)},avg-iou 值为68.26%,比YOLO 默认的锚盒提高了4.10%。

3.2 网络训练

为了进行充分的对比实验,分别对YOLO 模型、计算新锚盒后的YOLO 模型、YOLO-spp 模型和本文提出的dcn-YOLO1、dcn-YOLO2 模型进行训练,并将YOLO 网络中所有常规卷积层简单替换为可变形卷积,形成all-dcn-YOLO 模型,以对比可变形卷积的特征提取能力。设置训练迭代50 200 轮次,批量大小为8,动量为0.9,衰减系数为0.000 5,学习率更新策略见表1。使用随机水平翻转、裁剪、调整曝光饱和度等数据增强操作。每迭代10 轮次后,随机调整输入图像尺寸(从320 像素×320 像素到608 像素×608 像素,以32 的倍数变化)。

表1 学习率更新策略Table 1 Learning rate update strategy

3.3 纵向对比实验

训练完成后,使用voc2007test 数据集进行对比测试,将输入的图像尺寸缩放为416 像素×416 像素,对比结果见表2。

表2 各YOLO 模型纵向对比实验Table 2 Longitudinal contrast experiment of YOLO models

从表2 可以看出,使用k-means++聚类的锚盒获得了更高的avg-iou,mAP 有略微提升。dcn-YOLO1和dcn-YOLO2 的mAP 相比原始YOLO 算法分别提高了1.67、2.06 个百分点,这是因为本文添加的resdcn 模块可以对不同尺寸和形状的目标自适应提取有效特征。虽然dcn-YOLO1 和dcn-YOLO2 的FPS有一定降低,但仍然能达到实时的效果。此外也可以看出简单地将所有常规卷积替换为可变形卷积,并不能提高模型的检测效果。相反,由于dcn 需要使用一个额外的卷积操作预测采样点的偏移量,在前向计算和反向传播的过程中,与标准卷积相比都增加了计算量,因此训练时间和检测时间大大增加,而检测精度却没有提升。这也证明了本文提出的resdcn 模型有效性,即在损失少量计算速度的前提下,有效地提高了检测精度。

表3 列出了各个模型对不同类别的mAP 值,其中加粗部分为各对比模型中获得较高mAP 的项。从表3 可以看出,本文提出的模型与原YOLO 模型相比,18 种类别的目标检测精度均有一定提高,尤其是bird 和pottedplant 等小目标分别比YOLO 高出了4.59、3.70 个百分点。同时,对boat 和cow 等尺寸和形状变化较大的目标,精度分别提高了4.16、3.16 个百分点。虽然有些类别对YOLO-spp 有更高的精度,但提出的模型只略低一点。总体来看,本文提出的算法仍然达到了最高的mAP。

表3 各模型对不同类别的AP 对比Table 3 Comparison of AP of different models for different categories %

图10 所示为YOLO 和dcn-YOLO 的检测效果,在第1 行中,dcn-YOLO 预测出了bird 更精确的边界框。由于翅膀所占的像素较少,特征不明显,YOLO提取了更多的背景干扰特征,导致定位精度不高。而dcn-YOLO 可以自适应地提取到鸟翅膀的特征,所以定位效果更好。在第2 行中,YOLO 将2 个靠近的船只检测为了1 只船,而dcn-YOLO 很好地区分出了2 只船;在第3 行中,dcn-YOLO 准确地检测出了左上角远处模糊的车辆,也得益于其良好的特征提取能力;第4 行中由于小目标特征不明显,YOLO 漏检了很多的小船只,而与之相比,dcn-YOLO 检测出了更多的目标,取得了更好的检测效果。

图10 YOLO 和dcn-YOLO 的检测效果对比Fig.10 Comparison of detection effect between YOLO and dcn-YOLO

3.4 横向对比实验

将提出的模型和目前性能优异的目标检测算法进行了对比,结果见表4。可以看到dcn-YOLO与YOLO-spp 和Attention-YOLO 相比,mAP 分别高出了0.64、0.70 个百分点,而且检测速度远远超过了Attention-YOLO;与单阶段目标检测算法SSD 和DSSD 相 比,dcn-YOLO 算法的mAP 分别高出了5.20、4.00 个百分点,且检测速度远远超过DSSD,达到实时效果;与两阶段检测算法FasterR-CNN 和R-FCN 相 比,dcn-YOLO 算法的mAP 分别高出了9.40、2.10 个百分点。

表4 dcn-YOLO 与其他目标检测算法性能对比Table 4 Performance comparison between dcn-YOLO and other object detection algorithms

4 结束语

为提高YOLO 算法的检测精度,本文基于可变形卷积构建res-dcn 模块,使用k-means++聚类出符合数据集尺寸的锚盒,将res-dcn模块分别嵌入和替换YOLO特征提取头,最终得到改进的dcn-YOLO模型。在VOC数据集上的实验结果表明,该模型相比原YOLO 算法以及其他主流的目标检测算法,都获得了更好的效果,证明了本文提出模型的有效性。但由于可变形卷积需要更多的计算量,导致模型的运算速度有一定下降,下一步将构建更好的模型,以保证在不降低网络计算速度的前提下,达到更高的检测精度。

猜你喜欢
特征提取卷积聚类
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于K-means聚类的车-地无线通信场强研究
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法
基于高斯混合聚类的阵列干涉SAR三维成像
一种层次初始的聚类个数自适应的聚类方法研究
基于MED和循环域解调的多故障特征提取
一种基于卷积神经网络的性别识别方法