İçeriğe geç

Görüntü Sınıflandırması

Görüntü sınıflandırma örnekleri

Görüntü sınıflandırması üç görevden en basiti olup, tüm bir görüntüyü önceden tanımlanmış bir dizi sınıftan birine sınıflandırmayı 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üvenilirlik puanıdır. Görüntü sınıflandırması, yalnızca bir görüntünün hangi sınıfa ait olduğunu bilmeniz gerektiğinde ve o sınıftaki nesnelerin nerede bulunduğunu veya tam şeklinin ne olduğunu bilmeniz gerekmediğinde kullanışlıdır.



İzle: Ultralytics HUB'ı kullanarak Ultralytics YOLO Görevlerini Keşfedin: Görüntü Sınıflandırması

İpucu

YOLO11 Sınıflandırma modelleri şunu kullanır: -cls eki, yani yolo11n-cls.pt ve üzerinde önceden eğitilmiştir ImageNet.

Modeller

YOLO11 önceden eğitilmiş Sınıflandırma modelleri burada gösterilmektedir. Tespit, Segment ve Poz modelleri COCO veri kümesi üzerinde önceden eğitilirken, Sınıflandırma modelleri ImageNet veri kümesi üzerinde önceden eğitilir.

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

Model boyut
(piksel)
acc
top1
acc
top5
Hız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametreler
(M)
FLOP'lar
(Milyar) - 224
YOLO11n-cls 224 70.0 89.4 5.0 ± 0.3 1.1 ± 0.0 1.6 0.5
YOLO11s-cls 224 75.4 92.7 7.9 ± 0.2 1.3 ± 0.0 5.5 1.6
YOLO11m-cls 224 77.3 93.9 17.2 ± 0.4 2.0 ± 0.0 10.4 5.0
YOLO11l-cls 224 78.3 94.3 23.2 ± 0.3 2.8 ± 0.0 12.9 6.2
YOLO11x-cls 224 79.5 94.9 41.4 ± 0.9 3.8 ± 0.0 28.4 13.7
  • acc değerleri, üzerindeki model doğruluklarıdır ImageNet veri kümesi doğrulama kümesi.
    Tekrar oluşturmak için yolo val classify data=path/to/ImageNet device=0
  • Hız kullanılarak ImageNet val görüntüleri üzerinde ortalaması alınmıştır Amazon EC2 P4d örneği kullanılarak COCO val görüntülerinde ortalama alınmıştır.
    Tekrar oluşturmak için yolo val classify data=path/to/ImageNet batch=1 device=0|cpu

Eğit

MNIST160 veri kümesinde YOLO11n-cls'yi 64 resim boyutunda 100 epok için eğitin. Mevcut argümanların tam listesi için Yapılandırma sayfasına bakın.

Örnek

from ultralytics import YOLO

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

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
# Build a new model from YAML and start training from scratch
yolo classify train data=mnist160 model=yolo11n-cls.yaml epochs=100 imgsz=64

# Start training from a pretrained *.pt model
yolo classify train data=mnist160 model=yolo11n-cls.pt epochs=100 imgsz=64

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo classify train data=mnist160 model=yolo11n-cls.yaml pretrained=yolo11n-cls.pt epochs=100 imgsz=64

İpucu

Ultralytics YOLO sınıflandırması şunu kullanır: torchvision.transforms.RandomResizedCrop eğitim için ve torchvision.transforms.CenterCrop doğrulama ve çıkarım için. Bu kırpma tabanlı dönüşümler, kare girişler varsayar ve aşırı en boy oranlarına sahip görüntülerden önemli bölgeleri yanlışlıkla kırparak eğitim sırasında kritik görsel bilgilerin kaybına neden olabilir. Görüntünün tamamını oranlarını koruyarak muhafaza etmek için şunu kullanmayı düşünebilirsiniz: torchvision.transforms.Resize kırpma dönüşümleri yerine.

Bunu, artırma hattınızı özel bir şekilde özelleştirerek uygulayabilirsiniz. ClassificationDataset ve ClassificationTrainer.

import torch
import torchvision.transforms as T

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


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, mode: str = "train"):
        """Build a customized dataset for classification standalone validation."""
        return CustomizedDataset(root=img_path, args=self.args, augment=mode == "train", prefix=self.args.split)


