YOLO

كل ما تحتاج لمعرفته عن YOLO في الرؤية الحاسوبية

مقدمة عن YOLO (You Only Look Once)

تُعتبر تقنية YOLO (You Only Look Once) واحدة من أسرع وأشهر الخوارزميات المستخدمة في اكتشاف الأجسام (Object Detection). تم تصميم YOLO لتحديد مواقع وتصنيف الكائنات في الصور والفيديوهات بشكل فوري. تتميز هذه التقنية بسرعة ودقة كبيرة، مما يجعلها مناسبة لتطبيقات الرؤية الحاسوبية التي تتطلب معالجة في الوقت الحقيقي مثل السيارات الذاتية القيادة والمراقبة الذكية.

YOLO

محتويات المقال:

  • مقدمة عن YOLO
  • مميزات YOLO
  • كيفية عمل YOLO
  • خطوات التدريب على YOLO
  • مقارنة بين إصدارات YOLO
  • استخدامات YOLO الشائعة
  • الخلاصة والأسئلة الشائعة

مميزات YOLO

تتعدد مميزات YOLO مقارنةً بخوارزميات اكتشاف الأجسام الأخرى مثل R-CNN وFaster R-CNN. من أهم مميزاتها:

1. السرعة العالية:

تعمل YOLO بسرعة كبيرة حيث يتم الكشف عن الأجسام في الوقت الحقيقي من خلال معالجة الصورة مرة واحدة فقط، ما يميزها عن الخوارزميات الأخرى التي تحتاج إلى معالجة الصورة في عدة مراحل.

2. الدقة:

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

3. نظرة شاملة للصورة:

YOLO تقوم بمعالجة الصورة بشكل كامل في خطوة واحدة، مما يعني أنها تنظر إلى الصورة بأكملها وتفهم العلاقة بين الأجسام المختلفة، وهذا يحسن من نتائج اكتشاف الأجسام المتداخلة أو المتقاربة.


كيفية عمل YOLO

تقوم YOLO بتقسيم الصورة إلى شبكة من الخلايا (Grid) وتحدد داخل كل خلية ما إذا كانت تحتوي على جسم أم لا. يتم ذلك عبر المراحل التالية:

  1. تقسيم الصورة: تقسم الصورة إلى شبكة مكونة من خلايا (مثلاً 13×13 أو 19×19 خلايا).
  2. توقع المربعات: كل خلية تقوم بتحديد عدة مربعات تمثل احتمالية وجود جسم بداخلها.
  3. تصنيف الأجسام: بعد تحديد المربعات، يتم تصنيف الكائنات الموجودة في تلك المربعات مثل السيارات، الأشخاص، الحيوانات، وغيرها.
  4. تصحيح النتائج: في حالة تداخل المربعات أو وجود عدة مربعات تمثل نفس الكائن، تستخدم YOLO تقنية Non-Maximum Suppression لتحديد المربع الأكثر دقة وإزالة التكرار.

خطوات التدريب على YOLO

لتدريب نموذج YOLO على بيانات جديدة، يجب اتباع الخطوات التالية:

1. جمع البيانات:

قم بجمع الصور التي تحتوي على الأجسام التي ترغب في اكتشافها وتصنيفها.

2. تحضير البيانات:

يجب أن تكون الصور مصحوبة بملفات التسمية (annotations) التي تحتوي على معلومات حول الأجسام في الصورة، مثل نوع الكائن وإحداثيات المربعات المحيطة به.

3. اختيار النموذج المناسب:

حدد الإصدار المناسب من YOLO (مثل YOLOv3، YOLOv4، أو YOLOv5) حسب احتياجاتك.

4. التدريب:

استخدم مكتبات مثل Darknet أو PyTorch لتدريب النموذج على البيانات الخاصة بك.

5. الاختبار والتحسين:

بعد التدريب، قم باختبار النموذج على مجموعة جديدة من البيانات لتحسين الدقة والسرعة.


مقارنة بين إصدارات YOLO

تم تطوير عدة إصدارات من YOLO مع مرور الوقت، وكل إصدار يأتي بتحسينات جديدة من حيث الدقة والسرعة. الجدول التالي يوضح مقارنة بين بعض هذه الإصدارات:

الإصدارالسرعة (FPS)الدقة (mAP)مميزات إضافية
YOLOv330 FPS57.9%تحسينات في اكتشاف الأجسام الصغيرة
YOLOv462 FPS65.7%دعم أفضل للتدريب على بطاقات الرسومات
YOLOv5140 FPS66%حجم أصغر وأداء أفضل على الأجهزة المحدودة
مقارنة بين إصدارات YOLO

استخدامات YOLO الشائعة

تم استخدام YOLO في العديد من التطبيقات التي تعتمد على اكتشاف الأجسام في الوقت الحقيقي، ومنها:

1. السيارات ذاتية القيادة:

تعتمد السيارات ذاتية القيادة على YOLO لاكتشاف المشاة، السيارات، والعوائق في الطرق بشكل فوري.

2. أنظمة المراقبة:

تستخدم كاميرات المراقبة الذكية YOLO لاكتشاف التهديدات مثل الأشخاص غير المصرح لهم أو الأجسام الخطيرة.

3. التجارة الإلكترونية:

يتم استخدام YOLO في تصنيف المنتجات في الصور بشكل تلقائي لتحسين تجربة البحث في المتاجر الإلكترونية.


كيفية استخدام YOLO مع Python

