Görüntü Sınıflandırması
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çinyolo 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çinyolo 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.