YOLO11分类任务教程:yolo11-cls模型使用指南
1. 为什么选择YOLO11-cls做图像分类
你是不是也遇到过这些情况:
- 想快速验证一张图属于什么类别,但加载ResNet或ViT模型要配环境、写数据加载器、调预处理参数,半天跑不起来;
- 用传统分类模型做批量图片识别,发现推理速度慢、显存占用高,小项目根本跑不动;
- 看到别人用YOLO系列做检测很顺手,但不确定它能不能好好做分类——毕竟名字里带“YOLO”,第一反应是“这不干检测的吗?”
别担心。YOLO11-cls就是专为轻量、快速、开箱即用的图像分类任务设计的模型分支。它不是检测模型硬改的凑数版本,而是从训练目标、网络结构到推理接口都深度优化过的独立能力模块。
它不依赖复杂的预处理流水线,不需要手动构建Dataset类,甚至不用写一行训练循环——只要你会写model.predict("xxx.jpg"),就能完成从单图识别到千张图片批量分类的全部工作。
更重要的是,YOLO11-cls继承了YOLO11整个家族的工程优势:
支持n/s/m/l/x五种尺寸模型,按需选择精度与速度平衡点
内置标准化预处理(归一化+缩放+填充),输入原始图片即可
输出直接带类别名、置信度、排序结果,无需额外解析
可一键导出ONNX/TensorRT,方便部署到边缘设备
这篇教程就带你从零开始,用CSDN星图提供的YOLO11镜像,5分钟内跑通第一个分类任务,并掌握训练自定义分类数据集的完整流程。
2. 镜像环境准备:三步进入可运行状态
CSDN星图提供的YOLO11镜像已预装Ultralytics 8.3.9、PyTorch 2.3、CUDA 12.1及全部依赖,省去90%环境踩坑时间。我们只需确认访问方式和项目路径。
2.1 启动后确认工作目录
镜像启动成功后,默认进入Jupyter Lab界面。在任意Notebook中执行:
import os print("当前路径:", os.getcwd())你会看到类似输出:当前路径: /workspace/ultralytics-8.3.9
这正是YOLO11源码根目录。所有命令、脚本、配置文件都在这里,无需
cd切换。
2.2 快速验证YOLO11-cls是否可用
在Notebook中运行以下代码,测试基础分类能力:
from ultralytics import YOLO # 加载最小尺寸的分类模型(适合快速验证) model = YOLO("yolo11n-cls.pt") # 对示例图进行预测(镜像自带test.jpg) results = model("test.jpg") # 打印最高置信度的3个类别 top3 = results[0].probs.topk(3) print("Top-3预测结果:") for i, (conf, idx) in enumerate(zip(top3.conf, top3.cls)): print(f"{i+1}. {results[0].names[int(idx)]} — {conf.item():.3f}")如果看到类似输出:
Top-3预测结果: 1. dog — 0.924 2. wolf — 0.041 3. fox — 0.012说明环境完全就绪,可以进入实战环节。
小贴士:镜像中
test.jpg是一张柯基犬照片,用于快速验证。你也可以上传自己的图片到/workspace/ultralytics-8.3.9/目录下直接调用。
3. 分类任务全流程实操:从推理到训练
YOLO11-cls把分类任务拆解为三个清晰阶段:推理(predict)→ 验证(val)→ 训练(train)。每个阶段对应一个命令行脚本或Python API,逻辑统一、参数一致。
3.1 单图/批量推理:一行命令搞定识别
方式一:命令行快速调用(推荐新手)
打开终端(Terminal),执行:
# 对单张图推理,结果保存到runs/classify/predict/ yolo classify predict model=yolo11n-cls.pt source=test.jpg # 对整个文件夹批量推理(支持jpg/png/jpeg) yolo classify predict model=yolo11s-cls.pt source=datasets/mydata/test/images/生成结果自动保存在runs/classify/predict/目录下,包含:
predictions.txt:每行格式为图片名 类别名 置信度confusion_matrix.png:混淆矩阵可视化(仅当提供真实标签时生成)labels/子目录:按类别名自动建文件夹,把图片归类存放
方式二:Python脚本精细控制
from ultralytics import YOLO model = YOLO("yolo11m-cls.pt") # 中等尺寸,精度与速度兼顾 # 关键参数说明: results = model( source="datasets/mydata/test/images/", # 支持文件夹/图片列表/URL imgsz=224, # 输入尺寸(默认224,可调) conf=0.25, # 置信度阈值,低于此值不输出 save=True, # 保存归类后的图片到runs/classify/predict/ save_txt=True, # 保存预测文本结果 device="cuda:0" # 指定GPU,不填则自动选择 ) # 获取所有结果的统计信息 print(f"共处理{len(results)}张图片") print(f"平均置信度:{sum(r.probs.top1conf.item() for r in results)/len(results):.3f}")注意:YOLO11-cls默认使用
imgsz=224,但支持任意尺寸(如256、384)。增大尺寸可能提升精度,但会降低速度。建议先用224测试,再根据需求调整。
3.2 验证模型效果:用自有数据集测准不准
验证(val)不是可选项,而是上线前必做步骤。它能告诉你:模型在你的数据上到底有多可靠。
准备验证数据集
YOLO11-cls要求数据集按标准格式组织:
datasets/mydata/ ├── train/ │ ├── cat/ │ │ ├── 001.jpg │ │ └── 002.jpg │ └── dog/ │ ├── 001.jpg │ └── 002.jpg └── val/ # ← 验证集放这里 ├── cat/ │ ├── 003.jpg │ └── 004.jpg └── dog/ ├── 003.jpg └── 004.jpg镜像中已预置
datasets/cifar10示例数据集,路径为/workspace/ultralytics-8.3.9/datasets/cifar10/,可直接用来测试。
执行验证命令
# 使用预置cifar10验证集(10个类别) yolo classify val model=yolo11n-cls.pt data=datasets/cifar10/ batch=32 # 输出关键指标: # - metrics/accuracy_top1: 0.892 ← Top-1准确率 # - metrics/accuracy_top5: 0.991 ← Top-5准确率(对10类任务意义不大,但体现模型区分力) # - speed/inference: 12.4ms/img ← 单图推理耗时(RTX 4090实测)验证报告会生成在runs/classify/val/目录,包含:
confusion_matrix.png:直观看出哪些类别容易混淆results.csv:详细每类准确率、召回率、F1分数labels/:错误预测样本自动归入wrong/子目录,方便人工复盘
3.3 训练自定义分类模型:不到10行代码
当你有专属数据集(比如公司产品图、医疗影像、工业零件),就需要微调模型。YOLO11-cls的训练接口极简,且支持断点续训。
数据集配置文件(YAML)
在datasets/mydata/同级目录创建mydata.yaml:
train: ../datasets/mydata/train val: ../datasets/mydata/val # test: ../datasets/mydata/test # 可选,用于最终测试 nc: 2 # 类别数 names: ["cat", "dog"] # 类别名,顺序必须与文件夹名一致启动训练
# 用yolo11n-cls在自定义数据上训练10轮 yolo classify train model=yolo11n-cls.pt data=mydata.yaml epochs=10 imgsz=224 batch=64 # 或用Python API(更灵活) from ultralytics import YOLO model = YOLO("yolo11n-cls.pt") model.train( data="mydata.yaml", epochs=10, imgsz=224, batch=64, name="my_cat_dog_model", # 模型保存路径为 runs/classify/my_cat_dog_model/ device="cuda:0" )训练过程实时输出:
Epoch 10/10:当前轮次train/loss: 0.123:训练损失val/accuracy_top1: 0.942:验证集Top-1准确率best.pt:自动保存最佳权重(最高val/accuracy_top1)last.pt:保存最后一轮权重(可用于继续训练)
重要提醒:YOLO11-cls默认使用AdamW优化器 + Cosine退火学习率调度,无需手动调参。若数据量少(<1000张/类),建议加
patience=5(早停)防止过拟合。
4. 模型选择与性能对比:哪款yolo11-cls最适合你
YOLO11-cls提供5种尺寸模型(n/s/m/l/x),不是简单缩放,而是整套架构重设计。选错模型,可能多花3倍时间却只提升0.5%准确率。
| 模型 | 参数量 | 推理速度(RTX 4090) | Top-1准确率(ImageNet-1K) | 适用场景 |
|---|---|---|---|---|
| yolo11n-cls.pt | 2.1M | 18.7 ms/img | 72.3% | 嵌入式设备、实时性优先、数据量充足 |
| yolo11s-cls.pt | 6.8M | 12.4 ms/img | 76.1% | 平衡之选,90%项目首选 |
| yolo11m-cls.pt | 20.3M | 8.9 ms/img | 79.5% | 精度敏感场景(医疗/金融)、中等算力服务器 |
| yolo11l-cls.pt | 43.6M | 6.2 ms/img | 81.2% | 高精度需求、GPU资源充裕 |
| yolo11x-cls.pt | 68.2M | 4.8 ms/img | 82.6% | 科研级精度、不计成本 |
如何快速判断?
- 先用
yolo11n-cls.pt跑通全流程,记录baseline准确率;- 若baseline < 75%,换
yolo11s-cls.pt;- 若仍不达标,再试
yolo11m-cls.pt;- 不建议直接上l/x型号——它们对数据质量、标注一致性要求极高,小数据集反而易过拟合。
5. 实用技巧与避坑指南
5.1 提升分类效果的3个关键设置
输入尺寸动态适配
YOLO11-cls对imgsz敏感。实测发现:- 动物/人脸等细节丰富类别 →
imgsz=256比224提升1.2%准确率 - 工业零件/Logo等结构简单类别 →
imgsz=192速度提升40%,精度仅降0.3%
建议:用
yolo classify val在不同尺寸下测试,找到你的数据集最优值。- 动物/人脸等细节丰富类别 →
置信度过滤智能调优
conf参数不是越低越好。过低会引入大量噪声预测;过高则漏检。- 先用
conf=0.25生成predictions.txt - 统计所有预测的置信度分布(用pandas读取txt)
- 取分布第85百分位数作为新
conf值(平衡召回与精度)
- 先用
数据增强不盲目开启
YOLO11-cls默认启用hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0。但如果你的数据本身已很规范(如手机拍摄的白底产品图),关闭mosaic/mixup可提升0.8%泛化性。
5.2 常见报错与解决方案
| 报错信息 | 原因 | 解决方案 |
|---|---|---|
OSError: Unable to open file (unable to open file) | 模型文件路径错误或权限不足 | 检查ls -l yolo11n-cls.pt,确保文件存在且可读;用绝对路径/workspace/ultralytics-8.3.9/yolo11n-cls.pt |
RuntimeError: Expected all tensors to be on the same device | GPU显存不足或PyTorch/CUDA版本不匹配 | 加device="cpu"强制CPU运行;或减小batch=16 |
ValueError: Dataset 'xxx' not found | YAML中train/val路径写错 | 用ls datasets/mydata/train/确认路径,YAML中写相对路径(如../datasets/mydata/train) |
AssertionError: Class names not found | YAML中names未定义或与文件夹名不一致 | 检查names: ["cat","dog"]是否与train/cat/文件夹名完全一致(大小写、空格) |
6. 总结:YOLO11-cls让分类回归“简单”本质
回顾整个流程,你会发现YOLO11-cls真正做到了:
🔹零配置启动:不用写dataloader、不用定义transforms、不用搭训练循环
🔹所见即所得:yolo classify predict命令一敲,结果立刻归类好,连文件夹都帮你建好了
🔹专业级可控:需要调参?有lr0,lrf,weight_decay;需要部署?model.export(format="onnx")一行解决
它没有把分类做成“检测的副产品”,而是以分类任务为原点,重构了从数据加载、特征提取到决策输出的全链路。那些曾让你深夜调试DataLoader的痛苦,那些在TensorBoard里反复刷新看loss曲线的焦虑,那些为部署折腾ONNX Shape Infer的抓狂——在YOLO11-cls面前,都成了过去式。
现在,你已经掌握了:
如何用镜像5分钟跑通第一个分类任务
如何验证模型在自有数据上的真实表现
如何训练专属分类模型并选出最优尺寸
如何避开90%新手会踩的坑
下一步,不妨打开镜像里的Jupyter Lab,新建一个Notebook,把本教程的代码逐行跑一遍。当你看到cat和dog被精准分开,当confusion_matrix.png显示完美的对角线——那一刻,你会相信:AI工程,本该如此简单。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。