تصنيف الصور
تصنيف الصور هو أبسط المهام الثلاث ويتضمن تصنيف صورة بالكامل إلى واحدة من مجموعة من الفئات المحددة مسبقًا.
مخرجات مصنف الصور هي تسمية فئة واحدة ودرجة ثقة. تصنيف الصور مفيد عندما تحتاج فقط إلى معرفة الفئة التي تنتمي إليها الصورة ولا تحتاج إلى معرفة مكان وجود كائنات تلك الفئة أو شكلها الدقيق.
Watch: Explore Ultralytics YOLO Tasks: Image Classification using Ultralytics Platform
تستخدم نماذج YOLO26 Classify اللاحقة -cls-clsyolo26n-cls.pt، أي ImageNet.
YOLO26n-cls
، وهي مدربة مسبقًا على COCOنماذجImageNetيتم عرض نماذج YOLO26 المدربة مسبقًا للتصنيف هنا. نماذج الكشف والتجزئة وتحديد الوضع مدربة مسبقًا على مجموعة بيانات
YOLO26n-cls، بينما نماذج التصنيف مدربة مسبقًا على مجموعة بيانات ImageNet يتم تنزيلها تلقائيًا من أحدث إصدار لـ Ultralytics
| النموذج | الحجم (بالبكسل) | الدقة top1 | الدقة top5 | السرعة CPU ONNX (ms) | السرعة T4 TensorRT10 (ms) | المعلمات (M) | FLOPs (B) عند 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 | 224 | 1.6 | YOLO26m-cls | 78.1 | 94.2 | 17.2 ± 0.4 | 2.0 ± 0.0 |
| 11.6 | 224 | 4.9 | YOLO26l-cls | 79.0 | 94.6 | 23.2 ± 0.3 | 2.8 ± 0.0 |
| 14.1 | 224 | 6.2 | YOLO26x-cls | 79.9 | 95.0 | 41.4 ± 0.9 | 3.8 ± 0.0 |
- الدقة29.6ImageNet13.6
قيم mAP50-95 هي دقة النموذج على مجموعة التحقق من مجموعة بياناتyolo val classify data=path/to/ImageNet device=0 - السرعةImageNet مجموعة البيانات. أعد الإنتاج بواسطة
قيم mAP50-95 هي دقة النموذج على مجموعة التحقق من مجموعة بياناتyolo val classify data=path/to/ImageNet batch=1 device=0|cpu - yolo classify val model=yolo26n-cls.pt dataset=imagenet و FLOPs بمتوسط على صور التحقق من ImageNet باستخدام مثيل
model.fuse()Amazon EC2 P4d
Train
. قيم حقبة (epochs)Paramsالإعدادات.
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) هي للنموذج المدمج بعد torchvision.transforms.RandomResizedCropFusiontorchvision.transforms.CenterCrop، والذي يدمج طبقات Conv و BatchNorm. تحتفظ نقاط التحقق المدربة مسبقًا بالبنية التدريبية الكاملة وقد تظهر أعدادًا أعلى.torchvision.transforms.Resizeتدريب YOLO26n-cls على مجموعة بيانات MNIST160 لـ 100
epochsClassificationDataset و 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, 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, 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("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)بحجم صورة 64. للحصول على قائمة كاملة بالوسائط المتاحة، راجع
Configurationيستخدم تصنيف Ultralytics YOLO CenterCropمنصة Ultralytics.
Val
للتدريب و دقةResizemodel بـ data والوسائط الخاصة بالتدريب كسمات للنموذج.
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 accuracy للتحقق والاستدلال. تفترض هذه التحويلات القائمة على القص مدخلات مربعة وقد تؤدي عن غير قصد إلى قص مناطق مهمة من الصور ذات نسب العرض إلى الارتفاع المتطرفة، مما قد يتسبب في فقدان معلومات بصرية حاسمة أثناء التدريب. للحفاظ على الصورة الكاملة مع الحفاظ على نسبها، فكر في استخدام LetterBox بدلاً من تحويلات القص.ClassificationTrainerيمكنك تنفيذ ذلك عن طريق تخصيص خط أنابيب الزيادة الخاص بك من خلال ClassificationValidator عند استدعاء الطريقة val()إعداد بيانات مخصصLetterBoxتنسيق مجموعة بيانات تصنيف YOLO يمكن العثور عليه بالتفصيل في
التنبؤ
دليل مجموعة البيانات
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شاهد كامل predict. يمكن أيضًا إدارة مجموعات بيانات التصنيف وتسميتها على التنبؤ.
Export
Roboflow
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")التحقق من صحة نموذج YOLO26n-cls المدرب format، أي format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرة من النماذج المُصدرة، أي yolo predict model=yolo26n-cls.onnxyolo classify val model=yolo26n-cls.pt data=mnist160
| التنسيق | format وسيط | النموذج | البيانات الوصفية | الوسائط |
|---|---|---|---|---|
| PyTorch | - | yolo26n-cls.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-cls.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-cls.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, 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, device |
| ExecuTorch | executorch | yolo26n-cls_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-cls_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
شاهد كامل export تفاصيل في صفحة Export.
الأسئلة الشائعة (FAQ)
على مجموعة بيانات MNIST160. لا يلزم وجود وسائط حيث يتم استخدام
model.argsyolo26n-cls.ptكما هو مذكور في
قسم التدريب
، يمكنك التعامل مع نسب العرض إلى الارتفاع المتطرفة أثناء التدريب باستخدام yolo26n-clsData Augmentation
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)مخصص. تحتاج إلى تطبيق نفس النهج للحصول على نتائج تحقق متسقة من خلال تنفيذ طريقة الإعدادات.
custom_preprocess_fn
. راجع مثال الكود الكامل في YOLO26n-clsالتوثيقyolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt للحصول على تفاصيل التنفيذ.ImageNetاستخدم نموذج YOLO26n-cls مدرب لتشغيل التنبؤات على الصور.
تفاصيل وضع
Predict
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")في Export.
التوثيق
تصدير نموذج YOLO26n-cls إلى تنسيق مختلف مثل ONNX، CoreML، إلخ.
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 accuracyلمزيد من المعلومات، قم بزيارةتنسيقات تصدير YOLO26-cls المتاحة موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام .