مقارنة إصدارات 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 التحسينات
-
البنية
- backbone جديد من نوع CSP
- إدارة أفضل للخصائص (features)
- تحسين مرحلة الاستدلال
-
الأداء
- سرعة استدلال محسّنة
- دقة أفضل
- دعم المهام المتعددة
-
الوظائف
- اكتشاف الأجسام
- تجزئة الحالات (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. أفضل الممارسات
-
اختيار الإصدار
- v5 للتطبيقات الأساسية
- v6 لتطبيقات الأجهزة المحمولة
- v7 للتطبيقات المتقدمة
- v8 للتطبيقات المبتكرة
-
التحسين
- استخدام تسريع GPU
- ضبط عتبات الثقة
- تحسين حجم الدفعة (batch)
-
النشر
- التصدير بالصيغة المناسبة
- استخدام التسريع العتادي
- تنفيذ نظام تخزين مؤقت (cache)
الخلاصة
النقاط الرئيسية:
- تطور ملحوظ في الأداء
- وظائف جديدة مع كل إصدار
- تحسين مستمر لمرحلة الاستدلال
- دعم المهام المتعددة مع YOLOv8
التوصيات:
- اختيار الإصدار بحسب الاحتياجات
- تحسين الأداء
- استخدام التسريع العتادي
- تنفيذ إدارة قوية للأخطاء
نبذة عن 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 للمشاركة في النقاش