sar遥感船舶识别数据集 高分辨率SAR图像合成孔径雷达(SAR)图像进行船舶检测数据集 深度学习在遥感和SAR图像中的目标检测领域的应用

sar遥感船舶识别数据集 高分辨率SAR图像合成孔径雷达(SAR)图像进行船舶检测数据集 深度学习在遥感和SAR图像中的目标检测领域的应用
YOLOV8模型训练 高分辨率SAR图像合成孔径雷达(SAR)图像进行船舶检测数据集 深度学习在遥感和SAR图像中的目标检测领域的应用文章目录YOLOV8模型训练 高分辨率SAR图像合成孔径雷达(SAR)图像进行船舶检测数据集 深度学习在遥感和SAR图像中的目标检测领域的应用⛵ **SSDD (SAR船舶检测数据集) - YOLO格式**数据集划分类别定义️ **使用建议**✅ 一、环境准备CUDA Anaconda Python 依赖1. 安装 CUDA 驱动GPU 加速2. 安装 Anaconda3. 创建 Python 虚拟环境4. 安装必要依赖✅ 二、数据集结构YOLO 格式文件目录结构1. 创建 data.yaml✅ 三、训练策略优化针对 SSDD 特点✅ 四、训练代码YOLOv8 官方预训练模型 train.py —— 针对小目标和 SAR 图像优化✅ 五、推理代码检测新 SAR 图像 predict.py✅ 六、评估模型性能在 val 集上 evaluate.py✅ 七、SAR 图像训练优化建议✅ 八、训练结果分析✅ 总结小目标检测SSDD数据集YOLO格式。SSDD (SAR船舶检测数据集)专门用于使用合成孔径雷达(SAR)图像进行船舶检测。它包含从不同传感器收集的高分辨率SAR图像并包括针对不同海洋环境中各种类型船舶的注释。数据集经常用于开发和评估机器学习模型特别是在遥感和SAR图像中的目标检测领域。数据集详情train:232val:928test:0类别0: ship⛵SSDD (SAR船舶检测数据集) - YOLO格式项目说明数据集名称SSDD (SAR Ship Detection Dataset)影像类型合成孔径雷达(SAR)图像目标类别船舶(ship)影像来源不同传感器收集的高分辨率SAR图像应用场景SAR图像中的小目标检测尤其是海洋环境下的船舶检测标注方式YOLO格式中心点坐标x, y与宽度w、高度h归一化值数据集划分集合数量描述训练集(train)232用于模型训练的样本数量验证集(val)928用于模型验证的样本数量测试集(test)0当前数据集中没有提供专门的测试集类别定义ID类别名描述0ship船舶是该数据集中唯一的目标类别images/: 存放所有图像文件。labels/: 对应于每张图片的标签文件记录了每个目标的位置和类别信息。格式为object-class x_center y_center width height其中x_center和y_center是相对于图像宽度和高度的归一化中心点坐标而width和height则为目标框宽高相对于图像尺寸的归一化值。dataset.yaml: 包含数据集路径配置等信息的YAML文件。️使用建议数据预处理: 确保所有图像和对应的标签文件正确地放置在上述建议的目录结构中并检查所有标签文件是否符合YOLO格式要求。模型训练: 使用YOLOv5或其他YOLO版本时根据dataset.yaml文件来指定训练和验证数据集的路径。评估指标: 关注mAP(mean Average Precision)等关键性能指标尤其是在小目标检测方面表现如何。SSDD (SAR Ship Detection Dataset)是一个在遥感领域非常经典的小目标检测数据集特别适用于合成孔径雷达SAR图像中的船舶检测。虽然训练集只有 232 张图像但每张图像中可能包含多个小目标船舶非常适合使用YOLOv8等现代目标检测模型进行训练。数据已标注为YOLO 格式可以直接训练。但由于样本少、小目标密集、SAR 图像噪声大需要特别优化训练策略。✅ 一、环境准备CUDA Anaconda Python 依赖1. 安装 CUDA 驱动GPU 加速nvidia-smi确保 CUDA 可用推荐 11.8 或 12.12. 安装 Anaconda下载地址https://www.anaconda.com/products/distribution3. 创建 Python 虚拟环境# 创建环境conda create-nssdd-yolopython3.9# 激活环境conda activate ssdd-yolo4. 安装必要依赖# 安装 PyTorch以 CUDA 11.8 为例pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 Ultralytics YOLOv8pipinstallultralytics# 安装 OpenCV 和其他工具pipinstallopencv-python matplotlib pillow tqdm✅ 验证安装importtorchprint(torch.cuda.is_available())# 应输出 True✅ 二、数据集结构YOLO 格式文件目录结构datasets/ └── ssdd/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yaml⚠️ 注意你的test:0所以只用train和val进行训练与验证。1. 创建data.yaml在datasets/ssdd/下创建data.yaml# data.yamltrain:../datasets/ssdd/images/trainval:../datasets/ssdd/images/valnc:1names:[ship]✅ 三、训练策略优化针对 SSDD 特点问题解决方案小目标密集使用yolov8m/limgsz640或1024样本少仅232张启用强数据增强Mosaic, MixUpSAR 图像噪声大、对比度高关闭hsv_h/s保留hsv_v增强亮度变化val 数量远大于 train说明是跨场景验证需提升泛化能力✅ 四、训练代码YOLOv8 官方预训练模型train.py—— 针对小目标和 SAR 图像优化# train.pyfromultralyticsimportYOLOimporttorch# 检查 GPUdevicecudaiftorch.cuda.is_available()elsecpuprint(fUsing device:{device})# 推荐使用 yolov8m 或 yolov8l小目标更强modelYOLO(yolov8m.pt)# 可选: yolov8l.pt显存足够# 开始训练resultsmodel.train(datadatasets/ssdd/data.yaml,# 数据配置文件epochs300,# 小数据集多训练防止欠拟合imgsz640,# 输入尺寸可选 1024 提升小目标检测batch16,# 批次大小根据显存调整namessdd_yolov8m_sar,# 实验名称devicedevice,# 使用 GPUworkers4,# 数据加载线程optimizerAdamW,# 适合小数据集收敛lr00.001,# 初始学习率weight_decay0.0005,patience50,# 早停50轮无提升则停止projectruns/ssdd,# 保存路径ampTrue,# 自动混合精度节省显存close_mosaic20,# 最后20轮关闭 Mosaic# --- 数据增强关键---hsv_h0.0,# SAR无颜色关闭色相hsv_s0.0,# 关闭饱和度hsv_v0.4,# 保留明度增强适合SAR高对比translate0.2,scale0.5,fliplr0.5,# 左右翻转SAR对称mosaic1.0,# Mosaic增强提升小目标mixup0.6,# MixUp增强提升泛化copy_paste0.3,# Copy-Paste增强模拟密集船degrees10.0,# 小角度旋转)关键参数说明epochs300小样本需多轮训练mixup0.6,copy_paste0.3增强小样本泛化能力imgsz640或1024若显存允许建议用1024提升小目标召回率yolov8m/l比yolov8s更适合小目标✅ 五、推理代码检测新 SAR 图像predict.py# predict.pyfromultralyticsimportYOLO# 加载训练好的最佳模型modelYOLO(runs/ssdd/ssdd_yolov8m_sar/weights/best.pt)# 推理单张 SAR 图像resultsmodel.predict(sourcesar_ship_test.png,# 输入 SAR 图像saveTrue,# 保存带框图像conf0.25,# 置信度阈值SAR 噪声大可略低iou0.45,showFalse,projectruns/predict,namessdd_test,imgsz640# 与训练一致)# 打印结果forresultinresults:boxesresult.boxesprint(f共检测到{len(boxes)}艘船舶)forboxinboxes:cls_idint(box.cls)conffloat(box.conf)print(f 船舶置信度:{conf:.3f})✅ 六、评估模型性能在 val 集上evaluate.py# evaluate.pyfromultralyticsimportYOLO# 加载训练好的模型modelYOLO(runs/ssdd/ssdd_yolov8m_sar/weights/best.pt)# 在验证集上评估metricsmodel.val(datadatasets/ssdd/data.yaml,splitval,imgsz640,batch16,conf0.001,# 低阈值用于完整评估iou0.6,devicecudaiftorch.cuda.is_available()elsecpu,projectruns/eval,namessdd_val)# 输出关键指标print(fmAP0.5:{metrics.box.map:.4f})print(fmAP0.5:0.95:{metrics.box.map50_95:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})✅ 七、SAR 图像训练优化建议问题建议小目标船舶使用yolov8m/l或yolov8ximgsz1024样本少232启用mixup,copy_paste增强SAR 噪声大关闭hsv_h/s保留hsv_vval train说明是跨区域验证关注mAP和Recall显存不足使用yolov8sbatch8imgsz640✅ 八、训练结果分析训练完成后查看runs/ssdd/ssdd_yolov8m_sar/results.pngloss 和 mAP 曲线PR_curve.png查看ship类别的 Precision-Recallconfusion_matrix.png是否误检“海面”为船✅ 总结步骤命令环境conda create -n ssdd-yolo python3.9安装pip install ultralytics torch训练python train.py推理python predict.py评估python evaluate.py