Ultralytics YOLO27:
Get Started

Classificação de imagens com Ultralytics YOLO#

Ultralytics YOLO image classification of objects and scenes

A classificação de imagens é a mais simples das tarefas compatíveis e consiste em classificar uma imagem inteira em uma das classes predefinidas.

A saída de um classificador de imagens é um único rótulo de classe e uma pontuação de confiança. A classificação de imagens é útil quando você precisa saber apenas a qual classe uma imagem pertence, sem precisar saber onde os objetos dessa classe estão localizados ou qual é sua forma exata.



Assista: Explore as tarefas do Ultralytics YOLO: classificação de imagens usando a plataforma Ultralytics
Dica

Os modelos YOLO26 Classify usam o sufixo -cls, por exemplo, yolo26n-cls.pt, e são pré-treinados no ImageNet.

Modelos#

Os modelos YOLO26 Classify pré-treinados no conjunto de dados ImageNet são apresentados abaixo.

Os modelos são transferidos automaticamente da versão mais recente do Ultralytics na primeira utilização.

Modelotamanho
(pixels)
acc
top1
acc
top5
Velocidade
CPU ONNX
(ms)
Velocidade
T4 TensorRT10
(ms)
parâmetros
(M)
FLOPs
(B) a 224
YOLO26n-cls22471.490.15.0 ± 0.31.1 ± 0.02.80.4
YOLO26s-cls22476.092.97.9 ± 0.21.3 ± 0.06.71.5
YOLO26m-cls22478.194.217.2 ± 0.42.0 ± 0.011.64.8
YOLO26l-cls22479.094.623.2 ± 0.32.8 ± 0.014.16.0
YOLO26x-cls22479.995.041.4 ± 0.93.8 ± 0.029.613.5
  • Os valores de acc são as precisões dos modelos no conjunto de validação do ImageNet.
    Reproduza com yolo classify val data=path/to/ImageNet device=0
  • Velocidade média nas imagens de validação do ImageNet com ONNX na CPU e TensorRT10 em uma GPU NVIDIA T4.
    Reproduza com yolo classify val data=path/to/ImageNet batch=1 device=0|cpu
  • Os valores de Parâmetros e FLOPs correspondem ao modelo fundido após model.fuse(), que combina as camadas Conv e BatchNorm. Os checkpoints pré-treinados mantêm a arquitetura de treino completa e podem apresentar contagens superiores.

Consulte a prévia não lançada do YOLO27 para ver dados preliminares de velocidade e tamanhos dos modelos de classificação.

Treinar#

