تصنيف الصور
تصنيف الصور هو أبسط المهام الثلاث ويتضمن تصنيف صورة كاملة إلى واحدة من مجموعة فئات محددة مسبقاً.
مخرجات مصنف الصور هي ملصق فئة واحد ودرجة ثقة. يعد تصنيف الصور مفيداً عندما تحتاج فقط إلى معرفة الفئة التي تنتمي إليها الصورة ولا تحتاج إلى معرفة مكان وجود كائنات تلك الفئة أو شكلها الدقيق.
Watch: Explore Ultralytics YOLO Tasks: Image Classification using Ultralytics Platform
تستخدم نماذج YOLO26 Classify اللاحقة -cls، أي yolo26n-cls.pt، وهي مدربة مسبقاً على ImageNet.
النماذج
يتم عرض نماذج Classify المدربة مسبقاً من YOLO26 هنا. نماذج Detect وSegment وPose مدربة مسبقاً على مجموعة بيانات COCO، بينما نماذج Classify مدربة مسبقاً على مجموعة بيانات ImageNet.
يتم تحميل النماذج تلقائياً من أحدث إصدار لـ Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | دقة top1 | دقة top5 | السرعة CPU ONNX (ملي ثانية) | السرعة T4 TensorRT10 (ملي ثانية) | المعلمات (مليون) | 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 | 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 هي دقة النموذج على مجموعة التحقق من مجموعة بيانات ImageNet.
يمكن إعادة إنتاجها بواسطةyolo val classify data=path/to/ImageNet device=0 - متوسط Speed عبر صور التحقق من ImageNet باستخدام مثيل Amazon EC2 P4d.
يمكن إعادة إنتاجها بواسطةyolo val classify data=path/to/ImageNet batch=1 device=0|cpu - قيم Params وFLOPs هي للنموذج المدمج بعد
model.fuse()، الذي يدمج طبقات Conv وBatchNorm. تحتفظ نقاط التحقق المدربة مسبقاً ببنية التدريب الكاملة وقد تظهر أعداداً أعلى.
تدريب
قم بتدريب YOLO26n-cls على مجموعة بيانات MNIST160 لعدد 100 عصر تدريبي بحجم صورة 64. للحصول على قائمة كاملة بالوسيطات المتاحة، راجع صفحة التكوين.
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 كلاً من 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, 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)تنسيق مجموعة البيانات
يمكن العثور على تنسيق مجموعة بيانات تصنيف YOLO بالتفصيل في دليل مجموعة البيانات. يمكن أيضاً إدارة مجموعات بيانات التصنيف وتصنيفها على منصة Ultralytics.
تقييم
تحقق من دقة نموذج YOLO26n-cls المدرب على مجموعة بيانات MNIST160. لا يلزم وجود وسيطات حيث يحتفظ model بـ 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كما ذكرنا في قسم التدريب، يمكنك التعامل مع نسب العرض إلى الارتفاع المتطرفة أثناء التدريب باستخدام ClassificationTrainer مخصص. يجب عليك تطبيق نفس النهج للحصول على نتائج تحقق متسقة من خلال تنفيذ ClassificationValidator مخصص عند استدعاء طريقة val(). ارجع إلى مثال الكود الكامل في قسم التدريب للحصول على تفاصيل التنفيذ.
التنبؤ
استخدم نموذج YOLO26n-cls مدرباً لإجراء تنبؤات على الصور.
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 الكاملة في صفحة التنبؤ.
تصدير
تصدير نموذج YOLO26n-cls إلى تنسيق مختلف مثل ONNX أو CoreML، إلخ.
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")تنسيقات تصدير YOLO26-cls المتاحة موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام وسيطة format، أي format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرة على النماذج المصدرة، أي yolo predict model=yolo26n-cls.onnx. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.
| التنسيق | وسيط 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 |
| DeepX | deepx | yolo26n-cls_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
راجع تفاصيل export الكاملة في صفحة Export.
الأسئلة الشائعة
ما هو الغرض من YOLO26 في تصنيف الصور؟
تم تصميم نماذج YOLO26، مثل yolo26n-cls.pt، لتصنيف الصور بكفاءة. إنها تعين ملصق فئة واحد لصورة كاملة جنباً إلى جنب مع درجة ثقة. يعد هذا مفيداً بشكل خاص للتطبيقات التي يكفي فيها معرفة الفئة المحددة للصورة، بدلاً من تحديد موقع أو شكل الكائنات داخل الصورة.
كيف يمكنني تدريب نموذج YOLO26 لتصنيف الصور؟
لتدريب نموذج YOLO26، يمكنك استخدام أوامر Python أو CLI. على سبيل المثال، لتدريب نموذج yolo26n-cls على مجموعة بيانات MNIST160 لعدد 100 عصر تدريبي بحجم صورة 64:
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)لمزيد من خيارات التكوين، قم بزيارة صفحة التكوين.
أين يمكنني العثور على نماذج تصنيف YOLO26 المدربة مسبقاً؟
يمكن العثور على نماذج تصنيف YOLO26 المدربة مسبقاً في قسم النماذج. النماذج مثل yolo26n-cls.pt وyolo26s-cls.pt وyolo26m-cls.pt وما إلى ذلك، مدربة مسبقاً على مجموعة بيانات ImageNet ويمكن تنزيلها بسهولة واستخدامها في مهام تصنيف الصور المختلفة.
كيف يمكنني تصدير نموذج YOLO26 مدرب إلى تنسيقات مختلفة؟
يمكنك تصدير نموذج YOLO26 مدرب إلى تنسيقات مختلفة باستخدام أوامر Python أو CLI. على سبيل المثال، لتصدير نموذج إلى تنسيق ONNX:
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")للحصول على خيارات تصدير مفصلة، راجع صفحة التصدير.
كيف يمكنني التحقق من نموذج تصنيف YOLO26 مدرب؟
للتحقق من دقة نموذج مدرب على مجموعة بيانات مثل MNIST160، يمكنك استخدام أوامر Python أو CLI التالية:
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لمزيد من المعلومات، قم بزيارة قسم التحقق.