周 璇,朱苏磊,何 为
(1.上海师范大学信息与机电工程学院,上海 200234;2.中国科学院上海微系统与信息技术研究所无线传感网与通信重点实验室,上海 201800)
在靶场试验中,准确及时地掌握弹着点的位置对于校正投射过程、提高投射水平是非常必要的[1]。目前,国内外各大机构对于炮弹定位的研究主要集中在通信技术[2]、传感技术[3-4]上。但是,在实际靶场中弹着点定位主要还是依靠人工去完成。人工测量需要肉眼搜索预点,预判落点位置,估计落弹处的烟尘中心,手动操作测距仪器获得各项参数,这种方式测量精度差、花费时间较长、人力消耗大。随着图像处理[5]、机器学习[6]、深度学习[7]等相关学科的快速发展,相较于传统图像处理的方法,利用深度学习方法去检测图像中的期望目标现在已成为图像处理的主流研究趋势[8-9],这也为靶场炮弹定位提供了新的思路。如果能准确检测到炮弹爆炸形成的火焰烟雾在图像中的区域,得到图像中的弹着点坐标,对于后续研究弹着点真实坐标具有巨大的帮助。
火焰炮弹爆炸过程中,会形成大小不一、范围不定的火光烟雾,并且烟雾会随着环境、风力等发生随机的扩散与移动。基于火光烟雾与背景对比鲜明的特点,利用显著性目标检测[10-11]比一般的锚框目标检测[12]方法更能准确地检测到炮弹爆炸的火光范围,从而有效地提高检测的精度。基于深度学习的显著性目标检测,根据显著性特征如空间域、频域等,对场景中有用的区域进行快速有效的分割提取。显著性目标检测本身就是一种分割任务,基于完全卷积神经网络(FCN-based)[13]的模型用于解决语义分割问题。文献[14]使用了空间注意力,通过对不同的卷积层赋予不一样的权重值,选择性地集成来自多级特征的上下文信息,以生成强大的注意特征。文献[15]提出的Pixel-wise Contextual Attention Network(PiCANet)分别关注全局和局部的情况,获得信息丰富的上下文特征。文献[16]提出的Boundary-Aware Salient Object Detection(BASNet)混合损失函数,将二元交叉熵、Structural、SIMilarity、IoU损失结合起来进行网络学习,在3个不同的侧重维度上进行监督,从而得到质量更高的结果。文献[17]提出了U2-Net,该网络使用一个两级嵌套的U型网络结构,提出了一种新模块RSU(ReSidual U-blocks),经过测试,对于分割物体前背景取得了惊人的效果。这些模型一定程度上解决了显著性目标检测中遇到的特征选择、边缘检测等问题。
为了提高火焰炮弹爆炸范围检测的精度以及抗干扰性,利用显著性目标检测对炮弹火焰进行检测定位,除去了靶场内人工检测的繁琐步骤,减少了安全隐患。但是,利用显著性目标检测对炮弹火焰进行检测还存在以下的问题:1)火焰存在被烟雾和靶子遮挡的现象,可能导致检测出现误差;2)对于小范围的烟雾检测存在一定难度;3)在靶场实测时,对模型的推理速度也存在一定的要求。针对以上问题,本文在BASNet模型基础上提出CPD-BASNet,在BASNet的特征融合过程中加入金字塔池化模块(PPM)[18],并在BASNet预测模块的骨架网络ResNet[19]中融入注意力机制CBAM[20],提高模型对显著性物体内部的关注度。同时,利用深度可分离卷积代替传统卷积,减少模型参数量,提高模型的推理效率,更加符合靶场火焰炮弹定位的实际使用。
本文使用的弹着点定位算法主要基于显著性目标检测模型BASNet。算法主要分为模型训练推理与图像弹着点坐标检测2部分。对于模型训练推理部分,首先利用自制的炮弹火焰数据集对改进后的BASNet模型进行训练,生成训练后的推理模型,随后将要检测的炮弹火焰图片送入推理模型,生成炮弹火焰显著图。弹着点坐标检测部分,首先对显著图进行图像预处理,减少一些孤立点对于结果的影响;其次,生成显著图中炮弹火焰部分的最小外接矩形,利用矩形坐标求取得到图像弹着点坐标,算法流程图如图1所示。
图1 算法流程图
BASNet是2019年发布的一个新的边界-感知的显著性目标检测网络,由一个深度监督的编码-解码和一个残差优化模块(RRM)构成。编码预测模块利用ResNet-34为骨架网络,使用池化的方法得到分辨率逐渐降低的高层语义特征。解码模块则负责将网络结构高层的语义信息逐步还原放大,进一步获得大分辨率的特征图。最后输出的显著性图与原图的大小一样。为了更好地获取细节信息,文献[16]将编码与解码部分相同分辨率的特征图相加,可以让网络更好地关注到不同尺度的显著图。残差优化模块和前面的编码-解码模块网络结构相同,对于前一部分得到的显著区域进行进一步的细化,得到更加精确的显著性图。BASNet网络最主要的创新点在于引入了结构相似性损失,将BCE损失、SSIM损失、IoU损失相加,重点解决边界模糊问题。由于在结构相似性损失下,边界的损失会比显著性物体内部或其他地方赋予的权重更高。
本文对BASNet网络进行了改进,提出名为CPD-BASNet的网络。新的模型在原有的BASNet模型基础上融入金字塔池化模块(PPM)和注意力机制CBAM,加强网络对显著性物体内部的关注度,增强网络对小范围炮弹火焰特征的提取,提高网络的检测精度以及网络的鲁棒性。考虑到靶场炮弹定位对模型推理速度的要求,利用深度可分离卷积代替传统卷积,减少模型参数,提高模型推理效率。CPD-BASNet网络结构的预测模块如图2所示,优化模块如图3所示。
图2 CPD-BASNet模型预测模块
图3 CPD-BASNet模型优化模块
1.2.1 注意力机制模块
注意力机制模块(CBAM)将注意力分成了2个独立的部分,通道注意力模块和空间注意力模块。与单独使用空间注意力模块或者是通道注意力模块相比,二者的融合更能加强对有用特征的关注度。
CBAM将通道注意力模块与空间注意力模块顺序组合在一起。在通过注意力模块的过程中,首先输入的特征图利用全局平均池化和最大池化增强提取的高层次特征的丰富性;随后,通过多层感知机建模通道之间的相关性合并2个输出得到各个特征通道的权重;最后,通过乘法将得到的特征通道的权重逐通道加权到原来的特征上,完成各个通道的原始特征重标定。通道注意力的计算过程如下:
MC(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))
(1)
其中,σ表示激活函数,W0∈RC/r×c,W1∈RC/r×c,r表示一个衰减比率,W0、W1表示多层感知机的权重,W0后面需要接ReLU函数激活。
相比于通道注意力模块,空间注意力模块更关注位置信息。经过通道注意力模块的特征输入到空间注意力模块,输入的特征沿着通道方向进行最大池化和平均池化2个操作。输出的结果直接相加再通过卷积操作形成单通道特征图,最后经过空间特征矩阵与特征图的点乘操作得到经过双重注意力调整的特征图。空间注意力的计算过程如下:
MS(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))
(2)
其中,σ表示激活函数,f7×7表示7×7的卷积层。
BASNet预测模块的编码部分用到了ResNet34的层和Basic Resblock部分作为基础特征提取网络。如图4所示,残差模块是ResNet模型最主要的部分,通过short connection把输入直接传到输出,将输入与输出进行一个加叠操作,很好地解决了网络梯度消失的问题,提高了网络的深度。
图4 Resnet残差结构
图5为引入注意力机制CBAM的ResNet模块,由残差模块与注意力机制组成,注意力机制包括通道注意力模块与空间注意力模块。
图5 引入CBAM的残差模块
为了抑制无用特征对模型的影响,加强对不同区域炮弹火焰的检测精度,本文利用嵌有注意力机制模块的残差结构代替原有的残差结构,选择通道,加强对图像空间中显著区域的关注度,完成网络特征的提取。
1.2.2 金字塔池化(PPM)模块
金字塔池化模块(Pyramid Pooling Module)出自于PSPNet(Pyramid Scene Parsing Network)。PPM可以充分的聚合上下文的信息,最大化地利用全局信息。金字塔池化模块融合了多种不同金字塔尺度的特征。首先将整个特征图进行全局池化,随后将特征图划分成不同大小的子区域,在子区域内部进行池化操作,提取不同尺度的特征。为了保持全局特征的权重,每个金字塔进行卷积操作将上下文表示的通道维度减少到原始特征的1/N,最后将不同尺度的特征级联起来作为最终的金字塔池化全局特征。金字塔池化过程如图6所示。
图6 金字塔池化模块
本文将金字塔池化模块加入到BASNet网络的优化模块中,在优化模块的编码部分,特征图在与上一层的特征融合前先通过金字塔池化模块,充分获取全局信息,再将金字塔池化特征图与上一层的特征进行concat操作,最后再进行上采样,输出信息到下一层网络中。
1.2.3 深度可分离卷积
考虑到靶场火焰炮弹定位对模型检测速度的要求,本文利用深度可分离卷积代替网络中的传统卷积,减少模型的参数量,在不降低模型检测精度的前提下,提高模型推理的效率。深度可分离卷积将传统卷积过程分为逐通道卷积和卷积核大小为1×1的逐点卷积[21]。逐通道卷积只对输入层的每个通道独立地进行卷积运算,不能有效地利用不同通道在相同空间位置上的特征信息,因此需要逐点卷积将逐通道卷积生成的特征图进行组合生成新的特征图。假设输入特征图大小为F×F×M,输出特征图大小为F×F×N,卷积核大小为K×K,则传统卷积的计算量如公式(3)所示:
Cc=K×K×M×N×F×F
(3)
对于深度可分离卷积来说,计算量的计算分为逐通道卷积计算与逐点卷积计算之和。逐通道卷积计算量和逐点卷积计算量分别如公式(4)和公式(5)所示:
c1=K×K×M×F×F
(4)
c2=M×N×F×F
(5)
深度可分离卷积的总计算量如公式(6)所示:
Cd=c1+c2=K×K×M×F×F+M×N×F×F
(6)
因此深度可分离卷积的计算量与传统卷积的计算量之比如公式(7)所示:
(7)
由深度可分离卷积的计算量与传统卷积的计算量之比可知,使用深度可分离卷积可以大大地减少网络的计算量,减少模型推理的时间。
利用模型推理得到的显著图可以提取出图像中弹着点的坐标,为后续求取三维的弹着点坐标打下基础。利用显著图提取弹着点的坐标具体流程如下:进行图像预处理[22],减少孤立点对结果的影响;生成显著图的最小外接矩形[23],如图7所示,最小外接矩形底边的纵坐标即为图像弹着点的纵坐标,外接矩形的
图7 显著图最小外接矩形
最大横坐标与最小横坐标的取值之和平均即为图像弹着点的横坐标。
本文实验搭载在Linux系统上,显卡为NIVIDA TESLA K40C,软件框架为基于TensorFlow的Keras深度学习框架,编程语言为Python 3.6。在训练模型时,Batch_size为2,Epoch为200。
由于缺乏公开的炮弹火焰数据集,本文利用国内某实地靶场摄像机拍摄的炮弹爆炸的视频制作了炮弹火焰数据集。靶场实际大小为600 m×600 m,在靶场的4个角落安装摄像机拍摄视频。在制作数据集过程中,考虑到炮弹爆炸时产生的火焰烟雾的范围大小不一,位置不定。并且由于环境、风力的影响,烟雾会发生遮挡火焰的情况,如果只对火焰进行标注会影响对弹着点定位的准确性。因此,在制作数据集时,对于图像中炮弹火焰占比较大的图像,制作数据集时只对火焰范围做标注;对于图像中烟雾占比远大于火焰占比的图像,考虑到烟雾对火焰的遮挡性,本文也对烟雾进行标注,尽可能准确地描绘出火焰或者烟雾的形状。为了提高网络的泛化能力与鲁棒性,本文还上网搜集了灯光、日出等负样本图片,最终形成了火焰炮弹检测数据集。数据集共有1339张图片,以接近6 ∶1的比例分成1147张图片组成训练集,192张图片组成测试集。炮弹火焰数据集样例如图8所示。
(a)~(c):正样本 (d)~(f):负样本图8 炮弹火焰数据集样例图
由图8(a)和图8(b)所示,靶场背景单一,炮弹爆炸时形成的火焰明亮、范围大,与背景对比鲜明;同时也存在被烟雾遮挡的现象,如图8(c)所示,烟雾颜色虽暗,与背景也存在一定对比;图8(d)~图8(f)为网络上搜集的日出以及灯光图片,用作数据集的负样本。
本文从模型的检测性能与弹着点的图像坐标出发评价算法的性能好坏。
对于显著图检测部分,显著性目标检测模型的评价指标主要有F度量值(F-measure)和平均绝对误差(Mean Absolute Error, MAE)。F-measure为查全率和查准率在非负权重下的加权调和平均值,计算公式如公式(8)所示:
(8)
其中,β表示权重,Precision表示查准率,Recall表示查全率,在实验中,β2取值一般为0.3,认为查准率的重要性大于查全率,即增加了Precision的权重。Fβ与网络检测性能呈正相关,即Fβ数值越高,表示网络的检测性能越好,一般用Fβmax(最大F值)或者Fβmean(平均F值)来表示。MAE为计算模型输出的显著性图谱与Ground-truth(标记图)之间的平均绝对误差,计算公式如公式(9)所示:
(9)
其中,fi、yi分别表示预测值与真实值。MAE与网络检测性能呈负相关,即MAE数值越低,网络性能越好。
对于求取图像弹着点坐标部分,以图像左上角为坐标原点建立X-Y坐标系,评价指标有2个。求取实验测得的弹着点的平均像素误差,即模型推理求得的弹着点的X坐标、Y坐标与真实弹着点的X坐标、Y坐标的像素误差,并取平均值,如公式(10)和公式(11)所示。
(10)
(11)
其中,n为显著图数量,xt为图像弹着点的真实横坐标,yt为图像弹着点的真实纵坐标,xi为本文算法求出的弹着点横坐标,yi为本文算法求出的弹着点纵坐标。
同时对比真实图像弹着点坐标与实验图像弹着点坐标的像素坐标距离如公式(12)所示,更直接地表示弹着点定位精度的好坏。
(12)
2.3.1 模型显著图推理实验
为了验证改进前后模型的性能,本文以Fmax、MAE为检测指标,对BASNet模型和CPD-BASNet模型以及常用显著性目标检测网络PICANet、U2-Net在自制的炮弹火焰数据集上进行实验对比,实验结果如表1所示。
表1 BASNet、U2-Net、PiCANet、CPD-BASNet模型性能对比表
由表1可知,改进后的模型CPD-BASNet的F值与BASNet相比提高了0.024,MAE下降了0.006,并且改进后的模型检测指标也优于显著性目标检测网络U2-Net。由此可以看出,改进后的模型在检测精度上有所提升,模型的性能更好。
改进前后的模型基于自制的炮弹火焰数据集生成的显著性图如图9所示。由图9可以看出,U2-Net模型虽然在显著性物体内部的检测性能要优于BASNet,但是在物体边缘的检测性能不如BASNet。而改进后的模型CPD-BASNet在检测边缘、小范围烟雾以及遮挡物上面的能力都要优于原先的模型BASNet和U2-Net。CPD-BASNet模型由于引进了注意力机制,在保持对边缘检测精度的同时,提高了对物体内部显著性物体的关注度,同时在特征融合前融入金字塔池化模块加强了网络对全局信息的关注度,弥补了下采样导致的浅层信息的缺失,进一步提升了分割炮弹火焰烟雾的精度。
图9 炮弹火焰检测效果比较图
2.3.2 消融实验
同时,本文设计消融试验,目的在于更好地表现引入的注意力机制与金字塔池化模块对BASNet网络模型的影响。在该实验中,对比BASNet模型在单独引入注意力机制、金字塔池化模块后,模型的性能变化,依旧以Fmax、MAE为检测指标。实验结果如表2所示。
表2 引入模块的消融实验结果
由表2分析得知,单独引进金字塔池化模块,模型Fmax提升了0.014,MAE下降了0.002;单独引进注意力机制模块,模型Fmax提升了0.022,MAE下降了0.002。同时,引入注意力机制与金字塔池化模块后,模型Fmax提升了0.025,MAE下降了0.006。由此可见,金字塔池化模块与注意力机制模块均能提升模型的检测精度,两者结合对模型的分割精度提升效果最好。
2.3.3 模型参数优化实验
考虑到靶场实地应用对模型推理速度的要求,为了验证深度可分离卷积对模型推理的改进效果,本文将原模型BASNet、引入注意力机制与金字塔模块但未用深度可分离卷积的模型CP-BASNet、引入注意力机制与金字塔模块同时利用深度可分离卷积代替传统卷积的模型CPD-BASNet在推理速度、模型大小、Fmax、MAE上进行了对比,如表3所示。
由表3可知,引入注意力机制与金字塔池化模块后的网络提高了模型检测精度,在推理速度上有所下降,利用深度可分离卷积代替传统卷积的模型CPD-BASNet的推理速度提升了1.7 fps,同时模型大小减少了73.2 MB。从靶场的实际应用出发,兼备检测精度与检测速度的CPD-BASNet网络模型更符合靶场检测炮弹定位的需求。
2.3.4 图像弹着点坐标定位实验
为了更直观地体现本文算法对弹着点定位的改进效果,本文对模型推理求得的显著图进行弹着点定位处理,利用显著图的最小外接矩形求取图像弹着点坐标,将BASNet、CPD-BASNet与U2-Net的图像弹着点坐标进行对比,评价指标为模型推理得到的显著图求取的横纵坐标与图像真实弹着点的横纵坐标平均像素误差对比Xe、Ye,算法求取的弹着点坐标与真实的弹着点坐标的平均坐标像素距离De,对比结果如表4所示。
表4 各模型的图像弹着点像素坐标误差对比表
由表4可以看出,本文的算法求得的弹着点坐标与改进前的网络相比,在横坐标上的像素误差减少了5.3个像素值,同时横纵坐标的误差均小于U2-Net模型。改进后的模型CPD-BASNet求取的弹着点坐标与真实弹着点坐标的坐标距离均少于BASNet模型与U2-Net模型,并且本文算法求取的距离像素误差减少为5.92个像素值,与改进前的模型相比,减少了将近5个像素值。由图10可以看出,与一般的锚框式目标检测算法如YOLOv4[24]等相比,本文提出的算法,先求出显著图,再进行最小外接矩形操作,该矩形框所包含的背景信息更少,更能精确地获取弹着点的图像坐标。
图10 本文算法与YOLOv4检测对比
综上,本文改进的模型在显著性目标性能上表现得更加优越,同时,本文提出的算法在图像弹着点检测上面误差更小,也优于一般的锚框式的目标检测算法。
本文提出的显著性目标检测算法CPD-BASNet在BASNet上引入了注意力机制与金字塔模块,加强了网络在预测模块的编码阶段对显著性物体的关注度,在优化模块引入金子塔池化模块,减少了浅层有效语义信息的丢失,获取到更多小目标物体以及物体边缘的特征信息,在炮弹火焰数据集上取得了较好的炮弹火焰分割效果。为了使模型更符合实际应用,利用深度可分离卷积代替传统卷积,在保证网络对炮弹火焰的检测精度的同时,减少了模型参数,提高了模型推理的速度。经过炮弹数据集测试与图像弹着点坐标求取表明本文算法同时满足靶场炮弹火焰分割对于精度与速度的要求,在靶场炮弹定位项目中有一定的实用价值。