如何在MSTAR数据集中刷出99.5%的识别准确率

1、背景介绍

与自然图像识别研究的快速发展不同,在遥感SAR图像识别领域,因为目标探测手段的困难,难以获取足量公开的数据集,其中美国公开的MSTAR是为数不多的、对地车辆目标进行识别的数据集。MSTAR是在二十世纪九十年代中期,美国国防高等研究计划署(DARPA)推出。通过高分辨率的聚束式合成孔径雷达采集多种前苏联目标军事车辆的SAR图像。MSTAR计划进行了SAR实测地面目标试验,包括目标遮挡、伪装、配置变化等扩展性条件,形成了较为系统、全面的实测数据库。随后,DARPA公布了该数据库。目前MSTAR数据集在SAR图像目标识别研究上得到广泛应用。官方数据文件下载链接为,需要先注册再下载(注册很简单):https://www.sdms.afrl.af.mil/index.php?collection=registration

采集该数据集的传感器为高分辨率的聚束式合成孔径雷达,该雷达的分辨率为0.3m×0.3m。工作在X波段,所用的极化方式为HH极化方式。对采集到的数据进行前期处理,从中提取出像素大小为128×128包含各类目标的切片图像。该数据大多是静止车辆的SAR切片图像,包含多种车辆目标在各个方位角下获取到的目标图像。在该数据集中包含一个该计划推荐使用的训练集和测试集。训练集是雷达工作俯仰角为17时所得到的目标图像数据,包括3大类:BTR70(装甲运输车),BMP2(步兵战车),T72(坦克);测试集是雷达工作俯仰角为时所得到的目标图像数据,该数据集也包含3大类,BMP2、T72、BTR70。各种类别的目标还具有不同的型号,同类但不同型号的目标在配备上有些差异,但总体散射特性相差不大。

MSTAR混合目标数据中还包含其他的一组军事目标的切片图像,这些军事目标分别为2S1(自行榴弹炮)、BRDM2(装甲侦察车)、BTR60(装甲运输车)、D7(推土机)、T62(坦克)、ZIL131(货运卡车)、ZSU234(自行高炮)、T72。

2S1 光学图像与SAR图像

BDRM-2 光学图像与SAR图像

T62 光学图像与SAR图像

D7 光学图像与SAR图像

图1 典型车辆目标光学与SAR图像展示

2、数据集前期处理

MSTAR数据集中的目标是雷达工作在多种不同的俯仰角时,各个目标在方向上面的成像图片。MSTAR数据集的采集条件分为两类,分别为标准工作条件(Standard Operating Condition,SOC)和扩展工作条件(Extended Operating Condition,EOC)。这些SAR图像是基于多种采集条件生成的,如改变成像侧视角、目标姿态或目标序列号等。因此,MSTAR数据集可以测试SAR目标识别算法在不同采集条件下的识别性能。

SOC采集条件下共包括10类地面目标。训练集数据采集在17°成像侧视角下,测试集数据采集在15°侧视角下。SOC采集条件下样本数据的详细信息(目标类型、样本数量、目标序列号以及采集侧视角等)如表1所示。

与SOC采集条件相比,EOC采集条件下样本识别难度更高。EOC条件下包括EOC-1和EOC-2两种实验方案。EOC-1和EOC-2条件下训练集和测试集样本的详细信息分别列于表2、表3和表4。

EOC-1实验方案中包含4类地面目标,训练集的侧视角为17°,而测试集的侧视角为30°,如此大的侧视角差别可导致相同姿态的同一个目标呈现有较明显的区别表征,增加了识别的难度。EOC-2实验方案中训练集包含4类地面目标,采集在17°侧视角条件下,测试集分别使用不同序列号版本的T72目标,而不同序列号版本的目标会呈现有一定区别的目标表征。训练集与测试集样本中目标表征的区别使得测试集的样本不易被识别为T72目标,因此增加了识别的难度。

具体组成如下所示:

表1  MSTAR数据集SOC条件下数据类型

类别

俯仰角17°的训练集

俯仰角15°测试集

BMP2(sn-9563)

233

195

BTR70(sn-c71)

233

196

T72(sn-132)

232

196

BTR60

256

195

2S1

299

274

