> 技术文档 > 深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用

深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用

深度学习目标检测算法YOLOV8模型训练 钓鱼检测数据集 识别检测钓鱼者的检测识别 河道河边垂钓检测数据集的训练及应用

文章目录

      • **河道垂钓检测数据集信息表**
      • **数据集特点**
    • ✅ 一、环境搭建(CUDA + Anaconda + Python + 依赖)
      • 1. 检查 CUDA 驱动
      • 2. 安装 Anaconda
      • 3. 创建 Python 虚拟环境
      • 4. 安装依赖项
    • 📂 二、数据集结构(你已划分好)
    • 📄 三、创建 `data.yaml` 文件
    • 🚀 四、训练代码(`train.py`)—— 使用 YOLOv8 官方预训练模型
    • 🔍 五、推理代码(`infer.py`)—— 检测钓鱼行为
    • 📊 六、评估代码(`evaluate.py`)—— 获取 mAP 等指标

深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用

河道河边垂钓钓鱼数据集,训练集941张,测试集验证集235张。
无人机采集数据,一类
垂钓场景数据集。YOLO目标检测

YOLO11 map50-95=0.57

深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用

河道垂钓检测数据集信息表

项目 内容 数据集名称 河道垂钓检测数据集 数据来源 无人机航拍采集 场景类型 河道、湖泊、溪流等自然水域垂钓场景 类别数量 1 类 类别标签 fishing(垂钓者/垂钓行为) 总图像数量 1,176 张 训练集数量 941 张 验证/测试集数量 235 张 图像质量 清晰,分辨率较高,适合目标检测任务 标注情况 个人精心标注,标注完整,无漏标、错标 标注格式 YOLO 格式 .txt 文件(每图一标,与图片一一对应) 适用任务 目标检测(Object Detection) 推荐模型 YOLOv5、YOLOv8、YOLOv11 等 YOLO 系列模型 模型性能(参考) YOLOv11 在该数据集上达到 mAP50-95 = 0.57 使用场景 水域管理、禁钓区域监控、智能巡检、生态保护等

深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用

数据集特点

特点 说明 ✅ 无人机视角 航拍视角覆盖广,适用于远距离监测垂钓行为 ✅ 单类高效检测 聚焦“垂钓”行为,适合构建轻量、高精度检测模型 ✅ 标注完整清晰 图像清晰,标注准确,可直接用于训练 ✅ 开箱即用 提供标准 YOLO 格式,兼容主流框架(Ultralytics 等) ✅ 实际应用价值高 可用于环保、水利、城市管理等地方的智能监管系统

深度学习目标检测算法YOLOV8模型训练 无人机钓鱼检测数据集 识别检测钓鱼者的检测识别 无人机河道河边垂钓检测数据集的训练及应用
你提供的 河道垂钓检测数据集 是合使用 YOLOv8 进行目标检测的场景:

  • 数据清晰(无人机采集)
  • 标注完整(单类别“fishing”)
  • 已划分训练集(941张)和验证/测试集(235张)
  • 适合部署在 河道监控、禁钓区域智能识别、城市管理 等场景

下面我将为你提供从 环境搭建 → 数据准备 → YOLOv8 训练 → 推理 → 评估 → 模型导出 的完整流程。


✅ 一、环境搭建(CUDA + Anaconda + Python + 依赖)

1. 检查 CUDA 驱动

nvidia-smi
  • 确保 GPU 正常工作
  • 推荐 CUDA 11.8 或 12.1

2. 安装 Anaconda

下载地址:https://www.anaconda.com/products/distribution


3. 创建 Python 虚拟环境

# 创建环境conda create -n fishing_detection python=3.9# 激活环境conda activate fishing_detection

4. 安装依赖项

# 安装 PyTorch(以 CUDA 11.8 为例)pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 Ultralytics YOLOv8pip install ultralytics# 安装其他工具pip install opencv-python numpy matplotlib tqdm pillow seaborn pandas

✅ 验证安装:

import torchprint(torch.__version__)print(torch.cuda.is_available()) # 应输出 True

📂 二、数据集结构(你已划分好)

建议组织如下:

fishing_dataset/├── images/│ ├── train/ # 941 张│ └── val/ # 235 张├── labels/│ ├── train/ # 对应 .txt 标注文件│ └── val/├── data.yaml # 需创建

