Ultralytics 非洲野生动物数据集实战:YOLO26 目标检测训练、自动下载与 YAML 配置详解
【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics
本文围绕 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 函数中。其核心流程为:
- 解析 YAML 并校验必填键(
train、val必须存在,names或nc二选一); - 将
path解析为数据集根目录,若不存在且为相对路径,则回退到全局DATASETS_DIR下拼接(utils/init.py 中DATASETS_DIR = Path(SETTINGS["datasets_dir"]),可通过设置文件修改); - 检查
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: 640、batch: 16、patience: 100(早停)、optimizer: auto、lr0: 0.01、warmup_epochs: 3.0、close_mosaic: 10(最后 10 个 epoch 关闭 mosaic 增强)等。由于该数据集仅 1,052 张训练图、4 个类别,属小数据集微调场景,使用预训练权重(yolo26n.pt)是文档明确推荐的起点。 - 从源码结构看,
train还支持传入多个数据集做联合微调,例如仓库中 engine/model.py 与 engine/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 自定义数据集工作流的理想样本。
【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考