海上搜救(SAR)小目标检测打造 海上搜救小目标检测数据集 深度学习YOLOv8 的完整训练代码 无人机航拍+水上漂浮物检测(人、船、冲浪板等)海上搜救检测数据集

张开发
2026/4/18 21:26:11 15 分钟阅读

分享文章

海上搜救(SAR)小目标检测打造 海上搜救小目标检测数据集 深度学习YOLOv8 的完整训练代码 无人机航拍+水上漂浮物检测(人、船、冲浪板等)海上搜救检测数据集
AFO数据集Aerial Dataset of Floating Objects专为海上搜救SAR小目标检测打造2021年发布波兰AGH科技大学出品无人机航拍水上漂浮物检测人、船、冲浪板等3647张图像39991个标注目标分辨率720p4K1280×7203840×216050段无人机航拍视频人工标注数据集划分训练集2787张76.4%测试集514张14.1%验证集339张9.3%三、标注类别9类• human人• boat船• bouy浮标• kayak皮划艇• sailboat帆船• wind/sup-board冲浪/桨板• small_obj小物体• large_obj大物体• object通用物体。AFO数据集Aerial Dataset of Floating Objects基本信息项目描述数据集名称AFOAerial Dataset of Floating Objects发布时间2021年发布机构波兰AGH科技大学应用场景海上搜救SAR中的小目标检测图像来源无人机航拍图像数量3647张视频来源50段无人机航拍视频人工抽帧并标注标注目标总数39,991个分辨率范围720p 至 4K1280×720 ~ 3840×2160数据集划分训练集2787张76.4%测试集514张14.1%验证集339张9.3%标注类别共9类类别编号类别名称说明0human漂浮的人1boat船只2bouy浮标3kayak皮划艇4sailboat帆船5wind/sup-board冲浪板或桨板6small_obj小型漂浮物体未具体分类7large_obj大型漂浮物体未具体分类8object通用漂浮物体模糊或难以识别类型目标检测训练代码示例基于YOLOv8以下是一个使用 Ultralytics YOLOv8 框架训练 AFO 数据集的代码样例。假设数据已按标准 YOLO 格式组织每张图像对应一个.txt标注文件包含归一化坐标和类别索引。fromultralyticsimportYOLOimporttorch# 检查 GPU 是否可用device0iftorch.cuda.is_available()elsecpuprint(fUsing device:{device})# 加载预训练模型可选yolov8n.pt、yolov8s.pt 等modelYOLO(yolov8s.pt)# 使用 small 模型平衡速度与精度# 定义数据配置文件需提前创建 afo.yaml# 示例 afo.yaml 内容见下方说明# 开始训练resultsmodel.train(dataafo.yaml,# 数据集配置文件路径epochs100,# 训练轮数imgsz1280,# 输入图像尺寸建议使用高分辨率以检测小目标batch16,# 批次大小根据 GPU 显存调整optimizerAdamW,# 优化器选择lr00.001,# 初始学习率momentum0.937,# 动量weight_decay0.0005,# 权重衰减hsv_h0.015,# 数据增强色调hsv_s0.7,# 饱和度hsv_v0.4,# 明度degrees10.0,# 旋转增强translate0.2,# 平移增强scale0.5,# 缩放增强flipud0.5,# 上下翻转fliplr0.5,# 左右翻转saveTrue,# 保存最佳模型save_period10,# 每10轮保存一次projectafo_detection,# 输出目录nameexp1,# 实验名称exist_okFalse,workers8# 数据加载线程数)# 可选在测试集上评估metricsmodel.val()# 可选导出为 ONNX 格式用于部署model.export(formatonnx)示例afo.yaml配置文件内容保存在项目目录中# afo.yamltrain:/path/to/afo/images/trainval:/path/to/afo/images/valtest:/path/to/afo/images/test# 类别数量nc:9# 类别名称names:-human-boat-bouy-kayak-sailboat-wind/sup-board-small_obj-large_obj-object说明请确保将图像和标签按 YOLO 格式组织标签文件为.txt每行格式为class_id center_x center_y width height归一化坐标。推荐使用高分辨率输入如imgsz1280或1920以提升对小目标的检测能力。可结合 Mosaic、MixUp 等数据增强策略进一步提升模型鲁棒性。如需完整数据预处理脚本如从原始标注转换为 YOLO 格式可进一步提供标注格式如 COCO 或 PASCAL VOC我可协助转换。这是为您整理的AFO 数据集Aerial Dataset of Floating Objects的结构化技术文档包含详细的数据集参数表格以及基于YOLOv8的完整训练代码。 AFO 数据集技术概览该数据集由波兰 AGH 科技大学于 2021 年发布专为解决海上搜救SAR任务中小目标检测难点而设计。数据源自无人机航拍涵盖了复杂海况下的多种漂浮物。1. 数据集基础信息属性详细描述全称Aerial Dataset of Floating Objects (AFO)发布机构波兰 AGH 科技大学发布时间2021年核心场景海上搜救、无人机航拍监测、小目标检测图像总量3,647 张标注目标39,991 个高密度标注分辨率720p ~ 4K (1280 × 720 1280 \times 7201280×720至3840 × 2160 3840 \times 21603840×2160)视频源50 段人工标注的无人机航拍视频2. 数据集划分划分集合图像数量占比训练集2,787 张76.4%测试集514 张14.1%验证集339 张9.3%3. 标注类别 (9类)ID类别名称中文描述备注0human人员搜救核心目标1boat船只普通机动船2bouy浮标航标或警示浮标3kayak皮划艇小型人力船4sailboat帆船带帆船只5wind/sup-board冲浪/桨板极小目标检测难点6small_obj小物体未分类的小型漂浮物7large_obj大物体未分类的大型漂浮物8object通用物体模糊或难以具体分类的目标 模型训练代码 (基于 YOLOv8)针对 AFO 数据集**小目标多、背景复杂海浪干扰**的特点以下代码配置了较高的输入分辨率1280和针对性的数据增强策略。1. 准备工作afo.yaml配置文件请在代码同级目录下创建afo.yaml文件内容如下# AFO Dataset Configurationpath:/path/to/AFO_Dataset# 数据集根目录train:images/train# 训练集图像路径 (相对路径)val:images/val# 验证集图像路径test:images/test# 测试集图像路径# 类别数量nc:9# 类别名称列表names:0:human1:boat2:bouy3:kayak4:sailboat5:wind/sup-board6:small_obj7:large_obj8:object2. Python 训练脚本 (train_afo.py)fromultralyticsimportYOLOimporttorchimportosdeftrain_afo_model():# 1. 设置设备# 自动选择 GPU如果没有则使用 CPUdevice0iftorch.cuda.is_available()elsecpuprint(f 使用设备:{device})# 2. 加载模型# 建议使用 YOLOv8s 或 YOLOv8m平衡小目标检测精度与速度# 如果是极小目标也可以尝试 YOLOv8l但速度会变慢modelYOLO(yolov8s.pt)# 加载预训练权重# 3. 开始训练# 针对 AFO 数据集的高分辨率和小目标特性进行参数微调resultsmodel.train(dataafo.yaml,# 数据集配置文件路径epochs100,# 训练轮数 (建议 100-300)imgsz1280,# 输入尺寸AFO 包含 4K 图像建议设为 1280 以保留小目标特征batch16,# 批次大小 (根据显存调整显存不足改为 8 或 4)devicedevice,# 指定设备workers8,# 数据加载线程数# --- 优化器设置 ---optimizerAdamW,# AdamW 通常比 SGD 收敛更快lr00.001,# 初始学习率lrf0.01,# 最终学习率 (lr0 * lrf)momentum0.937,# 动量weight_decay0.0005,# 权重衰减# --- 针对小目标的数据增强 ---# 增加 Mosaic 增强概率提升对遮挡和背景的鲁棒性mosaic1.0,# Mosaic 增强概率 (0-1)mixup0.1,# MixUp 增强概率copy_paste0.1,# Copy-Paste 增强 (对检测稀疏目标如 human 有效)# --- 其他设置 ---patience50,# 早停机制 (如果 50 轮没提升则停止)saveTrue,# 保存模型检查点save_period-1,# 仅保存最佳权重和最后权重projectruns/detect,# 项目保存路径nameAFO_Exp_v1,# 实验名称exist_okFalse,# 如果存在同名实验是否覆盖verboseTrue# 详细输出)print(✅ 训练完成)# 4. 验证模型性能metricsmodel.val()print(f mAP50:{metrics.box.map50:.4f})print(f mAP50-95:{metrics.box.map:.4f})if__name____main__:train_afo_model()4. 训练建议与注意事项输入尺寸 (imgsz)AFO 数据集中包含大量微小目标如远处的人、冲浪板。强烈建议将imgsz设置为 1280 或更高。如果设置为默认的 640小目标特征可能会在下采样过程中丢失导致检测率大幅下降。显存管理使用imgsz1280会显著增加显存占用。如果遇到CUDA out of memory错误请减小batch大小例如设置为 4 或 8。类别不平衡数据集中human和small_obj可能属于难样本。如果训练后期这些类别的召回率较低可以在afo.yaml中调整hyp参数或者在训练参数中增加scale和translate的增强幅度。预训练权重务必加载 COCO 预训练权重如代码中的yolov8s.pt不要从头训练这能极大加快收敛速度并提高精度。

更多文章