Link to this sectionتصنيف الصور#
تصنيف الصور هو أبسط المهام المدعومة، ويتضمن تصنيف صورة كاملة ضمن واحدة من مجموعة فئات محددة مسبقًا.
مخرجات مصنف الصور عبارة عن تسمية فئة واحدة ودرجة ثقة. يعد تصنيف الصور مفيدًا عندما تحتاج فقط إلى معرفة الفئة التي تنتمي إليها الصورة ولا تحتاج إلى معرفة مكان وجود كائنات تلك الفئة أو شكلها الدقيق.
Watch: Explore Ultralytics YOLO Tasks: Image Classification using Ultralytics Platform
تستخدم نماذج YOLO26 Classify اللاحقة -cls، على سبيل المثال yolo26n-cls.pt، وهي مدربة مسبقًا على ImageNet.
Link to this sectionالنماذج#
تظهر هنا نماذج YOLO26 Classify المدربة مسبقًا. نماذج الكشف (Detect) والتجزئة (Segment) والوضع (Pose) مدربة مسبقًا على مجموعة بيانات COCO، ونماذج Semantic مدربة مسبقًا على Cityscapes، ونماذج Classify مدربة مسبقًا على مجموعة بيانات ImageNet.
يتم تنزيل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | acc top1 | acc 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 | 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. تحتفظ نقاط التحقق المدربة مسبقًا ببنية التدريب الكاملة وقد تظهر أعدادًا أعلى.
Link to this sectionالتدريب#
درب نموذج 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):
"""Build a customized dataset for classification standalone validation (no augmentation)."""
return CustomizedDataset(root=img_path, args=self.args, augment=False, 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)Link to this sectionتنسيق مجموعة البيانات#
يمكن العثور على تنسيق مجموعة بيانات تصنيف YOLO بالتفصيل في دليل مجموعة البيانات. يمكن أيضًا إدارة مجموعات بيانات التصنيف وتصنيفها على منصة Ultralytics.
Link to this sectionالتحقق#
تحقق من دقة نموذج 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(). ارجع إلى مثال الكود الكامل في قسم التدريب للحصول على تفاصيل التنفيذ.
Link to this sectionالتنبؤ#
استخدم نموذج 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
# Access the results
for result in results:
top1 = result.probs.top1 # top predicted class ID
top1_conf = result.probs.top1conf # top prediction confidence
top1_name = result.names[top1] # top predicted class nameاطلع على تفاصيل وضع predict الكاملة في صفحة التنبؤ.
Link to this sectionمخرجات النتائج#
يعيد تصنيف الصور كائن Results واحد لكل صورة. حقل التنبؤ الأساسي هو result.probs، الذي يحتوي على متجه احتمالية الفئة ومساعدين لأعلى التنبؤات.
| السمة (Attribute) | النوع | الشكل | الوصف |
|---|---|---|---|
result.probs | Probs | (C,) | احتمالات الفئة. |
result.probs.data | torch.float32 | (C,) | الاحتمالية لكل فئة. |
result.probs.top1 | int | () | معرف الفئة الأعلى. |
result.probs.top1conf | torch.float32 | () | أعلى ثقة. |
result.probs.top5 | list[int] | (<=5) | معرفات الفئات الخمس الأعلى. |
للحصول على حقول Results الخاصة بالمهمة عبر كل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.
Link to this sectionالتصدير#
تصدير نموذج 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 | النموذج | البيانات الوصفية | الوسائط (Arguments) |
|---|---|---|---|---|
| PyTorch | - | yolo26n-cls.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-cls.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-cls.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, 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, int8, data, fraction, 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 |
| Qualcomm QNN | qnn | yolo26n-cls_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
راجع تفاصيل export الكاملة في صفحة التصدير (Export).
Link to this sectionالأسئلة الشائعة#
Link to this sectionما هو الغرض من YOLO26 في تصنيف الصور؟#
تم تصميم نماذج YOLO26، مثل yolo26n-cls.pt، لتصنيف الصور بكفاءة. وهي تقوم بتعيين تسمية فئة واحدة لصورة كاملة جنبًا إلى جنب مع درجة ثقة. وهذا مفيد بشكل خاص للتطبيقات التي تكون فيها معرفة الفئة المحددة لصورة ما كافية، بدلاً من تحديد موقع أو شكل الكائنات داخل الصورة.
Link to this sectionكيف أقوم بتدريب نموذج 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)لمزيد من خيارات التكوين، قم بزيارة صفحة التكوين.
Link to this sectionأين يمكنني العثور على نماذج تصنيف YOLO26 المدربة مسبقًا؟#
يمكن العثور على نماذج تصنيف YOLO26 المدربة مسبقًا في قسم النماذج. النماذج مثل yolo26n-cls.pt و yolo26s-cls.pt و yolo26m-cls.pt، إلخ، مدربة مسبقًا على مجموعة بيانات ImageNet ويمكن تنزيلها واستخدامها بسهولة لمهام تصنيف الصور المختلفة.
Link to this sectionكيف يمكنني تصدير نموذج 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")للحصول على خيارات تصدير مفصلة، راجع صفحة التصدير.
Link to this sectionكيف أتحقق من صحة نموذج تصنيف 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لمزيد من المعلومات، قم بزيارة قسم التحقق.