Ultralytics YOLO 图像分类数据集完整指南:目录结构、内置数据集自动下载与训练实操

发布时间:2026/9/7 10:01:50

Ultralytics YOLO 图像分类数据集完整指南:目录结构、内置数据集自动下载与训练实操
Ultralytics YOLO 图像分类数据集完整指南目录结构、内置数据集自动下载与训练实操【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics图像分类classify是 Ultralytics YOLO 系列模型支持的核心任务之一但其数据集组织方式与检测/分割任务截然不同。本文基于官方文档 Image Classification Datasets Overview 并结合仓库源码完整讲解分类数据集的目录结构规范、训练/评估的 Python 与 CLI 用法、内置数据集的自动下载机制以及check_cls_dataset、ClassificationDataset等关键源码如何解析、校验和加载你的数据集帮助你在搭建自定义分类数据集时一次做对并理解训练参数背后的实现逻辑。分类任务的目录结构规范对 Ultralytics YOLO 分类任务而言数据集必须采用按划分split组织的目录结构在数据集根目录root下至少需要train训练集和val验证集可选两个目录可选test目录用于测试阶段。每个划分目录内部再按类别划分每个类别对应一个以其名称命名的子目录子目录中存放该类别的全部图片。图片文件必须命名唯一并使用 JPEG、PNG 等通用格式。以 CIFAR-10 数据集为例标准目录结构如下cifar-10-/ | |-- train/ | |-- airplane/ | | |-- 10008_airplane.png | | |-- 10009_airplane.png | | |-- ... | | | |-- automobile/ | | |-- 1000_automobile.png | | |-- 1001_automobile.png | | |-- ... | | | |-- bird/ | | |-- 10014_bird.png | | |-- 10015_bird.png | | |-- ... | | | |-- ... | |-- test/ | |-- airplane/ | | |-- 10_airplane.png | | |-- 11_airplane.png | | |-- ... | | | |-- automobile/ | | |-- 100_automobile.png | | |-- 101_automobile.png | | |-- ... | | | |-- bird/ | | |-- 1000_bird.png | | |-- 1001_bird.png | | |-- ... | | | |-- ... | |-- val/ (optional) | |-- airplane/ | | |-- 105_airplane.png | | |-- 106_airplane.png | | |-- ... | | | |-- automobile/ | | |-- 102_automobile.png | | |-- 103_automobile.png | | |-- ... | | | |-- bird/ | | |-- 1045_bird.png | | |-- 1046_bird.png | | |-- ... | | | |-- ...这种结构让模型在训练阶段能从组织良好的类别中有效学习并在测试与验证阶段准确评估性能。简化来看三个划分train、test、val可选都遵循“划分目录 → 类别子目录 → 图片文件”的三级组织cifar-10-/ |-- train/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- test/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- val/ (optional) | |-- airplane/ | |-- automobile/ | |-- bird/ | ...注意类别名称来自子目录名而非独立的names.yaml类别编号由torchvision.datasets.ImageFolder的字典序扫描确定。若你要复用预训练权重数据集类别数需与模型输出层类别数一致详见下文“类别数不匹配时的行为”。源码视角数据集如何被校验与解析check_cls_dataset入口校验、自动下载与自动拆分训练入口ClassificationTrainer在初始化时会调用 check_cls_dataset由 engine/trainer.py 中data check_cls_dataset(self.args.data)触发验证器 engine/validator.py 亦复用该函数。从源码可以确认以下几个实际行为URL / 压缩包支持如果data参数是http(s)://开头的 URL 或以.zip/.tar/.gz结尾的路径会先经safe_download下载并解压到数据集目录内置数据集名自动下载若data传入的是目录名但该目录不存在例如cifar10、imagenette源码会发出警告并尝试自动下载——imagenet会执行仓库自带的 get_imagenet.sh 脚本其余数据集则从官方资源站下载{dataset}.zip并解压必须是目录而非文件若路径带文件后缀且不存在会抛出ValueError明确提示Classification datasets must be a directory (datapath/to/dir) not a filetrain 目录缺失时的自动拆分若根目录下没有train/但递归扫描发现图片文件会调用 split_classify_dataset 按 80% 比例自动拆出训练集若一张图片都找不到则抛出FileNotFoundErrorval 目录回退机制查找顺序为val/→validation/即验证集目录名写成validation也能被识别见 utils.py返回值一个包含train、val、test路径、nc类别数和names类别名字典的字典nc与names随后被写入模型属性ClassificationTrainer.set_model_attributes将self.data[names]赋给model.names。ClassificationDatasetImageFolder 封装、缓存与数据增强训练器通过 build_dataset 为每个 split 构建 ClassificationDataset。该类封装了torchvision.datasets.ImageFolder并在此之上提供了仓库源码中可确认的以下能力fraction 采样get_split_fraction按args.fraction对 train/val 各自按比例抽取样本便于小规模快速试验缓存机制args.cache支持True/ram解码到内存缓存与disk解码为未压缩.npy文件落盘加速大模型训练的数据加载数据增强管线训练模式augmentTrue下使用classify_augmentations受训练参数fliplr水平翻转、flipud垂直翻转、erasing随机擦除、auto_augment、hsv_h/hsv_s/hsv_v控制验证/测试模式使用classify_transforms即以args.imgsz为边长的确定性预处理single_cls 模式args.single_cls为真时所有样本标签统一改写为 0可用于单类训练图片校验verify_images()会过滤损坏或不可读的图片保证 dataloader 不崩溃。在 get_dataloader 中还有两条值得注意的防护逻辑若某个 split 扫描不到任何图片抛出FileNotFoundError错误信息中直接指向分类数据集格式文档类别数不匹配时的行为若数据集实际类别数dataset_nc大于模型预期类别数nc会按类别索引过滤掉超出部分并打印警告例如Skipping N samples from extra classes: [...]防止 CUDA 断言错误若过滤后样本为空则抛出RuntimeError提示“重置模型类别数或对齐数据集类别索引”。训练与评估用法使用内置数据集名大多数内置数据集名例如cifar10、imagenette、mnist160首次引用时会自动下载并缓存数据只有当你拥有自己整理好的数据集时才把data指向本地文件夹路径。训练示例Python / CLI!!! 示例 Pythonpython from ultralytics import YOLO # 加载预训练模型推荐用于迁移训练 model YOLO(yolo26n-cls.pt) # 开始训练 results model.train(datapath/to/dataset, epochs100, imgsz640) CLIbash # 从预训练 *.pt 模型开始训练 yolo classify train datapath/to/data modelyolo26n-cls.pt epochs100 imgsz640 补充几个源码层面的实现细节帮助理解上述参数分类任务默认imgsz为 224ClassificationTrainer.__init__ 中若未显式指定imgsz会自动设为 224与分类骨干的常规输入尺寸一致。文档示例中显式传入imgsz640属于可选项并非分类任务默认值task 固定为 classifyClassificationTrainer在初始化时强制overrides[task] classify因此通过YOLO(...).train(...)走分类流程时无需手动指定 task支持 torchvision 模型名setup_model 中若model参数是torchvision.models中的模型名如resnet50会直接实例化该 torchvision 模型pretrainedTrue时加载 IMAGENET1K_V1 权重并用ClassificationModel.reshape_outputs将输出层重塑为数据集类别数——这意味着分类训练不限于 YOLO 系列头任意 torchvision 分类骨干都可以复用同一套数据管线训练进度与可视化progress_string输出 Epoch / GPU_mem / loss 等列plot_training_samples会在results/目录下保存train_batch0.jpg等批样本拼图便于人工检查数据加载是否正确。评估val验证走 ClassificationValidator其data参数解析同样复用check_cls_dataset(self.args.data, splitself.args.split)split取值限定为train、val、test之一否则抛出ValueError。对应 CLIyolo classify val datapath/to/data modelpath/to/weights.pt splitval内置支持的分类数据集自动下载Ultralytics 支持以下数据集的自动下载每个数据集在仓库中都有独立文档页数据集说明文档Caltech 101101 个物体类别的图像分类数据集caltech101.mdCaltech 256Caltech 101 的扩展版256 个类别图像更具挑战性caltech256.mdCIFAR-1060K 张 32x32 彩色图像10 个类别每类 6K 张cifar10.mdCIFAR-100CIFAR-10 的扩展版100 个类别每类 600 张cifar100.mdFashion-MNIST70,000 张灰度图像10 个时尚品类fashion-mnist.mdImageNet超大规模图像分类数据集1400 万 图像、20,000 个类别imagenet.mdImageNet-10ImageNet 的 10 类子集适合快速实验与测试imagenet10.mdImagenetteImageNet 子集10 个易区分类别训练/测试更快imagenette.mdImagewoof更具挑战性的 ImageNet 子集10 个犬种类别imagewoof.mdMNIST70,000 张手写数字灰度图像mnist.mdMNIST160取自 MNIST train 与 test 两部分、每个数字0-9前 8 张图像共 160 张适合冒烟测试mnist.md这些数据集在首次传入data参数时由check_cls_dataset自动下载解压imagenet例外走仓库内置的 get_imagenet.sh 脚本因此离线环境下建议预先把数据集整理到本地目录再指向路径。添加自定义数据集若你已有自己的数据集只需保证它符合上文“目录结构规范”train/test/val可选划分目录 每个类别一个子目录 唯一命名的图片文件然后在训练脚本中把data参数指向数据集根目录即可from ultralytics import YOLO # 加载预训练模型推荐 model YOLO(yolo26n-cls.pt) # 开始训练 results model.train(datapath/to/your/dataset, epochs100, imgsz640)两个实用的容错行为均可从源码确认如果你的目录只有按类别组织的子目录而没有train/划分目录check_cls_dataset会自动按 80% 比例拆分出训练集见 split_classify_dataset验证集目录名写成validation/与val/等效。常见问题FAQ如何为 YOLO 分类任务组织数据集遵循 split 目录格式train、test及可选的val三个划分目录每个划分目录下为每个类别建一个以类别名命名的子目录图片放在对应类别子目录中。这样训练与评估流程才能顺利运转。参考上文 CIFAR-10 结构示例。Ultralytics YOLO 支持哪些图像分类数据集支持自动下载的数据集包括 Caltech 101、Caltech 256、CIFAR-10、CIFAR-100、Fashion-MNIST、ImageNet、ImageNet-10、Imagenette、Imagewoof 与 MNIST另见上表 MNIST160。每个数据集页均提供结构与用途的进一步说明。如何使用自定义数据集将数据整理为上述目录格式后将data参数指向数据集根目录即可Python 与 CLI 示例见上文“添加自定义数据集”小节。为什么用 Ultralytics YOLO 做图像分类从仓库文档与源码可确认的主要优势预训练模型加载如yolo26n-cls.pt等预训练权重快速启动训练pretrainedFalse时训练器会对各模块调用reset_parameters重置随机初始化易用性Python API 与 CLI 两条路径同样简洁高性能面向实时应用优化的精度与速度表现多数据集支持与 CIFAR-10、ImageNet 等主流数据集无缝集成自动下载数据管线完善ImageFolder 封装之上的 RAM/磁盘缓存、fraction 采样、随机擦除/AutoAugment/HSV 等增强选项均由训练参数直接控制。如何训练一个模型Python 与 CLI 两条路径# Python from ultralytics import YOLO model YOLO(yolo26n-cls.pt) results model.train(datapath/to/dataset, epochs100, imgsz640)# CLI yolo classify train datapath/to/data modelyolo26n-cls.pt epochs100 imgsz640小结本文覆盖的完整链路是目录结构规范split 类别子目录→check_cls_dataset的校验/下载/自动拆分 →ClassificationDataset的加载/缓存/增强 →ClassificationTrainer的训练与验证。搭建自定义分类数据集时牢记三件事划分目录齐全train必需val建议提供、类别名即子目录名、图片格式通用且命名唯一其余的下载、拆分、校验、增强都已由 ultralytics/data/utils.py、ultralytics/data/dataset.py 与 ultralytics/models/yolo/classify/train.py 中的实现代为完成。【免费下载链接】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),仅供参考

