HomeVideos

YOLO end-to-end project

Now Playing

YOLO end-to-end project

Transcript

325 segments

0:00

في هذا الفيديو، سأقدم

0:02

شرحاً لمشروع YOLO

0:04

متكامل، بدءاً من

0:06

التقاط الصور

0:07

وتصنيفها، وصولاً إلى

0:09

تدريب نموذج YOLO لمهمة

0:11

محددة. في الفيديو

0:14

السابق، شرحت شبكة YOLO

0:16

وكيفية استخدام كود

0:17

بايثون بسيط لتدريبها

0:19

على صور مصنفة مسبقاً.

0:22

يمكنك العثور على جميع

0:23

الأكواد التي سأعرضها

0:25

في هذا الفيديو على

0:26

صفحتي الرئيسية. إذا

0:28

لم تقم بتثبيت YOLO بعد،

0:30

يمكنك تثبيته بهذه

0:31

الطريقة. لمعرفة كيف

0:34

يعمل YOLO في الوقت

0:36

الفعلي، نقوم

0:37

باستيراد فئة YOLO

0:39

وتحميل نموذج YOLO مدرب

0:41

مسبقاً. نقوم هنا

0:43

بتحميل أصغر نموذج

0:45

يسمى YOLO 26n لأنه الأسرع

0:47

في الاستنتاج ويعمل

0:49

بشكل جيد مع مقاطع

0:50

الفيديو. إذا قمت الآن

0:54

بتشغيل الكود التالي،

0:55

فسيفتح كاميرا الويب

0:57

الافتراضية بجهازك

0:58

ويشغل YOLO على الفيديو

1:00

المباشر. إذا كان لديك

1:02

كاميرا ويب خارجية،

1:03

فقد تحتاج إلى تغيير

1:05

هذه القيمة إلى واحد.

1:08

عند تشغيل الكود، نرى

1:10

أن نموذج YOLO يحاول وضع

1:13

صناديق إحاطة حول

1:14

الأشياء ويتنبأ

1:16

بفئتها. نرى أنه يفشل

1:19

في توقع الدباسة

1:20

والنظارات والشاحن

1:22

لأنه لم يتم تدريبه

1:24

على هذه الأشياء، لكنه

1:26

تدرب على تحديد المقص،

1:28

مما يفسر سبب اكتشافه

1:30

له. ومع ذلك، إذا قمت

1:33

بتدريب نموذج YOLO على

1:35

هذه الأشياء الأربعة،

1:37

فسيعرف كيفية

1:38

اكتشافها. في هذا

1:39

الفيديو، سأوضح لك

1:41

كيفية القيام بذلك.

1:44

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

1:46

التي نحتاجها لتدريب

1:48

نموذج YOLO على مهمة

1:50

محددة. لذا، نبدأ

1:52

بالتقاط صور للأشياء.

1:56

إليك بعض الصور التي

1:58

التقطتها للمقص

1:59

والنظارات والدباسة

2:01

والشاحن. من المهم

2:03

التقاط الصور من زوايا

2:05

ومواضع مختلفة. يجب أن

2:08

تحاول خلق أكبر قدر

2:09

ممكن من التنوع في

2:11

صورك. هنا، قمت حتى

2:19

بتغيير الخلفية

2:21

لزيادة التباين. في

2:22

المجموع، التقطت

2:24

حوالي 100 صورة فقط

2:25

لتوفير الوقت، لكن

2:27

كلما التقطت صوراً

2:29

أكثر، تعلم النموذج

2:30

بشكل أفضل. بمجرد

2:32

التقاط جميع الصور،

2:34

حان وقت التصنيف، وهذا

2:36

يعني أننا نضع تسميات

2:38

ونرسم صناديق إحاطة

2:40

حول الأشياء. إليك بعض

2:43

الأمثلة على الأدوات

2:45

التي يمكنك استخدامها

2:46

لتصنيف صورك. لقد جربت

2:49

هذا التطبيق لأنه بدا

2:50

بسيطاً في الاستخدام.

2:52

لم أجرب الأدوات

2:53

الأخرى، لذا لا يمكنني

2:55

مقارنتها. دفعت حوالي

2:58

70 دولاراً مقابل

2:59

النسخة الاحترافية،

3:01

لكن أعتقد أن نسخة

3:02

المبتدئين ستعمل بشكل

3:04

جيد للتصنيفات

3:05

الأساسية. قد تجد

3:06

أيضاً نسخة تجريبية

3:08

مجانية يمكنك تجربتها

3:10

قبل الدفع لأي شيء. إذا

3:12

قمت بفتح برنامج LabelMe،

3:14

فيجب أن يبدو بهذا

3:16

الشكل. لنقم بفتح ملف

3:19

صورة. سأعرض هنا

3:20

مثالاً لصورة تحتوي

3:22

على قطة وكلب، ثم

3:24

سأوضح كيفية استخدام

3:26

