Image Classification
图像分类会从固定类别集合中为整张图像分配一个标签。内容涵盖分类器如何将像素转换为概率、主要模型和用途。
图像分类是一项计算机视觉任务,模型会查看整张图像,并从固定类别集合中为图像分配一个标签,同时为每个类别给出一个置信度分数。它回答“这是什么图像?”这个问题:猫还是狗、合格还是不合格、肺炎还是正常。它是最简单的核心视觉任务,也是其他视觉任务的基础,因为先在大型数据集上训练以分类图像的骨干网络,可以通过迁移学习复用为检测和分割任务的特征提取器。
图像分类的工作原理#
分类器分三个阶段将像素转化为类别概率。骨干网络可以是卷积神经网络(CNN)或视觉 Transformer(ViT),逐层提取特征:较浅层提取边缘和纹理,较深层提取物体部件和完整物体。池化步骤会将最终的特征图压缩为一个概括整张图像的向量。然后,全连接层为每个类别生成一个分数(即 logit),softmax函数再将这些分数转换为总和为 1 的概率。
模型在标注图像上通过监督学习学习这种映射,最小化预测概率与真实类别之间的交叉熵损失。单标签(多类别)分类使用 softmax,为每张图像恰好选出一个类别。多标签分类用于图像中可能同时出现多个事物的情况,它通过sigmoid函数独立计算每个类别的分数,并保留所有分数高于阈值的类别。
Ultralytics YOLO26分类模型的后缀为 -cls,是使用 ImageNet的 224×224 像素图像预训练的单标签分类器;其中最小的 YOLO26n-cls有 280 万个参数,top-1 准确率达到 71.4%。这些模型可以在任何按每个类别一个图像文件夹组织的数据集上训练:
from ultralytics import YOLO
# Load a YOLO26 classification model pretrained on the 1,000 ImageNet classes
model = YOLO("yolo26n-cls.pt")
# Classify the whole image
results = model("https://ultralytics.com/images/bus.jpg")
probs = results[0].probs
# Show the five most likely classes and their softmax probabilities
for class_id, confidence in zip(probs.top5, probs.top5conf.tolist()):
print(f"{results[0].names[class_id]}: {confidence:.2f}")这五个概率来自对全部 1,000 个类别执行的一次 softmax,因此它们表示模型对首选类别的信心,以及该类别相对于相似类别的优势。
分类、检测与分割的比较#
分类描述的是整张图像,不会说明物体的位置或数量:
- 目标检测:找到每个物体、为其标注类别,并用边界框定位,因此可以统计一张照片中的三辆车。
- 图像分割:为像素标注类别,精确描绘每个物体或区域的轮廓。
- 图像识别:用于识别图像内容的更广义总称,通常也会被宽泛地用作图像分类的同义词。
选择哪种方法取决于应用需要多少空间细节:
实际应用#
- 制造业质检:生产线上的摄像头拍摄每个零件,分类器将其标记为合格或不合格,以便自动剔除有缺陷的产品。
- 医疗分诊:模型将胸部 X 光片、皮肤病变照片和视网膜扫描图分为正常和异常类别,让临床医生优先审核紧急病例。
- 农业:农民用手机拍摄叶片,分类器识别作物病害或营养缺乏。
- 内容整理:照片库和电商平台会按场景和产品类别为数百万张图像添加标签,以便搜索和审核。
基准测试与模型#
分类器的比较依据 top-1 准确率和 top-5 准确率:前者表示最高概率类别正确的图像比例,后者表示真实类别出现在概率最高的五个类别中的图像比例。现代分类的发展源于 ImageNet大规模视觉识别挑战赛;其包含 1,000 个类别、约 128 万张训练图像的子集至今仍是标准基准。2012 年,AlexNet将 top-5 错误率从排名第二的 26.2% 降至 15.3%,开启了视觉领域的深度学习时代。ResNet让超过 100 层的网络在 2015 年变得可训练;视觉 Transformer则在 2020 年表明,基于注意力的模型只要在 1,400 万至 3 亿张图像上预训练,就能达到或超过 CNN。