Treine YOLO26n-cls no conjunto de dados MNIST160 por 100 épocas, com tamanho de imagem 64. Para ver a lista completa dos argumentos disponíveis, consulte a página de Configuração.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-cls.yaml")  # crie um novo modelo a partir de YAML
model = YOLO("yolo26n-cls.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
model = YOLO("yolo26n-cls.yaml").load("yolo26n-cls.pt")  # crie a partir de YAML e transfira os pesos

# Treinar o modelo
results = model.train(data="mnist160", epochs=100, imgsz=64)

Veja os detalhes completos do modo train na página Treinar. Os modelos de classificação também podem ser treinados com o treinamento na nuvem da Ultralytics Platform.

Formato do conjunto de dados#

Os detalhes do formato de conjunto de dados de classificação YOLO estão no Guia de conjuntos de dados. Os conjuntos de dados de classificação também podem ser gerenciados e rotulados com as ferramentas de anotação da Ultralytics Platform.

Transformações personalizadas#

A classificação Ultralytics YOLO usa torchvision.transforms.RandomResizedCrop para treinamento e torchvision.transforms.CenterCrop para validação e inferência. Essas transformações baseadas em recorte pressupõem entradas quadradas e podem cortar regiões importantes de imagens com proporções extremas. Para manter a imagem inteira, substitua os recortes por torchvision.transforms.Resize, que redimensiona para imgsz × imgsz em vez de recortar, usando um ClassificationDataset, ClassificationTrainer e ClassificationValidator personalizados:

import torch
import torchvision.transforms as T

from ultralytics import YOLO
from ultralytics.data.dataset import ClassificationDataset
from ultralytics.models.yolo.classify import ClassificationTrainer, ClassificationValidator

class CustomizedDataset(ClassificationDataset):
    """A customized dataset class for image classification with enhanced data augmentation transforms."""

    def __init__(self, root: str, args, augment: bool = False, prefix: str = "", names=None):
        """Initialize a customized classification dataset with enhanced data augmentation transforms."""
        super().__init__(root, args, augment, prefix, names)

        # Adicione suas transformações personalizadas de treinamento aqui
        train_transforms = T.Compose(
            [
                T.Resize((args.imgsz, args.imgsz)),
                T.RandomHorizontalFlip(p=args.fliplr),
                T.RandomVerticalFlip(p=args.flipud),
                T.RandAugment(interpolation=T.InterpolationMode.BILINEAR),
                T.ColorJitter(brightness=args.hsv_v, contrast=args.hsv_v, saturation=args.hsv_s, hue=args.hsv_h),
                T.ToTensor(),
                T.Normalize(mean=torch.tensor(0), std=torch.tensor(1)),
                T.RandomErasing(p=args.erasing, inplace=True),
            ]
        )

        # Adicione suas transformações personalizadas de validação aqui
        val_transforms = T.Compose(
            [
                T.Resize((args.imgsz, args.imgsz)),
                T.ToTensor(),
                T.Normalize(mean=torch.tensor(0), std=torch.tensor(1)),
            ]
        )
        self.torch_transforms = train_transforms if augment else val_transforms

class CustomizedTrainer(ClassificationTrainer):
    """A customized trainer class for YOLO classification models with enhanced dataset handling."""

    def build_dataset(self, img_path: str, mode: str = "train", batch=None):
        """Build a customized dataset for classification training and the validation during training."""
        return CustomizedDataset(
            root=img_path,
            args=self.args,
            augment=mode == "train",
            prefix="train" if mode == "train" else self.args.split,
            names=self.data["names"],
        )

class CustomizedValidator(ClassificationValidator):
    """A customized validator class for YOLO classification models with enhanced dataset handling."""

    def build_dataset(self, img_path: str):
        """Build a customized dataset for classification standalone validation (no augmentation)."""
        return CustomizedDataset(root=img_path, args=self.args, augment=False, prefix=self.args.split, names=self.names)

model = YOLO("yolo26n-cls.pt")
model.train(data="imagenet", trainer=CustomizedTrainer, epochs=10, imgsz=224, batch=64)
model.val(data="imagenet", validator=CustomizedValidator, imgsz=224, batch=64)

Validar#

Valide a precisão do modelo YOLO26n-cls treinado. Não são necessários argumentos, pois o model mantém o data de treinamento e os argumentos como atributos do modelo: path/to/best.pt do exemplo de Treinamento valida no MNIST160. Os pesos oficiais registram um caminho para o conjunto de dados de treinamento que não existe na sua máquina, então usam o padrão da tarefa imagenet10 como alternativa e exibem um aviso. Passe data para validar em outro conjunto de dados.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-cls.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Valida o modelo
metrics = model.val()  # não são necessários argumentos; o conjunto de dados e as definições são guardados
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
Dica

Um modelo treinado com transformações personalizadas precisa receber o ClassificationValidator correspondente em val(); caso contrário, a validação recorta a imagem em vez de redimensioná-la como no treinamento.

Prever#

Use um modelo YOLO26n-cls treinado para executar previsões em imagens.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-cls.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Faz previsões com o modelo
results = model("https://ultralytics.com/images/bus.jpg")  # faz uma previsão numa imagem

# Acede aos resultados
for result in results:
    top1 = result.probs.top1  # ID da classe com maior previsão
    top1_conf = result.probs.top1conf  # confiança da previsão mais alta
    top1_name = result.names[top1]  # nome da classe com maior previsão

Consulta os detalhes completos do modo predict na página Previsão.

Saída dos resultados#

A classificação de imagens retorna um objeto Results por imagem. O principal campo de previsão é result.probs, que contém o vetor de probabilidades das classes e auxiliares para as principais previsões.

AtributoTipoFormatoDescrição
result.probsProbs(C,)Probabilidades de classe.
result.probs.datatorch.float32(C,)Probabilidade por classe.
result.probs.top1int()ID da classe principal.
result.probs.top1conftorch.float32()Confiança principal.
result.probs.top5list[int](<=5)IDs das 5 principais classes.

Para ver os campos Results específicos de cada tarefa, consulta a secção Resultados da previsão por tarefa.

Exportar#

Exporte um modelo YOLO26n-cls para outro formato, como ONNX, CoreML etc.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-cls.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Exporta o modelo
model.export(format="onnx")

Os formatos de exportação disponíveis para YOLO26-cls estão na tabela abaixo. Você pode exportar para qualquer formato usando o argumento format, por exemplo, format='onnx' ou format='engine'. Você pode fazer previsões ou validar diretamente em modelos exportados, por exemplo, yolo predict model=yolo26n-cls.onnx. Exemplos de uso do seu modelo são exibidos após a conclusão da exportação.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n-cls.pt✅-
TorchScripttorchscriptyolo26n-cls.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-cls.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-cls_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-cls.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-cls.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-cls.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-cls_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-cls.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-cls_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-cls.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-cls_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-cls.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-cls_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-cls_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-cls_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-cls_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-cls_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-cls_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-cls_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-cls_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-cls_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-cls_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa por predefinição saídas brutas para NMS externo. Define nms=False para selecionar uma cabeça sem NMS disponível; os formatos não suportados recorrem ao respetivo caminho de saída nativo. As entradas nms acima identificam os formatos que podem incorporar NMS com nms=True.

Consulte os detalhes completos de export na página Exportação.

Perguntas frequentes#

  • Modelos YOLO26, como yolo26n-cls.pt, são projetados para classificar imagens com eficiência. Eles atribuem um único rótulo de classe à imagem inteira, junto com uma pontuação de confiança. Isso é particularmente útil em aplicações nas quais basta saber a classe específica de uma imagem, em vez de identificar a localização ou a forma dos objetos nela.

  • Para treinar um modelo YOLO26, você pode usar comandos Python ou CLI. Por exemplo, para treinar um modelo yolo26n-cls no conjunto de dados MNIST160 por 100 épocas, com tamanho de imagem 64:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-cls.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
    
    # Treinar o modelo
    results = model.train(data="mnist160", epochs=100, imgsz=64)

    Para ver mais opções de configuração, acesse a página Configuração.

  • Os modelos de classificação YOLO26 pré-treinados podem ser encontrados na seção Modelos. Modelos como yolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt etc. são pré-treinados no conjunto de dados ImageNet e podem ser baixados e usados facilmente em várias tarefas de classificação de imagens.

  • Para validar a precisão de um modelo treinado em um conjunto de dados como o MNIST160, você pode usar os seguintes comandos Python ou CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("path/to/best.pt")  # carrega o modelo treinado
    
    # Valida o modelo
    metrics = model.val()  # não são necessários argumentos; usa o conjunto de dados e as configurações do treinamento
    metrics.top1  # top1 accuracy
    metrics.top5  # top5 accuracy

    Para mais informações, acesse a seção Validar.

  • Você pode exportar um modelo YOLO26 treinado para vários formatos usando comandos Python ou CLI. Por exemplo, para exportar um modelo para o formato ONNX:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-cls.pt")  # carrega o modelo treinado
    
    # Exporta o modelo para ONNX
    model.export(format="onnx")

    Para ver as opções detalhadas de exportação, consulte a página Exportar.

Comentários