Ultralytics YOLO27:
Get Started

Ultralytics YOLO ile Görüntü Sınıflandırma#

Ultralytics YOLO image classification of objects and scenes

Görüntü sınıflandırma, desteklenen görevlerin en basitidir ve bir görüntünün tamamını önceden tanımlanmış sınıflardan birine atamayı içerir.

Bir görüntü sınıflandırıcısının çıktısı, tek bir sınıf etiketi ve güven puanıdır. Görüntü sınıflandırma, bir görüntünün hangi sınıfa ait olduğunu bilmenin yeterli olduğu; o sınıfa ait nesnelerin nerede bulunduğunu veya tam şekillerinin ne olduğunu bilmenin gerekmediği durumlarda kullanışlıdır.



İzle: Ultralytics YOLO Görevlerini Keşfet: Ultralytics Platformunu Kullanarak Görüntü Sınıflandırma
İpucu

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

Modeller#

ImageNet veri kümesinde önceden eğitilmiş YOLO26 Classify modelleri aşağıda gösterilmiştir.

Modeller ilk kullanımda en güncel Ultralytics sürümünden otomatik olarak indirilir.

Modelboyut
(piksel)
acc
top1
acc
top5
Hız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametre
(M)
FLOPs
(B), 224'te
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
  • acc değerleri, modellerin ImageNet veri kümesinin doğrulama bölümündeki doğruluğunu gösterir.
    yolo classify val data=path/to/ImageNet device=0 ile yeniden üret
  • Hız, ONNX ile CPU'da ve TensorRT10 ile NVIDIA T4 GPU'da ImageNet doğrulama görüntüleri üzerinde ortalamadır.
    yolo classify val data=path/to/ImageNet batch=1 device=0|cpu ile yeniden üret
  • Parametre 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ı, tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

Ön sınıflandırma hızı ve model boyutları için yayınlanmamış YOLO27 önizlemesine bak.

Eğit#

MNIST160 veri kümesinde YOLO26n-cls modelini, görüntü boyutu 64 olacak şekilde 100 epoch boyunca eğit. Kullanılabilir argümanların tam listesi için Yapılandırma sayfasına bak.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-cls.yaml")  # YAML'den yeni bir model oluştur
model = YOLO("yolo26n-cls.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
model = YOLO("yolo26n-cls.yaml").load("yolo26n-cls.pt")  # YAML'den oluştur ve ağırlıkları aktar

# Modeli eğit
results = model.train(data="mnist160", epochs=100, imgsz=64)

train modunun tüm ayrıntılarını Eğitim sayfasında bulabilirsin. Sınıflandırma modelleri Ultralytics Platform bulut eğitimi ile de eğitilebilir.

Veri kümesi biçimi#

YOLO sınıflandırma veri kümesi biçiminin ayrıntılarını Veri Kümesi Kılavuzu sayfasında bulabilirsin. Sınıflandırma veri kümeleri Ultralytics Platform açıklama araçları ile de yönetilebilir ve etiketlenebilir.

Özel dönüşümler#

Ultralytics YOLO sınıflandırması, eğitim için torchvision.transforms.RandomResizedCrop, doğrulama ve çıkarım için torchvision.transforms.CenterCrop kullanır. Kırpmaya dayalı bu dönüşümler kare girişler varsayar ve en-boy oranı aşırı olan görüntülerde önemli bölgeleri kırparak çıkarabilir. Görüntünün tamamını korumak için kırpmaları, kırpmak yerine imgsz × imgsz boyutlarına ölçekleyen torchvision.transforms.Resize ile özel bir ClassificationDataset, ClassificationTrainer ve ClassificationValidator üzerinden değiştir:

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)

        # Özel eğitim dönüşümlerini buraya ekle
        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),
            ]
        )

        # Özel doğrulama dönüşümlerini buraya ekle
        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)

Doğrula#

Eğitilmiş YOLO26n-cls modelinin doğruluğunu doğrula. model eğitimde kullanılan data değerini ve argümanları model öznitelikleri olarak koruduğundan herhangi bir argüman gerekmez: Eğitim örneğindeki path/to/best.pt, MNIST160 üzerinde doğrulama yapar. Resmî ağırlıklar, makinede bulunmayan bir eğitim veri kümesi yolu kaydeder; bu nedenle uyarı vererek görev varsayılanı olan imagenet10 değerine geri döner. Başka bir veri kümesinde doğrulama yapmak için data değerini geçir.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-cls.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli doğrula
metrics = model.val()  # Bağımsız değişken gerekmez; veri kümesi ve ayarlar hatırlanır
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
İpucu

Özel dönüşümlerle eğitilmiş bir model için eşleşen ClassificationValidator değerini val()'ye geçirmen gerekir; aksi takdirde doğrulamada, eğitim sırasında yeniden boyutlandırılan yerler kırpılır.

Tahmin#

Görüntülerde tahmin yapmak için eğitilmiş bir YOLO26n-cls modeli kullan.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-cls.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modelle tahmin yap
results = model("https://ultralytics.com/images/bus.jpg")  # bir görüntü üzerinde tahmin yap

# Sonuçlara eriş
for result in results:
    top1 = result.probs.top1  # en yüksek tahmin edilen sınıf kimliği
    top1_conf = result.probs.top1conf  # en yüksek tahmin güveni
    top1_name = result.names[top1]  # en yüksek tahmin edilen sınıf adı

predict kipinin tüm ayrıntıları için Tahmin sayfasına bak.

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ığı vektörünü ve en yüksek tahminlere yönelik yardımcı işlevleri içeren result.probs değeridir.

ÖznitelikTürŞ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 yüksek sınıf kimliği.
result.probs.top1conftorch.float32()En yüksek güven değeri.
result.probs.top5list[int](<=5)En yüksek 5 sınıf kimliği.

Tüm görevlerde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bak.

Dışa aktar#

YOLO26n-cls modelini ONNX, CoreML vb. başka bir biçime aktar.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-cls.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli dışa aktar
model.export(format="onnx")

Kullanılabilir YOLO26-cls dışa aktarma biçimleri aşağıdaki tabloda listelenmiştir. format argümanını, yani format='onnx' veya format='engine' değerini kullanarak istediğin biçime aktarabilirsin. Dışa aktarılmış modellerde doğrudan tahmin veya doğrulama yapabilirsin; örneğin yolo predict model=yolo26n-cls.onnx. Dışa aktarma tamamlandığında modeline ilişkin kullanım örnekleri gösterilir.

Biçimformat bağımsız değişkeniModelÜst verilerBağımsız değişkenler
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, harici NMS için varsayılan olarak ham çıktılar üretir. Kullanılabilir bir NMS içermeyen başlık seçmek için nms=False değerini ayarla; desteklenmeyen biçimler yerel çıktı yoluna döner. Yukarıdaki nms girdileri, nms=True ile NMS içerebilen biçimleri tanımlar.

Ayrıntılı export bilgileri için Dışa Aktarma sayfasına bak.

Sık Sorulan Sorular#

  • yolo26n-cls.pt gibi YOLO26 modelleri, verimli görüntü sınıflandırması için tasarlanmıştır. Bir görüntünün tamamına tek bir sınıf etiketi ve güven puanı atarlar. Bu, görüntüdeki nesnelerin konumunu veya şeklini belirlemek yerine yalnızca görüntünün belirli sınıfını bilmenin yeterli olduğu uygulamalarda özellikle kullanışlıdır.

  • YOLO26 modelini eğitmek için Python veya CLI komutlarını kullanabilirsin. Örneğin, MNIST160 veri kümesinde bir yolo26n-cls modelini görüntü boyutu 64 olacak şekilde 100 epoch eğitmek için:

    Örnek
    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n-cls.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
    
    # Modeli eğit
    results = model.train(data="mnist160", epochs=100, imgsz=64)

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

  • Önceden eğitilmiş YOLO26 sınıflandırma modellerini Modeller bölümünde bulabilirsin. yolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt vb. modeller ImageNet veri kümesiyle önceden eğitilmiştir ve çeşitli görüntü sınıflandırma görevlerinde kullanılmak üzere kolayca indirilebilir.

  • 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
    
    # Bir model yükle
    model = YOLO("path/to/best.pt")  # eğitilmiş modeli yükle
    
    # Modeli doğrula
    metrics = model.val()  # argüman gerekmiyor; eğitimdeki veri kümesini ve ayarları kullanır
    metrics.top1  # top1 accuracy
    metrics.top5  # top5 accuracy

    Daha fazla bilgi için Doğrulama bölümünü ziyaret et.

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

    Örnek
    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n-cls.pt")  # eğitilmiş modeli yükle
    
    # Modeli ONNX biçimine aktar
    model.export(format="onnx")

    Ayrıntılı aktarım seçenekleri için Aktarım sayfasına bak.

Yorumlar