الأداة للصور التي

3:27

التقطتها. تبدو الصورة

3:30

هكذا. لتدريب نموذج YOLO

3:32

، نحتاج إلى رسم

3:34

صناديق إحاطة حول

3:35

الكائنات في الصورة

3:37

وتصنيفها. إذا نقرت

3:40

هنا، فستتمكن من رسم

3:42

مستطيل أو صندوق إحاطة

3:44

حول كائن ما. بعد رسم

3:48

الصندوق حول الكائن،

3:49

يجب عليك إدخال تصنيف

3:51

هنا. وفي هذه الحالة،

3:56

ندخل "قطة" ونضغط على

3:58

موافق. لاحظ أنه يحفظ

4:01

التصنيف الذي يمكننا

4:02

إعادة استخدامه للقطط

4:04

في صور أخرى. كما أنه

4:06

يعرض التعليق

4:07

التوضيحي في الصورة

4:09

الحالية. إذا رسمنا

4:11

الآن صندوق إحاطة حول

4:13

الكائن الثاني، فإنه

4:15

يقترح تصنيف "قطة" لأن

4:17

هذا التصنيف محفوظ في

4:19

القائمة. لكن يجب

4:20

علينا تغيير هذا

4:22

التصنيف إلى "كلب". نرى

4:24

الآن أن لدينا فئتين

4:25

في قائمة التصنيفات

4:27

يمكننا إعادة

4:28

استخدامهما لصور أخرى

4:30

تشمل القطط والكلاب.

4:32

الآن، إذا انتقلت إلى

4:34

المجلد الذي توجد به

4:35

الصورة الأصلية، لاحظ

4:37

أنه تم إنشاء ملف جديد

4:39

في هذا المجلد. هذا ما

4:41

يسمى بملف JSON. يحتوي

4:44

هذا الملف على معلومات

4:46

حول الصورة

4:47

والتعليقات التوضيحية

4:48

. على سبيل المثال،

4:51

يظهر تصنيف "قطة"

4:52

للصندوق الأول. كما

4:54

يظهر إحداثيات البكسل

4:56

X و Y للزاوية العلوية

4:58

اليسرى، بالإضافة إلى

5:00

إحداثيات البكسل

5:01

للزاوية السفلية

5:02

اليمنى. تظهر نفس

5:05

المعلومات لصندوق

5:07

الإحاطة حول الكلب.

5:09

إحدى مشاكل أداة

5:10

المستطيل هي أنها

5:12

تستغرق الكثير من

5:13

الوقت لرسم هذه

5:15

الصناديق بدقة عالية.

5:17

لتسريع العملية،

5:18

يمكننا بدلاً من ذلك

5:20

استخدام أداة ذكاء

5:22

اصطناعي تتنبأ بموقع

5:24

الكائن. قم بالتغيير

5:26

من المضلع إلى القناع (

5:28

Mask). إذا نقرت الآن على

5:30

كائن، فسيقوم

5:31

تلقائياً بالتنبؤ

5:33

بصندوق حول الكائن.

5:36

سيظل ملف JSON المُنشأ

5:38

يخزن معلومات صندوق

5:40

الإحاطة، لكنه الآن

5:42

يتضمن أيضاً معلومات

5:44

القناع. هذه المعلومات

5:46

غير ضرورية لتدريب

5:48

نموذج YOLO البسيط الخاص

5:50

بنا، وسنقوم لاحقاً

5:51

بإنشاء كود بايثون

5:53

يستبعدها. لاحظ أن

5:54

الأداة تنشئ ملف JSON

5:56

واحداً لكل صورة نقوم

5:58

بتعليقها. وهكذا، يوضح

6:01

هذا كيف عملت على

6:02

تعليق صوري.

7:06

>> حان الوقت الآن لتشغيل

7:08

سكربت بايثون الذي

7:09

يجهز كل ما نحتاجه قبل

7:11

تدريب نموذج YOLO. سأشرح

7:13

الأمور العامة التي

7:15

تحدث في هذا الكود

7:16

الذي يمكنك العثور

7:18

عليه في صفحتي

7:19

الرئيسية. أولاً، يجب

7:21

عليك تغيير هذه

7:22

المسارات لتشير إلى

7:24

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

7:26

على الصور وملفات JSON

7:27

على جهازك. يحدد هذا

7:30

السطر المكان الذي

7:31

سننشئ فيه لاحقاً مجلد

7:33

مجموعة بيانات YOLO،

7:35

والذي سنقوم فيه

7:36

بإعداد الهيكل الصحيح

7:38

لتدريب YOLO. سيتم

7:40

استخدام 80%من الصور

7:42

للتدريب و 20%للتحقق من

7:45

الصحة. سيقوم هذا

7:47

الكود بإنشاء

7:48

المجلدات التالية.

7:49

وداخل مجلد مجموعة

7:51

بيانات YOLO، سيقوم

7:53

