
Ultralytics YOLO 图像分类实战ImageWoof 细粒度数据集解析与训练全流程【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文以 Ultralytics 官方文档中的 ImageWoof 数据集页面为主线完整讲解这一 10 个犬种、12,954 张图片的细粒度分类基准的构成、目录结构与三种尺寸变体并结合仓库源码说明dataimagewoof这类内置数据集名的自动下载、目录解析机制以及yolo26n-cls.pt分类模型的 Python/CLI 训练实操帮助你掌握从数据集获取到模型训练验证的完整闭环。一、ImageWoof 是什么一个“看起来都差不多”的 ImageNet 子集ImageWoof 是由 fast.ai 团队创建的 ImageNet 子集专门挑选了 10 个外观高度相似的犬种如 Beagle、Shih-Tzu、Golden retriever作为比常规分类更难挑战的细粒度图像分类基准。它共包含 12,954 张彩色图像其中 9,025 张用于训练、3,929 张用于验证全部为彩色图像。与 ImageNette 等“类别间差异明显”的 ImageNet 子集不同ImageWoof 的 10 个类别彼此之间差异非常细微——比如 Border terrier 与 Australian terrier、Samoyed 与 Old English sheepdog 这类在轮廓、毛色上都接近的犬种。因此它考察的不是“这是不是一只狗”而是“这是哪一种狗”迫使模型学习更精细的视觉特征而非依赖粗粒度的物体轮廓。其许可证为 Research-Only仅研究用途继承自 ImageNet 的授权条款详见文档 front-matter 的 license 声明。10 个犬种与预定义数据划分数据集自带预定义的 train/val 划分每个犬种独立存放在自己的子文件夹中划分图片数类别数Train9,02510Validation3,9291010 个犬种为Australian terrier澳大利亚梗、Border terrier边境梗、Samoyed萨摩耶、Beagle比格犬、Shih-Tzu西施犬、English foxhound英国猎狐犬、Rhodesian ridgeback罗得西亚脊背犬、Dingo澳洲野犬、Golden retriever金毛寻回犬、Old English sheepdog英国古代牧羊犬。由于全部类别都是犬种这一划分天然就是细粒度分类测试——区分视觉上极为相似的类别而不是全量 ImageNet 那种宽泛的物体识别。二、目录结构Ultralytics 分类训练所期望的标准布局ImageWoof 的文件夹组织完全遵循 Ultralytics 图像分类任务要求的“划分目录 每类一子目录”结构。该结构在 分类数据集总览中有明确规范imagewoof/ |-- train/ | |-- Australian_terrier/ | | |-- *.jpg | |-- Border_terrier/ | |-- Samoyed/ | |-- Beagle/ | |-- Shih_Tzu/ | |-- English_foxhound/ | |-- Rhodesian_ridgeback/ | |-- Dingo/ | |-- Golden_retriever/ | |-- Old_English_sheepdog/ |-- val/ | |-- Australian_terrier/ | |-- ...同样 10 个子目录要点train/与val/为必备划分test/可选每个划分目录下每个类别对应一个以其命名的子目录目录内直接存放该类别的所有图片图片文件名需唯一常见格式JPEG、PNG 等均可。从源码结构看这套布局不是“约定俗成”而是被 check_cls_dataset() 严格依赖的函数会依次检查data_dir / train、data_dir / val兼容validation、valid命名与data_dir / test并通过names dict(enumerate(sorted(x.name for x in (data_dir / train).iterdir() if x.is_dir())))按训练集子目录名的排序结果生成类别名到索引的映射——也就是说ImageWoof 的 10 个类别索引顺序由犬种目录名的字典序决定训练与验证阶段会自动保持一致。若目录中缺少train/划分但存在散落的图片该函数还会调用 split_classify_dataset() 按 8:2 比例自动切分这也解释了为什么你手动准备的自定义数据集只要“一个类别一个文件夹”也能直接投入训练。三、三种尺寸变体按算力预算选择数据集ImageWoof 提供三种尺寸以适配不同的研究需求与算力预算变体数据集参数图片规格适用场景全尺寸imagewoof原始分辨率最终训练与性能基准测试中等尺寸imagewoof320最长边 320 像素更快训练且不显著牺牲精度小尺寸imagewoof160最长边 160 像素快速原型验证与实验迭代使用方法只需在data参数中替换数据集名例如from ultralytics import YOLO model YOLO(yolo26n-cls.pt) # 加载预训练模型训练推荐 # 中等尺寸数据集 model.train(dataimagewoof320, epochs100, imgsz224) # 小尺寸数据集 model.train(dataimagewoof160, epochs100, imgsz224)# 使用预训练模型在中等尺寸数据集上训练 yolo classify train modelyolo26n-cls.pt dataimagewoof320 epochs100 imgsz224需要说明的是图片分辨率越小分类精度大概率会下降犬种间的细微毛发、体态特征在 160px 下更难分辨但它在模型开发早期是快速迭代、调通流水线的极佳选择。推荐的开发节奏是先用imagewoof160验证代码与超参流程再用imagewoof320做中间验证最后用全尺寸imagewoof产出最终模型。四、训练实操Python 与 CLI 两种方式在 ImageWoof 上训练 100 个 epoch、图像尺寸 224x224 的完整示例如下。完整训练参数列表见 Training 文档。Pythonfrom ultralytics import YOLO # 加载模型 model YOLO(yolo26n-cls.pt) # 加载预训练模型训练推荐 # 训练模型 results model.train(dataimagewoof, epochs100, imgsz224)CLI# 从预训练 *.pt 模型开始训练 yolo classify train dataimagewoof modelyolo26n-cls.pt epochs100 imgsz224从源码结构看这条命令的底层链路是model.train()最终进入 ClassificationTrainer。其中有几个值得注意的实现细节默认图像尺寸为 224ClassificationTrainer.__init__中显式写了if overrides.get(imgsz) is None: overrides[imgsz] 224见 train.py这与文档示例中imgsz224的写法一致也符合 ResNet 系分类骨干网络的标准输入类别数自动对齐get_model()使用self.data[nc]构建ClassificationModel并在set_model_attributes()中把数据集解析出的names写回self.model.names——因此 ImageWoof 的 10 个犬种名无需手动指定由check_cls_dataset()从目录结构自动得出训练/验证数据管线build_dataset()按 mode 构造ClassificationDatasetaugmentmode train即仅训练集启用数据增强get_dataloader()还会过滤掉类别索引超出nc的样本以防 CUDA 断言错误这为“自定义数据集与预训练模型类别数不一致”的场景提供了保护。此外分类任务还支持直接使用 torchvision 模型名作为model参数setup_model()会检查模型名是否存在于torchvision.models中若是则以IMAGENET1K_V1权重初始化train.py并用reshape_outputs()将输出头重塑为 ImageWoof 的 10 类——这意味着你不仅可以用yolo26n-cls.pt还可以用 ImageNet 预训练的 torchvision 模型在 ImageWoof 上做迁移学习实验。内置数据集名的自动下载机制文档示例直接写dataimagewoof而不给路径这背后的机制在 check_cls_dataset() 中可以确认若data是http(s)://开头的 URL直接下载解压到数据集目录若传入的是纯名称如imagewoof、imagewoof320、imagewoof160先在本地数据集目录默认由 settings 决定中查找找不到则发出警告并执行download(f{ASSETS_URL}/{dataset}.zip, ...)自动下载缓存唯一的特例是imagenet全量 144GB 数据集它会改为执行 get_imagenet.sh 脚本下载。因此首次运行dataimagewoof时会看到“Dataset not found ... attempting download”日志下载成功后图片被缓存后续运行不再联网。五、Noisy Labels 版本模拟真实世界的标签噪声官方文档指出ImageWoof 还提供带噪声标签noisy labels的版本模拟标签并不总是可靠的现实场景。这一版本的价值在于鲁棒性训练模型在含错标数据上学习能够发展出对歧义或错标样本更强的抗干扰能力更贴近真实应用实际部署中人工标注错误、标注边界模糊例如一只混种犬的“标准答案”本身就有争议是常态噪声标签训练让模型的泛化表现更可信评估上限探测在标签本身有噪声的验证集上指标天花板会降低这提醒你不要盲目追求 100% 精度而应关注模型是否学到了合理的类别区分。六、典型应用场景ImageWoof 被广泛用于训练与评估“类别间差异小”场景下的深度学习模型其挑战性正源于犬种间的细微差别对模型性能与泛化能力提出了更高要求。它尤其适合细粒度类别上的分类性能基准测试测试模型对“长得像”的类别的区分鲁棒性开发能捕捉细微视觉差异的算法例如结合注意力、多尺度特征的结构;评估从通用领域ImageNet 预训练到特定领域犬种识别的迁移学习效果。从源码结构看ImageWoof 与仓库测试体系也是配套的ClassificationTrainer 与 ClassificationValidator 的官方示例均使用更小的imagenet10数据集做快速回归验证见 ImageNet10 文档而 ImageWoof 则承担“真实规模下的完整训练验证”角色——两者组合起来先跑通 24 张图片的 CI 级检查再上 12,954 张图片做正式实验是官方推荐的两段式工作流。七、样本图像与细粒度难点ImageWoof 包含各种犬种的彩色图片为图像分类任务提供了高难度样本。数据集中的图像充分展示了不同犬种之间的细微差异与高度相似性金毛寻回犬与罗得西亚脊背犬毛色相近、萨摩耶与英国古代牧羊犬的毛发质感类似正是这种“差之毫厘”的类别边界构成了细粒度识别的核心难度也是该数据集持续被用作深度分类模型能力基准的原因。八、引用与致谢如果你的研究或开发工作使用了 ImageWoof 数据集请通过链接 fast.ai 的官方 ImageWoof 数据集仓库github.com/fastai/imagenette见原文档 front-matter 中的 creator 字段予以致谢。Ultralytics 感谢 fast.ai 团队创建并维护 ImageWoof 这一宝贵的机器学习与计算机视觉研究资源也感谢 ImageNet 团队提供底层图像来源。数据集图像继承 ImageNet 的 Research-Only 授权商用前请自行确认授权范围。九、常见问题FAQImageWoof 在 Ultralytics 中是什么它是 ImageNet 的一个挑战性子集聚焦 10 个犬种含 12,954 张图片9,025 训练 / 3,929 验证由 fast.ai 创建以挑战图像分类模型的极限。提供全尺寸、320px、160px 三种分辨率版本还包含噪声标签版本非常适合开发先进的深度学习分类模型。ImageWoof 有多少图片和犬种共 12,954 张图片——9,025 张训练、3,929 张验证——覆盖 10 个犬种Australian terrier、Border terrier、Samoyed、Beagle、Shih-Tzu、English foxhound、Rhodesian ridgeback、Dingo、Golden retriever、Old English sheepdog。每个犬种独立存放于自己的文件夹符合 Ultralytics 期望的标准分类目录布局。如何用 YOLO 在 ImageWoof 上训练模型对 100 个 epoch、224x224 图像尺寸使用本文第四节的 Pythonmodel.train(dataimagewoof, epochs100, imgsz224)或 CLIyolo classify train dataimagewoof modelyolo26n-cls.pt epochs100 imgsz224示例即可更多训练参数见 Training 文档。ImageWoof 有哪些版本三个尺寸全尺寸imagewoof最终训练与基准测试、中等imagewoof320最长边 320px更快训练、小尺寸imagewoof160最长边 160px快速原型。替换data参数即可切换更小的图片精度可能更低但适合快速迭代。噪声标签版本对训练有什么帮助它模拟标签并非总准确的真实场景。用带噪数据训练可提升分类模型的鲁棒性与泛化能力使其能有效处理实际应用中常见的歧义或错标数据。使用 ImageWoof 的主要挑战是什么核心挑战在于 10 个犬种之间的细微差别类别高度相关区分它们需要更先进、更精细的图像分类模型。这使得 ImageWoof 成为检验深度学习模型能力与改进效果的理想基准。【免费下载链接】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),仅供参考