كيفية تدريب مجموعة بيانات مخصصة باستخدام YOLOv5؟

كيفية تدريب مجموعة بيانات مخصصة باستخدام YOLOv5؟

عقدة المصدر: 1953267

المُقدّمة

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

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

أهداف التعلم 

  1. ستركز هذه المقالة بشكل أساسي على تدريب نموذج YOLOv5 على تنفيذ مجموعة بيانات مخصصة.
  2. سوف نرى ما هي النماذج المدربة مسبقًا ونرى ما هو نقل التعلم.
  3. سوف نفهم ماهية YOLOv5 ولماذا نستخدم الإصدار 5 من YOLO.

لذا ، دون إضاعة الوقت ، فلنبدأ بالعملية

جدول المحتويات

  1. نماذج مُدربة مسبقًا
  2. نقل التعلم
  3. ماذا ولماذا YOLOv5؟
  4. الخطوات المتبعة في نقل التعلم
  5. تطبيق
  6. بعض التحديات التي يمكنك مواجهتها
  7. وفي الختام

النماذج المدربة مسبقًا

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

هنا كيف TensorFlow يحدد موقع الويب النماذج المدربة مسبقًا: النموذج المدرَّب مسبقًا عبارة عن شبكة محفوظة تم تدريبها مسبقًا على مجموعة بيانات كبيرة ، عادةً في مهمة تصنيف صور على نطاق واسع.

بعضها مُحسَّن للغاية وفعال للغاية نماذج مدربة مسبقًا متوفرة على الإنترنت. تستخدم نماذج مختلفة لأداء مهام مختلفة. بعض الطرز المدربة مسبقًا هي VGG-16 و VGG-19 و YOLOv5 و YOLOv3 و ريسنت 50.

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

نقل التعلم

نقل التعلم هي أهم تقنية تسهل مهمة عالم البيانات. يعد تدريب نموذج مهمة شاقة وتستغرق وقتًا طويلاً ؛ إذا تم تدريب النموذج من الصفر ، فعادةً لا يعطي نتائج جيدة جدًا. حتى لو قمنا بتدريب نموذج مشابه لنموذج مُدرَّب مسبقًا ، فلن يؤدي ذلك بكفاءة ، وقد يستغرق تدريب النموذج أسابيع. بدلاً من ذلك ، يمكننا استخدام النماذج المدربة مسبقًا واستخدام الأوزان التي تم تعلمها بالفعل من خلال تدريبهم على مجموعة بيانات مخصصة لأداء مهمة مماثلة. تتميز هذه النماذج بكفاءة عالية وصقلها من حيث الهندسة والأداء ، وقد شقت طريقها إلى القمة من خلال الأداء الأفضل في المسابقات المختلفة. يتم تدريب هذه النماذج على كميات كبيرة جدًا من البيانات ، مما يجعلها أكثر تنوعًا في المعرفة.

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

على سبيل المثال ، باستخدام YOLOv5 لاكتشاف الكائن ، لكن الكائن شيء آخر غير البيانات السابقة للكائن المستخدمة.

ماذا ولماذا YOLOv5؟

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

يولوف 5

سنلقي نظرة الآن على بنية YOLOv5.

قد يبدو الهيكل محيرًا ، لكن لا يهم لأننا لا نضطر إلى النظر إلى البنية بدلاً من استخدام النموذج والأوزان بشكل مباشر.

في نقل التعلم ، نستخدم مجموعة البيانات المخصصة ، أي البيانات التي لم يسبق للنموذج رؤيتها من قبل أو البيانات التي لم يتم تدريب النموذج عليها. نظرًا لأن النموذج تم تدريبه بالفعل على مجموعة بيانات كبيرة ، فلدينا بالفعل الأوزان. يمكننا الآن تدريب النموذج لعدد من الحقب على البيانات التي نريد العمل عليها. التدريب مطلوب لأن النموذج قد اطلع على البيانات لأول مرة وسيتطلب بعض المعرفة من أجل أداء المهمة.

الخطوات المتبعة في نقل التعلم

يعد التعلم عن طريق النقل عملية بسيطة ، ويمكننا القيام بذلك في بضع خطوات بسيطة:

  1. إعداد البيانات
  2. التنسيق الصحيح للتعليقات التوضيحية
  3. قم بتغيير بعض الطبقات إذا كنت تريد ذلك
  4. أعد تدريب النموذج لبعض التكرارات
  5. تحقق من صحة / اختبار

تحضير البيانات

يمكن أن يستغرق إعداد البيانات وقتًا طويلاً إذا كانت البيانات التي اخترتها كبيرة بعض الشيء. يعني إعداد البيانات التعليق التوضيحي على الصور ، وهي عملية تقوم فيها بتسمية الصور عن طريق إنشاء مربع حول الكائن في الصورة. من خلال القيام بذلك ، سيتم حفظ إحداثيات الكائن الذي تم وضع علامة عليه في ملف سيتم تغذيته بعد ذلك إلى النموذج للتدريب. هناك عدد قليل من المواقع ، مثل ماكينز و roboflow.com, والتي يمكن أن تساعدك في تسمية البيانات. 

