山东省网站建设_网站建设公司_PHP_seo优化
2025/12/26 16:59:18 网站建设 项目流程

2

无人机航拍视角河到钓鱼溺水目标检测数据集
,3293张,yolo,voc,coco标注
图像尺寸:1080*1920
类别数量:4类
训练集:3234; 验证集:47; 测试集:12
类别: 每一类图像数 ,每一类标注数
ShuiBianDiaoYu-水边钓鱼: 1404,2872
YouYongNiShui-游泳溺水: 1508,9347
DiaoYuSan-钓鱼伞: 210,429
boat-船只: 689,1507
image num: 3293


🛰️ 无人机视角河边场景目标检测系统

——含“水边钓鱼”、“游泳/溺水”、“钓鱼伞”、“船只”四类

✅ 数据总量:3293 张高清图像(1080×1920)
✅ 支持 YOLO / VOC / COCO 三种标注格式
✅ 提供 YOLOv11 完整训练 + 推理代码
✅ 适用于智慧河道监控、应急救援、AI巡检等场景


📊 数据集统计表

类别名称(Chinese)类别英文名图像数量标注框数
水边钓鱼ShuiBianDiaoYu14042872
游泳溺水YouYongNiShui15089347
钓鱼伞DiaoYuSan210429
船只boat6891507
总计——329314,155


📁 数据集划分情况

集合图像数量占比
训练集(train)3234~98.2%
验证集(val)47~1.4%
测试集(test)12~0.4%

⚠️ 注意:验证集和测试集样本较少,建议在训练时使用交叉验证手动增强验证集


🗂️ 博主建议 :目录结构建议(标准 YOLO 格式)

drone_fishing_dataset/ ├── images/ │ ├── train/# 3234 张 (1080x1920)│ ├── val/# 47 张│ └── test/# 12 张├── labels/ │ ├── train/# .txt 文件 (YOLO 格式)│ ├── val/ │ └── test/ ├── annotations/ │ ├── voc/# .xml 文件 (Pascal VOC)│ └── coco/# instances_drone.json (COCO 格式)├── drone.yaml# YOLO 配置文件└── README.md

🛠️ YOLO 配置文件:drone.yaml

# drone.yamltrain:./drone_fishing_dataset/images/trainval:./drone_fishing_dataset/images/valtest:./drone_fishing_dataset/images/testnc:4names:['ShuiBianDiaoYu','YouYongNiShui','DiaoYuSan','boat']

✅ 保存为项目根目录下的drone.yaml


🚀 YOLOv11 完整训练代码(Python 脚本)

# train_drone.pyfromultralyticsimportYOLOimportosimporttime# ======================= 参数设置 =======================MODEL_NAME="yolov11m.pt"# 推荐:yolov11n/s/m/l/x;小数据可用 yolov11sCONFIG_FILE="drone.yaml"# 数据集配置EPOCHS=120BATCH_SIZE=8# 显存不足可设为 4 或 2IMG_SIZE=(1080,1920)# 原始尺寸输入(保持纵横比)PROJECT_NAME="drone_water_surveillance"EXPERIMENT_NAME="exp_v1"# 设备选择(自动检测 GPU)DEVICE=0ifos.environ.get("CUDA_AVAILABLE")else"cpu"# 检查配置文件是否存在ifnotos.path.exists(CONFIG_FILE):raiseFileNotFoundError(f"[ERROR] 配置文件{CONFIG_FILE}不存在,请检查路径!")# ======================= 加载模型 =======================print("🚀 加载 YOLOv11 模型...")model=YOLO(MODEL_NAME)# 自动下载预训练权重# ======================= 开始训练 =======================print("🔥 开始训练...")start_time=time.time()results=model.train(data=CONFIG_FILE,epochs=EPOCHS,batch=BATCH_SIZE,imgsz=IMG_SIZE,# 支持非正方形输入device=DEVICE,project=PROJECT_NAME,name=EXPERIMENT_NAME,exist_ok=True,patience=40,# 早停轮数save=True,save_period=10,# 每10轮保存一次cache=False,# 若内存充足可设为 True 提升速度workers=4,# 优化器设置optimizer='AdamW',lr0=0.001,# 初始学习率lrf=0.01,# 最终学习率 = lr0 * lrfmomentum=0.937,weight_decay=0.0005,# 数据增强策略(针对航拍特点设计)hsv_h=0.015,# 色调扰动hsv_s=0.7,# 饱和度变化大(适应水面反光)hsv_v=0.4,degrees=15.0,# 允许轻微旋转(无人机晃动)translate=0.2,scale=0.6,# 大尺度缩放,模拟远近目标shear=2.0,flipud=0.0,# 不上下翻转(天空/地面不对称)fliplr=0.5,# 左右翻转增强bgr=0.0,mosaic=1.0,# Mosaic 增强,提升小目标检测能力mixup=0.1,# MixUp 增强copy_paste=0.2,# Copy-Paste 对于稀疏类别有效(如 DiaoYuSan))# ======================= 输出结果 =======================training_time=(time.time()-start_time)/3600print(f"✅ 训练完成!总耗时:{training_time:.2f}小时")print(f"📍 模型保存路径:{results.save_dir}")# ======================= 验证模型性能 =======================print("🔍 开始验证...")metrics=model.val()print(f"mAP@0.5:{metrics.box.map50:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map:.4f}")print(f"Precision:{metrics.box.p:.4f}")print(f"Recall:{metrics.box.r:.4f}")# 分类别的 AP(需查看 tensorboard 或 results.csv)print("\n📊 各类别 mAP@0.5:")fori,cls_nameinenumerate(['ShuiBianDiaoYu','YouYongNiShui','DiaoYuSan','boat']):print(f"{cls_name}:{metrics.box.maps[i]:.4f}")# ======================= 导出 ONNX 模型(用于部署) =======================print("📦 导出 ONNX 模型...")onnx_path=model.export(format="onnx",dynamic=True,simplify=True)print(f"ONNX 模型已保存至:{onnx_path}")

