使用深度学习目标检测算法Yolov8训练 草原无人机无人机航拍牛羊马动物检测数据集建立识别深度学习无人机航拍动物检测系统
以下文字及代码仅供参考。学习。
文章目录
- 使用深度学习目标检测算法Yolov8训练 草原无人机无人机航拍牛羊马动物检测数据集建立识别深度学习无人机航拍动物检测系统
- 📁 一、项目结构要求
- 🧾 二、数据准备与划分
- ✅ 数据格式说明
- ✅ 数据划分脚本(train/val/test)
- 📄 三、配置文件 `data.yaml`
- 🔧 四、环境搭建
- 🚀 五、模型训练(YOLOv8)
- 使用预训练模型进行微调(推荐)
- 🧪 六、模型推理(单图 & 批量)
- 单图推理:
- 批量推理整个文件夹:
- 📊 七、性能评估
- 🧠 八、优化建议(提升精度)
- 📁 九、导出模型(ONNX、TensorRT等)
- 🧩 十、完整训练命令汇总(CLI 版本)
- ✅ 总结
无人机航拍牛羊马动物检测数据集
数据类型:原始图片+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)
importosimportrandomimportshutil image_dir='path/to/images'label_dir='path/to/labels'images=[fforfinos.listdir(image_dir)iff.endswith('.jpg')]random.shuffle(images)# 创建目录结构forsplitin['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% testtrain_split=int(0.7*len(images))val_split=int(0.85*len(images))fori,img_fileinenumerate(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)ifi<train_split:dst_img=os.path.join("animal_dataset/images/train",img_file)dst_lbl=os.path.join("animal_dataset/labels/train",label_file)elifi<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/trainval:animal_dataset/images/valtest:animal_dataset/images/testnc:10names:['Sheep','Cow','Seal','Camel','Donkey','Zebra','Crocodile','Elephant','Deer','Horse']🔧 四、环境搭建
安装 Ultralytics YOLOv8:
pipinstallultralytics🚀 五、模型训练(YOLOv8)
使用预训练模型进行微调(推荐)
fromultralyticsimportYOLO# 加载预训练模型(例如 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())🧠 八、优化建议(提升精度)
增加数据增强(已加入训练参数中):
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)调整锚框尺寸(适合大目标):
# 在 train.py 中设置自定义 anchoranchors=[[10,13,16,30,33,23],# layer 0[30,61,62,45,59,119],# layer 1[116,90,156,198,373,326]]# layer 2使用更强大的 backbone:
model=YOLO("yolov8m.pt")# 改用更大模型如 yolov8m / yolov8l
📁 九、导出模型(ONNX、TensorRT等)
model.export(format="onnx")# 导出 ONNX 模型model.export(format="engine")# 导出 TensorRT 引擎(需 CUDA)🧩 十、完整训练命令汇总(CLI 版本)
yolo detect traindata=data.yamlmodel=yolov8s.ptepochs=150imgsz=640batch=32✅ 总结
| 步骤 | 工具/方法 |
|---|---|
| 数据处理 | Python 脚本(XML转TXT) |
| 数据划分 | 自定义脚本或sklearn.model_selection.train_test_split |
| 模型训练 | YOLOv8 Detect 模型 |
| 推理 | model.predict() |
| 评估 | model.val() |
| 部署 | model.export() |
以上文字及代码仅供参考。