相关新闻

AI硬件落地实战:从边缘部署到模型选型的关键问题

AI硬件落地实战:从边缘部署到模型选型的关键问题

2026/9/7 10:01:50

9月5日,杭州,一场关于AI硬件的线下交流局。这个主题我琢磨了好一阵子,从朋友圈里发起邀约开始,身边已经有不下二十位朋友在问:到底聊什么?有没有议程?能不能带自己的项目来现场碰一碰&#xff1…

半导体FAB常用英文单词分类指南:工艺、设备、安全一次搞定

半导体FAB常用英文单词分类指南:工艺、设备、安全一次搞定

2026/9/7 10:01:50

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Playwright .NET 库模式实战:从控制台项目、Web-First 断言到跨平台 Driver 打包

Playwright .NET 库模式实战:从控制台项目、Web-First 断言到跨平台 Driver 打包

2026/9/7 10:01:50

Playwright .NET 库模式实战:从控制台项目、Web-First 断言到跨平台 Driver 打包 【免费下载链接】playwright Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API. 项目地址: https…

批量txt修改:文本替换、编码转换与重命名一站式实战

批量txt修改:文本替换、编码转换与重命名一站式实战

2026/9/7 11:21:54

批量处理 txt 文件这件事,说难不难,说简单也容易踩坑。手动打开几十个文本文件逐个修改,效率很低;用命令一行一行敲,又记不住参数。这次我们来看一个围绕“批量 txt 修改”做整合的工具思路,它把文本替换、…

