田春欣,陈绪君,郑有凯
(华中师范大学 物理科学与技术学院,湖北 武汉 430079)
利用计算机平台从高空拍摄的图像或视频中自动精准地检测出地面目标,已成为智慧城市管理平台的一项关键技术[1]。然而,高空拍摄的地面物体目标小分辨率低[2],可用特征和可视化的信息少,难以提取到具有鉴别力的特征。小目标物体分布密集,导致其定位的边界信息很难区分,漏检误检现象严重。因此,如何提取到具有辨识度的特征,精准定位目标的边界成为小目标检测的一项技术难点。
近年来,国内外学者对基于深度学习的小目标算法展开研究:Zhang等在网络中添加反卷积,提高了遥感图像中小目标的检测精度,但该方法过于关注小目标物体,对不同尺度的目标检测鲁棒性差[3];Bharat Singh等通过采样多个切片,再进行缩放,达到提取不同尺度的特征图做检测,大大提高了小目标物体的平均准确率,但多尺寸训练使得训练时间大大增加,且当图片尺度较大时,对GPU要求增加[4]。Lin T-Y等提出一种新的损失函数FocalLoss[5],应用于RetinaNet网络中进行检测,解决目标检测中正负样本不均衡问题,达到提高精度的目的。由于大量的锚框存在,模型计算速度相对较慢。Chengjian Feng等提出的TOOD[6](task-aligned one-stage object detection)算法拓宽了目标检测的新思路,提出了任务对齐头的实现方案。作者发现目标定位和分类两个任务之间可以存在一定的联系,通过对齐学习的方式拉近两个任务,互相补充,使预测结果更精确。
针对上述问题,本文选择对单阶段算法TOOD进行探索改进,为验证其有效性,在公开数据集VisDrone-DET对多个小目标检测算法进行充分实验,并与本文提出的算法进行比较分析。
TOOD算法与传统的单阶段目标检测算法一样,采用主干-颈部-头部预测的结构。主干网络结构提取图片的特征,颈部进行特征融合加强,最后将特征送入到头部预测器进行预测。如图1所示,原始的TOOD算法使用ResNet50[7]作为主干网络,FPN[8](feature pyramid networks)作为特征融合模块,头部预测器采用并行的分支替代传统的耦合头,分别实现分类和定位任务。
图1 TOOD算法检测流程
考虑到两个并行的头部分别对定位和分类任务预测,会出现不同程度的空间错位的问题[6],TOOD设计了一种新的头部预测器-任务对齐头T-Head(task-aligned head),基于学习的方式显式对齐两个任务。通过设计样本分配方案和任务对齐损失来统一两个任务的最佳锚点,可更好地平衡任务交互特征和各自任务特定的特征。
T-Head是整个TOOD算法的核心,其结构如图2所示。首先T-Head对特征进行预测,预测用于计算每个定位点的任务对齐因子,任务对齐学习TAL(task alignment learning)根据此对齐因子进行学习;最后,T-Head利用反向传播从TAL计算的学习信号,自动调整分类概率和定位预测[6]。因此,最佳的对齐锚点可以通过概率图得到更高的分类得分,并通过学习到的偏移获得更准确的边界框预测。
图2 任务对齐头
为了增强定位和分类任务之间的交互作用,头部预测器将FPN特征送入连续N个带有激活函数的卷积层来学习交互特征,实验验证,当N=6时,并行头具有与传统平行头相似的参数[6]。获得的这6个特征组具有不同尺度的感受野,即多尺度的特征,然后经过两个预测器,分别得到分类和定位预测。
由于分类和定位任务有不同的关注目标,因此,在提取交互特征之后,预测器首先经过一个层注意力模块来计算每个特征组的权重,再相乘,拼接后做卷积运算,动态计算这些特定任务的特征来促进分类和定位任务的分解。该部分的设计如图3所示。
图3 任务对齐预测器
ω是由跨层任务交互特征计算而来,捕获层与层之间的依赖关系。最后将提取到的分类/定位特征经过3×3的卷积核,同时将原始的交互特征先经过1×1的卷积、ReLU激活、3×3卷积,将两者级联得到最终的分类/定位得分。
虽然TOOD算法具有较好的检测能力,但该算法以COCO数据集为基础,该数据集中3种不同大小的目标数量分布较平均,而在实际高空拍摄的图片中,小目标占据绝大部分,因此,在小目标检测场景中,TOOD的检测能力得以削弱。
针对以上问题,本文特针对小目标检测对象,对TOOD算法进行改进,提出基于CSPDarkNet的密集连接任务对齐(dense connection and task alignment)的小目标检测算法(DATNet),使该算法更适合小目标检测对象,提高小目标物体的检测精度。
针对上述TOOD模型检测小目标的不足之处,本文分别从主干网络、特征融合网络和损失函数对TOOD算法进行改进。改进后的网络模型DATNet如图4所示,是一种端到端的目标检测框架,主要包含CSPDarkNet特征提取网络、多尺度特征融合网络以及并行头部检测器。
图4 DATNet结构
ResNet50作为模型的主干网络提取图像的特征,引入的残差跳跃连接缓解了因网络加深产生的梯度消失问题。但是该网络实际起作用的网络层数较少,大部分网络层都在防止模型退化,误差过大,训练时间长。为了让模型学习到更多的特征,CSP[9]结构在YOLOv4[10]模型中引入,与ResNet50相比,包含大量的卷积操作,增强了卷积神经网络的学习能力。同时保留残差思想,引入残差块结构(ResBlock),分别进行1×1和3×3的卷积,每次卷积之后进入均值为0,方差为1的批归一化处理BN(BatchNorm)层,再加入SiLU(sigmoid weighted liner unit)激活函数进行非线性激活,提高神经网络对模型的表达能力。
针对城市高空场景中小目标数量多,尺度大小不统一等问题。本文在原有3个头的设计基础上新增一个小目标检测头,由低层特征输入,同时在不损失过多检测精度的前提下,保留网络的大目标检测头,分别在主干网络的Dark2、Dark3、Dark4,Dark_SPP这4个特征层进行下一步网络的构建,主干网络输出的通道数分别为128、256、512、1024,同时兼顾大目标和小目标,使模型具有更好的泛化性。Dark模块和残差块的结构如图5所示。
图5 Dark结构(左)残差块结构(右)
为扩大感受野,在最后一个Dark模块加入SPP[11]结构,将局部特征和全局特征进行融合,丰富特征图的表达能力。该结构由不同大小核的池化层组成,池化层可以提取更高阶的特征,加强图像特征的不变性,增加图像的鲁棒性。SPP结构如图6所示,Dark4层输出的特征先经过1个卷积层调整通道数为512,然后分别用池化核大小为5、9、13的最大池化层进行特征提取,提高网络的感受野,池化前后的特征图大小完全相同,再将原始输入和3种池化结果在通道维度上堆叠,最后通过卷积融合通道信息,获取同张图片多个空间尺度的特征,从而提高检测精度。
图6 SPP结构
FPN结构通过引入自上而下的路径,将低分辨率、大感受野的特征图和高分辨率、小感受野的特征图仅堆叠合并,并没有促进信息的传播。针对这个问题,本文在FPN结构上添加上下文特征提取模块(feature extraction mo-dule)CEM[12],对来自不同感受野捕获的语义信息进行信息交互,同时为减少冗余的上下文信息,引入了注意力模块AM(attention module),捕获有效的上下文相关性。
如图7所示,图中F2~F5为CSPDarkNet网络生成的特征图,P2~P5为FPN网络生成的特征图。将网络中的F5、F4、F3层的特征图进行2倍上采样,再与对应的低层特征图进行特征融合,得到合适的感受野,再送入到后续的网络进行检测。本文中图片的大小为1333×800,设定4个检测尺度来检测大、中、小不同尺寸的目标,分别为100×168、50×84、25×42、13×21,其中,100×168用于检测小目标,如远处的行人、自行车等,50×84、25×42检测中等目标,13×21检测较大的目标。通过设计不同尺度满足不同大小的物体检测,显著提升模型的检测性能。
图7 改进后的FPN结构
2.3.1 CEM模块
对小目标物体提取特征往往需要较大的感受野,空洞卷积在卷积核元素之间加入一些0元素来扩大接收域,既减少了大卷积核带来的计算量,又避免了较大的分辨率损失,卷积核的计算如式(1)所示
k′=k+(k-1)(r-1)
(1)
其中,k为原始卷积核的大小,r为空洞卷积的扩展系数,当r=1时为普通卷积核的计算公式,k′表示经过卷积操作之后的卷积核大小。
假设滤波尺寸分别为K1、K2、K3、K4、K5的卷积层,新的接收域计算公式如下
K=K1+K2+K3+K4+K5-3
(2)
本文中设计5个空洞卷积进行密集连接,卷积核的大小为3,扩展速率分别为3、6、12、18、24的卷积层构成特征金字塔,由公式可得,最终的接收域为128,接近特征图的大小。大扩张率的卷积层的像素采样率稀疏,膨胀率逐层增加。
CEM模块的结构如图8所示,它对来自F5的特征图通过对5种不同扩张速率的空洞卷积进行密集连接的方式进行特征加强。
图8 CEM的结构
5个具有不同扩张速率的空洞卷积由5个DenseBlock组成,每个DenseBlock由BN+ReLU+3×3 Conv的复合结构实现。每个层的特征图大小相同,在通道维度连接在一起。
密集卷积网络以前馈的方式将每一层与每一层连接起来[13],这种连接方式加入到FPN中有利于加强特征传播,且每一层都可以直接从损失函数和原始输入信号得到梯度,从而得到一个隐式的深度监督[14],有助于缓解梯度消失的问题,训练更深入的网络结构。密集连接确保了网络中各层之间信息流动最大化,该网络不需要重新学习冗余的特征映射,通过特征重用来挖掘网络的潜力,避免了通过加深网络深度来挖掘特征提取能力。
因此,通过密集连接,上层的卷积可以利用下层的特征,使像素采样更密集。该网络通过融合多路不同感受野的特征,既增大物体的感受野,又充分利用特征图的上下文信息,得到更好的检测能力。
2.3.2 注意力模块
由于CEM提取到的上下文信息可能存在冗余信息,本文在CEM后加入注意力模块减少对冗余上下文的误导,进一步增强特征的判别能力。
注意力机制需要生成巨大的注意力图来计算每个像素之间的关系,时间和空间复杂度较大,因此,本文采用十字交叉注意力[15](criss-cross attention)模块来捕获有效的上下文信息。该注意力模块结构如图9所示。
图9 十字交叉注意力模块
首先对经过CEM的F5′特征,分析进行3个1×1的卷积层,生成Q、K、V这3个特征图,其中,Q和K的作用是为了获取当前像素与该像素下横向和纵向的像素点之间的相关性,然后,将相关矩阵和V整合并加上H特征,得到含有丰富语义特征的H′, 上下文信息添加到局部特征H中以增强局部特征并增强。
因此,十字交叉注意力模块具有广阔的上下文视图,并根据空间注意力图选择性地聚合上下文。
TOOD算法的损失包含分类损失和回归损失,分别对目标框的分类类别和坐标进行衡量,计算方法如式(3)~式(5)所示
(3)
(4)
Loss=Lreg+Lcls
(5)
其中,i表示正样本的第i个锚点,j表示负样本的第j个锚点,γ是聚焦参数,bi和b′i分别表示预测框和真实框,t表示正锚点的二进制标签。TOOD算法分类损失使用质量焦损失(quality focal loss,QFL),在分类分支引入了边界框预测质量值作为样本分类的标签,鼓励学习更好的分类和定位质量的联合表示。
在检测框回归过程中,原始的TOOD算法使用GIoU损失函数,通过加入惩罚项缓和IoU损失在预测框与目标框不重叠的问题(此时IoU损失无梯度)。当预测框和目标框不重叠时,GIoU损失先倾向于增加预测框的大小以使得预测框和目标框重叠,优化路径不是最优,导致收敛速度慢,并且当预测框和目标框有包含关系时,惩罚项变为0,GIoU损失完全退化为IoU损失,导致同一个IoU损失出现多个位置的预测框问题,无法进一步区分,使边界框定位变得不准确。
本文使用DIoU[16]作为回归损失,通过加入惩罚项使得预测框移到和目标框重叠的位置,优化了路径,DIoU损失的计算如式(6)所示
(6)
b和bgt是预测框和目标框的中心点,ρ是计算两个框中心点之间的欧氏距离,c是包含预测框和目标框的最小矩形框的对角线长度。当目标框和检测框不重叠时,可以直接最小化两个框的距离,使得预测的结果更合理有效。鉴于收敛速度和预测的准确性,本文采用DIoU损失替换原TOOD算法的GIoU损失,解决了预测框和目标框不重叠时的优化的问题,进一步加快网络的收敛速度。
本节对基于密集连接注意力引导的任务对齐小目标检测方案进行了实验验证。仿真结果表明,该算法提取特征能力强,关注小目标位置信息精准,提高了小目标的检测精度。本文所有实验均在安装有CUDA10.1的Linux开发环境,Pytorch1.8版本,Tesla V100,显存为32 GB的GPU服务器上仿真实现。
本文的训练参数如下:图像尺寸为1333×800,训练过程使用随机梯度下降法(SGD)来学习和更新网络参数,其动量和权重衰减分别为0.9和0.0001;初始学习率设置为0.005,在第8~11轮降低学习率,批大小为4,共训练24轮;主干网络加载CSPDarkNet-L预训练权重;置信度阈值设置为0.6,使用soft-nms[17]剔除重叠的检测框。
为了验证算法的可行性和准确性,该实验使用的数据集是VisDrone2019[18]。该数据集由天津大学机器学习和数据挖掘实验室通过各种无人机摄像头捕获收集而来,包括288个视频片段,由261 908帧和10 209幅静态图像组成,其中6471张图片用于训练,验证集和测试集为548张,覆盖范围包括14个不同的城市,多个稀疏和拥挤的场景,主要由行人、车辆组成。该数据集定义了10个类别,分别是行人、人、自行车、汽车、面包车、卡车、三轮车、遮阳三轮车、巴士、摩托车。
3.2.1 传统的小目标检测模型
目前,常见的小目标检测模型有VFNet、YOLOv5、YOLOv7、YOLOX等。通常情况下,模型越复杂,计算量较大,得到的检测精度会较高。因此,本文选用几种经典的深度较深的网络进行小目标检测实验,分别选取平均准确率(mAP50)、召回率、参数量、Flops作为评价指标。其中mAP50可评估模型在每一类别的好坏,召回率可评估模型是否有漏检,参数量和计算量是衡量深度学习算法的重要指标,分别对应算法的空间和时间复杂度。
如图10所示,原TOOD网络存在明显漏检的现象,在其它经典的小目标检测网络中,均存在远处密集的三轮车、行人目标漏检的问题,且两人乘坐摩托车只能检测出人等现象。而本文提出的DATNet 在实际检测中性能有较大提升,缓解了密集小目标的漏检、误检等情况,且分类的置信度高,检测效果更好。
图10 不同算法可视化结果
为了验证TOOD算法的有效性,设计了5组对比实验,分别对YOLO系列、VFNet、TOOD模型进行实验和结果分析,均已加载对应的预训练权重进行训练。由表1可以看出YOLO系列检测器检测小目标的精度较高,但是参数量较大,TOOD较非YOLO系列的VFNet在精度上提高5.2%,且参数量减小0.89 M。值得注意的是,2022年7月提出的YOLOv7[19]算法检测速度快,精度也相较之前的YOLO系列有一定程度的提升,而TOOD算法检测小目标相较于YOLOv7在精度上提升2.4%,参数量减少了5.31 M。
表1 传统小目标检测模型
3.2.2 不同改进方法的消融实验
为进一步验证本文改进算法的科学性和有效性,实验以TOOD(ResNet50-FPN-THead)作为基准实验,每组实验仅改变一个变量,分别验证CSPDarkNet的特征提取能力、密集连接注意力引导模块以及两方法组合改进的有效性。这些方法相对TOOD算法在平均准确率、召回率等方面的提升效果见表2。
表2 消融实验
由表可得:在基准模型TOOD上,CSPDarkNet提取特征的能力比ResNet50强,且计算量减小2.57 M,相较于YOLOv7、TOOD模型精度分别提高了4.1%和1.7%。在此基础上,在FPN加入CEM后检测结果几乎没有提升,经分析,密集连接提高感受野的同时,伴随着增加了冗余的上下文信息,因此,本文使用十字交叉注意力模块对增强的感受野区域进行注意力引导,加入之后提升0.6%,而参数量几乎没有增加,这是因为十字交叉注意力模块只需要计算每个像素点所在的行和列中的像素点之间的关系,大大减小了计算的时间和空间复杂度。可见,DATNet模型在检测精度上有较为显著的优势,可以解决实际高空环境下部分漏检、误检的问题。
本文提出的基于密集连接任务对齐的小目标检测算法,采用CSPDarkNet-L作为主干网络提取特征,空洞卷积大大增加了图像的感受野,通过密集连接的方式挖掘特征提取的能力,最后通过soft-nms去除密集目标漏检的问题,并结合数据增强策略及相关的优化方法得到一个性能较好的模型,提高了小目标的检测效率,为高空检测场景提供技术支持。
经上述改进之后,DATNet 检测性能整体得到提升,但是本文只在VisDrone2019数据集上验证,后续工作需要验证其它小目标数据集上是否能取得较好的效果,提高该算法的普适性。