إليك كيفية إضافة تعليق توضيحي لبيانات نموذج YOLOv5 على makeense.ai.

1. قم بزيارتنا https://www.makesense.ai/. 

2. انقر فوق ابدأ في أسفل يمين الشاشة.

يولوف 5

3. حدد الصور التي تريد تسميتها بالنقر فوق المربع المميز في الوسط.

قم بتحميل الصور التي تريد التعليق عليها وانقر فوق اكتشاف الكائن.
يولوف 5

4. بعد تحميل الصور ، سيُطلب منك إنشاء ملصقات لفئات مجموعة البيانات المختلفة الخاصة بك.

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

بعد إنشاء جميع الملصقات ، انقر فوق بدء المشروع.

يولوف 5

إذا فاتتك أي تسميات ، يمكنك تعديلها لاحقًا بالنقر فوق الإجراءات ثم تحرير التسميات.

5. ابدأ في إنشاء مربع محيط حول الكائن في الصورة. قد يكون هذا التمرين ممتعًا بعض الشيء في البداية ، ولكن مع البيانات الكبيرة جدًا ، يمكن أن يكون متعبًا.

المربع المحيط

6. بعد تعليق جميع الصور ، تحتاج إلى حفظ الملف الذي سيحتوي على إحداثيات المربعات المحيطة جنبًا إلى جنب مع الفصل.

لذلك تحتاج إلى التوجه إلى زر الإجراءات والنقر على التعليقات التوضيحية للتصدير ولا تنس التحقق من خيار "حزمة مضغوطة تحتوي على ملفات بتنسيق YOLO" ، حيث سيؤدي ذلك إلى حفظ الملفات بالتنسيق الصحيح كما هو مطلوب في نموذج YOLO.

نموذج YOLO

7. هذه خطوة مهمة ، لذا اتبعها بعناية.

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

لإعطائك فكرة عن المجلد ، قمت بإنشاء مجلد باسم "CarsData" وفي هذا المجلد أنشأت مجلدين - "صور" و "ملصقات".

يولوف 5

داخل المجلدين ، عليك إنشاء مجلدين آخرين باسم "train" و "val". في مجلد الصور ، يمكنك تقسيم الصور وفقًا لإرادتك ، ولكن عليك توخي الحذر أثناء تقسيم الملصق ، حيث يجب أن تتطابق التسميات مع الصور التي قمت بتقسيمها

8. الآن قم بإنشاء ملف مضغوط للمجلد وقم بتحميله على محرك الأقراص حتى نتمكن من استخدامه في colab.

تطبيق

نأتي الآن إلى جزء التنفيذ ، وهو بسيط للغاية ولكنه صعب. إذا كنت لا تعرف الملفات التي تريد تغييرها بالضبط ، فلن تتمكن من تدريب النموذج على مجموعة البيانات المخصصة. 

إذن ، إليك الرموز التي يجب عليك اتباعها لتدريب نموذج YOLOv5 على مجموعة بيانات مخصصة

أوصيك باستخدام google colab في هذا البرنامج التعليمي لأنه يوفر أيضًا وحدة معالجة الرسومات (GPU) التي توفر عمليات حسابية أسرع.

1.! git clone https://github.com/ultralytics/yolov5
سيؤدي هذا إلى إنشاء نسخة من مستودع YOLOv5 وهو مستودع GitHub تم إنشاؤه بواسطة ultralytics.

2. قرص yolov5
هذا هو أمر shell لسطر الأوامر يستخدم لتغيير دليل العمل الحالي إلى دليل YOLOv5.

3.! pip install- متطلبات r. txt
سيقوم هذا الأمر بتثبيت جميع الحزم والمكتبات المستخدمة في تدريب النموذج.

4.! قم بفك ضغط "/content/drive/MyDrive/CarsData.zip"
فك ضغط المجلد الذي يحتوي على الصور والتسميات في google colab

هنا تأتي أهم خطوة ...

لقد قمت الآن بتنفيذ جميع الخطوات تقريبًا وتحتاج إلى كتابة سطر آخر من التعليمات البرمجية لتدريب النموذج ، ولكن قبل ذلك ، تحتاج إلى تنفيذ بضع خطوات أخرى وتغيير بعض الأدلة من أجل إعطاء مسار مجموعة البيانات المخصصة الخاصة بك وتدريب نموذجك على تلك البيانات.

هنا هو ما عليك القيام به.

بعد تنفيذ الخطوات الأربع المذكورة أعلاه ، سيكون لديك مجلد yolov4 في google colab. انتقل إلى مجلد yolov5 ، وانقر فوق مجلد "البيانات". الآن سترى مجلد باسم "coco5.yaml". 

يولوف 5

انطلق وقم بتنزيل هذا المجلد.

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

دعنا الآن نلقي نظرة على محتوى الملف الذي قمنا بتنزيله ، وسيبدو مثل هذا.

يولوف 5

