作者:王程伟,算法工程师
在计算机视觉中,红外弱小目标检测是一个重要的方向,但直到近一两年,才开始运用一些深度学习的方法。深度学习自2012年就开始大火,为何近一两年才更多被应用于弱小目标检测?
个人认为主要是由于数据集的制约。红外弱小目标成像特殊,一般获得海量的真实数据非常困难(很多实验数据由人工合成);另一方面多被应用于军事领域,即使拥有大量真实数据也不被轻易公开。至今,仍然鲜有公开的可供应用和研究的标准红外弱小目标数据集。
本文将从传统图像方法+机器学习的角度来说明如何进行红外弱小目标检测,所用数据集(MSDIT)均为自己拍摄和标注,部分数据已上传至开源数据平台Graviti,供感兴趣的同学学习和研究。
红外弱小目标数据集
我们构建了一个多场景红外弱小目标数据集(MSIDT)。MSIDT 共计 6267 张图像,包含约 6625 个红外弱小目标,包含建筑背景、净空背景、复杂云背景、连续云背景、树木背景及其他(海面、海天)背景 6 种通用场景。
MSIDT中96%+数据采用红外热像仪实际拍摄
下图显示了 MSIDT 的一些统计特性,MSIDT 涵盖了红外弱小目标所有尺寸的变化范围,其中 3*3 以内的点目标占一半以上,另外,9*9 左右的面目标约占 2%。MSIDT 具有成像真实(非理论合成)、目标尺寸丰富、场景多样的特性,且对所有目标均进行了标注。
俗话说,知己知彼百战百战不殆,我们接下来通过观察分析一下红外弱小目标成像究竟有何特性:
- 目标像素个数占整个图像的比例非常少,根据 SPIE 对弱小目标的定义,"小"体现在:对于一幅 256×256 的红外图像,弱小目标所占的面积一般在 81个像素以内,仅占整幅图像的 0.12%;
- 缺失颜色特征、纹理特征和结构特征,且容易和图像中其他物体混淆,容易被噪声淹没。
- 在局部邻域内,目标的灰度强度较高,表现为峰值;
- 目标的灰度与相邻的局部背景存在异质性和对比性;
- 在局部邻域内,目标具有孤立性,梯度和灰度在水平和垂直方向均有较大的变化。
- 目标通常近似圆形或椭圆形,呈中心对称状,灰度从中心向四周弥散, 可利用二维高斯函数对其进行建模。
总体而言,做到精确地检测红外弱小目标具有一定挑战性,接下来,我们将根据红外弱小目标的成像特性设计算法进行检测工作。
红外弱小目标检测过程
1. 计算显著性图和目标尺寸
我们首先利用灰度分布计算得到一幅显著性图,以该显著性图为基础进行角点检测以提取候选目标。
另外,虽然弱小目标很小,但其尺寸是变化的,要较准确地对其特征进行提取,就需要能自适应地估计目标的尺寸。
我们将目标尺寸量化为3x3、5x5、7x7、9x9的规则尺寸,在红外图像的局部邻域内(如5x5的范围内),弱小目标区域亮度通常高于其周围背景区域,且背景区域的灰度变化较为平缓,所以我们可以利用多尺度灰度差分获取显著图:即对于某一像素,用其不同尺寸邻域内的灰度均值差分的最大值表示其显著性,简单来说是分别使用3x3、5x5、7x7、9x9和11x11的滤波尺寸对图像进行均值滤波,然后3x3、5x5、7x7、9x9的滤波结果分别减11x11的滤波结果,取最大值作为显著图。
另一方面,我们观察到,弱小目标通常呈现为近似椭圆的形状,灰度向四周弥散,与二维高斯函数类似,二维高斯函数有一个特性,就是以其顶点为中心,随着局部窗口的增大, 其中心区域的局部均值差分通常逐渐减小,而局部方差通常逐渐增大,局部均值差分与局部方差结合起来就可以对目标的尺寸(二维高斯模板的尺寸)进行估计:
表示计算显著图时不同滤波尺寸的局部方差,表示第K个尺度的局部方差,这里的尺度就是3x3、5x5、7x7、9x9大小的窗口。
最后取上式中最大值所对应的尺度作为最优目标尺寸。对整个红外图像完成多尺度灰度-方差估计后,即可获得显著图和每个像素位置对应的最优目标尺寸(最优目标尺寸索引图)。
2. 提取候选目标ROI及NMS
在显著图中,红外弱小目标在水平和垂直方向的梯度变化均较为剧烈,这与角点的特征一致。所以我们可以将显著图中的红外弱小目标视为角点,并利用具有速度优势的 FAST 角点检测定位视觉焦点以提取 ROI,且后续仅对这些 ROI 进行特征提取避免了遍历计算,可以提升检测速度。
FAST角点检测算法非常著名,在所有角点检测算法中以速度极快著称,其具体原理非常简单,这里不作赘述。这里角点检测会有一个问题:FAST 角点检测同样会将目标边缘像素判断为角点,所以,在 真实目标周围会产生一些冗余的检测结果(下方右上图密集的红点),所以我们还需要做NMS。
我们进行NMS的处理方式非常简单,主要思想是利用红外弱小目标中心区域的亮度平均要高于其边缘区域这一特性,以候选角点为中心,计算原图中其最优尺寸区域内的亮度平均,在一定邻域内删除亮度平均较低的角点,保留该邻域内平均最高的角点。经过NMS处理后会剔除所有目标边缘的角点,而仅保留一个靠近目标中心的角点(上方右下图只有一个红点),后续将以该角点作为目标中心点,由于红外弱小目标的尺寸通常在 9*9 以内,为了保留其周围背景信息便于特征提取,笔者以角点为中心 21*21 的区域作为ROI,并画出检测框。
3. 手工构建特征集
实现红外弱小目标准确的识别与其特征描述的合理性和准确性密切相关。根据弱小目标的成像特性,我们构建了一个包含 6 个特征的特征集对红外弱小目标进行描述,并根据前文所述的最优目标尺寸进行特征提取。
- 目标区域灰度最大值
- 目标区域灰度平均值
- 梯度特征
如下图,红外弱小目标的梯度矢量场围绕着目标大致指向区域中心,可以先对 ROI 内每 个像素求梯度幅值和梯度方向,然后以 ROI 中心为原点将其划分为 4 个象限,对每个象限中满足梯度方向条件的像素求其梯度幅值的均方值,将4 个象限中梯度幅值均方值的最小值和最大值的比值作为梯度特征。
- 对比度
- 显著度
- 方差特征
考虑到出现目标的区域会存在剧烈的灰度变化,而其周围背景一般相对较平滑,所以使用了方差特征,将ROI区域分成如下3个子块,分别为BL、T1、BR和BU、T2、BD。S=21(当然也可以自己设定),TS为目标最优尺寸,可以想象,当目标存在于T1和T2时,T1和T2的方差势必会相对很大,而周围BL、BR、BU、BD子块为背景,方差相对较小。
所以方差特征就可以表示为T1和T2方差的均值除以周围BL、BR、BU、BD子块方差的均值。
4. SOFT-FATR网络
接下来,我们就用传统的神经网络进行训练了。这里我们选择了FART(Fuzzy Adaptive Resonance Theory),这个网络大家可能没怎么听过,FART是ART网络的衍生,ART网络在西瓜书的第5章有简略的描述,他们属于竞争型学习的神经网络,网络的输出神经元相互竞争,每一时刻仅仅允许有一个获胜神经元被激活,其他神经元则被抑制,这类神经网路遵循这种"胜者通吃"的机制。
那么为什么我们选择这个网络呢?高显著性物体尤其某些形态类似于弱小目标的物体(如路灯)对检测任务会产生较大干扰,这种情况下将很难分类或界定真实目标和背景。这一问题可以视为不确定性问题或不精确性问题,而模糊神经网络能有效地解决这类问题,所以对于弱小目标检测,我们选择尝试一下FART网络。
另外,我们对FART做了一些小小的改进,原因是FART 网络采用仅允许一个获胜节点进行更新学习的硬竞争机制,浪费了神经节点的信息。在实际竞争中,往往存在多个满足警戒条件的获胜神经节点,而多个神经节 点之间存在相互抑制的现象。所以利用生物侧抑制理论,并与余弦相似度结合设计了软竞争模糊自适应共振网络(Soft-FART),Soft-FART 网络允许对所有满足警戒条件的获胜神经节点进行学习更新,可以提高神经节点信息的利用率,以克服传统 FART 网络硬竞争机制的不足。
Soft-FART 网络的输入层 F0、比较层 F1 和识别层 F2 即为传统 FART 网络。与传统 FART 网络不同的是,Soft-FART 网络将竞争中所有满足警戒条件的获胜 神经节点组成胜出层 F3 和抑制层 F4。
当输入矢量 I 传递给 F1 层时,F1 层对 F2 层各个神经节点均产生一个选择 信号 ,同时 F2 层给 F1 层传递一个反馈信号,筛选出所有满足警戒条件的 获胜神经节点,而非仅允许一个神经节点胜出。
然后,在抑制层利用侧抑制理论计算各获胜神经节点之间的侧抑制系数 并传递至胜出层;同时在胜出层计算出各获胜节点与输入矢量的余弦相似度 作 为各获胜节点未受抑制时的初始兴奋信号;最后胜出层结合侧抑制系数 和初始兴奋信号计算出各获胜节点的实际兴奋信号 ,并将该信号反馈至 F2 层对 所有获胜节点进行权值更新。每次竞争学习完成后,将本次胜出层和抑制层的神 经节点清除,下一次竞争出的获胜神经节点将重新组成胜出层和抑制层。
采用 Soft-FART 对红外弱小目标数据进行训练时:相似环境下(特征相似, 满足警戒引起共振)的弱小目标数据会被归为同一"类",然后对特征权重进行学习修正,以更泛化地描述该环境下的弱小目标;对于新环境下(特征有一定区别,无法引起共振)的弱小目标数据,网络通则产生新的神经节点以对该新环境下的弱小目标进行记忆;最后通过网络的迭代学习,当特征 权重趋于稳定或不再变化时即停止学习生成训练模型。
5. 检测流程
检测效果
这个方法在MSIDT数据集上的准确率为98%,召回率88%,F1是0.925,还有很大的提升空间。
代码和数据
1.代码(PC端Graviti讨论区也可查看):
https://github.com/2209520576/Infrared-Dim-Target-Detection-Based-on-Human-Visual-Mechanism
2.数据:
https://gas.graviti.cn/dataset/datawhale/MSIDT
# 主要数据已上传开源数据平台Graviti