针对弹载平台红外小目标的检测与跟踪算法
2020-12-07李大维王新春
李大维,莫 波,高 可,王新春
(1.北京理工大学宇航学院,北京 100081;2.北京信息科技大学自动化学院,北京 100192)
0 引 言
在各种精确制导体系中,红外成像制导除了制导精度高,抗干扰能力强,效费比高等优点,还拥有其独特的优点,能在恶劣的观测条件和黑夜中探测到目标的特征。随着红外成像技术和弹载计算机性能的发展,具备自主识别目标能力的红外成像制导技术开始发展。
在红外成像制导中,当弹目距离较大时,目标在视场中占的像素很少,根据国际光学工程学会(SPIE)对红外弱小目标的定义,对于大小为256×256像素的图像,成像尺寸小于总像素数的0.12%(即小于9×9像素)的目标为红外弱小目标[1]。据此,定义大小在10×10~30×30像素范围的目标为红外小目标。虽然目前对于红外弱小目标的研究文献很多[2-8],但是由于红外弱小目标太小,在图像中仅为一个亮点,基本没有目标的纹理信息,因此不适合自主识别。对于边长在10~30像素的红外小目标,目前的研究比较空白,但是红外小目标包含目标的纹理信息,具有一定的辨识度,是本文研究的重点。
由于红外小目标较小,只有少量的目标纹理信息,容易受到快速运动、背景、噪声、拖尾等因素的干扰,对检测与跟踪算法的精度与鲁棒性要求很高。除此之外,由于弹载平台的特殊性,导弹搭载的计算机平台受空间、供电、散热等限制,只能使用体积小、功耗低、发热小的计算性能有限的嵌入式平台,因此算法的计算速度至关重要。
调研目标检测与跟踪领域,目前的一些目标检测主流算法,如使用深度卷积神经网络的SSD[9]以及yolov3[10],对于红外小目标的检测效果不理想,漏检率较高,主要是因为这两种算法是针对Pascal VOC[11]等通用测试集设计的,并未重点强调对于小目标的检测效果。目前一些主流的目标跟踪算法,例如使用深度CNN特征的MDNet[12]和ECO[13],这类算法的精度高,但是算法速度较慢。还有基于相关滤波方法的KCF[14]与DSST[15],算法速度较快,但是由于搜索框和边界效应的缺陷,对快速运动、干扰较大的红外小目标的跟踪效果不好,容易出现漂移和跟踪失败的情况。由于没有跟踪失败监测机制,这两类方法无法处理遮挡和短暂出视场的情况。针对长时跟踪的TLD[16]算法,使用跟踪、学习、检测的组合机制,可以根据跟踪结果在线学习检测器,跟踪失败时可以重检测找回目标,但是由于TLD的跟踪模块使用光流法,快速运动、光照变化时容易漂移导致跟踪失败,而且检测模块的训练样本是实时获取的,如果跟踪模块效果不好,会导致检测器模型无法获得好的训练,进而造成重检测精度变差,且该算法复杂度高,不适合移植到弹载平台上。
本文针对弹载平台上红外小目标的特性,提出了一种单目标检测与跟踪算法,该算法能从画面中自动检测出指定类型的目标,并进行跟踪。检测部分,使用多块LBP特征级联检测器(MB_LBP+AdaBoost)进行粗检测,引入置信度和管道滤波器对检测结果进行筛除,如果连续几帧内检测结果可靠且稳定,则认为检测到了目标,然后使用检测结果初始化目标跟踪模块。对于目标跟踪,采用基于在线更新模型策略和模板匹配的目标跟踪算法,使用了余弦惩罚系数稳定跟踪结果,引入多尺度搜索解决尺度变化,以及失败监测机制,可以监测跟踪状态并控制模型的更新策略,如果检测到失败,可以重新调用目标检测算法找回目标。通过在弹载平台上的测试与分析,设计的算法在离线训练之后,对指定类型红外小目标的检测和跟踪效果较好,计算速度快,证明了算法的有效性,为弹载平台上红外小目标的检测与跟踪提供了更简洁的解决思路。
1 目标检测算法
本文算法目标检测部分的流程框架如图1所示。红外图像首先经过MB_LBP+AdaBoost级联检测器进行粗检测,得到多个候选框,然后计算每个候选框与目标模型的相似度,然后选择最高相似度分数和对应的候选框作为当前帧的置信度和检测结果,最后使用管道滤波器判断最近几帧内的检测结果是否稳定可靠,如果稳定可靠则转入目标跟踪。
图1 目标检测流程图
1.1 MB_LBP+AdaBoost
MB_LBP全称是多块LBP特征,它具有旋转和灰度不变形及计算简单的优点,该特征在视觉检测和分类上使用广泛。AdaBoost[17]迭代算法,其核心思想是针对一个数据集训练多个弱分类器,然后集合成强分类器。MB_LBP+AdaBoost全称是多块LBP特征级联检测器,该算法被广泛被应用于人脸识别等应用[18-19],具有检测速度快、训练简单、模型小的特点,适合计算性能有限的弹载平台。
算法使用包含目标正负样本的数据集进行训练,使用MB_LBP特征和Adaboost算法挑选多种MB_LBP特征构建数个弱分类器,再由多个弱分类器组合成为多层强分类器,多层强分类器组成一个级联检测器,具体检测流程如图2所示。
图2 级联检测器检测流程图
对于级联检测器的训练,使用红外相机采集的数千张11×11像素分辨率的“十字”红外模拟靶标的图片构成正样本库,数千张不包含目标且尺寸不小于11×11像素分辨率的图片构成负样本库,并且加入了随机翻转与旋转,随机gamma调节等数据增强,以增加模型对旋转和光照变化的泛化能力。使用opencv计算机视觉库中的opencv_traincascade函数,选用MB_LBP特征进行了训练,训练出的模型由9层强分类器级联而成,可以粗略检测图像中的目标,最小能检测出11×11像素大小的目标。
1.2 检测置信度
红外图像经过训练好的MB_LBP+AdaBoost级联检测器模型检测之后,一般会产生10~20个检测框,其中包含大量的误检和重叠的框,因此提出一种过滤机制,对每个候选框与图3所示的“十字”目标模板进行对比,计算得到相似度分数,然后挑选最高分筛选目标检测框。
图3 “十字”目标模板
对于第i个候选框,其包含的图块是Ii,先把模板图缩放到与待检图块Ii同样的大小得到图块T,然后使用归一化相关性系数方法计算Ii和T的相似度分数Fi,计算公式:
(1)
式中:(x,y)和(x′,y′)是坐标,T(x,y)和Ii(x,y)是模板图T与待检图块Ii在点(x,y)处的像素值,w和h是图像的像素宽度和高度。当前帧的检测置信度分数Sk取相似度分数Fi的最大值,然后根据最大相似度分数从候选框中选出最优检测框。
1.3 管道滤波器
管道滤波器分为三步:
步骤1:判断当前帧的检测结果是否可靠,如果置信度分数Sk大于等于阈值(设定为0.6),则可靠,小于则不可靠。
步骤2:判断当前帧的检测结果是否稳定,计算当前帧目标定位框的中心坐标(Xk,Yk)和上一帧中心坐标(Xk-1,Yk-1)的距离dk,如果距离dk小于阈值(设定为当前帧目标定位框的边长的4倍),则认为稳定,如果距离大于等于阈值则不稳定。
步骤3:判断最近5帧内的检测结果是否有3次以上稳定且可靠,如果有,则认为当前帧的检测结果极大可能为正确的目标,然后用该检测框初始化目标跟踪模型,算法转入目标跟踪。
2 目标跟踪算法
目标跟踪算法的主要流程如图4所示,算法根据在线学习的目标模型,在上一帧目标中心位置的领域内,从三个尺度分别进行搜索,根据其响应图得到的置信度分数,挑选出最优的尺度,然后进入跟踪失败监测环节,根据监测结果控制后续操作。
图4 目标跟踪流程图
2.1 跟踪置信度
目标跟踪置信度的产生基于模板匹配算法,在上一帧目标中心的邻域内进行滑窗,搜索框的边长设为上一帧目标框边长的4.5倍,对于每个位置的窗口计算其中包含的图块与目标模型的相似度,如图5所示,遍历搜索区域生成响应图,图中最大值的坐标,就是目标相对于上一帧的位移,从而实现目标的定位。响应图中的最大响应值就是当前帧的跟踪置信度Pk。
图5 响应图计算示意图
响应图的计算使用余弦惩罚系数加权的归一化相关性系数计算得到,即:
(2)
(3)
式中:wR和hR是响应图的像素宽度和高度,(x,y)和(x′,y′)是坐标,R(x,y)是响应图在点(x,y)处的响应值,d(x,y)是点(x,y)到搜索区域中心的距离,C(x,y)是点(x,y)处的余弦惩罚系数,M(x,y)和I(x,y)是目标模型与搜索区域的图像在点(x,y)处的像素值,w和h是目标模型的像素宽度和高度。
基于下一帧目标运动到离中心较远的边界处可能性较小的假设,使用余弦惩罚系数来惩罚远离搜索区域中心处的窗口的响应值,余弦惩罚系数的范围为0.85~1,在距离中心最远的边界处惩罚系数为0.85,中心处惩罚系数为1。该策略可有效防止跟踪框的抖动,消除边界处的误检,抑制长时跟踪下的漂移现象,能增加跟踪算法的稳定性。
2.2 多尺度搜索
为了增加跟踪器对目标尺度变化的适应能力,增加了多尺度搜索策略,把模型M缩小1.05倍作为小尺度搜索得到置信度P1,保持模型大小不变,作为原尺度搜索得到置信度P2,把模型M扩大1.05倍作为大尺度搜索得到置信度P3,然后经过式(4),使用尺度惩罚系数γ=0.95对非原尺度置信度进行惩罚,得到最终置信度P,并挑选最优尺度。
(4)
2.3 跟踪失败监测
为了解决跟踪算法面对目标被遮挡,漂移,丢失的情况,引入了根据跟踪置信度的跟踪失败监测机制,如式(5)所示,使用跟踪置信度P控制在线模型的更新以及监测跟踪状态,如果跟踪置信度过低(P<0.65),则不更新模型,防止模型被不好的检测结果所污染,如果检测到模型已经连续数帧(设定为连续10帧)没有更新,则认为目标跟踪已经失败,会重新调用目标检测找回目标。
(5)
式中:Mnew是更新后的模型图,Mcur是当前帧的目标图,Mold是前一帧的模型图,通过缩放与目标图Mcur保持同样尺寸,模型的学习率λ设为0.05。
3 仿真校验
仿真校验主要分为三部分,分别对目标检测部分、目标跟踪部分、算法运行速度进行了测试。测试中使用的视频序列是使用分辨率为640×512像素,采样频率为50 Hz的非制冷红外相机采集,拍摄了不同场景下“十字”红外模拟靶标的多个序列。
为了评估算法的性能,提出了两个评价指标,中心位置误差Derror和重合率Orate,计算公式如下:
(6)
3.1 目标检测测试
为了测试检测性能,采集了一段长度为200帧的序列Detect1,序列中的“十字”红外模拟靶标的大小约为32×32像素。为了得到目标检测算法对于不同像素大小的目标的检测能力,使用0.25~1的缩放系数,把原本32×32像素大小目标的序列Detect1中分别缩放到了25个不同的尺度,得到了25个目标尺寸从8×8像素递增到32×32像素的子序列。
目标检测算法部分在测试时,只进行检测不转入跟踪,得到目标的定位框之后,然后统计算法在各个尺度下对于不同像素大小的目标的检测结果,通过与视频序列中目标真实位置的标注信息进行对比,得到每一帧的中心位置误差和重合率,基于这两个数据,提出两个评价目标检测精度的指标:中心位置误差精度指标和重合率精度指标。
中心位置误差精度指标计算算法得到的目标定位框与目标真实定位框的中心位置误差Derror,然后统计序列中所有中心位置误差小于阈值(设定为当前帧中真实目标最大边长的1/2)帧序列的百分比,定义为检测算法对当前序列的中心位置误差精度。
重合率精度指标计算算法得到的目标定位框和目标真实定位框的重合率Orate,然后统计序列中所有重合率大于给定阈值(设定为0.6,即与真实定位框重合度大于60%)的帧序列的百分比,定义为检测算法对当前序列的重合率精度。
通过在AM5728嵌入式弹载平台上运行本文的目标检测算法,对视频序列Detect1的25个子序列分别进行目标检测,使用中心位置误差精度指标和重合率精度指标统计检测结果,得到了图6所示的检测精度图,图7为在11像素、24像素、32像素边长下的部分检测结果图。
图6 目标检测精度图
图7 检测结果图
从图6可以看出,本文算法中的目标检测部分对于不同像素大小的目标的检测精度,算法的检测精度在8~11像素大小区间快速上升,在11像素处达到0.7的精度,说明算法的最小有效检测目标大小是11×11像素,这与MB_LBP+AdaBoost级联检测器使用的11×11大小的训练模型直接相关。在12~26像素大小区间,算法的检测精度缓慢上升之后保持在较高的精度,在27~32像素区间,算法的精度开始缓慢下降,但是仍然保持在可接受范围内。总体来看,若取检测精度阈值为0.7,本文的检测算法对于边长11~31像素大小的指定类型的目标有较好的检测效果。除此之外,如图8所示,在其他多个场景下也进行了测试,算法的检测效果稳定。综上所述,本文检测算法能满足对于红外小目标(10~30像素)的检测性能的需求。
图8 其他场景检测结果图
3.2 目标跟踪测试
对于目标跟踪,主要有以下难点:尺度变化、快速运动、形变、旋转、遮挡、丢失、运动模糊、噪声干扰等。这些因素会对跟踪算法的性能造成不同的影响,为了检验本文算法的跟踪性能,采集了两组序列Scale与Occlusion。
Scale序列长728帧,随着目标由近到远,尺度由大变小,在480~490帧和590~600帧有较大幅度的快速移动,期间出现了运动模糊与拖尾。
Occlusion序列长489帧,场景较复杂,43~73帧包含一次大角度的旋转,本序列还包含3次不同程度上的遮挡,170~195帧有一次中等长度的部分遮挡,238~246帧有一次短暂的完全遮挡,318~390帧有一次长时间的完全遮挡。
选择了目标跟踪领域两个主流算法KCF和ECO与其进行对比。KCF是相关滤波算法的主要代表,使用循环矩阵和核方法加速了计算,兼顾跟踪精度与速度,ECO算法使用深度CNN特征,性能优异,在VOT2017[20]中取得了冠军。对于算法的初始化,首先使用本文算法进行检测,得到第一帧的目标定位框,然后使用该定位框初始化本文算法的跟踪器和KCF与ECO。基于中心位置误差Derror和重合率Orate,提出了中心位置误差阈值精度和重合率阈值成功率两个指标评估跟踪性能。
中心位置误差阈值精度指标计算算法估计的目标定位框与人工标注的目标定位框的中心位置误差,然后分别统计中心位置误差小于给定的不同阈值的视频帧的百分比,定义为对应阈值下算法的中心位置误差阈值精度,可衡量算法的定位精度。
重合率阈值成功率指标计算算法估计的目标定位框与人工标记目标定位框的重合率,然后分别统计重合率大于给定的不同的阈值的视频帧的百分比,定义为对应阈值下的算法的重合率成功率,可衡量算法的目标定位框的精确度。
1)序列Scale的跟踪结果
序列Scale中的部分跟踪结果如图9所示,图10是序列中的跟踪结果统计图。
图9 序列Scale的跟踪结果图
从中心位置误差图可以看出,本文算法和KCF及ECO算法在前480帧对于目标的跟踪定位精度都很高,但是480~490帧出现快速运动之后,KCF算法出现短暂的跟踪失败,本文方法与ECO未受影响。在590~600帧出现大幅度快速运动时,KCF和ECO算法都跟踪失败了,并且未能重新找回。跟踪失败的原因是图像出现了很大程度的运动模糊和拖尾现象,如图9中的 593帧,目标的外形变化较大,从而导致KCF和ECO算法的模型受到了污染,以及目标运动幅度过大,而KCF和ECO的搜索区域有限,最终导致跟踪失败。本文方法在短暂丢失几帧之后重新找回了目标(未调用重检测),这是因为本文方法有跟踪置信度机制,在出现目标外形被污染的情况下,跟踪置信度较低时控制模型不更新,这阻止了模型被污染,当恢复正常时就能重新锁定目标。从重合率图和图9中的379帧可以看出ECO算法的定位框与真实框的重合率略高于本文方法,大于KCF算法。这是因为KCF算法是固定尺度,目标框的大小在跟踪过程中不会发生变化,这导致KCF的重合率随着目标变小而降低,而本文方法相对于ECO算法,搜索的尺度较少,仅3个尺度,所以本文方法的重合率略低于ECO算法。从精度图和成功率图可以看出,在Scale序列上,如果选择比较严苛的中心位置误差阈值和重合率阈值,本文方法的定位精度和目标框的精准度略低于ECO算法,但是综合性能优于ECO算法,KCF的性能表现较差。
综上所述,在尺度变化、快速运动、运动模糊、拖尾等因素干扰下,本文算法的跟踪性能良好。
2)序列Occlusion的跟踪结果
序列Occlusion中的部分跟踪结果如图11所示,图12是序列的跟踪结果统计图。
图11 序列Occlusion的跟踪结果图
从图11中的第60帧图可以看出,目标的旋转对本文算法与对比算法都没有造成影响,跟踪情况都不错,这说明本文算法能应对一定程度上的目标旋转。从图12中的重合率图可以看出,主要有三段较大的波动,这三次波动对应三次目标遮挡,第一次遮挡发生在 170~195帧,如图11中的第183帧图所示,目标被部分遮挡,遮挡过程中只有ECO的跟踪情况较好。KCF的模型被污染了,完全跟踪失败。而本文方法在遮挡过程中暂时跟踪失败,如图11中的第203帧所示,算法很快重新找回了目标。第二次遮挡发生在238~246帧,比较短暂,ECO算法和本文算法未受到太大影响。第三次遮挡发生在318~390帧,这次遮挡较长,目标被完全遮挡。遮挡过程中ECO和本文算法均跟踪失败了,但短时间后,本文算法检测到跟踪失败,重新调用了目标检测,如图11中的367和388帧图,图中的黑色虚线框即为目标检测的结果,在388帧时,目标刚刚从遮挡中恢复,本文的目标检测算法就成功检测到了目标,随后在第393帧成功锁定目标并转回跟踪状态。从图12中的精度图和成功率图可以看出,在序列Occlusion上,本文算法的精度和成功率优于ECO算法,KCF的效果较差。
图12 序列Occlusion的跟踪结果统计图
综上所述,本文算法能应对一定程度的目标旋转,对于不同程度的遮挡有鲁棒性,即使在长时间全遮挡的情况下,算法也能调用重检测找回目标。
3.3 算法运行速度
速度测试使用的平台是搭载在红外导引头上的AM5728平台,核心配置CPU:Arm Cortex A15 1.5 GHz双核、RAM:4G,及一台配置CPU:i7-8700k、GPU:GTX-1070、RAM:16GB的台式机。
本文的检测算法部分在AM5728平台上速度为12帧/s,台式机为60帧/s。因为检测算法仅用于跟踪的初始化,对于运行速度的要求不高,12帧/s可以满足检测速度的需求。本文的跟踪算法部分在AM5728平台上速度为50帧/s,与红外摄像头的采样频率50 Hz保持一致,在台式机平台平均480帧/s。
对比算法KCF移植到AM5728弹载平台上,速度15帧/s,台式机上180帧/s。ECO算法使用MATLAB R2017b运行在台式机上,速度为8帧/s。
综上所述,本文算法在运行速度上比KCF与ECO算法快很多,能在弹载平台上实时运行。
4 结 论
本文针对弹载平台上红外小目标的图像检测与跟踪,提出了一种单目标检测与跟踪算法,检测模块在MB_LBP+AdaBoost级联检测器的基础上加入了置信度和管道滤波器,可实现对指定类型红外小目标的检测,并在稳定检测到目标后转入跟踪。跟踪模块基于模板匹配算法,使用余弦惩罚系数优化跟踪效果,加入多尺度搜索适应目标的尺度变化,引入了跟踪失败监测机制,监测跟踪状态以及控制模型的更新,可在跟踪失败后重新调用检测找回目标。通过仿真验证,与主流算法进行对比,本文方法在离线训练之后,对于边长11~31像素大小的指定类型的红外小目标有较好的检测效果,在采集的多个视频序列上,跟踪精度、成功率和速度优于主流算法KCF和ECO,并且能实时运行在AM5728弹载平台上,同时满足了精度和速度的需求。