سنقوم بتخصيص هذا الملف وفقًا لمجموعة البيانات والتعليقات التوضيحية الخاصة بنا.

لقد قمنا بالفعل بفك ضغط مجموعة البيانات الموجودة على colab ، لذلك سنقوم بنسخ مسار صور القطار والتحقق من الصحة. بعد نسخ مسار صور القطار ، والتي ستكون في مجلد مجموعة البيانات وستبدو مثل هذا '/ content / yolov5 / CarsData / images / train' ، الصقها في ملف coco128.yaml ، الذي نزّلناه للتو.

افعل الشيء نفسه مع صور الاختبار والتحقق من الصحة.

الآن بعد أن ننتهي من هذا ، سنذكر عدد الفئات مثل "nc: 1". عدد الفئات ، في هذه الحالة ، هو 1. فقط سنذكر الاسم كما هو موضح في الصورة أدناه. قم بإزالة جميع الفئات الأخرى والجزء المعلق ، وهو أمر غير ضروري ، وبعد ذلك يجب أن يبدو ملفنا على هذا النحو.

يولو

احفظ هذا الملف بأي اسم تريده. لقد قمت بحفظ الملف باسم customPath.yaml وقم الآن بتحميل هذا الملف مرة أخرى إلى colab في نفس المكان حيث كان coco128.yaml. 

الآن انتهينا من جزء التحرير وجاهزين لتدريب النموذج.

قم بتشغيل الأمر التالي لتدريب النموذج الخاص بك على بعض التفاعلات على مجموعة البيانات المخصصة الخاصة بك.

لا تنس تغيير اسم الملف الذي قمت بتحميله ('customPath.yaml). يمكنك أيضًا تغيير عدد الفترات التي تريد تدريب النموذج فيها. في هذه الحالة ، سأقوم بتدريب النموذج لمدة 3 فترات فقط.

5.! python train.py img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

ضع في اعتبارك المسار حيث تقوم بتحميل المجلد. إذا تم تغيير المسار ، فلن تعمل الأوامر على الإطلاق.

بعد تشغيل هذا الأمر ، يجب أن يبدأ نموذجك في التدريب وسترى شيئًا كهذا على شاشتك.

يولو

يولو

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

يمكنك إجراء المزيد من التخصيصات في ملف Discover.py على ما تريد حفظه وما لا يعجبك ، والاكتشافات التي يتم فيها اكتشاف لوحات الترخيص ، وما إلى ذلك.

6.! python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

يمكنك استخدام هذا الأمر لاختبار تنبؤ النموذج على بعض الصور.

بعض التحديات التي يمكنك مواجهتها

على الرغم من أن الخطوات الموضحة أعلاه صحيحة ، إلا أن هناك بعض المشكلات التي يمكنك مواجهتها إذا لم تتبعها بالضبط. 

  1. مسار خاطئ: يمكن أن يكون هذا مشكلة أو مشكلة. إذا كنت قد دخلت المسار الخطأ في مكان ما أثناء تدريب الصورة ، فلن يكون من السهل التعرف عليه ، ولن تتمكن من تدريب النموذج.
  2. تنسيق خاطئ للتسميات: هذه مشكلة واسعة الانتشار يواجهها الأشخاص أثناء تدريب YOLOv5. لا يقبل النموذج سوى التنسيق الذي تحتوي فيه كل صورة على ملف نصي خاص بها بالتنسيق المطلوب بداخله. غالبًا ما يتم تغذية ملف بتنسيق XLS أو ملف CSV واحد إلى الشبكة ، مما يؤدي إلى حدوث خطأ. إذا كنت تقوم بتنزيل البيانات من مكان ما ، فبدلاً من إضافة تعليق توضيحي لكل صورة ، يمكن أن يكون هناك تنسيق ملف مختلف يتم حفظ الملصقات به. فيما يلي مقال لتحويل تنسيق XLS إلى تنسيق YOLO. (رابط بعد الانتهاء من المقال).
  3. عدم تسمية الملفات بشكل صحيح: سيؤدي عدم تسمية الملف بشكل صحيح إلى حدوث خطأ مرة أخرى. انتبه إلى الخطوات أثناء تسمية المجلدات وتجنب هذا الخطأ.

وفي الختام

في هذه المقالة ، تعلمنا ما هو نقل التعلم والنموذج المدرّب مسبقًا. لقد تعلمنا متى ولماذا نستخدم نموذج YOLOv5 وكيفية تدريب النموذج على مجموعة بيانات مخصصة. لقد مررنا بكل خطوة ، من إعداد مجموعة البيانات إلى تغيير المسارات وإدخالها في النهاية إلى الشبكة في تنفيذ التقنية ، وفهمنا الخطوات تمامًا. نظرنا أيضًا في المشكلات الشائعة التي نواجهها أثناء تدريب YOLOv5 وحلها. آمل أن يساعدك هذا المقال في تدريب أول YOLOv5 على مجموعة بيانات مخصصة وأنك تعجبك المقالة.

الطابع الزمني:

اكثر من تحليلات Vidhya