انتقل إلى المحتوى

Ultralytics YOLOv5 معمار

YOLOv5 (v6.0 / 6.1) هي خوارزمية قوية للكشف عن الكائنات تم تطويرها بواسطة Ultralytics. تتعمق هذه المقالة في YOLOv5 الهندسة المعمارية واستراتيجيات زيادة البيانات ومنهجيات التدريب وتقنيات حساب الخسائر. سيساعد هذا الفهم الشامل في تحسين تطبيقك العملي للكشف عن الأشياء في مختلف المجالات ، بما في ذلك المراقبة والمركبات المستقلة والتعرف على الصور.

1. هيكل النموذج

YOLOv5تتكون الهندسة المعمارية من ثلاثة أجزاء رئيسية:

  • عمود فقريهذا هو الجسم الرئيسي للشبكة.: من أجل YOLOv5، تم تصميم العمود الفقري باستخدام New CSP-Darknet53 هيكل ، تعديل لبنية Darknet المستخدمة في الإصدارات السابقة.
  • رقبةيربط هذا الجزء العمود الفقري والرأس.: في YOLOv5, SPPF و New CSP-PAN يتم استخدام الهياكل.
  • رأسهذا الجزء مسؤول عن توليد الناتج النهائي.: YOLOv5 يستخدم YOLOv3 Head لهذا الغرض.

تم تصوير هيكل النموذج في الصورة أدناه. يمكن العثور على تفاصيل هيكل النموذج في yolov5l.yaml.

yolov5

YOLOv5 يقدم بعض التغييرات الطفيفة مقارنة بسابقاتها:

  1. ال Focus يتم استبدال الهيكل ، الموجود في الإصدارات السابقة ، ب 6x6 Conv2d هيكل. هذا التغيير يعزز الكفاءة #4825.
  2. ال SPP يتم استبدال الهيكل ب SPPF. هذا التغيير يضاعف سرعة المعالجة.

لاختبار سرعة SPP و SPPF، يمكن استخدام التعليمة البرمجية التالية:

مثال على التنميط السريع SPP مقابل SPPF (انقر للفتح)
import time

import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        """Initializes an SPP module with three different sizes of max pooling layers."""
        super().__init__()
        self.maxpool1 = nn.MaxPool2d(5, 1, padding=2)
        self.maxpool2 = nn.MaxPool2d(9, 1, padding=4)
        self.maxpool3 = nn.MaxPool2d(13, 1, padding=6)

    def forward(self, x):
        """Applies three max pooling layers on input `x` and concatenates results along channel dimension."""
        o1 = self.maxpool1(x)
        o2 = self.maxpool2(x)
        o3 = self.maxpool3(x)
        return torch.cat([x, o1, o2, o3], dim=1)


class SPPF(nn.Module):
    def __init__(self):
        """Initializes an SPPF module with a specific configuration of MaxPool2d layer."""
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        """Applies sequential max pooling and concatenates results with input tensor."""
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    """Compares outputs and performance of SPP and SPPF on a random tensor (8, 32, 16, 16)."""
    input_tensor = torch.rand(8, 32, 16, 16)
    spp = SPP()
    sppf = SPPF()
    output1 = spp(input_tensor)
    output2 = sppf(input_tensor)

    print(torch.equal(output1, output2))

    t_start = time.time()
    for _ in range(100):
        spp(input_tensor)
    print(f"SPP time: {time.time() - t_start}")

    t_start = time.time()
    for _ in range(100):
        sppf(input_tensor)
    print(f"SPPF time: {time.time() - t_start}")


if __name__ == "__main__":
    main()
نتيجة:
True
SPP time: 0.5373051166534424
SPPF time: 0.20780706405639648

2. تقنيات زيادة البيانات

YOLOv5 يستخدم تقنيات مختلفة لزيادة البيانات لتحسين قدرة النموذج على التعميم وتقليل التجهيز الزائد. وتشمل هذه التقنيات:

  • تكبير الفسيفساء: تقنية معالجة الصور التي تجمع بين أربع صور تدريب في صورة واحدة بطرق تشجع نماذج اكتشاف الكائنات على التعامل بشكل أفضل مع مقاييس وترجمات الكائنات المختلفة.

    فسيفساء

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

    نسخ ولصق

  • تحويلات Affine العشوائية: يتضمن ذلك الدوران العشوائي والقياس والترجمة والقص للصور.

    عشوائي أفين

  • MixUp Augmentation: طريقة تنشئ صورا مركبة عن طريق أخذ مجموعة خطية من صورتين والتسميات المرتبطة بهما.

    خلط

  • الألبومات: مكتبة قوية لزيادة الصور تدعم مجموعة متنوعة من تقنيات التعزيز.

  • زيادة HSV: تغييرات عشوائية في تدرج اللون والتشبع وقيمة الصور.

    هسف

  • الوجه الأفقي العشوائي: طريقة زيادة تقلب الصور أفقيا بشكل عشوائي.

    الوجه الأفقي