C语言RTSP Server源码解析:协议、状态机与RTP打包实践

C语言RTSP Server源码解析:协议、状态机与RTP打包实践

2026/9/7 11:21:54

简介:一份专注RTSP服务器实现的C语言源码包,面向具备一定Socket编程基础的流媒体开发者、网络服务开发者及C语言进阶读者,可帮助系统理解RTSP协议在服务端的完整落地与代码组织方式。资源共414个文件,以167个C源码、45个头文件作为…

Vim宏编程实战:在纯文本网格上实现康威生命游戏

Vim宏编程实战:在纯文本网格上实现康威生命游戏

2026/9/7 11:21:54

这次我们来看一个 Linux 终端里的硬核玩法:用 vim 宏编程在纯文本网格上实现生命游戏(Conways Game of Life)。准确地说,这是一个自编的“按键序列 Ex 命令流”方案,不是某个现成开源项目。你不需要安装任何插件&…

词级双语字幕制作全流程:从ASR时间戳到SRT导出

词级双语字幕制作全流程:从ASR时间戳到SRT导出

2026/9/7 11:21:54

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

老牌网络监视软件HostMonitor 8.24 Beta绿色版:远程监控与告警配置实战

老牌网络监视软件HostMonitor 8.24 Beta绿色版:远程监控与告警配置实战

2026/9/7 11:21:54

简介:Advanced HostMonitor 8.24 Beta 绿色英文版是一款面向网络管理与IT运维人员的远程监控工具,可对服务器、网络设备及应用服务进行持续状态监测,并在异常时触发告警,帮助快速定位故障。该版本采用绿色免安装设计,尤…

重庆中央空调制冷效果越来越差,师傅上门检查冷媒外机散热风机压缩机及系统压力

重庆中央空调制冷效果越来越差,师傅上门检查冷媒外机散热风机压缩机及系统压力

2026/9/7 11:11:53

重庆夏季高温时间长,中央空调使用频率比较高,尤其是住宅多联机、风管机、办公室中央空调以及商铺天花机,长时间运行之后,容易出现不制冷、制冷效果变差、内机漏水、外机不启动、运行噪音大、频繁停机以及故障代码报警等问题。遇到…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/7 3:44:24

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

远程协作的工作台整理

远程协作的工作台整理

2026/9/7 3:38:07

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/6 23:21:51

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…