model = YOLO("yolo11n-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 formatı

YOLO sınıflandırma veri kümesi formatı hakkında ayrıntılı bilgiye Veri Kümesi Kılavuzu bölümünden ulaşılabilir.

Doğrula

Eğitilmiş YOLO11n-cls modelini doğrulayın doğruluğu MNIST160 veri kümesinde. Herhangi bir argümana gerek yoktur, çünkü model eğitimini korur data ve argümanları model nitelikleri olarak saklar.

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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
yolo classify val model=yolo11n-cls.pt  # val official model
yolo classify val model=path/to/best.pt # val custom model

İpucu

İçinde bahsedildiği gibi eğitim bölümü, özel bir kullanarak eğitim sırasında aşırı en boy oranlarını işleyebilirsiniz ClassificationTrainer. Özel bir uygulayarak tutarlı doğrulama sonuçları için aynı yaklaşımı uygulamanız gerekir. ClassificationValidator olarak ayarlayarak val() yöntemi. İçindeki eksiksiz kod örneğine bakın: eğitim bölümü uygulama detayları için.

Tahmin et

Eğitilmiş bir YOLO11n-cls modelini kullanarak görüntüler üzerinde tahminler yürütün.

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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
yolo classify predict model=yolo11n-cls.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo classify predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model

Tamamını görün predict sayfasındaki mod ayrıntıları. Tahmin et sayfasında bulabilirsiniz.

Dışa aktar

Bir YOLO11n-cls modelini ONNX, CoreML vb. gibi farklı bir formata aktarın.

Örnek

from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-cls.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

Mevcut YOLO11-cls dışa aktarma formatları aşağıdaki tabloda yer almaktadır. Aşağıdakini kullanarak herhangi bir formata aktarabilirsiniz: format argümanını kullanarak dışa aktarabilirsiniz, örneğin format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsiniz, örneğin yolo predict model=yolo11n-cls.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modeliniz için gösterilir.

Format format Argüman Model Meta Veri Argümanlar
PyTorch - yolo11n-cls.pt -
TorchScript torchscript yolo11n-cls.torchscript imgsz, half, optimize, nms, batch, device
ONNX onnx yolo11n-cls.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n-cls_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n-cls.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n-cls.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n-cls_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n-cls.pb imgsz, batch, device
TF Lite tflite yolo11n-cls.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n-cls_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n-cls_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n-cls_paddle_model/ imgsz, batch, device
MNN mnn yolo11n-cls.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n-cls_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n-cls_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n-cls_rknn_model/ imgsz, batch, name, device

Tamamını görün export ayrıntıları Dışa aktar sayfasında bulabilirsiniz.

SSS

Görüntü sınıflandırmasında YOLO11'in amacı nedir?

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

Görüntü sınıflandırması için bir YOLO11 modeli nasıl eğitirim?

Bir YOLO11 modelini eğitmek için python veya CLI komutlarını kullanabilirsiniz. Örneğin, bir yolo11n-cls modelini 64'lük bir görüntü boyutunda 100 epoch için MNIST160 veri kümesi üzerinde eğitmek için:

Örnek

from ultralytics import YOLO

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

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
yolo classify train data=mnist160 model=yolo11n-cls.pt epochs=100 imgsz=64

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

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

Önceden eğitilmiş YOLO11 sınıflandırma modelleri şurada bulunabilir: Modeller bölümü. Gibi modeller yolo11n-cls.pt, yolo11s-cls.pt, yolo11m-cls.pt, vb., üzerinde önceden eğitilmiştir ImageNet veri kümesi ve çeşitli görüntü sınıflandırma görevleri için kolayca indirilip kullanılabilir.

Eğitilmiş bir YOLO11 modelini farklı formatlara nasıl aktarabilirim?

Eğitilmiş bir YOLO11 modelini Python veya CLI komutlarını kullanarak çeşitli formatlara aktarabilirsiniz. Örneğin, bir modeli ONNX formatına aktarmak için:

Örnek

from ultralytics import YOLO

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

# Export the model to ONNX
model.export(format="onnx")
yolo export model=yolo11n-cls.pt format=onnx # export the trained model to ONNX format

Ayrıntılı dışa aktarma seçenekleri için Dışa Aktarma sayfasına bakın.

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

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

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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
yolo classify val model=yolo11n-cls.pt # validate the trained model

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



📅 1 yıl önce oluşturuldu ✏️ 19 gün önce güncellendi

Yorumlar