بإنشاء مجلدي التدريب

7:55

والتحقق من الصحة.

7:56

وداخل هذين المجلدين،

7:58

سينشئ مجلدين جديدين

8:00

حيث سنقوم لاحقاً

8:02

بتخزين الصور

8:03

والملفات بما في ذلك

8:05

التعليقات التوضيحية.

8:07

سيقوم هذا الكود

8:09

باستخراج المعلومات

8:10

من ملفات JSON. بينما

8:14

يقوم هذا الكود بتحويل

8:16

المعلومات الموجودة

8:17

في ملفات JSON إلى

8:19

التنسيق الصحيح لـ YOLO.

8:20

على سبيل المثال، تقوم

8:22

هذه الأسطر بتحويل

8:24

إحداثيات X و Y للزاوية

8:26

العلوية اليسرى إلى

8:27

إحداثيات مركزية

8:29

مُطبعة لمربع التحديد.

8:31

بينما تقوم هذه الأسطر

8:33

بحساب العرض

8:34

والارتفاع المُطبعين

8:35

لمربع التحديد. ثم

8:37

نقوم بتقسيم مجموعة

8:38

البيانات إلى بيانات

8:40

تدريب وبيانات تحقق من

8:42

الصحة. بعد ذلك، نقوم

8:44

بحفظ الصور وملفات TXT

8:45

في مجلدات التدريب

8:47

والتحقق من الصحة

8:49

الصحيحة. بعد تشغيل

8:53

هذا الكود، يجب أن

8:54

تكون قادراً على رؤية

8:56

الصور في مجلدات

8:58

التدريب والتحقق من

8:59

الصحة داخل مجلد

9:01

مجموعة بيانات YOLO

9:02

وملفات TXT التي تم

9:04

إنشاؤها في مجلد

9:05

التصنيفات المقابل.

9:10

ستتضمن ملفات TXT

9:12

الفئات وموقع مربعات

9:14

التحديد. على سبيل

9:17

المثال، يمثل الرقم

9:19

صفر هنا فئة الشاحن.

9:21

وتمثل هذه الأرقام

9:23

إحداثيات البكسل

9:24

المركزية المُطبعة

9:26

لمربع التحديد. بينما

9:28

تظهر هذه الأرقام

9:30

العرض والارتفاع

9:31

المُطبعين لمربع

9:32

التحديد. وأخيراً،

9:34

سيقوم هذا الكود

9:36

بإنشاء ملف YAML في مجلد

9:38

مجموعة بيانات YOLO.

9:40

الذي سيحتوي على

9:41

المسارات إلى مكان

9:43

تواجد الملفات. وترميز

9:46

الفئات الأربع الخاصة

9:48

بنا. يجب أن يبدو

9:50

الهيكل النهائي

9:51

لمجموعة البيانات

9:52

بهذا الشكل. إذاً، حان

9:56

الوقت الآن لتدريب

9:58

نموذج YOLO الخاص بنا.

10:00

سنقوم بتدريب نموذج YOLO

10:02

8n الحالي باستخدام 100

10:05

دورة تدريبية وحجم

10:07

إدخال صورة يبلغ 640.

10:10

يجب علينا هنا تحديد

10:12

المسار إلى ملف YAML. بعد

10:16

الانتهاء من التدريب،

10:18

ألقِ نظرة على دليل

10:20

عمل Python النشط الخاص

10:21

بك. حيث يمكنك العثور

10:23

على معلومات حول

10:24

الأداء على مجموعة

10:25

بيانات التحقق من

10:27

الصحة. إذا كان

10:28

التدريب ناجحاً، يجب

10:30

أن تقترب دوال الخسارة

10:32

هذه من الصفر. بينما

10:34

يجب أن تقترب نتائج MAP

10:36

50 من الواحد. الآن،

10:38

انسخ هذا الملف، وهو

10:40

نموذج YOLO المدرب الخاص

10:42

بك، وضعه في مكان ما

10:43

على جهاز الكمبيوتر

10:45

الخاص بك. حان الوقت

10:47

الآن لتجربة نموذجنا

10:49

المدرب. هذا الكود هو

10:52

نفسه الذي عرضته في

10:54

بداية هذا الفيديو.

10:57

الاختلاف الوحيد هو

10:59

أننا نحدد الآن مسار

11:01

نموذج YOLO المدرب الخاص

11:03

بنا باسم best.pt. لقد

11:05

وضعت هذا الملف هنا في

11:07

مجلد مشروع YOLO. إذا قمت

11:11

بتشغيل هذا الكود، آمل

11:13

أن ترى أن YOLO يتعرف

11:15

الآن على الكائنات

11:16

التي قمت بتدريبه

11:18

عليها. كانت هذه نهاية

11:23

الفيديو حول تدريب

11:25

نموذج YOLO. شكراً على

11:27

المشاهدة.

Interactive Summary

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

Suggested questions

3 ready-made prompts