لتطبيق YOLO في بيئة Python، يتم استخدام مكتبات شهيرة مثل OpenCV أو مكتبة Darknet التي تدعم الخوارزمية بشكل مباشر. في هذا الجزء سنشرح كيفية استخدام YOLO لاكتشاف الأجسام عبر Python باستخدام OpenCV.

1. تثبيت المتطلبات:

أولاً، تحتاج إلى تثبيت مكتبة OpenCV ودعم YOLO من خلال تحميل ملفات التدريب المناسبة (مثل cfg، والـ weights) وملف الأسماء للأجسام (coco.names).

تثبيت مكتبة OpenCV:

pip install opencv-python
Python

2. تحميل ملفات YOLO:

للاستخدام مع YOLOv3، ستحتاج إلى ثلاثة ملفات أساسية:

  • yolov3.cfg: ملف تكوين الشبكة العصبية.
  • yolov3.weights: الأوزان المدربة مسبقًا.
  • coco.names: قائمة بأسماء الأجسام التي تم تدريب YOLO عليها.

3. كود لاكتشاف الأجسام باستخدام YOLO:

import cv2
import numpy as np

# تحميل ملفات YOLO
net = cv2.dnn.readNet('yolov3.weights', 'yolov3.cfg')
layer_names = net.getLayerNames()
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
classes = []
with open("coco.names", "r") as f:
    classes = [line.strip() for line in f.readlines()]

# تحميل الصورة
img = cv2.imread("image.jpg")
height, width, channels = img.shape

# تجهيز الصورة لتمريرها إلى YOLO
blob = cv2.dnn.blobFromImage(img, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)

# تحليل نتائج YOLO
class_ids = []
confidences = []
boxes = []
for out in outs:
    for detection in out:
        scores = detection[5:]
        class_id = np.argmax(scores)
        confidence = scores[class_id]
        if confidence > 0.5:
            center_x = int(detection[0] * width)
            center_y = int(detection[1] * height)
            w = int(detection[2] * width)
            h = int(detection[3] * height)

            # إحداثيات المربع المحيط
            x = int(center_x - w / 2)
            y = int(center_y - h / 2)

            boxes.append([x, y, w, h])
            confidences.append(float(confidence))
            class_ids.append(class_id)

# استخدام Non-Maximum Suppression لتجنب المربعات المتداخلة
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)

# رسم المربعات حول الأجسام المكتشفة
for i in range(len(boxes)):
    if i in indexes:
        x, y, w, h = boxes[i]
        label = str(classes[class_ids[i]])
        color = (0, 255, 0)
        cv2.rectangle(img, (x, y), (x + w, y + h), color, 2)
        cv2.putText(img, label, (x, y + 30), cv2.FONT_HERSHEY_PLAIN, 2, color, 2)

# عرض الصورة النهائية
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Python

شرح الكود:

  • تحميل ملفات YOLO: يتم تحميل ملفات التدريب (cfg، و weights) وأسماء الأجسام.
  • معالجة الصورة: يتم تجهيز الصورة لتمريرها إلى نموذج YOLO وتحليلها.
  • اكتشاف الأجسام: يتم تحليل النتائج لتحديد الأجسام ورسم المربعات المحيطة بها.
  • Non-Maximum Suppression: تستخدم لتجنب رسم مربعات متداخلة على نفس الجسم.

مقارنة بين YOLO وخوارزميات أخرى لاكتشاف الأجسام

يوضح الجدول التالي مقارنة بين YOLO وبعض الخوارزميات الأخرى المستخدمة في اكتشاف الأجسام:

الخوارزميةالسرعة (FPS)الدقة (mAP)الميزات
YOLOعاليجيدمناسب للوقت الحقيقي
R-CNNمنخفضةعالية جدًادقيق لكن بطيء
Faster R-CNNمتوسطةعاليةتحسين السرعة مع دقة جيدة
SSDعاليمتوسطسريع لكن يقلل من دقة الأجسام الصغيرة
مقارنة بين YOLO وخوارزميات أخرى لاكتشاف الأجسام

الخلاصة

تقنية YOLO تمثل ثورة في مجال اكتشاف الأجسام بفضل سرعتها العالية وكفاءتها في الوقت الحقيقي. تعتبر مناسبة لتطبيقات الرؤية الحاسوبية التي تتطلب اكتشاف سريع للأجسام مثل المراقبة الذكية والسيارات ذاتية القيادة. مع التحسين المستمر في الإصدارات الجديدة مثل YOLOv5، أصبحت التقنية أسرع وأكثر دقة، مما يجعلها الخيار الأمثل للكثير من المطورين.


الأسئلة الشائعة (FAQ)

1. ما هو YOLO؟

YOLO هي خوارزمية لاكتشاف الأجسام تعتمد على تحليل الصورة مرة واحدة فقط، وتعمل بسرعة عالية لاكتشاف وتصنيف الأجسام في الوقت الحقيقي.

2. ما هي الاستخدامات الشائعة لـ YOLO؟

تستخدم YOLO في أنظمة المراقبة، السيارات ذاتية القيادة، تحليل الفيديوهات، وغيرها من التطبيقات التي تتطلب اكتشاف الأجسام في الوقت الحقيقي.

3. هل YOLO مناسب للاستخدام على الأجهزة محدودة الموارد؟

نعم، خاصة مع الإصدارات الجديدة مثل YOLOv5 التي توفر أداء عالي حتى على الأجهزة ذات الموارد المحدودة.


روابط مفيدة

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *