news 2026/3/23 4:06:50

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

作者头像

张小明

前端开发工程师

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/3/13 16:39:31

电商设计福音!Qwen-Image-Layered实现商品图快速改色

电商设计福音!Qwen-Image-Layered实现商品图快速改色 引言:一张商品图,为什么改个颜色要花半小时? 你有没有遇到过这样的场景:运营同事凌晨发来消息:“主图红色太艳了,换成莫兰迪灰&#xff0c…

作者头像 李华
网站建设 2026/3/15 7:03:14

3大场景解锁智能联动:电视电脑无缝控制新体验

3大场景解锁智能联动:电视电脑无缝控制新体验 【免费下载链接】LGTVCompanion Power On and Off WebOS LG TVs together with your PC 项目地址: https://gitcode.com/gh_mirrors/lg/LGTVCompanion 发现生活中的智能控制痛点 想象这样三个场景:深…

作者头像 李华
网站建设 2026/3/14 4:27:39

公文降AI工具推荐:体制内都在用的4款办公写作助手

公文降AI工具推荐:体制内都在用的4款办公写作助手 TL;DR:体制内公文写作也开始有AI检测要求了。本文推荐4款适合公文降AI的工具:去AIGC(3.5元/千字,支持公文类型)、嘎嘎降AI(4.8元/千字&#xf…

作者头像 李华
网站建设 2026/3/13 20:22:22

零基础入门:如何快速搭建皮卡搜索功能?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个简单的皮卡搜索功能,适合初学者学习。功能包括:1. 基本的文本搜索功能;2. 支持关键词匹配;3. 搜索结果列表展示&#xff1b…

作者头像 李华
网站建设 2026/3/14 8:53:58

AI助力Docker-Compose:一键生成复杂容器编排配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个AI辅助生成docker-compose配置的工具,用户可以通过自然语言描述应用架构需求(如需要包含MySQL数据库、Redis缓存和Node.js后端服务)&am…

作者头像 李华