YOLO Vision 2026:

Görüntü Sınıflandırma#

YOLO image classification of objects and scenes

Image classification, desteklenen görevlerin en basitidir ve tüm bir görüntünün önceden tanımlanmış sınıflardan oluşan bir kümeye göre sınıflandırılmasını içerir.

Bir görüntü sınıflandırıcısının çıktısı, tek bir sınıf etiketi ve bir güven puanıdır. Görüntü sınıflandırma, yalnızca bir görüntünün hangi sınıfa ait olduğunu bilmen gerekiyorsa ve o sınıfın nesnelerinin nerede bulunduğunu veya tam şekillerinin ne olduğunu bilmene gerek yoksa kullanışlıdır.



Watch: Explore Ultralytics YOLO Tasks: Image Classification using Ultralytics Platform
İpucu

YOLO26 Classify modelleri -cls son ekini kullanır (ör. yolo26n-cls.pt) ve ImageNet üzerinde önceden eğitilmiştir.

Modeller#

YOLO26 önceden eğitilmiş Classify modelleri burada gösterilmektedir. Detect, Segment ve Pose modelleri COCO veri kümesi üzerinde, Semantic modelleri Cityscapes üzerinde ve Classify modelleri ImageNet veri kümesi üzerinde önceden eğitilmiştir.

Models, ilk kullanımda en son Ultralytics release sürümünden otomatik olarak indirilir.

Modelboyut
(piksel)
acc
top1
acc
top5
Hız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametreler
(M)
FLOPs
(B) at 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
  • acc değerleri ImageNet veri kümesi doğrulama setindeki model doğruluklarıdır.
    yolo val classify data=path/to/ImageNet device=0 ile yeniden oluşturun
  • Bir Amazon EC2 P4d örneği kullanılarak ImageNet doğrulama görüntüleri üzerinden ortalama Speed (Hız).
    yolo val classify data=path/to/ImageNet batch=1 device=0|cpu ile yeniden oluşturun
  • Params ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren model.fuse() sonrasındaki birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları tüm eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

Eğit (Train)#

MNIST160 veri kümesi üzerinde 64 görüntü boyutunda 100 epochs boyunca YOLO26n-cls modelini eğitin. Mevcut argümanların tam listesi için Configuration sayfasına bakın.

Örnek
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)
İpucu

Ultralytics YOLO sınıflandırması, eğitim için torchvision.transforms.RandomResizedCrop ve doğrulama ile çıkarım için torchvision.transforms.CenterCrop kullanır. Bu kırpma tabanlı dönüşümler kare girdileri varsayar ve aşırı en-boy oranlarına sahip görüntülerdeki önemli bölgeleri yanlışlıkla kırparak eğitim sırasında kritik görsel bilgilerin kaybolmasına potansiyel olarak neden olabilir. Tam görüntüyө oranlarını korurken korumak için, kırpma dönüşümleri yerine torchvision.transforms.Resize kullanmayı düşünün.

Bunu, özel bir ClassificationDataset ve ClassificationTrainer aracılığıyla artırma işlem hattını özelleştirerek uygulayabilirsin.

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)

Veri kümesi biçimi#

YOLO sınıflandırma veri kümesi formatı hakkında ayrıntılı bilgi Dataset Guide içinde bulunabilir. Sınıflandırma veri kümeleri ayrıca Ultralytics Platform annotation tools ile yönetilebilir ve etiketlenebilir.

Doğrula (Val)#

Eğitilmiş YOLO26n-cls modelinin accuracy değerini MNIST160 veri kümesi üzerinde doğrulayın. model, eğitim data değerini ve argümanlarını model öznitelikleri olarak koruduğu için hiçbir argümana gerek yoktur.

Örnek
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
İpucu

Eğitim bölümünde belirtildiği gibi, özel bir ClassificationTrainer kullanarak eğitim sırasında aşırı en-boy oranlarını yönetebilirsin. val() metodunu çağırırken özel bir ClassificationValidator uygulayarak tutarlı doğrulama sonuçları için aynı yaklaşımmı kullanman gerekir. Uygulama detayları için eğitim bölümündeki eksiksiz kod örneğine göz at.

