新洲建设局网站,手机网站前端写法,海东营销网站建设公司,品牌网商城MSTAR#xff08;Moving and Stationary Target Acquisition and Recognition#xff09;数据集是一个基于合成孔径雷达#xff08;Synthetic Aperture Radar#xff0c;SAR#xff09;图像的目标检测和识别数据集。它是针对目标检测、机器学习和模式识别算法的研究和评估…MSTARMoving and Stationary Target Acquisition and Recognition数据集是一个基于合成孔径雷达Synthetic Aperture RadarSAR图像的目标检测和识别数据集。它是针对目标检测、机器学习和模式识别算法的研究和评估而设计的。
MSTAR数据集由美国海军研究实验室Naval Research LaboratoryNRL创建该数据集包含了多种类型和方位的车辆和目标的高分辨率合成孔径雷达图像。它提供了复杂的场景和多种目标类型包括各种车辆和地面目标如坦克、卡车、自行车等。
MSTAR数据集的特点如下 分辨率高MSTAR数据集的SAR图像具有高分辨率能够提供细节丰富的目标信息有助于进行精确的目标检测和识别。 方位变化该数据集提供了目标在不同方位角下的合成孔径雷达图像包括前视、靠近侧视、背视等多种视角用于研究方位变化对目标识别的影响。 多样性目标MSTAR数据集中包含了多种类型的目标涵盖了各种车辆和地面目标使得研究和评估的算法可以具有更好的泛化性能。
MSTAR数据集对于合成孔径雷达图像的目标检测和识别算法的研究和评估提供了有力的工具。它可以用于训练和测试基于机器学习和深度学习的目标检测模型提高合成孔径雷达图像分析的准确性和鲁棒性。
在前面的博文中我已经基于MSTAR的数据集开发构建了目标检测系统感兴趣的话可以自行移步阅读即可
《基于yolov5n的轻量级MSTAR遥感影像目标检测系统设计开发实战》
之前是使用的yolov5模型去开发实现的且使用的是最为轻量级的模型这里考虑基于yolov7来开发构建MSTAR雷达影像目标检测识别系统简单看下实例效果图 接下来看下数据集情况 共有2.4w的数据。
本文使用到的YOLOv7模型配置文件如下所示
# parameters
nc: 10 # number of classes
depth_multiple: 1.0 # model depth multiple
width_multiple: 1.0 # layer channel multiple# anchors
anchors:- [12,16, 19,36, 40,28] # P3/8- [36,75, 76,55, 72,146] # P4/16- [142,110, 192,243, 459,401] # P5/32# yolov7 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [32, 3, 1]], # 0[-1, 1, Conv, [64, 3, 2]], # 1-P1/2 [-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [128, 3, 2]], # 3-P2/4 [-1, 1, Conv, [64, 1, 1]],[-2, 1, Conv, [64, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]], # 11[-1, 1, MP, []],[-1, 1, Conv, [128, 1, 1]],[-3, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 2]],[[-1, -3], 1, Concat, [1]], # 16-P3/8 [-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]], # 24[-1, 1, MP, []],[-1, 1, Conv, [256, 1, 1]],[-3, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 2]],[[-1, -3], 1, Concat, [1]], # 29-P4/16 [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [1024, 1, 1]], # 37[-1, 1, MP, []],[-1, 1, Conv, [512, 1, 1]],[-3, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [512, 3, 2]],[[-1, -3], 1, Concat, [1]], # 42-P5/32 [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [1024, 1, 1]], # 50]# yolov7 head
head:[[-1, 1, SPPCSPC, [512]], # 51[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[37, 1, Conv, [256, 1, 1]], # route backbone P4[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]], # 63[-1, 1, Conv, [128, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[24, 1, Conv, [128, 1, 1]], # route backbone P3[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]], # 75[-1, 1, MP, []],[-1, 1, Conv, [128, 1, 1]],[-3, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 2]],[[-1, -3, 63], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]], # 88[-1, 1, MP, []],[-1, 1, Conv, [256, 1, 1]],[-3, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 2]],[[-1, -3, 51], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]],[-2, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]], # 101[75, 1, RepConv, [256, 3, 1]],[88, 1, RepConv, [512, 3, 1]],[101, 1, RepConv, [1024, 3, 1]],[[102,103,104], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)]训练数据配置文件如下所示
# path
train: ./dataset/images/train
val: ./dataset/images/test
test: ./dataset/images/test# number of classes
nc: 10# class names
names: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]终端执行下面的命令即可启动训练
python train.py --cfg cfg/training/yolov7.yaml --weights weights/yolov7_training.pt --name yolov7 --epochs 100 --batch-size 32 --img 640 640 --device 0 --data data/self.yaml
默认100次epoch的迭代计算终端日志输出如下所示 训练完成后来看下结果详情
【精确率曲线】
精确率曲线Precision-Recall Curve是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。 精确率Precision是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。 【召回率曲线】
召回率曲线Recall Curve是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。 召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度Sensitivity或真正例率True Positive Rate。 【PR曲线】
精确率-召回率曲线Precision-Recall Curve是一种用于评估二分类模型性能的可视化工具。它通过绘制不同阈值下的精确率Precision和召回率Recall之间的关系图来帮助我们了解模型在不同阈值下的表现。 精确率是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。 【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率Precision、召回率Recall和F1分数的关系图来帮助我们理解模型的整体性能。 F1分数是精确率和召回率的调和平均值它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点以选择最佳的阈值。 【混淆矩阵】 【训练过程可视化】 可以看到整体的训练过程还是相对平稳的。
【batch计算实例】如下所示 可视化推理实例这块主要开发实现了图像检测和视频检测两种类型数据的推理计算如下图所示
【图像检测】 【视频检测】 整体检测的效果很不错后面有时间考虑基于其他类型的检测模型开发尝试一下