🔄 多格式转换工具(可选)

1. COCO → YOLO 转换示例

# coco_to_yolo.pyimportjsonfrompathlibimportPathdefcoco_to_yolo(coco_json,output_dir):withopen(coco_json)asf:data=json.load(f)# 建立 image_id -> file_name 映射id2name={img['id']:img['file_name']forimgindata['images']}h_map={img['id']:img['height']forimgindata['images']}w_map={img['id']:img['width']forimgindata['images']}forannindata['annotations']:image_id=ann['image_id']filename=Path(id2name[image_id]).stem+".txt"filepath=Path(output_dir)/filename x,y,w,h=ann['bbox']cls_id=ann['category_id']-1# COCO 从 1 开始,YOLO 从 0 开始center_x=(x+w/2)/w_map[image_id]center_y=(y+h/2)/h_map[image_id]width=w/w_map[image_id]height=h/h_map[image_id]line=f"{cls_id}{center_x:.6f}{center_y:.6f}{width:.6f}{height:.6f}\n"withopen(filepath,"a")asf:f.write(line)print("✅ COCO to YOLO 转换完成")

2. VOC → YOLO 转换(略,类似前文)


🖼️ 推理代码(inference.py)

# inference.pyfromultralyticsimportYOLOimportcv2# 加载模型model=YOLO("drone_water_surveillance/exp_v1/weights/best.pt")# 单图推理results=model("test.jpg",conf=0.4,iou=0.5,imgsz=(1080,1920))# 可视化结果forrinresults:im_array=r.plot()# 绘制边界框和标签im=cv2.cvtColor(im_array,cv2.COLOR_RGB2BGR)cv2.imshow("Drone Detection Result",im)cv2.waitKey(0)cv2.imwrite("result_detected.jpg",im)# 打印检测详情forrinresults:boxes=r.boxesforboxinboxes:cls_id=int(box.cls[0])conf=float(box.conf[0])print(f"检测到:{model.names[cls_id]}({conf:.2f})")

📈 训练技巧与优化建议

技巧说明
✅ 使用大 backboneyolov11myolov11l,应对高分辨率复杂场景
✅ 动态 resize设置imgsz=(1080,1920)保留原始比例,避免拉伸失真
✅ Copy-Paste 增强特别对稀有类DiaoYuSan(仅 210 图)进行复制粘贴增强
✅ Focal Loss 替代 CE减轻类别不平衡问题(YouYongNiShui 占比过高)
✅ 多尺度训练可尝试multi_scale=True
✅ 边缘设备部署导出为 ONNX/TensorRT,在 Jetson Orin 等边缘设备运行

🎯 应用领域

场景描述
🌊智慧河道监管自动识别禁钓区钓鱼行为、非法船只
🚑溺水预警系统实时监测游泳者状态,发现静止不动即报警
🛰️无人机自动巡检结合 GPS 定位,实现 AI 自主导航+异常上报
🏞️景区安全管理在公园湖泊、水库部署,提升安防效率
💡城市数字孪生作为智慧城市感知层的一部分,接入统一平台

✅ 总结

项目内容
图像总数3293 张(1080×1920 竖屏)
类别数4:ShuiBianDiaoYu,YouYongNiShui,DiaoYuSan,boat
标注总数14,155 个框
标注格式YOLO / VOC / COCO 全支持
模型YOLOv11(最新一代)
适用性高空俯视、小目标密集、长宽比特殊

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询