news 2026/4/18 3:48:11

无人机汛期状态下 无人机钓鱼溺水分割数据集 无人机汛期水体分割数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
无人机汛期状态下 无人机钓鱼溺水分割数据集 无人机汛期水体分割数据集

汛期闯入seg数据集

一、数据集核心信息表

总结维度具体内容
类别共4类,分别为DiaoYuSan、ShuiBianDiaoYu、YouYongNiShui、water
数量图像总数1533张
图像分辨率未在提供的信息中明确说明
格式未在提供的信息中明确说明

二、数据集应用领域

  1. 汛期安全监测场景:可用于识别汛期水域及周边的特定目标,比如监测是否存在ShuiBianDiaoYu(水边钓鱼)、YouYongNiShui(游泳溺水)等可能引发安全事故的行为,以及DiaoYuSan(钓鱼伞)这类与人员活动相关的物体,辅助安全管理工作。
  2. 水利场景分析:能针对数据集中的water(水体)类别进行识别与分割,帮助相关人员掌握汛期水体范围、分布状态,为汛情监测、水域动态变化追踪提供数据支持。
  3. 计算机视觉模型训练:作为实例分割类型的数据集,可用于训练实例分割算法模型,提升模型在汛期复杂场景下对特定目标的识别精度,为相关技术研发提供数据基础。

三、数据集价值

  1. 提升汛期安全管理效率:通过提供可用于识别危险行为和相关物体的数据,帮助工作人员快速定位汛期安全隐患,减少人工排查的工作量,提高安全防控的及时性和准确性。
  2. 支撑水利工作决策:基于对水体及周边目标的识别数据,为水利部门分析汛情、制定防汛措施、评估水域变化影响等提供客观数据参考,助力科学决策。
  3. 推动相关技术落地:填补了汛期场景下实例分割数据资源的部分缺口,为计算机视觉技术在防汛、水利等领域的实际应用提供数据支撑,促进技术与行业需求的结合。


    基于你提供的“汛期闯入”实例分割数据集(含水域(water)、水边钓鱼(ShuiBianDiaoYu)等标注类别),以下为完整的数据集适配方案与训练代码,采用主流的YOLOv8-seg框架(兼顾精度与速度,支持实例分割任务),并针对数据集特性做了细节优化。

一、数据集预处理(关键步骤)

首先需将 Roboflow 导出的标注格式(如你提供的 JSON 中的多边形标注)转换为 YOLOv8-seg 支持的YOLO 格式(图像 + 对应标签文件),步骤如下:

1. 数据集结构整理

最终数据集需符合以下目录结构(便于 YOLO 框架读取):

flood_segmentation/ # 数据集根目录 ├─ images/ # 图像文件夹 │ ├─ train/ # 训练集图像(1496张,来自网页的Train:1496) │ │ ├─ w1920_h0_i244_jpg.jpg │ │ └─ ... │ └─ val/ # 验证集图像(37张,来自网页的Valid:37) │ └─ ... └─ labels/ # 标签文件夹(与图像目录一一对应) ├─ train/ # 训练集标签 │ ├─ w1920_h0_i244_jpg.txt # 对应图像的YOLO格式标签 │ └─ ... └─ val/ # 验证集标签 └─ ...
2. 标注格式转换(JSON → YOLO)

网页中提供的标注为多边形(polygon)坐标(如water类的 points 数组),需转换为 YOLO-seg 格式:

  • YOLO-seg 标签格式:[类别ID] [x1/y_width, y1/h_height, x2/y_width, y2/h_height, ...]
    (注:坐标需归一化到 0-1 之间,x/y 为像素坐标,width/height 为图像宽高)

转换代码示例(Python):

