Ultralytics YOLO27:
Get Started

تصنيف الصور باستخدام Ultralytics YOLO#

Ultralytics YOLO image classification of objects and scenes

تصنيف الصور هو أبسط المهام المدعومة، ويتضمن تصنيف الصورة بأكملها ضمن فئة واحدة من مجموعة فئات محددة مسبقًا.

يكون ناتج مصنّف الصور تسمية فئة واحدة ودرجة ثقة. ويكون تصنيف الصور مفيدًا عندما تحتاج فقط إلى معرفة الفئة التي تنتمي إليها الصورة، ولا تحتاج إلى معرفة مواقع الكائنات من تلك الفئة أو أشكالها الدقيقة.



شاهد: استكشف مهام Ultralytics YOLO: تصنيف الصور باستخدام منصة Ultralytics
نصيحة

تستخدم نماذج YOLO26 Classify اللاحقة -cls، مثل yolo26n-cls.pt، وتُدرّب مسبقًا على ImageNet.

النماذج#

تظهر أدناه نماذج YOLO26 Classify المدرّبة مسبقًا على مجموعة بيانات ImageNet.

تُنزّل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند استخدامها لأول مرة.

النموذجالحجم
(بكسل)
الدقة
أعلى 1
الدقة
أعلى 5
السرعة
CPU ONNX
(مللي ثانية)
السرعة
T4 TensorRT10
(ms)
المعاملات
(M)
FLOPs
(B) عند 224
YOLO26n-cls22471.490.15.0 ± 0.31.1 ± 0.02.80.4
YOLO26s-cls22476.092.97.9 ± 0.21.3 ± 0.06.71.5
YOLO26m-cls22478.194.217.2 ± 0.42.0 ± 0.011.64.8
YOLO26l-cls22479.094.623.2 ± 0.32.8 ± 0.014.16.0
YOLO26x-cls22479.995.041.4 ± 0.93.8 ± 0.029.613.5
  • تمثل قيم acc دقة النماذج على مجموعة التحقق من ImageNet.
    أعِد إنتاجها باستخدام yolo classify val data=path/to/ImageNet device=0
  • متوسط السرعة على صور التحقق من ImageNet باستخدام ONNX على CPU وTensorRT10 على وحدة معالجة الرسوميات NVIDIA T4.
    أعِد إنتاجها باستخدام yolo classify val data=path/to/ImageNet batch=1 device=0|cpu
  • قيم Params وFLOPs محسوبة للنموذج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.

راجع معاينة YOLO27 غير المُصدرة للاطلاع على السرعة الأولية للتصنيف وأحجام النماذج.

التدريب#

درّب YOLO26n-cls على مجموعة بيانات MNIST160 لمدة 100 حقبة بحجم صورة 64. للاطلاع على القائمة الكاملة للوسيطات المتاحة، راجع صفحة الإعدادات.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-cls.yaml")  # ⁨إنشاء نموذج جديد من YAML⁩
model = YOLO("yolo26n-cls.pt")  # ⁨تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)⁩
model = YOLO("yolo26n-cls.yaml").load("yolo26n-cls.pt")  # ⁨الإنشاء من YAML ونقل الأوزان⁩

# ⁨تدريب النموذج⁩
results = model.train(data="mnist160", epochs=100, imgsz=64)

راجع التفاصيل الكاملة لوضع train في صفحة التدريب. ويمكن أيضًا تدريب نماذج التصنيف باستخدام التدريب السحابي على Ultralytics Platform.

تنسيق مجموعة البيانات#

ترد تفاصيل تنسيق مجموعة بيانات تصنيف YOLO في دليل مجموعات البيانات. ويمكن أيضًا إدارة مجموعات بيانات التصنيف ووضع التسميات عليها باستخدام أدوات التعليقات التوضيحية في Ultralytics Platform.

تحويلات مخصصة#

يستخدم تصنيف Ultralytics YOLO torchvision.transforms.RandomResizedCrop للتدريب وtorchvision.transforms.CenterCrop للتحقق والاستدلال. تفترض هذه التحويلات القائمة على الاقتصاص أن المدخلات مربعة، وقد تقتطع مناطق مهمة من الصور ذات نسب العرض إلى الارتفاع الشديدة. للاحتفاظ بالصورة كاملة، استبدل عمليات الاقتصاص بـ torchvision.transforms.Resize، الذي يغيّر الحجم إلى imgsz × imgsz بدلًا من الاقتصاص، عبر ClassificationDataset وClassificationTrainer وClassificationValidator مخصصة:

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 = "", names=None):
        """Initialize a customized classification dataset with enhanced data augmentation transforms."""
        super().__init__(root, args, augment, prefix, names)

        # ⁨أضف تحويلات التدريب المخصصة هنا⁩
        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),
            ]
        )

        # ⁨أضف تحويلات التحقق المخصصة هنا⁩
        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="train" if mode == "train" else self.args.split,
            names=self.data["names"],
        )

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, names=self.names)

model = YOLO("yolo26n-cls.pt")
model.train(data="imagenet", trainer=CustomizedTrainer, epochs=10, imgsz=224, batch=64)
model.val(data="imagenet", validator=CustomizedValidator, imgsz=224, batch=64)

التحقق#

تحقق من دقة نموذج YOLO26n-cls المدرّب. لا حاجة إلى وسيطات، إذ يحتفظ model ببيانات data الخاصة بالتدريب ووسيطاته ضمن سمات النموذج: يتحقق path/to/best.pt من المثال الوارد في التدريب على MNIST160. تسجل الأوزان الرسمية مسار مجموعة بيانات التدريب الذي لا يوجد على جهازك، لذا تعود إلى imagenet10 الافتراضي للمهمة مع إصدار تحذير. مرّر data للتحقق باستخدام مجموعة بيانات أخرى.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-cls.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨تحقّق من النموذج⁩
metrics = model.val()  # ⁨لا حاجة إلى وسيطات؛ إذ تُحفظ مجموعة البيانات والإعدادات⁩
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
نصيحة

