تخطي إلى المحتوى

تصنيف الصور

أمثلة على تصنيف الصور

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

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



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

نصيحة

تستخدم نماذج YOLO11 Classify -cls ، على سبيل المثال. yolo11n-cls.pt ، وهي مُدرَّبة مسبقًا على ImageNet.

النماذج

نماذج YOLO11 Classify المدربة مسبقًا معروضة هنا. يتم تدريب نماذج Detect و Segment و Pose مسبقًا على مجموعة بيانات COCO، بينما يتم تدريب نماذج Classify مسبقًا على مجموعة بيانات ImageNet.

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

النموذج الحجم
(بالبكسل)
acc
top1
acc
top5
السرعة
وحدة المعالجة المركزية CPU ONNX
(بالمللي ثانية)
السرعة
T4 TensorRT10
(بالمللي ثانية)
المعلمات
(M)
FLOPs
(B) عند 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 هي قيم دقة النموذج على ImageNet مجموعة التحقق من صحة البيانات.
    إعادة الإنتاج بواسطة yolo val classify data=path/to/ImageNet device=0
  • السرعة تم حسابه على صور ImageNet val باستخدام Amazon EC2 P4d مثيل.
    إعادة الإنتاج بواسطة yolo val classify data=path/to/ImageNet batch=1 device=0|cpu

تدريب

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

مثال

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

نصيحة

يستخدم تصنيف Ultralytics YOLO torchvision.transforms.RandomResizedCrop للتدريب و torchvision.transforms.CenterCrop للتحقق والاستدلال. تفترض هذه التحويلات القائمة على الاقتصاص مدخلات مربعة وقد تقتطع عن غير قصد مناطق مهمة من الصور ذات نسب العرض إلى الارتفاع الشديدة، مما قد يتسبب في فقدان معلومات مرئية مهمة أثناء التدريب. للحفاظ على الصورة كاملة مع الحفاظ على نسبها، ضع في اعتبارك استخدام torchvision.transforms.Resize بدلاً من تحويلات الاقتصاص.

يمكنك تنفيذ ذلك عن طريق تخصيص خط أنابيب الزيادة الخاص بك من خلال ClassificationDataset و 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)

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

يمكن العثور على تنسيق مجموعة بيانات تصنيف YOLO بالتفصيل في دليل مجموعة البيانات.

التحقق

التحقق من صحة نموذج YOLO11n-cls المدرب الدقة على مجموعة بيانات MNIST160. لا توجد حاجة إلى وسائط حيث أن model يحتفظ بالتدريب الخاص به data والوسائط كسمات للنموذج.

مثال

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

نصيحة

كما ذكر في قسم التدريب، يمكنك التعامل مع نسب العرض إلى الارتفاع المتطرفة أثناء التدريب باستخدام ClassificationTrainer: تحتاج إلى تطبيق نفس النهج للحصول على نتائج تحقق متسقة من خلال تطبيق مخصص للـ ClassificationValidator عند استدعاء الدالة val() طريقة. ارجع إلى مثال التعليمات البرمجية الكامل في قسم التدريب للحصول على تفاصيل التنفيذ.

توقع

استخدم نموذج YOLO11n-cls مدرب لتشغيل التنبؤات على الصور.

مثال

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

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

تصدير

تصدير نموذج YOLO11n-cls إلى تنسيق مختلف مثل ONNX و CoreML وما إلى ذلك.

مثال

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

تنسيقات تصدير YOLO11-cls المتاحة موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام format ، أي: format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرةً من النماذج التي تم تصديرها، أي: yolo predict model=yolo11n-cls.onnx. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيق format الوسيطة النموذج البيانات الوصفية الوسائط
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

اطلع على التفاصيل الكاملة export التفاصيل في تصدير التنبؤ.

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

ما هو الغرض من YOLO11 في تصنيف الصور؟

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

كيف يمكنني تدريب نموذج YOLO11 لتصنيف الصور؟

لتدريب نموذج YOLO11، يمكنك استخدام أوامر Python أو CLI. على سبيل المثال، لتدريب yolo11n-cls نموذج على مجموعة بيانات MNIST160 لـ 100 دورة تدريبية (epoch) بحجم صورة 64:

مثال

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

لمزيد من خيارات التكوين، قم بزيارة صفحة التكوين.

أين يمكنني العثور على نماذج تصنيف YOLO11 المدربة مسبقًا؟

يمكن العثور على نماذج تصنيف YOLO11 المدربة مسبقًا في قسم النماذج النماذج مثل yolo11n-cls.pt, yolo11s-cls.pt, yolo11m-cls.pt، إلخ، مدربة مسبقًا على ImageNet ويمكن تنزيلها واستخدامها بسهولة لمهام تصنيف الصور المختلفة.

كيف يمكنني تصدير نموذج YOLO11 مدرب إلى تنسيقات مختلفة؟

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

مثال

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

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

كيف يمكنني التحقق من نموذج تصنيف YOLO11 مدرب؟

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

مثال

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

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



📅 أُنشئ منذ سنة واحدة ✏️ تم التحديث منذ 23 يومًا

تعليقات