BRDM2

298

274

D7

299

274

T62

299

273

ZIL131

299

274

ZSU23/4

299

274

合计

2747

2425

表2 MSTAR数据集中EOC-1采集条件下的4类目标

   

训练集

测试集

目标类型

序列号

侧视角

样本数量

侧视角

样本数量

2S1

b01

17°

299

30°

288

BRDM2

e71

17°

298

30°

287

T72

a64

17°

299

30°

288

ZSU234

d08

17°

299

30°

288

表3 MSTAR数据集中EOC-2采集条件下的训练集

目标类型

序列号

侧视角

样本数量

BMP2

Sn_9563

17°

233

BRDM2

--

17°

298

BTR70

--

17°

233

T72

Sn_132

17°

232

表4  MSTAR数据集中EOC-2采集条件下的测试集

目标类型

序列号

侧视角

样本数量

T72

Sn_812

15°和17°

426

Sn_A04

15°和17°

573

Sn_A05

15°和17°

573

Sn_A07

15°和17°

573

Sn_A10

15°和17°

567

我们的目标,就是对SOC工作模式下获取的数据进行识别处理。

2.1数据格式转换

下载数据后,我们可以看到得到有8个文件夹,其中MSTAR-PublicClutter-CD1、MSTAR-PublicClutter-CD2、MSTAR-PublicMixedTargets-CD1、MSTAR-PublicMixedTargets-CD2、MSTAR-PublicT72Variants-CD1、MSTAR-PublicT72Variants-CD2、MSTAR-PublicTargetChips-T72-BMP2-BTR70-SLICY表示不同条件下获取的数据,但原始数据均为只读文本,需要转换成图片格式。从网上下载了matlab解析程序,可以直接转化为图片形式,如图1所示。

2.2 图片裁剪

转换后的数据,大小不一,部分大小如下表所示

2S1(158*158)

ZIL131(192*193)

BTR(128*128)

同时可以发现,目标已经处于图片正中位置,而且只占据全图不大的区域,为了识别方便,需要对10类数据进行裁剪。不影响目标条件下,我们都裁剪为100*100。裁剪后部分图片见图1。为了直观起见,我们将每类目标以图片形式存在在磁盘内,每类目标文件夹命名为目标名。

3. 网络搭建与建模

下面重点来了,如何针对这个SOC工作条件下的数据集刷出99.5%以上的识别准确率呢?我们直接给出方案,就是数据增广预处理+pretraining + Fine-tune 。

为何使用数据增广预处理?因为数据量不够,每类目标只有约200多个训练数据,而且因为成像的原因,分辨率固定、旋转角度均匀、气象条件一致。因此需要做基于图像预处理的增广方法。

为何采用pre-training + Fine-tune?尽管已有研究指出(参考Kaiming He大神的《Rethinking ImageNet Pre-training》),预训练并非必要,但前提是对于类似ImageNet这类数据量极大的情况,在实际应用中,如果数据量小,采用预训练+Fine-tune不仅可以加速目标任务的收敛速度,而且可以在一定程度上减小过拟合。

3.1 关于数据预处理

在图像处理领域,常常通过对图像做亮度改变、加噪声、翻转、随机裁切、缩放等预处理操作制造出大量样本。具体包括:(1)平移,对原始小样本进行图像的平移操作时,可以使得网络学习到的平移不变特征;(2)旋转,图像旋转技术,可以在进行网络学习时学习到旋转不变的特征,有些任务里,目标可能有很多种不同的姿态,旋转整好可以补充样本中姿态较少的问题;(3)图像镜像技术,镜像技术与图像旋转的功能类似,都是可以图像的不同姿态表达的问题;(4)图像亮度变化,一般常用图像直方图均衡化进行变化,可以较好的进行不同亮度下的图像样本增强;(5)裁剪,将图像中的部分目标裁剪出来,有助于学习目标的部分结构特征;(6)缩放,对图像进行放大或缩小,有助于学习不同分辨率条件下的目标特征;(7)加噪声,对原始图像加不同强度、不同类型(高斯白噪声、斑点噪声、椒盐噪声等等)的噪声,有助于提高目标检测识别的鲁棒性。下面以两幅自然场景图像与两幅SAR遥感图像为例,展示以上7种经典图像生成方法产生的结果。

