Link to this sectionClassificação de Imagem#
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
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.
| Modelo | tamanho (pixels) | acc top1 | acc top5 | Velocidade CPU ONNX (ms) | Velocidade T4 TensorRT10 (ms) | params (M) | FLOPs (B) a 224 |
|---|---|---|---|---|---|---|---|
| YOLO26n-cls | 224 | 71.4 | 90.1 | 5.0 ± 0.3 | 1.1 ± 0.0 | 2.8 | 0.5 |
| YOLO26s-cls | 224 | 76.0 | 92.9 | 7.9 ± 0.2 | 1.3 ± 0.0 | 6.7 | 1.6 |
| YOLO26m-cls | 224 | 78.1 | 94.2 | 17.2 ± 0.4 | 2.0 ± 0.0 | 11.6 | 4.9 |
| YOLO26l-cls | 224 | 79.0 | 94.6 | 23.2 ± 0.3 | 2.8 ± 0.0 | 14.1 | 6.2 |
| YOLO26x-cls | 224 | 79.9 | 95.0 | 41.4 ± 0.9 | 3.8 ± 0.0 | 29.6 | 13.6 |
- Os valores de acc são as precisões do modelo no conjunto de validação do conjunto de dados ImageNet.
Reproduza usandoyolo 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 usandoyolo 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.
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)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.
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 accuracyComo 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.
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 nameVeja 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.
| Atributo | Tipo | Forma | Descrição |
|---|---|---|---|
result.probs | Probs | (C,) | Probabilidades das classes. |
result.probs.data | torch.float32 | (C,) | Probabilidade por classe. |
result.probs.top1 | int | () | ID da classe principal. |
result.probs.top1conf | torch.float32 | () | Confiança principal. |
result.probs.top5 | list[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.
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.
| Formato | Argumento format | Modelo | Metadados | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n-cls.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-cls.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-cls.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-cls_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-cls.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-cls.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-cls_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-cls.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-cls.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-cls_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-cls_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-cls_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-cls.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-cls_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-cls_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-cls_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-cls_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-cls_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-cls_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-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:
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:
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:
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 accuracyPara mais informações, visite a seção Validar.