使用深度学习目标检测算法Yolov8训练 草原无人机无人机航拍牛羊马动物检测数据集建立识别深度学习无人机航拍动物检测系统

使用深度学习目标检测算法Yolov8训练 草原无人机无人机航拍牛羊马动物检测数据集建立识别深度学习无人机航拍动物检测系统
以下文字及代码仅供参考。学习。


无人机航拍牛羊马动物检测数据集
在这里插入图片描述

数据类型:原始图片+YOLO格式标签
2355张 图片分辨率:640*640
采集高度:10~60m
采集角度:30°~90°
检测类别:绵羊、牛、海豹、骆驼、驴、斑马、鳄鱼、大象、鹿、马
在这里插入图片描述

无人机航拍动物检测数据集, 2355 张 640×640 分辨率图像,以及对应的 YOLO 格式标签文件,目标类别共 10 类动物
在这里插入图片描述

绵羊 Sheep
牛 Cow
海豹 Seal
骆驼 Camel
驴 Donkey
斑马 Zebra
鳄鱼 Crocodile
大象 Elephant
鹿 Deer
马 Horse

如何使用 YOLOv8(Ultralytics) 对这个数据集进行 训练、推理、评估和部署全流程操作,并附上完整代码。仅供参考
在这里插入图片描述


📁 一、项目结构要求

确保你的数据格式如下:

animal_dataset/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
├── labels/
│   ├── train/
│   ├── val/
│   └── test/
└── data.yaml

🧾 二、数据准备与划分

✅ 数据格式说明

  • 每张图片对应一个 .txt 文件。
  • 每个 .txt 文件中一行表示一个目标框,格式为:
    class_id xc yc w h
    

例如:

0 0.5 0.5 0.2 0.2  # 表示一只绵羊在图像中心,宽高为图像的20%

✅ 数据划分脚本(train/val/test)

import os
import random
import shutil

image_dir = 'path/to/images'
label_dir = 'path/to/labels'

images = [f for f in os.listdir(image_dir) if f.endswith('.jpg')]
random.shuffle(images)

# 创建目录结构
for split in ['train', 'val', 'test']:
    os.makedirs(f'animal_dataset/images/{split}', exist_ok=True)
    os.makedirs(f'animal_dataset/labels/{split}', exist_ok=True)

# 划分比例:70% train, 15% val, 15% test
train_split = int(0.7 * len(images))
val_split = int(0.85 * len(images))

for i, img_file in enumerate(images):
    label_file = img_file.replace('.jpg', '.txt')

    src_img = os.path.join(image_dir, img_file)
    src_lbl = os.path.join(label_dir, label_file)

    if i < train_split:
        dst_img = os.path.join("animal_dataset/images/train", img_file)
        dst_lbl = os.path.join("animal_dataset/labels/train", label_file)
    elif i < val_split:
        dst_img = os.path.join("animal_dataset/images/val", img_file)
        dst_lbl = os.path.join("animal_dataset/labels/val", label_file)
    else:
        dst_img = os.path.join("animal_dataset/images/test", img_file)
        dst_lbl = os.path.join("animal_dataset/labels/test", label_file)

    shutil.copy(src_img, dst_img)
    shutil.copy(src_lbl, dst_lbl)

📄 三、配置文件 data.yaml

创建 data.yaml 文件内容如下:

train: animal_dataset/images/train
val: animal_dataset/images/val
test: animal_dataset/images/test

nc: 10
names: ['Sheep', 'Cow', 'Seal', 'Camel', 'Donkey', 'Zebra', 'Crocodile', 'Elephant', 'Deer', 'Horse']

🔧 四、环境搭建

安装 Ultralytics YOLOv8:

pip install ultralytics

🚀 五、模型训练(YOLOv8)

使用预训练模型进行微调(推荐)

from ultralytics import YOLO

# 加载预训练模型(例如 yolov8s.pt)
model = YOLO("yolov8s.pt")

# 开始训练
results = model.train(
    data="data.yaml",
    epochs=150,
    imgsz=640,
    batch=32,
    name="animal_detector",
    save_period=5,
    patience=30,
    verbose=True,
    hsv_h=0.015,
    hsv_s=0.7,
    hsv_v=0.4,
    degrees=10,
    translate=0.1,
    scale=0.2,
    shear=0.2,
    perspective=0.0001,
    mosaic=1.0,
    mixup=0.2
)

✅ 建议使用 GPU 训练,可设置 device='cuda:0' 或多卡训练。


🧪 六、模型推理(单图 & 批量)

单图推理:

model = YOLO("runs/detect/animal_detector/weights/best.pt")
img_path = "path/to/test_image.jpg"
results = model.predict(source=img_path, show=False, save=True)

批量推理整个文件夹:

folder_path = "animal_dataset/images/test"
results = model.predict(source=folder_path, save=True)

📊 七、性能评估

在验证集上评估 mAP 等指标:

metrics = model.val()
print("mAP@0.5-0.95:", metrics.box.map)
print("mAP@0.5:", metrics.box.map50)
print("Recall:", metrics.box.recall.mean())

🧠 八、优化建议(提升精度)

  1. 增加数据增强(已加入训练参数中):

    results = model.train(
        ...
        hsv_h=0.015,
        hsv_s=0.7,
        hsv_v=0.4,
        degrees=10,
        translate=0.1,
        scale=0.2,
        shear=0.2,
        perspective=0.0001,
        mosaic=1.0,
        mixup=0.2
    )
    
  2. 调整锚框尺寸(适合大目标):

    # 在 train.py 中设置自定义 anchor
    anchors = [[10,13, 16,30, 33,23],  # layer 0
               [30,61, 62,45, 59,119], # layer 1
               [116,90, 156,198, 373,326]] # layer 2
    
  3. 使用更强大的 backbone

    model = YOLO("yolov8m.pt")  # 改用更大模型如 yolov8m / yolov8l
    

📁 九、导出模型(ONNX、TensorRT等)

model.export(format="onnx")     # 导出 ONNX 模型
model.export(format="engine")   # 导出 TensorRT 引擎(需 CUDA)

🧩 十、完整训练命令汇总(CLI 版本)

yolo detect train data=data.yaml model=yolov8s.pt epochs=150 imgsz=640 batch=32

✅ 总结

步骤工具/方法
数据处理Python 脚本(XML转TXT)
数据划分自定义脚本或 sklearn.model_selection.train_test_split
模型训练YOLOv8 Detect 模型
推理model.predict()
评估model.val()
部署model.export()

以上文字及代码仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值