Görüntü Sınıflandırma#
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
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.
| Model | boyut (piksel) | acc top1 | acc top5 | Hız CPU ONNX (ms) | Hız T4 TensorRT10 (ms) | parametreler (M) | FLOPs (B) at 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 |
- acc değerleri ImageNet veri kümesi doğrulama setindeki model doğruluklarıdır.
yolo val classify data=path/to/ImageNet device=0ile 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|cpuile 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.
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)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.
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 accuracyEğ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.
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 nameTam 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.
| Öznitelik | Tip | Şekil | Açıklama |
|---|---|---|---|
result.probs | Probs | (C,) | Sınıf olasılıkları. |
result.probs.data | torch.float32 | (C,) | Sınıf başına olasılık. |
result.probs.top1 | int | () | En iyi sınıf kimliği. |
result.probs.top1conf | torch.float32 | () | En iyi güvenilirlik. |
result.probs.top5 | list[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.
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.
| Format | format Argümanı | Model | Meta veriler | Argümanlar |
|---|---|---|---|---|
| PyTorch | - | yolo26n-cls.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-cls.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-cls.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-cls_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-cls.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-cls.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-cls_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-cls.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-cls_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-cls_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-cls.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-cls_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-cls_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-cls_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-cls_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-cls_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-cls_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-cls_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n-cls.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-cls_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-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:
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:
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:
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 accuracyDaha fazla bilgi için Validate bölümünü ziyaret edin.