⚠️ 确保 .txt 文件格式为 YOLO 格式:class_id x_center y_center width height(归一化坐标)


📄 三、创建 data.yaml 文件

# data.yamltrain: fishing_dataset/images/trainval: fishing_dataset/images/valnc: 1names: [\'fishing\']

nc: 1 表示只有一个类别
✅ 路径根据你的实际路径调整(可使用绝对路径或相对路径)


🚀 四、训练代码(train.py)—— 使用 YOLOv8 官方预训练模型

# train.pyfrom ultralytics import YOLOdef train_fishing_model(): # 加载官方预训练模型(推荐使用 yolov8s 或 yolov8m) model = YOLO(\'yolov8s.pt\') # 可换为 \'yolov8m.pt\' 获取更高精度 # 开始训练 results = model.train( data=\'data.yaml\',  # 指向 data.yaml epochs=300,  # 小数据集建议 200~300 轮 imgsz=640,  # 可尝试 1280 提升小目标识别能力 batch=16,# 根据显存调整(24G 显存可用 32) name=\'fishing_yolov8s_640\', project=\'runs/fishing\', device=0,# 使用 GPU workers=4, optimizer=\'AdamW\', lr0=0.001, patience=50,  # 早停:50 轮无提升则停止 augment=True,  # 启用数据增强 mosaic=1.0,  # Mosaic 增强 mixup=0.2,  # MixUp 增强 copy_paste=0.3, # Copy-Paste 增强(对小样本非常有效) close_mosaic=25,  # 最后几轮关闭 Mosaic cache=\'disk\',  # 缓存图像到磁盘加速训练 fraction=1.0,  # 使用全部数据 val=True # 每轮都验证 ) print(\"✅ 训练完成!\") return resultsif __name__ == \"__main__\": train_fishing_model()

📌 模型保存路径:runs/fishing/fishing_yolov8s_640/weights/best.pt


🔍 五、推理代码(infer.py)—— 检测钓鱼行为

# infer.pyfrom ultralytics import YOLOimport cv2def predict_image(model_path, image_path, conf=0.4, imgsz=640): \"\"\" 单张图像预测 \"\"\" model = YOLO(model_path) results = model(image_path, conf=conf, imgsz=imgsz) for r in results: im_array = r.plot() # 绘制边界框和标签 im = cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR) cv2.imshow(\'Fishing Detection\', im) cv2.waitKey(0) cv2.imwrite(\'result_fishing.jpg\', im) return resultsdef predict_video(model_path, video_path=0, conf=0.4, imgsz=640): \"\"\" 视频流检测(可用于河道监控) \"\"\" model = YOLO(model_path) cap = cv2.VideoCapture(video_path) # 0 表示本地摄像头 while cap.isOpened(): ret, frame = cap.read() if not ret: break results = model(frame, conf=conf, imgsz=imgsz) annotated_frame = results[0].plot() cv2.imshow(\'Fishing Detection - Live\', annotated_frame) if cv2.waitKey(1) & 0xFF == ord(\'q\'): break cap.release() cv2.destroyAllWindows()if __name__ == \"__main__\": model_path = \'runs/fishing/fishing_yolov8s_640/weights/best.pt\' # 图像预测 predict_image(model_path, \'test.jpg\') # 视频预测(如无人机视频流) # predict_video(model_path, \'drone_video.mp4\') # 或 0 调用摄像头

📊 六、评估代码(evaluate.py)—— 获取 mAP 等指标

# evaluate.pyfrom ultralytics import YOLOdef evaluate_model(): model = YOLO(\'runs/fishing/fishing_yolov8s_640/weights/best.pt\') metrics = model.val( data=\'data.yaml\', split=\'val\', batch=16, imgsz=640, device=0, save_json=True, conf=0.001 ) print(f\"mAP@50: {metrics.box.map50:.4f}\") print(f\"mAP@50-95: {metrics.box.map:.4f}\") # 你提到 YOLOv8s 达到 0.57,说明效果不错! print(f\"Precision: {metrics.box.p:.4f}\") print(f\"Recall: {metrics.box.r:.4f}\") print(f\"F1-score: {metrics.box.f1.mean():.4f}\") return metricsif __name__ == \"__main__\": evaluate_model()

以上文字及代码仅供参考学习使用。