importjsonimportosfromPILimportImage# 1. 类别映射(需与后续训练配置一致)class_mapping={"water":0,# 水域类,ID=0"ShuiBianDiaoYu":1# 水边钓鱼类,ID=1}# 2. 读取Roboflow导出的JSON标注(网页中"Raw Data"的source数据)json_path="roboflow_annotations.json"# 你的JSON文件路径withopen(json_path,"r",encoding="utf-8")asf:data=json.load(f)# 3. 遍历每个图像的标注,生成YOLO标签forimg_infoindata:# 若JSON为单图像,直接处理img_info=dataimg_name=img_info["name"]# 图像名:如"w1920_h0_i244_jpg"img_path=os.path.join("flood_segmentation/images/train",f"{img_name}.jpg")# 图像路径img=Image.open(img_path)img_w,img_h=img.size# 图像宽高(1920x1080,来自网页)# 生成标签文件路径label_dir="flood_segmentation/labels/train"os.makedirs(label_dir,exist_ok=True)label_path=os.path.join(label_dir,f"{img_name}.txt")# 提取每个类别的多边形标注annotations=img_info["annotations"]withopen(label_path,"w",encoding="utf-8")aslabel_f:forcls_name,cls_annoinannotations.items():if"converted"notincls_anno:continueconverted=json.loads(cls_anno["converted"])forboxinconverted["boxes"]:cls_label=box["label"]ifcls_labelnotinclass_mapping:continuecls_id=class_mapping[cls_label]# 提取多边形坐标并归一化points=box["points"]# 格式:[[x1,y1], [x2,y2], ...]normalized_points=[]for(x,y)inpoints:norm_x=x/img_w# x归一化norm_y=y/img_h# y归一化normalized_points.extend([str(norm_x),str(norm_y)])# 写入标签文件(类别ID + 归一化坐标)label_line=f"{cls_id}"+" ".join(normalized_points)+"\n"label_f.write(label_line)print("标注格式转换完成!")

二、YOLOv8-seg 训练代码

采用 Ultralytics 库的 YOLOv8-seg 模型,该库封装了训练、验证、推理全流程,且支持自动加载数据集、计算指标(mAP、IoU 等)。

1. 环境安装
# 安装依赖库pipinstallultralytics pillow numpy matplotlib opencv-python
2. 训练配置文件(yaml)

创建flood_data.yaml文件,指定数据集路径、类别数及类别名(需与上述class_mapping一致):

# flood_data.yamlpath:./flood_segmentation# 数据集根目录(相对/绝对路径均可)train:images/train# 训练集图像路径(相对于path)val:images/val# 验证集图像路径(相对于path)# 类别配置nc:2# 类别数:2类(water + ShuiBianDiaoYu)names:["water",# 0: 水域"ShuiBianDiaoYu"# 1: 水边钓鱼]
3. 完整训练代码
fromultralyticsimportYOLOimportos# ---------------------- 1. 基础配置 ----------------------# 模型选择:yolov8n-seg(轻量版,适合快速验证)/ yolov8s-seg(平衡版)/ yolov8l-seg(高精度版)model_name="yolov8s-seg.pt"# 配置文件路径yaml_path="flood_data.yaml"# 训练输出目录output_dir="flood_train_results"os.makedirs(output_dir,exist_ok=True)# ---------------------- 2. 加载预训练模型 ----------------------# 加载YOLOv8-seg预训练模型(自动下载权重)model=YOLO(model_name)# ---------------------- 3. 训练参数配置 ----------------------# 核心参数说明:# - epochs: 训练轮次(建议20-50,根据数据集大小调整)# - batch: 批次大小(根据GPU显存调整,如8/16/32,显存不足设为4)# - imgsz: 输入图像尺寸(建议640/1280,与原始图像1920x1080兼容)# - lr0: 初始学习率(默认0.01,小数据集可减小至0.001)# - device: 训练设备(0=GPU,-1=CPU,多GPU设为[0,1])# - save: 是否保存模型(默认True)# - val: 训练中是否验证(默认True,建议开启)train_args={"data":yaml_path,"epochs":30,"batch":8,"imgsz":1280,"lr0":0.001,"device":0,"save":True,"val":True,"project":output_dir,"name":"exp1",# 实验名,结果会保存在 output_dir/exp1"verbose":True,# 打印训练日志"optimizer":"Adam",# 优化器(Adam比SGD更稳定,适合小数据集)"patience":5,# 早停机制:5轮无val改进则停止训练"augment":True,# 开启数据增强(提升泛化能力)"segment":True# 明确指定为分割任务(YOLOv8支持检测/分割/分类,需显式开启)}# ---------------------- 4. 启动训练 ----------------------print("开始训练YOLOv8-seg模型...")results=model.train(**train_args)# ---------------------- 5. 训练后验证 ----------------------# 验证模型在验证集上的性能(输出mAP50、mAP50-95、IoU等指标)print("\n开始验证模型...")val_results=model.val(data=yaml_path,imgsz=1280,batch=8)print(f"验证集mAP50:{val_results.box.map50:.3f}")# 检测框mAP50print(f"验证集分割mAP50:{val_results.seg.map50:.3f}")# 分割掩码mAP50# ---------------------- 6. 模型推理示例 ----------------------# 用训练好的模型预测新图像print("\n开始推理示例...")# 加载最佳模型(训练中保存的best.pt,在 output_dir/exp1/weights/ 下)best_model=YOLO(os.path.join(output_dir,"exp1","weights","best.pt"))# 推理一张示例图像infer_img_path="flood_segmentation/images/val/example.jpg"# 验证集示例图像infer_results=best_model(infer_img_path,save=True,imgsz=1280)# save=True保存推理结果# 打印推理结果(类别、置信度、坐标)forresultininfer_results:boxes=result.boxes# 检测框结果masks=result.masks# 分割掩码结果forbox,maskinzip(boxes,masks):cls_id=int(box.cls[0])cls_name=best_model.names[cls_id]conf=float(box.conf[0])print(f"检测到:{cls_name}(置信度:{conf:.3f})")

