主要内容

使用深度学习SAR目标分类

这个例子展示了如何创建和训练一个简单的卷积神经网络分类SAR目标使用深度学习。

深度学习是一种功能强大的技术,可以用来训练健壮的分类器。它表明其有效性在不同区域从图像分析自然语言处理。这些发展潜力巨大的SAR数据分析和SAR技术一般,慢慢实现。的主要任务SAR-related算法一直是目标检测和分类,叫做自动目标识别(ATR)。这里我们使用了一个简单的卷积神经网络训练和分类SAR目标使用深度学习工具箱™。

深度学习工具箱提供了一个框架的设计和实现深神经网络算法,pretrained模型和应用。

这个案例展示了如何:

  • 下载数据集。

  • 加载和分析图像数据。

  • 分裂和增强的数据。

  • 定义网络体系结构。

  • 培训网络。

  • 预测新数据和计算的标签分类精度。

为了说明这个工作流程,我们将使用移动和静止目标获取与识别(MSTAR)混合目标数据集出版的美国空军研究实验室(1]。我们的目标是开发一个模型基于SAR图像对地面目标进行分类。

下载数据集

这个示例使用MSTAR SAR目标数据集包含8688 7地面车辆和一个校准的目标。收集到的数据是使用一个x波段传感器在聚光灯下模式中,1英尺的决议。目标我们使用BMP2的类型(步兵战斗车),BTR70(装甲车)和T72(坦克)。捕获的图像在两个不同的抑郁角度15度到17度版本190 ~ 300种不同的方面,全方面覆盖360度。这三种类型的光学图像和SAR图像目标和复制目标在图所示。

从给定的URL使用下载数据集helperDownloadMSTARTargetDatahelper函数,定义在这个例子。数据集的大小是28 mib。

