人工智能课程设计:基于CNN和LSTM的MSTAR数据集分析与处理(python实训)

🚌实训目的

本次实训的主要目的是通过基于CNN(卷积神经网络)和LSTM(长短时记忆网络)的模型对MSTAR(Moving and Stationary Target Acquisition and Recognition)数据集进行目标分类。
在这次实训中,我们需要了解MSTAR这一经典的数据集,学习并理解CNN和LSTM这两种深度学习模型的基本原理和工作机制。在这次实训中,需要完成CNN对MSTAR数据集进行目标分类和完成CNN+LSTM对数据集进行目标分类。对这两个方法单独进行结果的数据分析,例如画出loss曲线,画出混淆矩阵,得到正确率、召回率、精确率以及分类报告 。在实验的最后通过对CNN和CNN+LSTM两种模型的对比分析,评估它们在MSTAR数据集上的性能差异,分析加入LSTM对实验最后结果的影响的原因。

🚌实训原理

👑MSTAR数据集

实验数据采用美国国防高等研究计划署(DARPA)支持的MSTAR计划所公布的实测SAR地面静止目标数据,无论是在国内还是国际上,针对SAR图像目标识别的研究基本上是基于该数据集而展开的。该数据集一共有十种不同类型的车辆,包括:2S1(自行榴弹炮)、BRDM2(装甲侦察车)、BTR60(装甲运输车)、D7(推土机)、T62(坦克)、ZIL131(货运卡车)、ZSU234(自行高炮)BTR70(装甲运输车)、BMP2(步兵战车)、T72(坦克)。
在这里插入图片描述

👑CNN(卷积神经网络)

在这里插入图片描述
卷积神经网络(Convolutional Neural Networks, CNN)这个概念的提出可以追溯到二十世纪80~90年代。卷积神经网络(CNN)是一种深度学习模型,特别适用于图像处理任务。其核心原理包括卷积层、池化层和全连接层。在卷积层中,模型通过滑动的卷积核来提取图像中的特征。这种局部连接和权值共享的设计使得CNN能够有效捕捉图像中的空间关系,从而实现对图像的高效特征学习。池化层用于降低特征图的维度,减少计算复杂性。全连接层则将学到的特征映射到最终的分类结果。通过这一系列的层次化处理,CNN能够自动学习和提取图像的抽象特征,使其在图像分类任务中表现出色。

👑LSTM(长短时记忆网络)

在这里插入图片描述
长短时记忆网络(LSTM)是递归神经网络(RNN)的一种改进,专门设计用于处理和学习序列数据。LSTM通过引入记忆单元和门控机制,成功解决了传统RNN在长序列上的梯度消失和梯度爆炸问题。具体而言,LSTM的记忆单元可以保持信息,并有选择地更新或遗忘它,而门控机制则有助于调控信息的流动。这种设计赋予了LSTM更好地捕捉序列中长距离依赖关系的能力,使其在语言建模、时间序列分析等任务中表现出色。

👑CNN+LSTM

将卷积神经网络(CNN)与长短时记忆网络(LSTM)结合的动机在于充分利用两者在不同方面的优势。将CNN和LSTM结合使用可以在处理具有空间结构和时间序列结构的数据时取得更好的效果。例如,在视频分类任务中,可以使用CNN提取帧间特征,然后通过LSTM捕捉视频帧的时间序列信息,从而提高模型对视频内容的理解能力。在目标分类任务中,CNN通过卓越的图像特征学习能力,能够捕捉图像中的空间特征。然而,为了更全面地理解图像中的目标,需要考虑目标在时序上的变化。这时,LSTM的序列建模能力发挥关键作用。通过融合CNN和LSTM,我们期望模型能够更全面地理解并利用MSTAR数据集中目标的复杂特征,从而提高目标分类的性能。这种融合模型使我们能够更好地应对雷达图像分类任务中的多样性和挑战。

🚌实训操作步骤

👑数据预处理

首先遍历十个文件夹,将文件里的图片都读取进来的同时将图片统一到同一个图片尺寸,以方便我们后续的数据使用。将读取进来的图片转为numpy数组之后对其进行标准化,创建一个图像名称和图像标签对应的字典,将图片的名称转化为标签,之后划分为训练集和测试集。

Image 1 Image 2

为了之后跟我们的模型结合,在这里我们将数据集改变为[x,1,128,128]的尺寸,之后通过TensorDataset将train和test合在一起,然后通过DataLoader创建一个迭代数据的加载器类,将训练集设为shuffle=True使在每个epoch开始时对数据进行随机洗牌,这有助于模型学习更鲁棒的特征;将测试集设为shuffle=False,使在测试时不进行数据洗牌,以确保测试的一致性。
在这里插入图片描述

👑网络模型构建

CNN

下面是CNN整个网络各层的参数选择以及图像的尺寸变化的过程。
输入图像为:12828
卷积层1:
 输入通道数:1
 输出通道数:16
 卷积核大小:1111
 步幅:3
 输出特征图大小:16
4040
池化层1:
 核大小:7
7
 步幅:3
 输出特征图大小:161212
ReLU激活函数1:
 输出特征图大小:161212
卷积层2:
 输入通道数:16
 输出通道数:32
 卷积核大小:55
 步幅:1
 填充:2
 输出特征图大小:32
1212
最大池化层2:
 池化核大小:3
3
 步幅:3
 输出特征图大小:3244
ReLU激活函数2:
 输出特征图大小:3244
