• 端到端的SAR自动目标识别:首先从复杂场景中检测出潜在目标,提取包含潜在目标的图像切片,然后将包含目标的图像切片送入分类器,识别出目标类型。
  • 目标检测可以用经典的恒虚警率(CFAR),为了展现全卷积网络对于目标检测仍有良好的效果,选择采用两级全卷积网络,第一级用于目标检测,第二级用于目标分类。

1. 数据准备

  • 采用MSTAR大场景数据集,尺寸为1476×1784,如下图所示:

    image-20210822170959496

  • 由于大场景数据不包含目标图像,所以将许多大小为88×88像素的目标嵌入场景中,因为目标和场景都是同一个机载SAR系统获取的,标准工作条件(SOC)下的SAR图像,成像分辨率都是0.3m,所以可以手动添加目标到大幅场景中,目标切片和添加后的大场景如下图所示:

    image-20210822171425933

    image-20210822171501084

  • SAR目标识别就是要从上面场景图片中检测出潜在目标,提取包含潜在目标的图像切片,然后将包含目标的图像切片送入分类器,识别出目标类型。

2. 目标检测

  • SAR目标检测是一个二元分类问题,主要区分目标和杂波,因此也可以采用全卷积网络算法,网络结构如下图所示,包含4个卷积层和3个池化层:

    image-20210822180456516

  • 训练集包含目标切片和背景切片,目标切片是SOC条件下5类数据集切片共3171张,如下图所示:

    image-20210822173019771

  • 背景切片是从MSTAR大场景中裁剪得到的,包含草地、森林、农作物、建筑物等切片,共4000张,如下图所示:

    image-20210822173243164

验证集同样的方法裁剪包括1057张目标切片和1000张场景切片。

  • 训练:epoch = 50, Adam优化器,learning_rate = 0.0001,下面是网络训练的结果,在tensorboard中显示训练集和验证集的Loss曲线和Accuracy曲线如下:

    image-20210822175642128image-20210822175904303

  • 接着训练好的网络对大幅SAR场景图像进行检测,以滑窗的形式作用于整幅SAR场景图像,滑动窗口尺寸为网络输出尺寸64×64,步长为1,这一步的输出为一个预测目标存在概率的地图,下面是用来检测的大幅场景(800×900)和对应网络输出的概率地图:

    image-20210822185028057
    image-20210822185046764

  • 颜色越偏向红色代表该区域大概率为目标区域,为了后续更好的对目标进行切片,用阈值0.9将概率图进行二值化,大于0.9的部分置为1,小于0.9部分置为0,二值化后图像如下:

    image-20210822185617419

3. 区域生长算法及质心估计

  • 转化后的目标二值图像存在多联通、虚警区域,为了进一步确定目标位置划分目标切片,采用区域生长算法将图像中所有目标附近的像素进行合并,从而估计出质心。

  • 区域生长算法是将图像中所有种子附近的像素按照像元值的相似度和似然性进行合并、归类的二值化过程。区域生长算法的生长准则包括四邻域和八邻域两种。

  • 具体先对每个需要分割的区域找一个种子像素作为生长起点,然后将种子像素和周围邻域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域中。(对于上述生成的二值图像将像素为1的合并)将这些新像素当作新的种子继续上面的过程,直到没有满足条件的像素可被包括进来。这样一个区域就生长成了。

    区域生长实现的步骤如下:

    1. 对图像顺序扫描!找到第1个还没有归属的像素, 设该像素为(x0, y0);
    2. 以(x0, y0)为中心, 考虑(x0, y0)的8邻域像素(x, y)如果(x0, y0)满足生长准则, 将(x, y)与(x0, y0)合并(在同一区域内), 同时将(x, y)压入堆栈;
    3. 从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2;
    4. 当堆栈为空时!返回到步骤1;
    5. 重复步骤1 - 4直到图像中的每个点都有归属时。生长结束。
  • 解决虚警区域方法:经过观察发现原图中心有虚警区域,区域生长后的面积可以求得,虚警区域面积较小,故可以通过设置面积阈值,小于一定值将其去除,大于阈值的才为目标区域。

    image-20210822200326331

  • 在求质心时,只需要将各个区域的点横纵坐标取平均值,就可以求得质心点。

  • 解决不连通区域方法:进一步发现有的目标区域之间不连通,如下图所示,他们在区域生长被分为3个目标区域,但实际为1个,解决办法有很多,一般可以通过聚类,将其合并为一个目标,我这里采用的是统计所有质心点相互之间的距离,如果小于某一阈值,就将质心点取平均合并,直到所有质心点两两之间距离大于所设定的阈值。

    image-20210822201444724

  • 下面是取得质心的结果(包括去掉虚警及解决不连通问题):

    image-20210822201403188

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #下面是程序输出结果:
    (800, 900)
    # 八个目标区域
    true_region--------> 1
    true_region--------> 2
    true_region--------> 3
    true_region--------> 4
    true_region--------> 5
    true_region--------> 6
    true_region--------> 7
    true_region--------> 8
    # 面积及质心点坐标
    1125
    center:(136, 871)
    2629
    center:(223, 93)
    287
    center:(326, 745)
    133
    center:(343, 753)
    169
    center:(341, 738)
    3423
    center:(424, 665)
    2179
    center:(446, 123)
    1965
    center:(749, 832)
    # 合并质心点
    (326, 745)(343, 753) change------> (334, 749)
    (343, 753)(334, 749) change------> (338, 751)
    # 最终目标质心点
    new center:(136, 871)
    new center:(223, 93)
    new center:(424, 665)
    new center:(446, 123)
    new center:(749, 832)
    new center:(334, 749)

4. 对目标区域进行切片

  • 上述通过区域生长算法对目标区域进行质心估计,可以在原始SAR图像上将其周围的目标进行切片,为了便于后续目标分类识别,切片大小为分类网络的输入尺寸88×88,所以以质心为中心,切割88×88像素区域为目标切片:

    image-20210822202211966

  • 上面黄色方框就是切片区域,下面将其逐一保存到切片文件夹下,作为后续分类网络的测试集:

    image-20210822202211966

5. 目标分类

  • 目标分类仍然采用全卷积网络,结构如下图所示,训练采用标准工作条件(SOC)下10类SAR图像。

    img

  • 训练:epoch = 50, Adam优化器,learning_rate = 0.0001,训练结果的Loss曲线和Accuracy曲线在tensorboard中显示为:

    imgimg

  • 将上面裁剪后的目标切片作为测试集送到网络中预测,其结果在原始图像上用黄色字体标出:

    image-20210822202948925

  • 以上就是整个全卷积网络的SAR ATR的全部过程及结果,主要采用两级全卷积网络,一级用来检测目标,另一级用于目标分类,整体效果较好,并且网络结构简单,训练时间较短。其中区域生产算法后的目标区域除了上述解决办法外还可以通过机器学习的方法进行聚类。