3. استراتيجيات التدريب

YOLOv5 يطبق العديد من استراتيجيات التدريب المتطورة لتعزيز أداء النموذج. يشملوا:

  • تدريب متعدد المقاييس: يتم إعادة قياس الصور المدخلة بشكل عشوائي ضمن نطاق يتراوح من 0.5 إلى 1.5 ضعف حجمها الأصلي أثناء عملية التدريب.
  • AutoAnchor: تعمل هذه الإستراتيجية على تحسين مربعات الربط السابقة لمطابقة الخصائص الإحصائية لمربعات الحقيقة الأرضية في بياناتك المخصصة.
  • جدولة الإحماء وجيب التمام LR: طريقة لضبط معدل التعلم لتحسين أداء النموذج.
  • المتوسط المتحرك الأسي (EMA): استراتيجية تستخدم متوسط المعلمات على الخطوات السابقة لتحقيق الاستقرار في عملية التدريب وتقليل خطأ التعميم.
  • التدريب الدقيق المختلط: طريقة لإجراء العمليات بتنسيق نصف الدقة ، مما يقلل من استخدام الذاكرة ويعزز السرعة الحسابية.
  • تطور المعلمات الفائقة: استراتيجية لضبط المعلمات الفائقة تلقائيا لتحقيق الأداء الأمثل.

4. ميزات إضافية

4.1 حساب الخسائر

الخسارة في YOLOv5 يتم حسابه كمزيج من ثلاثة مكونات خسارة فردية:

  • خسارة الفئات (خسارة BCE): خسارة الإنتروبيا المتقاطعة الثنائية ، تقيس الخطأ لمهمة التصنيف.
  • خسارة الكائن (BCE Loss): خسارة أخرى في الإنتروبيا المتقاطعة الثنائية ، تحسب الخطأ في اكتشاف ما إذا كان الكائن موجودا في خلية شبكة معينة أم لا.
  • فقدان الموقع (CIoU Loss): فقدان IoU الكامل ، يقيس الخطأ في توطين الكائن داخل خلية الشبكة.

يتم تصوير دالة الخسارة الإجمالية من خلال:

ضياع

4.2 خسائر الرصيد

خسائر الكائن لطبقات التنبؤ الثلاث (P3, P4, P5) مرجحة بشكل مختلف. أوزان الميزان هي [4.0, 1.0, 0.4] على التوالي. يضمن هذا النهج أن التنبؤات على مستويات مختلفة تساهم بشكل مناسب في الخسارة الكلية.

obj_loss

4.3 القضاء على حساسية الشبكة

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

b_x b_y b_w b_h

YOLOv5 حساب الشبكة

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

الصيغ المنقحة لحساب المربع المحيط المتوقع هي كما يلي:

عاشرا ب BW الهرسك

قارن إزاحة نقطة المركز قبل القياس وبعده. يتم ضبط نطاق إزاحة نقطة المركز من (0 ، 1) إلى (-0.5 ، 1.5). لذلك ، يمكن أن تحصل الإزاحة بسهولة على 0 أو 1.

YOLOv5 تحجيم الشبكة

قارن نسبة قياس الارتفاع والعرض (بالنسبة إلى المرساة) قبل وبعد الضبط. الأصل yolo/ معادلات مربع الشبكة المظلمة لها عيب خطير. العرض والارتفاع غير محدودين تماما لأنهما ببساطة خارج = exp (in) ، وهو أمر خطير ، لأنه يمكن أن يؤدي إلى تدرجات جامحة ، وعدم استقرار ، وخسائر NaN ، وفي النهاية فقدان كامل للتدريب. إحالة هذه المشكلة

YOLOv5 تحجيم غير محدود

4.4 بناء الأهداف

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

تتبع هذه العملية الخطوات التالية:

  • احسب نسبة أبعاد مربع الحقيقة الأرضي وأبعاد كل قالب مرساة.

آر دبليو

ر ه

روماكس

آر إتش ماكس

آر ماكس

كبريتة

YOLOv5 حساب إنترنت الأشياء

  • إذا كانت النسبة المحسوبة ضمن الحد ، فقم بمطابقة مربع الحقيقة الأرضي مع المرساة المقابلة.

YOLOv5 تداخل الشبكة

  • قم بتعيين نقطة الربط المتطابقة للخلايا المناسبة ، مع الأخذ في الاعتبار أنه بسبب إزاحة نقطة المركز المنقحة ، يمكن تعيين مربع حقيقة أرضية لأكثر من مرساة واحدة. لأنه يتم ضبط نطاق إزاحة نقطة المركز من (0 ، 1) إلى (-0.5 ، 1.5). يمكن تعيين GT Box لمزيد من المراسي.

YOLOv5 اختيار مرساة

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

استنتاج

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

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



Created 2023-11-12, Updated 2024-06-19
Authors: ambitious-octopus (1), glenn-jocher (9), sergiuwaxmann (1)

التعليقات