原图

裁剪

镜像

亮度拉伸

平移

旋转

加噪声

缩放

                     

当然,在对MSTAR的处理中,我们不需将以上方式都用一遍,我们可以操作的预处理形式包括:数值归一化、剪切变换、旋转变换、缩放、水平翻转。rescale=1./255, shear_range=0.2, rotation_range=10., zoom_range=0.2, horizontal_flip=True。

3.2 Pre-training + Fine-tune

预训练+Fine-tune是常见的处理方式。

所谓预训练,需要区别于常规训练方法。常规训练方法为首先搭建一个深度网络模型,随机初始化参数,然后开始训练网络,不断调整直到网络的损失越来越小。在训练的过程中,初始化的参数会不断变化,直到达到所需识别结果。所谓预训练是指不在随机初始化的参数开始训练网络,而是从已有训练好的模型参数开始训练网络,比如我们可以把在ImageNet数据集上训练的模型ResNet50拿来,用在新数据集的训练,也就是针对本文所说的MSTAR数据集。

什么是Fine-tune?Fine-tune是一种常用的深度网络训练技巧,属于迁移学习的一种,Fine-tune与预训练的方式结合。在利用已有模型训练新数据时,可以不必对全部层的参数进行训练,而可以只对输出层及接近输出层的若干卷积层训练,即固定低层参数而只训练高层参数。这么做的原因是,网络的低层只提取边缘等基础信息,而这些信息,在各类数据中是相当的,无需重复训练获得。高层参数则相对变化较大,需要重新获取。

那如何操作呢,实际上python中很容易,特别是在采用Keras框架中,提供了即为便捷的方式。

在Keras中,我们可以加载已训练好的ResNet50模型,这里,我们需要的是不含全连接层的版本:

WEIGHTS_PATH_NO_TOP = 'resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5'

基于函数式编程,我们把全连接层设定256个节点,输出层限定为10个类别:

x = Flatten()(x)

x = Dense(256,activation='relu')(x)

x = Dropout(0.5)(x)

x = Dense(10, activation = 'softmax')(x)

限定模型前45个层的参数固定

for layer in model2.layers[:45]:

layer.trainable = False

采用随机梯度下降进行优化(似乎fine-tune时采用这个函数普遍结果好点)

model2.compile(loss='binary_crossentropy',  optimizer  =  SGD(lr=1e-3,momentum = 0.9), metrics=['accuracy'])

Keras提供了简洁的图像预处理形式

train_datagen = ImageDataGenerator(

rescale=1./255,

shear_range=0.2,

rotation_range=10.,

zoom_range=0.2,

horizontal_flip=True)

最后,设定epoch为200,batch_size 大小为16。

完整代码参见列表。

结果如下:

我的机器配置是Intel Core I5 6500,显卡GTX 960,内存8GB。每个epoch运行约5分钟,在运行了40余个epoch(不到4个小时)后,训练准确率达到99.83%,此时在测试集上的验证结果为99.58%。这个结果是什么水平呢?好在MSTAR的数据集是个应用最广的SAR图像识别数据集,每年都有不少算法在这上面跑,2018年的论文《SAR Automatic Target Recognition Based on Multiview Deep Learning Framework》只达到98.5%,《Transfer Learning with Deep Convolutional Neural Network for SAR Target Classification with Limited Labeled Data》10类准确率是98.5%,西电杜兰教授《SAR Automatic Target Recognition Based on Euclidean Distance Restricted Autoencoder》只达到不到96%的准确率,似乎已经达到发表论文的水平了!

全部代码图片在这里:

https://github.com/azy1988/ML-CV/tree/master/MSTAR_ATR

