التدقيق العلمي: د. م. دانيا الصغير، م. محمد سرميني
التدقيق اللغوي: هبة الله فلّاحة
المُحتويَات
- مقدّمة (Introduction):
- الفرق بين تقنيّة اكتشاف الكائنات وتصنيف الصّور Object Detection و Image Classification :
- اكتشاف الكائن قبل خوارزميّة يولو YOLO
- كيف تعمل خوارزميّة يولو YOLO؟
- إصدارات خوارزميّة YOLO
- YOLOv6 يولو v6
- إصدارات يولو YOLOv6
- نتيجة تطبيق الخوارزميّة على صورة واحدة
- هل يولو YOLOv6 أفضل من يولو YOLOv5 في الفيديو أيضًا؟
- المقارنة بين إصدارات يولو YOLOv6
- التّحسينات المعماريّة في بنية يولو YOLOv6
- المقارنة بين يولو YOLOv5 و يولو YOLOv6
- استخدام يولو YOLOv6
- الخاتمة
- المراجع
مقدّمة (Introduction):
تطوّر مجال الرؤية الحاسوبيّة بسرعة في السّنوات الأخيرة، وحقّق لنا نتائج كالخيال العلمي قبل بضع سنوات. فها نحن نشهد ثورة حقيقيّة في تطوير هذا المجال، بدءاً من تحليل صور الأشعة السّينيّة وتشخيص المرضى إلى السّيارات ذاتيّة القيادة ، وإنَّ هذه التّطوّرات والنّتائج لها أسباب عديدة؛ أهمّها بناء موارد حوسبة أفضل وأكثر سهولة.
ويعدّ يولو YOLO أحد أكثر المشاريع شيوعًا في الرؤية الحاسوبيّة، فهي خوارزميّة فعّالة لاكتشاف الكائنات في الزمن الحقيقي، تمّ وصفها لأوّل مرة في ورقة 2015 المنشورة بواسطة جوزيف ريدمون وآخرون. Joseph Redmon et al، و في هذه المقالة ،سنشرح بالتفصيل خوارزمية يولو 6 YOLO v6.
آلية عمل خوازرمية يولو YOLO
أولاً: تُقسّم خوارزميّة يولو YOLO الصّورة إلى نظام شبكيّ
ثانياً: تكتشف كلّ شبكة الكائنات داخل نفسها، يمكن استخدامه للاستدلال في الزمن الحقيقي و يتطلّب موارد حسابيّة قليلة جدًّا.
واليوم، بعد 7 سنوات من إطلاق الإصدار الأوّل من YOLO، نشرت مجموعة البحث في Meituan نموذج YOLOv6 الجديد.
تعدّ خوارزميّة يولو YOLO من أهمّ الخوارزميّات المستخدمة في مجال الرؤية الحاسوبيّة (Computer vision)، فهي قادرة على تصنيف الكائنات الموجودة داخل صورة معيّنة (إنسان، فاكهة، سيّارة .. ) بالإضافة إلى تحديد مكان وجود هذه الكائنات داخل الصّورة (Object detection).
خوارزميّة يولو YOLO هي اختصار لـ (أنت فقط تنظر مرة واحدة) (You Only Look Once)؛ أي بمعنى أنّها تتطلّب مرورًا واحدًا فقط (انتشار أماميّ) عبر الشّبكة العصبونيّة وتكون التفافيّة لاكتشاف كائنات متعدّدة داخل صورة، بحيث يتمّ تقسيم الصّورة إلى مناطق ويتمّ التنبّؤ بمربّع الإحاطة Bounding box والاحتمالات لكلّ منطقة.
الفرق بين تقنيّة اكتشاف الكائنات وتصنيف الصّور Object Detection و Image Classification :
معظم الأشخاص قد يقعون في عمليّة التباس ظنًّا أنّ عمليّة اكتشاف الكائنات وتصنيف الصّور هي مهمّة واحدة one task، ولكن في الحقيقة هما مهمّتان مختلفتان ويكمن الاختلاف الأساسيّ بينهما أنّ عمليّة تصنيف الصّور Image Classification تقوم بتصنيف الكائن الموجود في الصّورة فقط (إنسان، سيّارة … ) ولا يمكنها أن تشير إلى مكان وجود هذا الكائن داخل الصّورة أبدًا، بالإضافة إلى أنّه لا يمكنها أن تقوم بعمليّة التّصنيف بشكل صحيح في حال وجود أكثر من كائن واحد في الصّورة، أمّا بالنّسبة لعمليّة اكتشاف الكائنات Object Detection فهي تحدّد موقع أكثر من كائن داخل الصّورة بالتنبّؤ بمربّع الإحاطة Bounding box حول كلّ كائن موجود بالصّورة، وأيضًا القيام بعمليّة التّصنيف لهذه الكائنات ( إنسان، سيّارة … ).
اكتشاف الكائن قبل خوارزميّة يولو YOLO
قبل يولو YOLO، سيطرت شَبَكَةُ الطَّيِّ العُصبُونِيَّة المناطِقيَّةِ السَّريعةِ (Fast R-CNN) بُنية اكتشاف الكائنات ذات المرحلتين على المجال، حيث تمّ استخدام المصنّفات القائمة على المنطقة لتحديد المناطق ثمّ تمريرها إلى مصنّف أكثر تعقيدًا لتحديد نوع الكائن.
ورغم أنّ هذه الطّريقة تعطي نتائج دقيقة مع دقّة مرتفعة (high mean Average Precision)، فهي كثيفة الاستخدام للموارد وتتطلّب العديد من التّكرارات في تشغيلها.
توضيح : متوسّط الدّقة المتوسّطة (mean Average Precision—mAP)؛ هو مقياس يُستخدم لتقييم نماذج اكتشاف الكائنات مثل شَبَكَةُ الطَّيِّ العُصبُونِيَّة المناطِقيَّةِ السَّريعةِ (Fast R-CNN) و YOLO وشَبَكَةُ الطَّيِّ العُصبُونِيَّةِ المناطِقيَّةِ ذاتُ القناع (Mask R-CNN ) وما إلى ذلك، يتمّ حساب متوسّط قيم الدّقة المتوسّطة (AP) على قيم الاسترجاع من 0 إلى 1.كيف تعمل خوارزميّة يولو YOLO؟
اقترحت يولو YOLO منهجيّة مختلفة عن المناهج المستخدمة في عام 2015، حيث يتمّ إجراء كلتا المرحلتين في نفس الشّبكة العصبونيّة
أوّلًا، يتمّ تقسيم الصّورة إلى خلايا لكلٍّ منها منطقة أبعاد متساوية SxS.
ثانيًا، تكتشف كلّ خلية الكائنات الّتي تحتويها وتحدّد موقعها مع إحداثيّات المربّع المحيط (بالنسبة لإحداثيّاتها) مع تسمية الكائن واحتمال وجود الشّيء في الخليّة، كما هو موضّح بالشّكل بنية YOLOv1.
ولأنّ كلّ خليّة “تعمل من تلقاء نفسها”، يمكنها معالجة الشّبكة في وقت واحد، وتقليل قوى الحوسبة المطلوبة والوقت اللّازم للتّدريب والاستنتاج.
في الواقع تحقّق يولو YOLO أفضل النّتائج، مُتغلّبةً على خوارزميّات اكتشاف الكائنات الأخرى في الوقت الفعليّ.
إصدارات خوارزميّة YOLO
- YOLOv1 (يونيو ، 2015)
- YOLOv2 (ديسمبر 2016)
- YOLOv3 (أبريل 2018)
- YOLOv4 (أبريل ، 2020)
- YOLOv5 (مايو ، 2020)
YOLOv6 يولو v6
تمّ استلهام MT-YOLOv6 من هندسة يولو YOLO الأصليّة ذات المرحلة الواحدة، وبالتّالي أطلق عليها مؤلّفوها اسم YOLOv6، وعلى الرّغم من أنّه يوفّر نتائج رائعة، من المهمّ ملاحظة أنّ MT-YOLOv6 ليس جزءًا من سلسلة يولو YOLO الرّسميّة، لكن بما أنّ العمل مستوحًى بشكل كبير من الفكرة الأصليّة لخوارزميّة يولوYOLO ذات المرحلة الواحدة، وقد تمّ الاستفادة بالتّنفيذ من تقنيّات وحيل مختلفة لها، لذا تمّ إطلاق المشروع باسم YOLOv6 لتكريم أعمال سلسلة يولو YOLO.
يُعبتر الإصدار السادس من يولو YOLOv6 إطار عمل لاكتشاف الكائنات على مرحلة واحدة مخصّص للتّطبيقات الصّناعيّة، مع تصميم فعّال و أداء عالٍ مناسب للأجهزة. يتفوّق على الإصدار الخامس من يولو YOLOv5 في دقّة الكشف وسرعة الاستدلال، ممّا يجعله أفضل إصدار لنظام التّشغيل المخصص لتطبيقات الإنتاج.
إصدارات يولو YOLOv6
YOLOv6-nano يحقّق 35.0 mAP على مجموعة بيانات كوكو COCO val2017 مع 1242 إطارًا في الثّانية.
YOLOv6-s يحقّق 43.1 mAP على مجموعة بيانات كوكو COCO val2017 مع 520 إطارًا في الثّانية.
نتيجة تطبيق الخوارزميّة على صورة واحدة
توفّر خوارزمية يولو YOLOv6s (باللّون الأحمر) معدّل متوسّط دقّة (mAP) أفضل من جميع الإصدارات السّابقة من يولو YOLOv5، مع وقت استنتاج أسرع مرّتين تقريبًا.
يمكننا أيضًا أن نرى فجوة كبيرة في الأداء بين البنية القائمة على يولو YOLO و EfficientDet؛ الذي يعتمد على اكتشاف الكائنات على مرحلتين.
هل يولو YOLOv6 أفضل من يولو YOLOv5 في الفيديو أيضًا؟
تمّ قياس نموذج يولو YOLOv6 على وحدة معالجة الرّسومات تيسلا Tesla V100، حيث يظهر نموذجًا لمجموعة بيانات كوكو COCO بدقّة أكبر من يولو YOLOv5 بسرعات استدلال مماثلة.
في الرّسم البيانيّ أدناه، يمكننا رؤية الإطارات في الثّانية مقابل متوسّط الدّقة لأحجام نماذج مختلفة من يولو YOLOv6 و يولو YOLOv5.
تطبيق الخوارزميّة على فيديو
كما هو الحال في تطبيق الخوارزميّة على الصّورة الفرديّة، يوفّر يولو YOLOv6 نتائج أفضل للفيديو على جميع أطياف FPS.
Frames per second : FPS(عدد الإطارات في الثانية)
المقارنة بين إصدارات يولو YOLOv6
تمّ اختبار مقارنات mAP وسرعة أجهزة الكشف عن الأجسام المختلفة على مجموعة بيانات كوكو COCO val2017.
التّحسينات المعماريّة في بنية يولو YOLOv6
مع كلّ تكرار لنموذج يولو YOLO، كان الهدف هو تعلّم كيفية التنبّؤ بالمربّعات المحيطة حول الكائنات المحدّدة بدقّة، مع الحفاظ على وقت اكتشاف الكائن بسرعات الزمن الحقيقي، كلّما كان النّموذج أفضل قلّ عدد الأجهزة المطلوبة لتدريبه ونشره.
في يولو YOLOv5 يشترك التّصنيف ومربّع الانحدار في نفس الميّزات.
كما أنَّ في يولو YOLOv6 يتمّ فصل الطّبقة الأولى، ممّا يعني أنّ الشّبكة بها طبقات إضافيّة تفصل هذه الميّزات عن الطّبقة النّهائيّة، والّتي ثبت بشكل تجريبيّ أنّها تزيد من الأداء.
بالإضافة إلى التّغييرات المعماريّة، يقوم يولو YOLOv6 أيضًا بتنفيذ بعض التّحسينات على التّدريب بما في ذلك التّدريب المجانيّ.
المقارنة بين يولو YOLOv5 و يولو YOLOv6
مقارنة معياريّة بين يولو YOLOv5 و يولو YOLOv6
أثناء النّظر في معايير كلا النّموذجين، وُجِدَت صعوبة في مقارنة التّفاح بالتّفاح. يحتوي يولو YOLOv6 على أنواع أقل من النّماذج (تفتقر إلى m / l / x)، ولا يحتوي على أيّ معلومات حول الصّور الأكبر من 640 بكسل، وبالنّسبة للمعايير الّتي تمّ الإبلاغ عنها في كلا المشروعين، يمكننا أن نرى بوضوح التّحسّن في خريطة يولو YOLOv6. ومع ذلك يحتوي الإصدار 6 على 2x عدد المعلمات و Flops من الإصدار 5.
مقارنة نوعيّة بين يولو YOLOv5 و يولو YOLOv6
لقد تمّ استخدام الإصدار s من كلا الطّرازين لاكتشاف الكائنات في الصّور التّالية:
يمكننا أن نرى بوضوح أن يولو YOLOv6s تكتشف المزيد من الكائنات في الصّورة، ولديها وثوقيّة أعلى بشأن تحديد نوع الكائن الخاصّ بها.
مقارنة من حيث المرونة بين يولو YOLOv5 و يولو YOLOv6
كلا المشروعين لهما نهج متشابهة لإنشاء أحجام نماذج مختلفة.
الاختلاف الأكبر هو أن يولو YOLOv5 يستخدم YAML، بينما يعرّف يولو YOLOv6 معلمات النّموذج مباشرة في بايثون Python.
تشير اللّمحة التّمهيدية أيضًا إلى أن YOLOv5 قد يكون أكثر قابليّة للتّخصيص إلى حدٍّ ما.
ومع ذلك فإنّ يولو YOLOv6 مرن للغاية؛ يعني أنّه يمكننا رؤية إصدارات أكبر من يولو YOLOv6 في المستقبل مع تنبّؤات دقّة أعلى.
توضيح: YAMLاختصار ل (YAML Ain’t Markup Language) وتعني ليست لغة ترميز وهي لغة تسلسل بيانات تُستخدم غالبًا لكتابة ملفات التكوين والتطبيقات التي يتم فيها تخزين البيانات ونقل البيانات ،ويتم إستخدامها لنفس الهدف الخاص ب XML و JSON ولكنها تحتوي على بنية بسيطة وطريقة بنيتها متمثلة أو مأخوذة من العديد من لغات البرمجة الأخرى حيث تعتمد على الفراغات “spaces”،وهي مصممة لتكون قابلة للقراءة من قبل البشر،وتم اقتراح YAML لأول مرة في عام 2001 وقيل لأول مرة أنَّ YAML تعني “لغة ترميزية أخرى”(“Yet Another Markup Language”) للإشارة إلى الغرض منها كلغة ترميز، و تم تغيير الغرض منه لاحقًا ليصبح “ليست لغة ترميزيّة”(“YAML Aint Markup Language”) للإشارة إلى الغرض منه هو موجهًا للبيانات.
استخدام يولو YOLOv6
يمكنك التّعامل مع أحدث إصدار من يولو YOLOv6 باستخدام تطبيق جيت هاب gitHub.
إذا كنت ترغب في استخدامه على جهازك الشخصيّ، فاتّبع الخطوات التّالية:
التّنصيب
git clone https://github.com/meituan/YOLOv6
cd YOLOv6
pip install -r requirements.txt
استخدم يولو YOLOv6s
python tools/infer.py --weights yolov6s.pt --source <path to image/directory>
استخدم يولو YOLOv6n
python tools/infer.py --weights yolov6n.pt --source <path to image/directory>
الخاتمة
تُعدّ خوارزميّة يولو الإصدار السادس YOLOv6 أحد أكثر المشاريع المهمّة الّتي تمّ إصدارها مؤخّرًا حيث تٌوفّر أحدث النّتائج مع تحسّن ملحوظ مقارنة بإصدارات يولو YOLO السّابقة.
يركّز المشرفون حاليًا على إثراء أنواع النّماذج وخيارات النّشر وأدوات التّكميم.
ومع ذلك كما هو الحال مع أيّ مشروع مفتوح المصدر، يمكن للجميع أن يؤثّروا بشكل كبير على خريطة الطّريق ومنحنى التّقدّم للمشروع.
حققت تقنية يولو v6 أداء مميزاً في معالجة الصور واكتشاف الكائنات الّتي تحتويها.
المراجع
- https://arxiv.org/abs/1506.02640v1
- https://arxiv.org/pdf/1506.02640.pdf
- https://pjreddie.com/darknet/yolo/
- https://dagshub.com/blog/yolov6
- https://blog.roboflow.com/yolov6
- YOLOv6: a single-stage object detection framework dedicated to industrial applications.
- How does YOLOv6 compare against YOLOv5
- https://www.v7labs.com/blog/yolo-object-detection
- https://www.v7labs.com/blog/mean-average-precision#h1
- https://docs.fileformat.com/programming/yaml/
4 تعليقات
الله يعطيك العافية..
شكراً جزيلاً على كلماتك الطيبة. سأبذل المزيد من الجهد لتقديم محتوى عالي الجودة ومفيد للجميع. وأتمنى لك كل التوفيق والنجاح في حياتك.
شكراً لك صديقي على المعلومات المفيدة والرائعة أتمنى لك التوفيق الدائم
شكرا جزيلا على كل الجهود المبذولة اسئل من الله لك التوفيق والنجاح الدائم