Tahmin Et (Predict)#

Görüntüler üzerinde tahmin yürütmek için eğitilmiş bir YOLO26n-cls modeli kullan.

Örnek
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

Tam predict modu ayrıntılarını Tahmin sayfasında görün.

Sonuç Çıktısı#

Görüntü sınıflandırma, görüntü başına bir Results nesnesi döndürür. Birincil tahmin alanı, sınıf olasılık vektörünü ve en üst tahminler için yardımcıları içeren result.probs alanıdır.

ÖznitelikTipŞekilAçıklama
result.probsProbs(C,)Sınıf olasılıkları.
result.probs.datatorch.float32(C,)Sınıf başına olasılık.
result.probs.top1int()En iyi sınıf kimliği.
result.probs.top1conftorch.float32()En iyi güvenilirlik.
result.probs.top5list[int](<=5)En iyi 5 sınıf kimliği.

Her görev genelinde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bakın.

Dışa Aktar (Export)#

Bir YOLO26n-cls modelini ONNX, CoreML vb. gibi farklı bir biçime aktar.

Örnek
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")

Mevcut YOLO26-cls dışa aktarım formatları aşağıdaki tabloda yer almaktadır. format argümanını kullanarak (yani format='onnx' veya format='engine') herhangi bir formate dışa aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulayabilirsin, yani yolo predict model=yolo26n-cls.onnx. Kullanım örnekleri dışa aktarım tamamlandıktan sonra modeliniz için gösterilir.

Formatformat ArgümanıModelMeta verilerArgümanlar
PyTorch-yolo26n-cls.pt-
TorchScripttorchscriptyolo26n-cls.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-cls.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-cls_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-cls.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-cls.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-cls_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-cls.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-cls_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-cls_paddle_model/imgsz, batch, device
MNNmnnyolo26n-cls.mnnimgsz, 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.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-cls.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-cls_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-cls_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

Tam export ayrıntılarını Dışa Aktar sayfasında görün.

SSS#

YOLO26'nın görüntü sınıflandırmadaki amacı nedir?#

yolo26n-cls.pt gibi YOLO26 modelleri, verimli görüntü sınıflandırması için tasarlanmıştır. Tüm bir görüntüye bir güven skoruyla birlikte tek bir sınıf etiketi atarlar. Bu, görüntü içindeki nesnelerin konumunu veya şeklini belirlemek yerine görüntünün belirli sınıfını bilmenin yeterli olduğu uygulamalar için özellikle yararlıdır.

Görüntü sınıflandırma için nasıl YOLO26 modeli eğitirim?#

Bir YOLO26 modelini eğitmek için Python veya CLI komutlarını kullanabilirsin. Örneğin, MNIST160 veri kümesi üzerinde 64 görüntü boyutunda 100 epoch boyunca bir yolo26n-cls modelini eğitmek için:

Örnek
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)

Daha fazla yapılandırma seçeneği için Configuration sayfasını ziyaret edin.

Önceden eğitilmiş YOLO26 sınıflandırma modellerini nerede bulabilirim?#

Önceden eğitilmiş YOLO26 sınıflandırma modelleri Models bölümünde bulunabilir. yolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt vb. gibi modeller ImageNet veri kümesi üzerinde önceden eğitilmiştir ve çeşitli görüntü sınıflandırma görevleri için kolayca indirilip kullanılabilir.

Eğitilmiş bir YOLO26 modelini farklı biçimlere nasıl aktarabilirim?#

Eğitilmiş bir YOLO26 modelini Python veya CLI komutlarını kullanarak çeşitli biçimlere aktarabilirsin. Örneğin, bir modeli ONNX biçimine aktarmak için:

Örnek
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")

Ayrıntılı dışa aktarım seçenekleri için Export sayfasına başvurun.

Eğitilmiş bir YOLO26 sınıflandırma modelini nasıl doğrularım?#

Eğitilmiş bir modelin MNIST160 gibi bir veri kümesindeki doğruluğunu doğrulamak için aşağıdaki Python veya CLI komutlarını kullanabilirsin:

Örnek
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

Daha fazla bilgi için Validate bölümünü ziyaret edin.

Yorumlar