如何在MSTAR SAR图像目标识别数据集中刷出99.5%的准确率?相关推荐

  1. MSTAR数据库结合深度学习(SAR图像目标检测与识别)

    MSTAR数据库作为SAR图像自动目标识别(SAR ATR)研究的一个通用库,被很多学者广泛采用.从现有的SAR ATR系统处理流程来看,目标检测作为该系统的前端,很大程度上影响系统后续识别性能,在较 ...

  2. 基于matlab的SAR图像中自动目标识别

    一.前言 此示例演示如何使用深度学习工具箱和并行计算工具箱™™训练基于区域的卷积神经网络 (R-CNN) 以识别大场景合成孔径雷达 (SAR) 图像中的目标. 深度学习工具箱提供了一个框架,用于设计和 ...

  3. 双向特征融合的数据自适应SAR图像舰船目标检测模型

    双向特征融合的数据自适应SAR图像舰船目标检测模型 人工智能技术与咨询 昨天 本文来自<中国图象图形学报>,作者张筱晗等 摘要: 利用合成孔径雷达(synthetic aperture r ...

  4. SAR图像飞机目标检测识别进展

    目标检测与识别是高分辨合成孔径雷达(SAR)领域的热点问题.机场上飞机作为一种典型目标,其检测与识别具有一定的独特性.在检测与识别的过程中,如何将深度学习和目标电磁散射机理结合.提高网络或模型的泛化能 ...

  5. sar图像去噪matlab,一种基于总曲率的SAR图像变分去噪方法与流程

    本发明属于数字图像处理技术领域,具体涉及一种基于总曲率的SAR图像变分去噪方法. 背景技术: : 相干斑噪声是合成孔径雷达(Synthetic Aperture Radar,简称SAR)图像的重要特征 ...

  6. 论文笔记(五)FWENet:基于SAR图像的洪水水体提取深度卷积神经网络(CVPR)

    FWENet: a deep convolutional neural network for flood water body extraction based on SAR images 作者:J ...

  7. 阿里云天池 - 2018之江杯全球人工智能大赛 之零样本图像目标识别 参赛总结

    9月份报名做了 2018之江杯全球人工智能大赛 之零样本图像目标识别 的这道题 -     题目链接-https://tianchi.aliyun.com/competition/entrance/2 ...

  8. 微波遥感(三、SAR图像特征)

    SAR是主动式侧视雷达系统,且成像几何属于斜距投影类型.因此SAR图像与光学图像在成像机理.几何特征.辐射特征等方面都有较大的区别.在进行SAR图像处理和应用前,需要了解SAR图像的基本特征. 本文主 ...

  9. 【图像配准】基于matab SAR-SIFT改进的SAR图像配准【含Matlab源码 2336期】

    ⛄一.基于SAR-SIFT改进的SAR图像配准 合成孔径雷达(synthetic aperture radar,SAR)图像配准的主要目标是对同一或不同传感器在不同时间.不同视点捕获的SAR图像进行配 ...

最新文章

  1. hive中的绣花模型_hive建模方法
  2. 最详细易懂的CRC-16校验原理(附源程序)
  3. VTK:相互作用之ImageClip
  4. java set 接口_【Java提高十七】Set接口集合详解
  5. 堆排序(利用最大堆)
  6. 异常-异常捕获的完整语法
  7. C++ this指针初步使用,与链式编程
  8. 领导者的资质——学习笔记(3):领导者的十项职责
  9. Ubuntu与CentOS的区别
  10. tomcat7简单优化
  11. Windows 环境安装 OS X Monaco 字体
  12. python课程的中期报告范文_毕业论文中期报告范文(毕业论文中期检查范文8篇)...
  13. kubernetes 源码安装1.18.3 (7)部署cni网络
  14. 第十六周学习生活总结
  15. 超详细的SpringBoot学习笔记-动力节点王鹤
  16. 小程序转uni-app——onLoad语法转换
  17. CTF-AWD入门手册
  18. Linux下查看隐藏文件夹
  19. 微信小程序|使用小程序制作一个节日祝福生成器
  20. Android8.thumbnails,Android Thumbnail 攻略

热门文章

  1. 计算机课给别人交作业检讨书,没交作业检讨书500字范文
  2. zcy算法入门笔记004
  3. mysql查询逗号隔开的字段
  4. hive官网函数-中文说明文档
  5. 英语词汇收藏英语笔记
  6. day14 方法原则 方法命名 方法组成 方法重载
  7. 如何打造一直具有战斗力的高效团队?
  8. 树莓派学习笔记——yeelink 远程控制LED
  9. 案例分享 | 机场急救中心项目中BIM应用
  10. 解放重复性劳动——宇宙的尽头是office