Meet YOLO26: next-gen vision AI.

Link to this sectionClassificação de Imagem#

YOLO image classification of objects and scenes

A classificação de imagem é a mais simples das tarefas suportadas e envolve classificar uma imagem inteira em uma de um conjunto de classes predefinidas.

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



Watch: Explore Ultralytics YOLO Tasks: Image Classification using Ultralytics Platform
Dica

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

Link to this sectionModelos#

Os modelos de classificação pré-treinados YOLO26 são mostrados aqui. Os modelos de detecção, segmentação e pose são pré-treinados no conjunto de dados COCO, os modelos Semânticos são pré-treinados no Cityscapes e os modelos de classificação são pré-treinados no conjunto de dados ImageNet.

Os modelos são baixados automaticamente do release mais recente da Ultralytics no primeiro uso.

Modelotamanho
(pixels)
acc
top1
acc
top5
Velocidade
CPU ONNX
(ms)
Velocidade
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B) a 224
YOLO26n-cls22471.490.15.0 ± 0.31.1 ± 0.02.80.5
YOLO26s-cls22476.092.97.9 ± 0.21.3 ± 0.06.71.6
YOLO26m-cls22478.194.217.2 ± 0.42.0 ± 0.011.64.9
YOLO26l-cls22479.094.623.2 ± 0.32.8 ± 0.014.16.2
YOLO26x-cls22479.995.041.4 ± 0.93.8 ± 0.029.613.6
  • Os valores de acc são as precisões do modelo no conjunto de validação do conjunto de dados ImageNet.
    Reproduza usando yolo val classify data=path/to/ImageNet device=0
  • Velocidade calculada sobre as imagens de validação do ImageNet usando uma instância Amazon EC2 P4d.
    Reproduza usando yolo val classify data=path/to/ImageNet batch=1 device=0|cpu
  • Os valores de Params e FLOPs são para o modelo fundido após model.fuse(), que mescla camadas Conv e BatchNorm. Checkpoints pré-treinados mantêm a arquitetura de treinamento completa e podem mostrar contagens mais altas.

Link to this sectionTreinar#

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

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.yaml")  # build a new model from YAML
model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-cls.yaml").load("yolo26n-cls.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
Dica

A classificação YOLO da Ultralytics 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 inadvertidamente regiões importantes de imagens com proporções extremas, potencialmente causando perda de informações visuais críticas durante o treinamento. Para preservar a imagem completa mantendo suas proporções, considere usar torchvision.transforms.Resize em vez de transformações de recorte.

Você pode implementar isso personalizando seu pipeline de aumento através de um ClassificationDataset e um ClassificationTrainer 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 = ""):
        """Initialize a customized classification dataset with enhanced data augmentation transforms."""
        super().__init__(root, args, augment, prefix)

        # Add your custom training transforms here
        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),
            ]
        )

        # Add your custom validation transforms here
        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=mode)

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)

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

Link to this sectionFormato do conjunto de dados#

O formato do conjunto de dados de classificação YOLO pode ser encontrado em detalhes no Guia de Conjunto de Dados. Os conjuntos de dados de classificação também podem ser gerenciados e rotulados na Plataforma Ultralytics.

Link to this sectionValidar#

Valide a precisão do modelo YOLO26n-cls treinado no conjunto de dados MNIST160. Nenhum argumento é necessário, pois o model mantém seus dados de data e argumentos como atributos do modelo.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
Dica

Como mencionado na seção de treinamento, você pode lidar com proporções extremas durante o treinamento usando um ClassificationTrainer personalizado. Você precisa aplicar a mesma abordagem para obter resultados de validação consistentes, implementando um ClassificationValidator personalizado ao chamar o método val(). Consulte o exemplo de código completo na seção de treinamento para detalhes de implementação.

Link to this sectionPrever#

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

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    top1 = result.probs.top1  # top predicted class ID
    top1_conf = result.probs.top1conf  # top prediction confidence
    top1_name = result.names[top1]  # top predicted class name

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

Link to this sectionSaída de Resultados#

A classificação de imagem retorna um objeto Results por imagem. O campo principal de previsão é result.probs, que contém o vetor de probabilidade de classe e auxiliares para as melhores previsões.

AtributoTipoFormaDescrição
result.probsProbs(C,)Probabilidades das classes.
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 campos de Results específicos de cada tarefa em todas as tarefas, veja a seção Resultados de Previsão por Tarefa.

Link to this sectionExportar#

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

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

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

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n-cls.pt-
TorchScripttorchscriptyolo26n-cls.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-cls.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-cls_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-cls.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-cls.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-cls_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-cls.pbimgsz, batch, device
TF Litetfliteyolo26n-cls.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-cls_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-cls_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-cls_paddle_model/imgsz, batch, device
MNNmnnyolo26n-cls.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-cls_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-cls_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-cls_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n-cls_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-cls_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n-cls_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n-cls_qnn_model/imgsz, batch, name, int8, data, fraction, device

Veja detalhes completos de export na página Export.

Link to this sectionFAQ#

Link to this sectionQual é o objetivo do YOLO26 na classificação de imagem?#

Os modelos YOLO26, como yolo26n-cls.pt, são projetados para classificação eficiente de imagens. Eles atribuem um único rótulo de classe a uma imagem inteira junto com uma pontuação de confiança. Isso é particularmente útil para aplicações onde saber a classe específica de uma imagem é suficiente, em vez de identificar a localização ou a forma dos objetos dentro da imagem.

Link to this sectionComo treino um modelo YOLO26 para classificação de imagem?#

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

# Load a model
model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)

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

Link to this sectionOnde posso encontrar modelos de classificação YOLO26 pré-treinados?#

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 facilmente baixados e usados para várias tarefas de classificação de imagem.

Link to this sectionComo posso exportar um modelo YOLO26 treinado para diferentes formatos?#

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

# Load a model
model = YOLO("yolo26n-cls.pt")  # load the trained model

# Export the model to ONNX
model.export(format="onnx")

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

Link to this sectionComo valido um modelo de classificação YOLO26 treinado?#

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

# Load a model
model = YOLO("yolo26n-cls.pt")  # load the trained model

# Validate the model
metrics = model.val()  # no arguments needed, uses the dataset and settings from training
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy

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

Comentários