一、前言
此示例演示如何创建和训练一个简单的卷积神经网络,以使用深度学习对 SAR 目标进行分类。
深度学习是一种强大的技术,可用于训练健壮的分类器。它已经在从图像分析到自然语言处理的不同领域显示出其有效性。这些发展对SAR数据分析和SAR技术具有巨大的潜力,正在慢慢实现。SAR相关算法的一项主要任务一直是目标检测和分类,称为自动目标识别(ATR)。在这里,我们使用一个简单的卷积神经网络来使用深度学习工具箱™对SAR目标进行训练和分类。
深度学习工具箱提供了一个框架,用于设计和实现具有算法、预训练模型和应用程序的深度神经网络。
此示例演示如何:
下载数据集。
加载和分析图像数据。
数据的拆分和扩充。
定义网络体系结构。
训练网络。
预测新数据的标签并计算分类精度。
为了说明此工作流程,我们将使用空军研究实验室发布的移动和静止目标获取和识别 (MSTAR) 混合目标数据集 [1]。我们的目标是开发一个模型,根据SAR图像对地面目标进行分类。
二、下载数据集
此示例使用的 MSTAR 目标数据集包含来自 8688 个地面车辆的 7 个 SAR 图像和一个校准目标。数据是在聚光灯模式下使用X波段传感器收集的,分辨率为1英尺。我们使用的目标类型是BMP2(步兵战车),BTR70(装甲车)和T72(坦克)。图像以15度和17度两种不同的俯角拍摄,具有190~300种不同的宽高比版本,是360度以上的全纵横覆盖。这三类目标及其复制目标的光学图像和SAR图像如下图所示。
使用此示例末尾定义的帮助程序函数从给定 URL 下载数据集。数据集的大小为 28MiB。
根据您的互联网连接,下载过程可能需要一些时间。代码暂停 MATLAB® 执行,直到下载过程完成。或者,您可以使用 Web 浏览器将数据集下载到本地磁盘并提取文件。如果这样做,请将代码中的 outputFolder 变量更改为下载文件的位置。
三、加载和分析图像数据
将 SAR 图像数据作为图像数据存储加载。根据文件夹名称自动标记图像,并将数据存储为对象。图像数据存储使您能够存储大型图像数据(包括内存中不适合的数据),并在卷积神经网络训练期间高效读取成批的图像。
MSTAR数据集包含来自7辆地面车辆的SAR返回和一个校准目标。这8个目标的光学图像和SAR图像如下所示

让我们通过随机显示一些芯片图像来探索数据存储。

该变量现在包含与每个图像关联的图像和类别标签。标签是从图像文件的文件夹名称自动分配的。用于汇总每个类别的图像数。
首先,指定网络输入大小。选择网络输入大小时,请考虑系统的内存约束和训练中产生的计算成本。
四、创建用于训练、验证和测试的数据存储对象
将数据分为训练集、验证集和测试集。我们将使用 80% 的数据集进行训练,10% 用于训练期间的模型验证,10% 用于训练后的测试。将数据存储拆分为三个新数据存储:、 和 。在这样做时,它会考虑不同类的不同图像数量,以便训练、验证和测试集具有每个类的相同比例。
五、数据增强
数据存储中的映像大小不一致。要使用我们的网络训练图像,图像大小必须与网络输入层的大小相匹配。我们可以使用 ,而不是自己调整图像大小,它将在将图像传递到网络之前自动调整图像大小。还可用于将转换(如旋转、反射或缩放)应用于输入图像。这对于防止网络过度拟合我们的数据很有用。
六、定义网络架构
定义卷积神经网络架构。定义网络结构后,使用训练选项(深度学习工具箱)指定训练选项。使用具有动量的随机梯度下降 (SGDM) 训练网络,初始学习率为 0.001。我们将最大纪元数设置为 3。epoch 是整个训练数据集的完整训练周期。通过指定验证数据和验证频率来监控训练期间的网络准确性。每个纪元随机播放数据。该软件根据训练数据训练网络,并在训练期间定期计算验证数据的精度。验证数据不用于更新网络权重。我们设置了一个临时位置。这样可以在训练过程中节省部分训练的检测器。如果训练中断,例如停电或系统故障,您可以从保存的检查点恢复训练。
使用 、训练数据和训练选项定义的体系结构训练网络。默认情况下,如果 GPU 可用,则使用 GPU(需要并行计算工具箱™和具有 3.0 或更高版本的启用 CUDA 的 GPU®)。有关支持的计算功能的信息,请参阅按版本划分的 GPU 支持(并行计算工具箱)。否则,它将使用 CPU。还可以使用 的名称-值对参数指定执行环境。
训练进度图显示小批量损失和准确性以及验证损失和准确性。

训练过程如上图所示。上图中的深蓝色线表示模型对训练数据的准确性,而黑色虚线表示模型对验证数据的准确性(与训练分开)。验证准确率超过97%,这对于一个八类分类器来说是相当不错的。此外,请注意,验证准确性和训练准确性相似。这表明我们有一个健壮的分类器。当训练精度远高于验证精度时,模型过度拟合(即记忆)训练数据。
七、对测试图像进行分类并计算准确性
使用经过训练的网络预测验证数据的标签并计算最终准确性。准确度是网络正确预测的标签的比例。
测试精度非常接近验证精度,这使我们对模型的预测能力充满信心。
我们可以使用混淆矩阵来更详细地研究模型的分类行为。强中心对角线表示准确的预测。理想情况下,我们希望看到对角线之外随机定位的小值。对角线以外的较大值可能表示模型挣扎的特定场景。

在八个类别中,该模型似乎在正确分类ZSU-23 / 4方面最困难。ZSU-23/4和2S1具有非常相似的SAR图像,因此我们观察到我们训练的模型存在一些错误分类。但是,它仍然能够达到该类的90%以上的精度。
八、程序
程序获取:下载