outputFolder = pwd;dataURL = [“https://ssd.mathworks.com/金宝appsupportfiles/radar/data/”“MSTAR_TargetData.tar.gz”];helperDownloadMSTARTargetData (outputFolder dataURL);

根据您的网络连接,下载过程可能需要一些时间。MATLAB®代码中止执行,直到下载过程完成。或者,您可以下载数据集到您的本地磁盘使用您的web浏览器并提取文件。如果你这样做,改变outputFolder变量在代码下载的文件的位置。

加载和分析图像数据

加载SAR图像数据作为图像数据存储。imageDatastore自动标签图像基于文件夹的名字和存储数据作为imageDatastore对象。图像数据存储可以存储大量图像数据,包括数据,并不适合在内存中,有效地阅读批图像卷积神经网络在训练。

sarDatasetPath = fullfile (pwd,“数据”);imd = imageDatastore (sarDatasetPath,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);

MSTAR SAR数据集包含返回从7地面车辆和校准的目标。这些8目标光学图像和SAR图像如下所示

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

rng(0)图%洗牌数据存储。imd = shuffle (imd);i = 1:20次要情节(4、5、我)img =阅读(imd);imshow (img)标题(imds.Labels(我)sgtitle (训练样本图像的)结束

洛桑国际管理发展学院变量现在包含图片和每个图像的分类标签。自动分配的标签图像文件的文件夹的名称。使用countEachLabel总结每个类别图像的数量。

labelCount = countEachLabel (imd)
labelCount =8×2表标签数______ _____ 1164 s1 BRDM_2 1415 BTR_60 451 D7 573 SLICY 2539 T62 572 ZIL131 573 ZSU_23_4 1401

首先,指定网络输入的大小。在选择网络输入大小,考虑系统的内存约束和计算成本承担培训。

imgSize =[1] 128128年;

创建数据存储对象培训、验证和测试

将数据分为训练,验证集和测试集。我们将使用80%的数据集进行训练,训练模型验证的10%,10%,培训后测试。splitEachLabel将数据存储洛桑国际管理发展学院分成三个新的数据存储,imdsTrain,imdsValidation,imdsTest。在这一过程中,它认为图像的不同数量不同的类,这样训练,验证集和测试集每个类的比例相同。

trainingPct = 0.8;validationPct = 0.1;[imdsTrain, imdsValidation imdsTest] = splitEachLabel (imd,trainingPct validationPct,“随机”);

数据增加

的图像数据存储没有一致的大小。与我们的网络训练图像,图像大小必须匹配网络的输入层的大小。调整自己的图像,我们可以使用一个augmentedImageDatastore之前,它将自动调整图像传递到网络。的augmentedImageDatastore也可以用来申请转换,如旋转、反射,或缩放输入图像。这有助于防止网络过度拟合数据。

auimdsTrain = augmentedImageDatastore (imgSize imdsTrain);auimdsValidation = augmentedImageDatastore (imgSize imdsValidation);auimdsTest = augmentedImageDatastore (imgSize imdsTest);

定义网络体系结构

定义了卷积神经网络架构。

层= createNetwork (imgSize);

列车网络的

定义网络结构后,使用trainingOptions(深度学习工具箱)指定培训选项。列车网络使用随机梯度下降势头初步学习速率为0.001个。我们时代的最大数量设置为3。一个时代是一个完整的培训周期在整个训练数据集。监控网络在训练精度通过指定验证数据和验证的频率。混乱的数据每一时代。训练数据训练网络的软件和计算精度验证数据期间定期培训。验证数据不是用于更新网络权重。我们设置“CheckpointPath”到一个临时位置。这使得储蓄的部分训练过程中训练有素的探测器。如果中断训练,如停电或系统故障,你可以从保存的检查点恢复训练。

选择= trainingOptions (“个”,“InitialLearnRate”,0.001,“MaxEpochs”3,“洗牌”,“every-epoch”,“MiniBatchSize”现年48岁的“ValidationData”auimdsValidation,“ValidationFrequency”15岁的“详细”假的,“CheckpointPath”tempdir,“阴谋”,“训练进步”);

使用定义的架构培训网络、训练数据训练选项。默认情况下,trainNetwork使用GPU如果一个是可用的(需要并行计算工具箱™和CUDA®启用GPU计算能力3.0或更高版本)。支持计算能力的信息,看到GPU支持释放(并行计算工具金宝app箱)。否则,它使用一个CPU。您还可以指定使用的执行环境“ExecutionEnvironment”名称-值对的观点trainingOptions

培训进度图显示了mini-batch损失和准确性和验证损失和准确性。培训进展阴谋的更多信息,见监测深度学习培训的进展(深度学习工具箱)。损失是叉损失。精度图像网络的比例是正确分类。

网= trainNetwork (auimdsTrain层,选项);

训练过程是显示在上图。深蓝色的行上情节表明模型对训练数据的准确性,而黑色虚线表示该模型对验证数据的准确性(独立于训练)。验证精度超过97%,这是很好的一个八级分类器。此外,注意验证准确性和训练准确性是相似的。这意味着我们有一个强健的分类器。当训练精度远高于验证准确性,(记忆)的模型过度拟合训练数据。

分类测试图像和计算精度

预测验证数据使用的标签训练网络,计算最终的精度。准确性是标签的一部分网络预测正确。

YPred =分类(净,auimdsTest);欧美= imdsTest.Labels;精度= (YPred = =次)/元素个数之和(欧美)
精度= 0.9827

测试精度非常接近验证准确性,给我们对模型的预测能力的信心。

我们可以使用一个混合矩阵来研究模型的分类行为进行更详细的。一个强大的中心对角线表示准确的预测。理想情况下,我们希望看到小,随机值的对角。大值的对角斗争可以显示特定的场景模型。

图厘米= confusionchart (YPred、欧美);厘米。RowSummary =“row-normalized”;厘米。Title =的SAR目标分类混淆矩阵;

的八类,模型似乎斗争最ZSU-23/4正确分类。ZSU-23/4和2 s1非常相似的SAR图像,因此我们观察一些误分类训练模型。然而,它仍然能够实现类的准确率大于90%。

Helper函数

这个函数createNetwork以作为输入图像输入的大小imgSize并返回一个卷积神经网络。见下文描述每一层的类型。

图像输入层——一个imageInputLayer(深度学习工具箱)是你指定图像大小。这些数字对应的高度、宽度和通道的大小。SAR图像数据由灰度图像,所以通道大小(颜色通道)是1。对于彩色图像,通道尺寸是3,对应于RGB值。因为你不需要洗牌数据trainNetwork开始时,默认情况下,打乱数据的训练。trainNetwork还可以自动洗牌数据在每一个时代的开始训练。

卷积的层——在回旋的层,第一个参数filterSize的高度和宽度,过滤器的训练函数使用,扫描的图像。在这个例子中,数字3表明过滤器的大小是3×3。您可以指定大小不同高度和宽度的过滤器。第二个参数是过滤器的数量,numFilters,这是连接到同一区域的神经元数量的输入。这个参数决定特征图的数量。使用“填充”名称-值对添加填充的输入特性映射。对于一个卷积与默认步1层,“相同”填充确保空间尺寸大小是一样的输入输出。您还可以定义的步幅和学习率这一层使用名称-值对的观点convolution2dLayer(深度学习工具箱)

批归一化层——批规范化标准化层激活和梯度通过网络传播,使网络训练一个更简单的优化问题。使用批量卷积层之间的归一化层和非线性,如ReLU层,加快网络训练和减少对网络初始化。使用batchNormalizationLayer(深度学习工具箱)创建一个批处理标准化层。

ReLU层——批标准化层是紧随其后的是一个非线性激活函数。最常见的激活函数修正线性单元(ReLU)。使用reluLayer(深度学习工具箱)创建一个ReLU层。

马克斯池层与激活函数卷积层()有时,后跟一个采样下来操作,减少了空间的大小特征地图和删除多余的空间信息。采样下来可以增加过滤器在更深的卷积层的数量不增加每层所需的计算量。采样下来的一种方法是使用max池,你创建使用maxPooling2dLayer(深度学习工具箱)。马克斯池层返回矩形区域的最大值的输入,由第一个参数指定,poolSize。在这个例子中,矩形区域的大小(2,2)。的“步”名称-值对的步长参数指定的训练函数,因为它扫描输入。

完全连接层——卷积和采样下来层是紧随其后的是一个或多个完全连接层。顾名思义,一个完全连接层是一层的神经元连接到所有的神经元在前面的层。这一层由前层结合学到的所有特性在图像识别更大的模式。最后一个完全连接层结合了特征对图像进行分类。因此,OutputSize在过去的完全连接层参数等于目标数据的类的数量。在这个例子中,相对应的输出大小10,10类。使用fullyConnectedLayer(深度学习工具箱)创建一个完全连接层。

Softmax层——将softmax激活函数可实现完全连接的输出层。的输出将softmax层包括正数和一个,然后可以用作分类概率的分类层。创建一个softmax层使用softmaxLayer(深度学习工具箱)函数后完全连接层。

分类层——最后一层是分类层。这一层使用返回的概率将softmax激活函数为每个输入指定的输入到一个互斥类和计算损失。创建一个分类层,使用classificationLayer(深度学习工具箱)

函数层= createNetwork (imgSize)层= [imageInputLayer ([imgSize (1) imgSize (2) 1])%的输入层32岁的convolution2dLayer (3“填充”,“相同”)%卷积层reluLayer% Relu层32岁的convolution2dLayer (3“填充”,“相同”)batchNormalizationLayer%批归一化层reluLayer maxPooling2dLayer (2“步”,2)%马克斯池层convolution2dLayer (64,“填充”,“相同”)reluLayer convolution2dLayer (64,“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (2“步”2)convolution2dLayer(3128年,“填充”,“相同”)reluLayer convolution2dLayer (3128“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (2“步”2)convolution2dLayer(3256年,“填充”,“相同”)reluLayer convolution2dLayer (3256“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (2“步”2)convolution2dLayer (6512) reluLayer dropoutLayer (0.5)%的辍学生层fullyConnectedLayer (512)%完全连接层。reluLayer fullyConnectedLayer softmaxLayer (8)% Softmax层classificationLayer%分类层];结束函数helperDownloadMSTARTargetData (outputFolder DataURL)%从给定的URL下载数据集的输出文件夹。radarDataTarFile = fullfile (outputFolder,“MSTAR_TargetData.tar.gz”);如果~存在(radarDataTarFile“文件”)disp (“下载MSTAR目标数据(MiB) 28日……”);websave (radarDataTarFile DataURL);解压(radarDataTarFile outputFolder);结束结束

引用

[1]MSTAR数据集。https://www.sdms.afrl.af.mil/index.php?collection=mstar