Link to this sectionGörüntü Sınıflandırma#
Görüntü sınıflandırma, desteklenen görevlerin en basitidir ve tüm görüntüyü önceden tanımlanmış bir sınıflar kümesinden birine dahil etmeyi 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 sonekini kullanır (örneğin: yolo26n-cls.pt) ve ImageNet üzerinde önceden eğitilmişlerdir.
Link to this sectionModeller#
YOLO26 önceden eğitilmiş Classify modelleri burada gösterilmektedir. Detect, Segment ve Pose modelleri COCO veri kümesinde, Semantic modelleri Cityscapes üzerinde ve Classify modelleri ise ImageNet veri kümesinde önceden eğitilmiştir.
Modeller, ilk kullanımda en güncel 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) | 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=0komutuyla yeniden oluşturabilirsin. - Hız, Amazon EC2 P4d örneği kullanılarak ImageNet val görüntüleri üzerinde ortalama olarak hesaplanmıştır.
yolo val classify data=path/to/ImageNet batch=1 device=0|cpukomutuyla yeniden oluşturabilirsin. - Params ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren
model.fuse()işleminden sonraki birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları, tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
Link to this sectionEğit (Train)#
YOLO26n-cls modelini MNIST160 veri kümesi üzerinde 64 görüntü boyutunda 100 epoch boyunca eğit. Mevcut tüm argümanların tam listesi için Yapılandırma sayfasına bak.
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/çıkarım için torchvision.transforms.CenterCrop kullanır.
Bu kırpma tabanlı dönüşümler kare girişleri 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, kırpma dönüşümleri yerine torchvision.transforms.Resize kullanmayı düşün.
Bunu, özel bir ClassificationDataset ve ClassificationTrainer aracılığıyla artırma (augmentation) 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)Link to this sectionVeri kümesi biçimi#
YOLO sınıflandırma veri kümesi biçimi hakkında ayrıntılı bilgi Veri Kümesi Kılavuzu sayfasında bulunabilir. Sınıflandırma veri kümeleri, Ultralytics Platform üzerinden de yönetilebilir ve etiketlenebilir.
Link to this sectionDoğrula (Val)#
MNIST160 veri kümesinde eğitilmiş YOLO26n-cls modelinin doğruluğunu doğrula. model kendi eğitim data'sını ve argümanlarını model nitelikleri olarak koruduğu için herhangi 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 accuracyAs mentioned in the training section, you can handle extreme aspect ratios during training by using a custom ClassificationTrainer. You need to apply the same approach for consistent validation results by implementing a custom ClassificationValidator when calling the val() method. Refer to the complete code example in the training section for implementation details.
Link to this sectionTahmin 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 nameTüm predict modu ayrıntılarını Tahmin (Predict) sayfasında görebilirsin.
Link to this sectionSonuç Çı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 iyi tahminler için yardımcıları içeren result.probs alanıdır.
| Öznitelik | Tip | Şekil (Shape) | 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 (ID). |
result.probs.top1conf | torch.float32 | () | En iyi güven düzeyi. |
result.probs.top5 | list[int] | (<=5) | En iyi 5 sınıf kimliği (ID). |
Her görev için göreve özel Results alanlarını görmek istersen, Göreve Göre Tahmin Sonuçları bölümüne bak.
Link to this sectionDış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 aktarma biçimleri aşağıdaki tabloda yer almaktadır. format argümanını kullanarak (örneğin: format='onnx' veya format='engine') herhangi bir biçime aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsin (örneğin: yolo predict model=yolo26n-cls.onnx). Dışa aktarma tamamlandıktan sonra modelin için kullanım örnekleri gösterilir.
| Format | format Argümanı | Model | Meta veriler | Argümanlar |
|---|---|---|---|---|
| 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 |
Tüm export ayrıntılarını Export sayfasında bulabilirsin.
Link to this sectionSSS#
Link to this sectionYOLO26'nın görüntü sınıflandırmadaki amacı nedir?#
yolo26n-cls.pt gibi YOLO26 modelleri verimli görüntü sınıflandırma için tasarlanmıştır. Tüm görüntüye bir güven puanıyla birlikte tek bir sınıf etiketi atarlar. Bu, görüntüdeki nesnelerin konumunu veya şeklini tanımlamak yerine görüntünün belirli sınıfını bilmenin yeterli olduğu uygulamalar için özellikle yararlıdır.
Link to this sectionGö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, bir yolo26n-cls modelini MNIST160 veri kümesi üzerinde 64 görüntü boyutunda 100 epoch boyunca 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 Yapılandırma sayfasını ziyaret et.
Link to this sectionÖnceden eğitilmiş YOLO26 sınıflandırma modellerini nerede bulabilirim?#
Önceden eğitilmiş YOLO26 sınıflandırma modellerini Modeller bölümünde bulabilirsin. yolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt gibi modeller ImageNet veri kümesi üzerinde önceden eğitilmiştir ve kolayca indirilip çeşitli görüntü sınıflandırma görevleri için kullanılabilir.
Link to this sectionEğ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 aktarma seçenekleri için Dışa Aktarma (Export) sayfasına başvur.
Link to this sectionEğ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 Doğrulama (Validate) bölümünü ziyaret et.