يحتاج النموذج المدرّب باستخدام تحويلات مخصصة إلى تمرير ClassificationValidator المطابق إلى val()، وإلا فسيقتطع التحقق الصور بينما أعاد التدريب تحجيمها.

التنبؤ#

استخدم نموذج YOLO26n-cls مدرّبًا لإجراء تنبؤات على الصور.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-cls.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨أجرِ التنبؤ باستخدام النموذج⁩
results = model("https://ultralytics.com/images/bus.jpg")  # ⁨أجرِ التنبؤ على صورة⁩

# ⁨الوصول إلى النتائج⁩
for result in results:
    top1 = result.probs.top1  # ⁨معرّف الفئة الأعلى تنبؤًا⁩
    top1_conf = result.probs.top1conf  # ⁨درجة الثقة لأعلى تنبؤ⁩
    top1_name = result.names[top1]  # ⁨اسم الفئة الأعلى تنبؤًا⁩

اطّلع على التفاصيل الكاملة لوضع predict في صفحة التنبؤ.

مخرجات النتائج#

يعيد تصنيف الصور كائن Results واحدًا لكل صورة. حقل التنبؤ الأساسي هو result.probs، الذي يحتوي على متجه احتمالات الفئات ودوال مساعدة للتنبؤات الأعلى ترتيبًا.

السمةالنوعالشكلالوصف
result.probsProbs(C,)احتمالات الفئات.
result.probs.datatorch.float32(C,)احتمال كل فئة.
result.probs.top1int()معرّف الفئة الأعلى ترتيبًا.
result.probs.top1conftorch.float32()درجة الثقة الأعلى.
result.probs.top5list[int](<=5)معرّفات الفئات الخمس الأعلى ترتيبًا.

للاطلاع على حقول Results الخاصة بكل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.

التصدير#

صدّر نموذج YOLO26n-cls إلى تنسيق آخر مثل ONNX أو CoreML، إلخ.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-cls.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨صدّر النموذج⁩
model.export(format="onnx")

ترد تنسيقات التصدير المتاحة لـ YOLO26-cls في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيطة format، مثل format='onnx' أو format='engine'. ويمكنك إجراء التنبؤ أو التحقق مباشرةً على النماذج المُصدرة، مثل yolo predict model=yolo26n-cls.onnx. تظهر أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيقوسيط formatالنموذجالبيانات الوصفيةالوسيطات
PyTorch-yolo26n-cls.pt✅-
TorchScripttorchscriptyolo26n-cls.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-cls.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-cls_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-cls.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-cls.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-cls.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-cls_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-cls.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-cls_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-cls.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-cls_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-cls.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-cls_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-cls_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-cls_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-cls_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-cls_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-cls_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-cls_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-cls_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-cls_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-cls_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.

اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.

الأسئلة الشائعة#

  • صُممت نماذج YOLO26، مثل yolo26n-cls.pt، لتصنيف الصور بكفاءة. وتعيّن تسمية فئة واحدة للصورة بأكملها إلى جانب درجة ثقة. وهذا مفيد على وجه الخصوص للتطبيقات التي تكفي فيها معرفة الفئة المحددة للصورة، بدلًا من تحديد موقع الكائنات فيها أو أشكالها.

  • لتدريب نموذج YOLO26، يمكنك استخدام أوامر Python أو CLI. على سبيل المثال، لتدريب نموذج yolo26n-cls على مجموعة بيانات MNIST160 لمدة 100 حقبة بحجم صورة 64:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج⁩
    model = YOLO("yolo26n-cls.pt")  # ⁨تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)⁩
    
    # ⁨تدريب النموذج⁩
    results = model.train(data="mnist160", epochs=100, imgsz=64)

    لمزيد من خيارات الإعداد، تفضّل بزيارة صفحة الإعدادات.

  • يمكن العثور على نماذج تصنيف YOLO26 المدرّبة مسبقًا في قسم النماذج. تُدرَّب نماذج مثل yolo26n-cls.pt وyolo26s-cls.pt وyolo26m-cls.pt وغيرها مسبقًا على مجموعة بيانات ImageNet، ويمكن تنزيلها بسهولة واستخدامها في مهام تصنيف الصور المتنوعة.

  • للتحقق من دقة نموذج مدرَّب على مجموعة بيانات مثل MNIST160، يمكنك استخدام أوامر Python أو CLI التالية:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج⁩
    model = YOLO("path/to/best.pt")  # ⁨حمّل النموذج المدرَّب⁩
    
    # ⁨تحقّق من النموذج⁩
    metrics = model.val()  # ⁨لا حاجة إلى وسيطات؛ إذ يستخدم مجموعة البيانات والإعدادات الخاصة بالتدريب⁩
    metrics.top1  # top1 accuracy
    metrics.top5  # top5 accuracy

    لمزيد من المعلومات، تفضّل بزيارة قسم التحقق من الصحة.

  • يمكنك تصدير نموذج YOLO26 مدرَّب إلى تنسيقات متنوعة باستخدام أوامر Python أو CLI. على سبيل المثال، لتصدير نموذج إلى تنسيق ONNX:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج⁩
    model = YOLO("yolo26n-cls.pt")  # ⁨حمّل النموذج المدرَّب⁩
    
    # ⁨صدّر النموذج إلى ONNX⁩
    model.export(format="onnx")

    للاطلاع على خيارات التصدير بالتفصيل، راجع صفحة التصدير.

التعليقات