首页
/ Ultralytics 非洲野生动物数据集实战:YOLO26 目标检测训练、自动下载与 YAML 配置详解

Ultralytics 非洲野生动物数据集实战:YOLO26 目标检测训练、自动下载与 YAML 配置详解

2026-09-04 20:48:45作者:裘旻烁

本文围绕 Ultralytics 仓库中的 African Wildlife(非洲野生动物)目标检测数据集展开,完整覆盖其数据构成、YAML 配置文件、Python/CLI 训练与推理流程,并结合源码剖析“首次训练自动下载(~100 MB)”背后的实现机制,帮助读者零准备地训练一个针对非洲四大家畜/野生动物的检测模型。

数据集概览与结构

African Wildlife Dataset 是 Ultralytics 提供的一个目标检测数据集,包含 1,504 张图片,覆盖 4 个类别——水牛(buffalo)、大象(elephant)、犀牛(rhino)、斑马(zebra),这些物种常见于南非的自然保护区。数据集已预先划分好三个子集:

子集 图片数量 说明
训练集(train) 1,052 张 每张均带对应标注
验证集(val) 225 张 每张均带对应标注
测试集(test) 227 张 每张均带对应标注

关键特性是自动下载:数据集约 100 MB,首次启动训练时会自动下载并解压,无需手动下载或预处理。这使得它成为一个紧凑、开箱即用的基准数据集,可用于野生动物监测、保护研究和生态学研究中的计算机视觉模型训练。

典型应用场景

该数据集支撑的目标检测应用包括:

  • 野生动物保护——检测并统计水牛、大象、犀牛和斑马,为自然保护区的种群监测(参见 Ultralytics Solutions)提供支撑;
  • 生态研究——研究不同栖息地中的物种分布与行为;
  • 反盗猎监控——在覆盖大面积保护区的相机陷阱或无人机影像中标记动物;
  • 教育与原型开发——作为只有 4 个类别的小型数据集,非常适合学习模型训练预测的完整流程。

数据集 YAML 配置

YOLO 的数据集由一个 YAML 文件定义,其中包含路径、类别及其他训练所需信息。African Wildlife 对应的配置文件为 african-wildlife.yaml,其完整内容如下:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# African Wildlife dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/african-wildlife
# Example usage: yolo train data=african-wildlife.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── african-wildlife ← downloads here (100 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: african-wildlife # dataset root dir
train: images/train # train images (relative to 'path') 1052 images
val: images/val # val images (relative to 'path') 225 images
test: images/test # test images (relative to 'path') 227 images

# Classes
names:
  0: buffalo
  1: elephant
  2: rhino
  3: zebra

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/african-wildlife.zip

逐项解读各配置项:

  • path:数据集根目录名 african-wildlife。下载后数据会位于全局数据集目录下(由设置项 datasets_dir 决定,见下文源码分析),根目录即 <datasets_dir>/african-wildlife/
  • train / val / test:相对于 path 的图片目录,分别对应 1,052、225、227 张图片。YOLO 格式还支持以 .txt 文件列表或路径列表的方式指定这些子集。
  • names:类别字典,0 为 buffalo,1 为 elephant,2 为 rhino,3 为 zebra。
  • download:可选字段,指向一个 .zip 下载地址。当本地找不到数据集图片时,框架会自动请求该 URL 完成下载——这正是“自动下载”功能的来源。

自动下载的源码实现

文档宣称“首次训练自动下载约 100 MB 数据”,这一行为的实现位于 check_det_dataset 函数中。其核心流程为:

  1. 解析 YAML 并校验必填键(trainval 必须存在,namesnc 二选一);
  2. path 解析为数据集根目录,若不存在且为相对路径,则回退到全局 DATASETS_DIR 下拼接(utils/init.pyDATASETS_DIR = Path(SETTINGS["datasets_dir"]),可通过设置文件修改);
  3. 检查 val(或指定 split)路径是否存在;若不存在且 YAML 中配置了 download,则按字段形式分派下载逻辑:以 http 开头且以 .zip 结尾的 URL 走 safe_download(下载后自动解压到 DATASETS_DIR 并删除压缩包);以 bash 开头的走子进程执行;其余按 Python 脚本执行。

对于 African Wildlife,download 字段即为一个 .../african-wildlife.zip 的 URL,因此首次训练时会自动走 safe_download 分支完成下载与解压。下载成功后,后续训练会直接复用本地数据,不再重复下载。

训练:Python 与 CLI 两种调用方式

使用预训练的 YOLO26n 模型在 African Wildlife 数据集上训练 100 个 epoch、图像尺寸 640,可参考以下示例。完整训练参数列表见训练文档

Python

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="african-wildlife.yaml", epochs=100, imgsz=640)

CLI

# Start training from a pretrained *.pt model
yolo detect train data=african-wildlife.yaml model=yolo26n.pt epochs=100 imgsz=640

