Skip to content

图像分类

图像分类示例

图像分类 是三项任务中最简单的一项,涉及将整个图像分类为一组预定义类别中的一个。

图像分类器的输出是一个类别标签和一个置信度分数。当你只需要知道图像属于哪个类别,而不需要知道该类别对象的位置或其确切形状时,图像分类非常有用。



观看: 探索Ultralytics YOLO任务:使用Ultralytics HUB进行图像分类

Tip

YOLO11分类模型使用-cls后缀,例如yolo11n-cls.pt,并在ImageNet上进行了预训练。

模型

这里展示了YOLO11预训练的分类模型。检测、分割和姿态模型在COCO数据集上进行了预训练,而分类模型在ImageNet数据集上进行了预训练。

模型在首次使用时会自动从最新的Ultralytics 发布中下载。

模型 尺寸
(像素)
准确率
top1
准确率
top5
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(百万)
FLOPs
(十亿)在640
YOLO11n-cls 224 70.0 89.4 5.0 ± 0.3 1.1 ± 0.0 1.6 3.3
YOLO11s-cls 224 75.4 92.7 7.9 ± 0.2 1.3 ± 0.0 5.5 12.1
YOLO11m-cls 224 77.3 93.9 17.2 ± 0.4 2.0 ± 0.0 10.4 39.3
YOLO11l-cls 224 78.3 94.3 23.2 ± 0.3 2.8 ± 0.0 12.9 49.4
YOLO11x-cls 224 79.5 94.9 41.4 ± 0.9 3.8 ± 0.0 28.4 110.4
  • acc 值是模型在ImageNet数据集验证集上的准确率。
    通过yolo val classify data=path/to/ImageNet device=0复现
  • 速度Amazon EC2 P4d实例上对ImageNet验证图像进行平均。
    通过yolo val classify data=path/to/ImageNet batch=1 device=0|cpu复现

训练

在MNIST160数据集上以图像大小64训练YOLO11n-cls模型100个epoch。有关可用参数的完整列表,请参阅配置页面。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.yaml")  # 从YAML构建新模型
model = YOLO("yolo11n-cls.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolo11n-cls.yaml").load("yolo11n-cls.pt")  # 从YAML构建并转移权重

# 训练模型
results = model.train(data="mnist160", epochs=100, imgsz=64)
# 从YAML构建新模型并从头开始训练
yolo classify train data=mnist160 model=yolo11n-cls.yaml epochs=100 imgsz=64

# 从预训练的*.pt模型开始训练
yolo classify train data=mnist160 model=yolo11n-cls.pt epochs=100 imgsz=64

# 从YAML构建新模型,转移预训练权重并开始训练
yolo classify train data=mnist160 model=yolo11n-cls.yaml pretrained=yolo11n-cls.pt epochs=100 imgsz=64

数据集格式

YOLO分类数据集格式可以在数据集指南中找到详细信息。

验证

在MNIST160数据集上验证训练好的YOLO11n-cls模型的准确性。不需要参数,因为模型保留了训练数据和参数作为模型属性。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 验证模型
metrics = model.val()  # 不需要参数,数据集和设置已记住
metrics.top1  # top1准确率
metrics.top5  # top5准确率
yolo classify val model=yolo11n-cls.pt  # 验证官方模型
yolo classify val model=path/to/best.pt  # 验证自定义模型

预测

使用训练好的YOLO11n-cls模型对图像进行预测。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 使用模型进行预测
results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
yolo classify predict model=yolo11n-cls.pt source='https://ultralytics.com/images/bus.jpg'  # 使用官方模型进行预测
yolo classify predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # 使用自定义模型进行预测

预测页面查看完整的predict模式详情。

导出

将YOLO11n-cls模型导出为不同的格式,如ONNX、CoreML等。

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义训练的模型

# 导出模型
model.export(format="onnx")
yolo export model=yolo11n-cls.pt format=onnx  # 导出官方模型
yolo export model=path/to/best.pt format=onnx  # 导出自定义训练的模型

下表列出了可用的YOLO11-cls导出格式。您可以使用format参数导出到任何格式,例如format='onnx'format='engine'。您可以直接在导出的模型上进行预测或验证,例如yolo predict model=yolo11n-cls.onnx。导出完成后,将显示您的模型的使用示例。

格式 format 参数 模型 元数据 参数
PyTorch - yolo11n-cls.pt -
TorchScript torchscript yolo11n-cls.torchscript imgsz, optimize, batch
ONNX onnx yolo11n-cls.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n-cls_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n-cls.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n-cls.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-cls_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n-cls.pb imgsz, batch
TF Lite tflite yolo11n-cls.tflite imgsz, half, int8, batch
TF Edge TPU edgetpu yolo11n-cls_edgetpu.tflite imgsz
TF.js tfjs yolo11n-cls_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n-cls_paddle_model/ imgsz, batch
NCNN ncnn yolo11n-cls_ncnn_model/ imgsz, half, batch

导出页面查看完整的export详情。

常见问题

YOLO11在图像分类中的目的是什么?

YOLO11模型,如yolo11n-cls.pt,旨在进行高效的图像分类。它们为整个图像分配一个单一的类别标签以及一个置信度分数。这对于只需要知道图像的特定类别而不需要识别图像中对象的位置或形状的应用特别有用。

如何训练YOLO11模型进行图像分类?

要训练YOLO11模型,您可以使用Python或CLI命令。例如,要在MNIST160数据集上以64的图像大小训练yolo11n-cls模型100个周期:

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="mnist160", epochs=100, imgsz=64)
yolo classify train data=mnist160 model=yolo11n-cls.pt epochs=100 imgsz=64

有关更多配置选项,请访问配置页面。

在哪里可以找到预训练的YOLO11分类模型?

预训练的YOLO11分类模型可以在模型部分找到。像yolo11n-cls.ptyolo11s-cls.ptyolo11m-cls.pt等模型在ImageNet数据集上进行了预训练,可以轻松下载并用于各种图像分类任务。

如何将训练好的YOLO11模型导出为不同格式?

您可以使用Python或CLI命令将训练好的YOLO11模型导出为各种格式。例如,将模型导出为ONNX格式:

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载训练好的模型

# 将模型导出为ONNX
model.export(format="onnx")
yolo export model=yolo11n-cls.pt format=onnx  # 将训练好的模型导出为ONNX格式

有关详细的导出选项,请参阅导出页面。

如何验证训练好的YOLO11分类模型?

要在MNIST160等数据集上验证训练好的模型的准确性,您可以使用以下Python或CLI命令:

示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-cls.pt")  # 加载训练好的模型

# 验证模型
metrics = model.val()  # 不需要参数,使用训练时的数据集和设置
metrics.top1  # top1准确率
metrics.top5  # top5准确率
yolo classify val model=yolo11n-cls.pt  # 验证训练好的模型

有关更多信息,请访问验证部分。


📅 Created 11 months ago ✏️ Updated 12 days ago

Comments