全连接层1:
 输入特征数:3244
 输出特征数:4096
ReLU激活函数3:
 输出特征数:4096
全连接层2:
 输入特征数:4096
 输出特征数:10
在这里插入图片描述

CNN+LSTM

我的思路是将使用CNN层来处理输入数据,因为卷积层和池化层可以有效地捕捉输入数据的空间结构和特征。然后将CNN提取的特征映射转换成时间序列数据。这可以通过将每个位置的特征映射看作时间步来实现。这个过程可以是将二维空间特征映射转换为一维序列。之后将转换后的序列数据输入到LSTM层中。LSTM可以捕捉输入数据中的时间依赖性,并记忆长期信息。在LSTM层之后,再全连接层来进行最终的预测或分类。在原来的CNN的基础上加上LSTM层。
在这里插入图片描述

🚌实训原始数据及处理结果

在这次实训中,我们选择使用交叉熵损失函数和Adam 优化器。设置一共20个epochs和学习速率设为0.001。
在这里插入图片描述

👑CNN的准确率、召回率、精准率以及分类报告

在这里插入图片描述

👑CNN+LSTM的准确率、召回率、精准率以及分类报告

在这里插入图片描述

🚌实训误差分析

对CNN和CNN+LSTM画出loss曲线,画出混淆矩阵。

👑CNN

Image 1 Image 2
Loss曲线整体是向下降的一个趋势,并且最后是趋于稳定,说明整个模型的收敛效果还是不错的,并且最后的正确率有97%,虽然从数值上来说看着不错,但是从混淆矩阵可以看出是4类的被识别错误占比比较大,在以后的改进中,可以通过增加4类的数据集或者其他有效的方法来提高正确率。

👑CNN+LSTM

Image 1 Image 2
Loss曲线平滑下降,最后趋于稳定,最终的正确率是97.5%。从混淆矩阵中可以看出,没有哪一类的错误识别比较突出,整体识别都有一点小错误,在后面的改进中,可以试着加深网络,或者增加整体的数据样本数量来尝试提高正确率。

🚌思考题

CNN+LSTM相对CNN来说在正确率方面没有多少提高。LSTM是对时间序列十分的敏感,但在这个数据集中没带来很大的提高,说明MSTAR数据集的时序信息并不显著,LSTM可能无法充分发挥作用以及MSTAR数据集更侧重于空间信息。在CNN引入LSTM是我之前看到了解到的,但是没有实践过,通过这一次实训,让我对这个网络从理论向实践落地。之后还可以通过数据预处理和增强,以提高数据多样性;调整超参数;改进网络结构,使CNN和LSTM更有效的整合在一起等方法来使整个网络更加的完善。

### MSTAR 数据集分类方法介绍 MSTAR(Moving and Stationary Target Acquisition and Recognition)数据集是一个经典的 SAR 图像数据集,广泛用于目标检测分类的研究。以下是关于该数据集中常见的分类方法及其应用的详细介绍。 #### 1. 基于 CNN 的分类方法 卷积神经网络 (Convolutional Neural Network, CNN) 是一种专门设计用于处理网格状拓扑数据(如图像)的强大工具。对于 MSTAR 数据集中的目标分类任务,CNN 被广泛应用。具体实现过程包括以下几个方面: - **数据预处理**:由于原始 SAR 图像是灰度图,通常需要将其转换为适合输入到 CNN 中的标准格式,例如归一化像素值范围至 [0, 1] 或 [-1, 1][^2]。 - **模型构建**:典型的 CNN 架构由多个卷积层、池化层全连接层组成。常用的架构有 LeNet、VGG、ResNet 等。这些模型能够自动提取特征并进行分类[^4]。 - **训练验证**:将数据分为训练集测试集,在训练过程中优化损失函数(如交叉熵),并通过反向传播调整权重参数。最终通过测试集评估模型性能。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv_layers = nn.Sequential( nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2) ) self.fc_layers = nn.Sequential( nn.Linear(64 * 7 * 7, 512), # 输入大小取决于图片尺寸 nn.ReLU(), nn.Linear(512, num_classes) # 输出类别数 ) def forward(self, x): x = self.conv_layers(x) x = x.view(x.size(0), -1) x = self.fc_layers(x) return x ``` --- #### 2. 基于 LSTM 的时间序列建模 除了静态图像分类外,某些场景下可能还需要考虑动态变化的目标特性。此时可以引入长短时记忆网络 (Long Short-Term Memory, LSTM),它是一种特殊的循环神经网络 (RNN),擅长捕捉长时间依赖关系。在 MSTAR 数据集中,可以通过以下方式结合 LSTM 进行增强: - **多帧输入**:如果存在目标随时间的变化情况,则可将连续几帧作为输入送入 LSTM 层中。 - **混合架构**:先利用 CNN 提取每张图像的空间特征,再将这些特征按顺序传递给 LSTM 来捕获时间维度的信息。 --- #### 3. 性能评估指标 无论采用哪种方法,都需要对结果进行全面评价。常用指标包括但不限于准确率 (Accuracy)、召回率 (Recall)、精确率 (Precision) F1-Score 等。此外还可以绘制混淆矩阵来直观展示各类别的预测效果。 --- #### 4. 实验环境配置建议 为了顺利完成上述实验流程,在 Ubuntu 系统环境下推荐安装必要的软件包及库文件,比如 PyTorch/TensorFlow 深度学习框架以及 NumPy/Pandas 数据处理工具等[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bin bin bingo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值