0%
مقارنة إصدارات YOLO: من YOLOv1 إلى YOLOv8

مقارنة إصدارات YOLO: من YOLOv1 إلى YOLOv8

دليل شامل حول الإصدارات المختلفة من YOLO وخصائصها وتطبيقاتها.

I

InSkillCoach

· دقيقة

مقارنة إصدارات YOLO: من YOLOv1 إلى YOLOv8

دليل شامل حول تطور YOLO (You Only Look Once) عبر إصداراته المختلفة.

1. من YOLOv1 إلى YOLOv5

1.1 YOLOv1 (2015)

  • الإصدار الأول من تطوير Joseph Redmon
  • بنية بسيطة تضم 24 طبقة التفافية (convolution)
  • القيود:
    • دقة ضعيفة في اكتشاف الأجسام الصغيرة
    • صعوبة في التعامل مع الأجسام المتقاربة
    • لا يدعم الكشف متعدد المقاييس

1.2 YOLOv2 (2016)

  • تحسينات رئيسية:
    • Batch Normalization
    • Anchors boxes
    • Dimension clustering
    • Fine-grained features
    • Multi-scale training

1.3 YOLOv3 (2018)

  • الخصائص الرئيسية:
    • الكشف متعدد المقاييس
    • Feature Pyramid Network (FPN)
    • معالجة أفضل للأجسام الصغيرة
    • دعم 80 فئة

1.4 YOLOv4 (2020)

  • تحسينات مهمة:
    • Mosaic augmentation
    • CSP (Cross Stage Partial Network)
    • PANet
    • SAM (Spatial Attention Module)
    • دقة وسرعة أفضل

1.5 YOLOv5 (2020)

  • طورتها شركة Ultralytics
  • الخصائص:
    • Auto-learning bounding box anchors
    • Mosaic augmentation
    • Multi-scale training
    • دعم عدة أطر عمل (frameworks)

2. YOLOv6 وYOLOv7

2.1 YOLOv6 (2022)

  • طورتها شركة Meituan
  • التحسينات:
    • RepVGG backbone
    • CSPVoVNet neck
    • أداء أفضل على الأجهزة المحمولة
    • تحسين مرحلة الاستدلال (inference)

2.2 YOLOv7 (2022)

  • طورها WongKinYiu
  • الابتكارات:
    • E-ELAN (Extended Efficient Layer Aggregation Network)
    • Model scaling
    • Auxiliary head
    • دقة أفضل من YOLOv5

3. YOLOv8 (2023)

3.1 الخصائص الرئيسية

# Installation
pip install ultralytics

# Import
from ultralytics import YOLO

# Modèles disponibles
model_nano = YOLO('yolov8n.pt')    # Nano
model_small = YOLO('yolov8s.pt')   # Small
model_medium = YOLO('yolov8m.pt')  # Medium
model_large = YOLO('yolov8l.pt')   # Large
model_xlarge = YOLO('yolov8x.pt')  # XLarge

3.2 التحسينات

  1. البنية

    • backbone جديد من نوع CSP
    • إدارة أفضل للخصائص (features)
    • تحسين مرحلة الاستدلال
  2. الأداء

    • سرعة استدلال محسّنة
    • دقة أفضل
    • دعم المهام المتعددة
  3. الوظائف

    • اكتشاف الأجسام
    • تجزئة الحالات (instance segmentation)
    • تصنيف الصور
    • Pose estimation

4. مقارنة الأداء

4.1 المقاييس

def benchmark_yolo_versions():
    # Configuration
    test_image = "path/to/test/image.jpg"
    
    # Test des différentes versions
    versions = {
        'v5': YOLO('yolov5n.pt'),
        'v6': YOLO('yolov6n.pt'),
        'v7': YOLO('yolov7n.pt'),
        'v8': YOLO('yolov8n.pt')
    }
    
    results = {}
    for version, model in versions.items():
        # Mesure du temps d'inférence
        start_time = time.time()
        results[version] = model(test_image)
        inference_time = time.time() - start_time
        
        print(f"YOLO{version}:")
        print(f"Temps d'inférence: {inference_time:.2f}s")
        print(f"Nombre de détections: {len(results[version][0].boxes)}")
        print(f"Précision moyenne: {results[version][0].boxes.conf.mean():.2f}")

4.2 جدول المقارنة

الإصدارالسرعةالدقةالذاكرةالوظائف
v5الأساسالأساسالأساسالأساس
v6+10%+3%-5%+1 جديدة
v7+15%+5%-8%+2 جديدتان
v8+20%+7%-10%+3 جديدة

5. التطبيقات العملية

5.1 الكشف في الوقت الفعلي

def real_time_detection():
    # Initialisation
    cap = cv2.VideoCapture(0)
    model = YOLO('yolov8n.pt')  # Utilisation de YOLOv8
    
    while cap.isOpened():
        success, frame = cap.read()
        if not success:
            continue
        
        # Détection
        results = model(frame)
        
        # Visualisation
        annotated_frame = results[0].plot()
        
        # Affichage
        cv2.imshow('YOLOv8 Detection', annotated_frame)
        
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    cap.release()
    cv2.destroyAllWindows()

5.2 تجزئة الحالات (Instance Segmentation)

def instance_segmentation():
    # Initialisation
    model = YOLO('yolov8n-seg.pt')
    
    # Segmentation
    results = model('path/to/image.jpg')
    
    # Visualisation
    for result in results:
        # Masques de segmentation
        masks = result.masks
        # Boîtes de détection
        boxes = result.boxes
        
        # Visualisation
        annotated_frame = result.plot()
        cv2.imshow('Segmentation', annotated_frame)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

6. أفضل الممارسات

  1. اختيار الإصدار

    • v5 للتطبيقات الأساسية
    • v6 لتطبيقات الأجهزة المحمولة
    • v7 للتطبيقات المتقدمة
    • v8 للتطبيقات المبتكرة
  2. التحسين

    • استخدام تسريع GPU
    • ضبط عتبات الثقة
    • تحسين حجم الدفعة (batch)
  3. النشر

    • التصدير بالصيغة المناسبة
    • استخدام التسريع العتادي
    • تنفيذ نظام تخزين مؤقت (cache)

الخلاصة

النقاط الرئيسية:

  • تطور ملحوظ في الأداء
  • وظائف جديدة مع كل إصدار
  • تحسين مستمر لمرحلة الاستدلال
  • دعم المهام المتعددة مع YOLOv8

التوصيات:

  • اختيار الإصدار بحسب الاحتياجات
  • تحسين الأداء
  • استخدام التسريع العتادي
  • تنفيذ إدارة قوية للأخطاء
InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
672
220

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!