三、关键优化与注意事项

  1. 数据增强适配
    由于数据集为“汛期”场景(可能存在雨天、水面反光、目标遮挡等),训练时开启augment=True后,YOLOv8 会自动应用:

    • 亮度/对比度/饱和度调整(适应不同光照)
    • 水平翻转(目标无方向性,如水域、钓鱼者)
    • 缩放/裁剪(适应不同目标大小)
      若需更针对性增强,可在train_args中添加augment=Albumentations(需额外安装albumentations库)。
  2. 类别不平衡处理
    从网页标注看,water类(1个标注)可能比ShuiBianDiaoYu类(3个标注)更少,可在训练中添加类别权重
    flood_data.yaml中添加class_weights: [1.5, 1.0](增大water类的损失权重),或在train_args中添加class_weights=[1.5, 1.0]

  3. GPU显存不足解决方案
    若训练时显存不足(如使用12GB显存GPU):

    • 减小batch(如从8改为4)
    • 降低imgsz(如从1280改为640)
    • 启用半精度训练:在train_args中添加amp=True(YOLOv8默认开启,可减少显存占用50%)。
  4. 模型部署参考
    训练完成的best.pt模型可直接用于部署:

    • 本地推理:用上述model.infer()代码
    • 实时视频推理:将infer_img_path改为视频路径(如0表示摄像头)
    • 部署到服务器:用 Ultralytics 提供的export功能导出为 ONNX/TensorRT 格式(加速推理),命令如下:
      best_model.export(format="onnx",imgsz=1280)# 导出为ONNX格式

四、训练结果解读

训练完成后,在output_dir/exp1目录下会生成以下关键文件:

  • weights/best.pt:验证集性能最佳的模型权重(核心文件)
  • results.csv:训练日志(含每轮的损失、mAP等指标)
  • confusion_matrix.png:混淆矩阵(查看类别预测准确性)
  • val_batch0_pred.jpg:验证集预测可视化(对比真实标注与预测结果)

重点关注分割掩码mAP50(目标:≥0.7 为可用模型,≥0.85 为优秀模型),若mAP较低,可增加训练轮次(如epochs=50)或补充更多标注数据(网页中测试集为0,建议划分部分训练集为测试集,如train:1400, val:37, test:59)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:43:37

如何3天从零搭建戴森球工厂?蓝图仓库新手攻略

如何3天从零搭建戴森球工厂?蓝图仓库新手攻略 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 戴森球计划FactoryBluePrints蓝图仓库是游戏中最全面的工厂布局解…

作者头像 李华
网站建设 2026/4/17 10:21:29

【Django毕设全套源码+文档】基于Django的游戏辅助和内容更新系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 17:55:07

零基础教程:5分钟学会用在线POSTMAN测试API

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向初学者的POSTMAN使用教程,包含:1. 如何发送第一个GET请求;2. 解读响应结果;3. 添加简单断言;4. 保存和分享…

作者头像 李华