补充几点来自源码的实践信息:

  • data="african-wildlife.yaml" 可以直接写裸名称:check_det_dataset 会尝试将 coco8 这类裸名称解析为 coco8.yaml(见 utils.py 中的名称补全逻辑),因此直接传 "african-wildlife" 亦可命中随仓库内置的配置文件。
  • 默认超参由 default.yaml 提供,与本示例相关的包括:epochs: 100(默认即为 100 epoch)、imgsz: 640batch: 16patience: 100(早停)、optimizer: autolr0: 0.01warmup_epochs: 3.0close_mosaic: 10(最后 10 个 epoch 关闭 mosaic 增强)等。由于该数据集仅 1,052 张训练图、4 个类别,属小数据集微调场景,使用预训练权重(yolo26n.pt)是文档明确推荐的起点。
  • 从源码结构看,train 还支持传入多个数据集做联合微调,例如仓库中 engine/model.pyengine/trainer.py 的示例:model.train(data=["coco8.yaml", "african-wildlife.yaml"], epochs=3)

Mosaic 增强与训练图

数据集样例部分展示了一个经 Mosaic 处理后的训练 batch:Mosaic 是一种将多张图片拼接为一张的训练技术,通过丰富 batch 内的多样性,提升模型对不同物体尺寸、长宽比和背景上下文的泛化能力。在 default.yaml 中,mosaic: 1.0 表示以 100% 概率启用 Mosaic 拼接,配合 close_mosaic: 10 在训练末期关闭它,让模型见到更真实的单图分布。理解这一细节有助于解释为何训练日志中会出现“四宫格”样式的输入图。

推理:使用微调后的模型

训练完成后,可用微调得到的权重对新图片执行推理

Python

from ultralytics import YOLO

# Load a model
model = YOLO("path/to/best.pt")  # load an African wildlife fine-tuned model

# Inference using the model
results = model.predict("https://ultralytics.com/assets/african-wildlife-sample.jpg")

CLI

# Start prediction with a finetuned *.pt model
yolo detect predict model='path/to/best.pt' imgsz=640 source="https://ultralytics.com/assets/african-wildlife-sample.jpg"

其中 source 既可以是本地图片/视频路径,也可以是如示例所示的远程图片 URL;best.pt 为训练过程中验证集表现最优的权重文件。

常见问题(FAQ)

Q1:African Wildlife 数据集是什么?能用于什么项目? 它是一个包含 1,504 张图片、4 个动物类别(buffalo、elephant、rhino、zebra)的目标检测数据集,图像采集自南非自然保护区。可训练并评估识别非洲野生动物的模型,支撑野生动物保护、生态研究与保护区监测,也是学生和研究者学习计算机视觉的便捷资源。

Q2:数据集有多少图片和类别? 共 1,504 张图片、4 个类别:buffalo、elephant、rhino、zebra。已预分为 1,052 张训练、225 张验证、227 张测试图片,首次训练时自动下载(约 100 MB)。

Q3:如何用 YOLO26 训练该数据集? 使用 african-wildlife.yaml 配置文件,按上文“训练”一节的 Python 或 CLI 示例,以 yolo26n.pt 为起点训练 100 个 epoch、imgsz=640 即可;更多参数参见训练文档

Q4:YAML 配置文件在哪里? 位于仓库内 ultralytics/cfg/datasets/african-wildlife.yaml,定义了路径、类别等训练所需的全部信息。

Q5:数据集的许可证是什么? 原始数据集未声明许可证(license: Not specified)。它最初由 Bianca Ferreira 发布,Ultralytics 团队对其做了内部更新与适配,使其能无缝用于 Ultralytics YOLO 模型。用于研究时请按下一节的 BibTeX 条目引用。

引用、许可与致谢

本数据集感谢原作者 Bianca Ferreira 向社区开放原始数据;Ultralytics 团队对其进行了更新与适配。如在研究中使用了该数据集,建议引用以下 BibTeX 条目:

@dataset{Ferreira_African_Wildlife_Ultralytics_Adaptation_2024,
    author  = {Ferreira, Bianca},
    title   = {African Wildlife Detection Dataset (Ultralytics YOLO Adaptation)},
    url     = {https://docs.ultralytics.com/datasets/detect/african-wildlife},
    note    = {Original dataset by Bianca Ferreira; adapted for Ultralytics YOLO by Glenn Jocher and Muhammad Rizwan Munawar},
    license = {Not specified},
    version = {1.0.0},
    year    = {2024}
}

小结

African Wildlife 数据集的价值在于“小而全”:1,504 张图、4 个类别、预划分三子集、YAML 内置且支持自动下载,配合 yolo26n.pt 预训练权重,一条命令即可完成从下载到训练、推理的完整闭环。其实现链路——model.train(data=...)check_det_dataset 校验与按需下载 → 检测训练器——均可在仓库源码中逐层核对,是学习和验证 YOLO 自定义数据集工作流的理想样本。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
982
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384