تعد تقنية اكتشاف الكائنات في رؤية الكمبيوتر ضرورية للعديد من التطبيقات. نستخدمها في الروبوتات ، ومعدات المراقبة ، والسيارات ذاتية القيادة ، والعديد من المجالات الأخرى. ومن ثم ، فإننا نعثر على أشياء معينة ونتعرف عليها في صورة أو مقطع فيديو.
واحدة من الأكثر شهرة خوارزميات تحديد الكائن هي YOLO (أنت تنظر مرة واحدة فقط) مجموعة من النماذج. تم إنشاء هذه النماذج من قبل ألتراليتيكس ذ.م.م.
أحدث إصدار من هذه السلسلة هو YOLOv5. وهو أسرع وأدق نموذج لتحديد الأشياء في السوق. تم تحسين قدرة النموذج على التعميم على البيانات الجديدة بشكل كبير. كما أنه يحتوي على العديد من الميزات التي تجعله يعمل بشكل أفضل من التكرارات السابقة.
يعد YOLOv5 رائعًا للتطبيقات في الوقت الفعلي حيث يمكنه معالجة الصور بمعدل يصل إلى 1000 إطار في الثانية على وحدة معالجة رسومات واحدة.
في هذه المقالة ، سوف نقدم YOLOv5 ونستعرض تفاصيل مجالات تطبيقه.
رحلة YOLO: من YOLO إلى YOLOv5
جوزيف ريدمون وآخرون. قدمت أصلاً YOLO ، وهي مجموعة من نماذج تحديد الكائنات ، في عام 2016. يمكن لنموذج YOLO الأولي تحديد الكائنات في الوقت الفعلي. ومع ذلك ، كانت الدقة منخفضة عند مقارنتها بالنماذج الأخرى في ذلك الوقت.
تم إصدار العديد من الإصدارات المحدثة من YOLO على مر السنين. وأخيرًا ، أنشأت Ultralytics LLC أحدث إصدار من سلسلة YOLO ، YOLOv5.
YOLOv5 هو أدق وأسرع نموذج لتحديد الكائنات متوفر حاليًا.
الميزات الهامة
مربعات المرساة
يتنبأ YOLOv5 بالمربعات المحيطة للكائنات في صورة ما باستخدام مربعات الربط. يتنبأ النموذج بأي من المربعات المحددة مسبقًا ذات نسب العرض إلى الارتفاع المختلفة تتطابق بشكل أفضل مع العنصر الموجود في الصورة باستخدام مربعات التثبيت. هذه مربعات محددة مسبقًا.
كما أنها تمكن YOLOv5 من التعرف والعثور على العناصر في الصورة بدقة.
زيادة بيانات الفسيفساء
عند التدريب ، يستخدم YOLOv5 طريقة تعرف باسم الفسيفساء زيادة البيانات. لتطوير صور تدريب جديدة ، يجمع نموذجنا عشوائيًا رقعًا من عدة صور. نتيجة لذلك ، يصبح النموذج أكثر مرونة ويمكن الاعتماد عليه. ومن ثم ، فإنه يحصل على التعميم على البيانات الجديدة وتقليل فرط التخصيص.
خط أنابيب تدريب فريد
خط أنابيب تدريب فريد يمزج بين الإشراف و تعليم غير مشرف عليه .
وهكذا ، يتعلم النموذج من عينة أصغر ويستخدم المدخلات غير المسماة بفعالية. هذا يعزز أداء النموذج ويعزز قدرته على التعميم على المدخلات الجديدة.
الطبقات المتبقية وغير المتبقية
تجمع بنية YOLOv5 بين الطبقات المتبقية وغير المتبقية. من خلال السماح بتدفق التدرجات عبر الطبقات ، تساعد الطبقات المتبقية النموذج في تعلم الميزات الصعبة. أيضًا ، توفر الطبقات غير المتبقية للنموذج فهمًا أكثر شمولاً لصورة الإدخال. نتيجة لذلك ، يمكن أن يعمل YOLOv5 بشكل أكثر دقة وفعالية.
كيفية استخدام YOLOv5
التنزيل
يمكن إكمال تثبيت YOLOv5 بسرعة باستخدام النقطة. Pip هو مدير حزم بايثون. الإجراءات العامة لتثبيت YOLOv5 هي كما يلي:
1- تثبيت PyTorch: لأن YOLOv5 يعتمد على إطار عمل PyTorch ، يجب عليك أولاً تثبيت PyTorch.
pip install torch torchvision
2. تثبيت CUDA: يجب عليك تثبيت CUDA إذا كنت تنوي تشغيل YOLOv5 على وحدة معالجة الرسومات.
3. تثبيت YOLOv5: بعد إعداد PyTorch و CUDA ، استخدم الأمر التالي لتنزيل YOLOv5.
pip install yolov5
4-بعد تثبيت YOLOv5 ، يجب تنزيل الأوزان المدربة مسبقًا. تتوفر الأوزان المدربة مسبقًا في Ultralytics GitHub repo.
انتقل إلى جزء "الأوزان" من الموقع عن طريق التمرير لأسفل. يمكنك تنزيل الأوزان المدربة مسبقًا من القائمة التي يمكنك العثور عليها هنا.
5. حدد الأوزان التي تم تدريبها بالفعل والتي تناسب حالة الاستخدام الخاصة بك. يمكن استخدام مجموعة البيانات أو إصدار YOLOv5 المعين الذي تم تعلمه من الأوزان لتضييق القائمة.
6- بعد اختيار الأوزان المناسبة ، قم باختيار الوزن بالضغط على زر "تنزيل" المجاور له. ستكون الأوزان متاحة للتنزيل بتنسيق. ملفات pt.
7- انقل الأوزان التي تم تنزيلها إلى الدليل. هذا هو المكان الذي سيعمل فيه البرنامج النصي للكشف.
8- في هذه المرحلة ، يمكنك تشغيل اكتشاف الكائنات على صورك أو مقاطع الفيديو الخاصة بك باستخدام الأوزان المدربة مسبقًا في نص الكشف الخاص بك.
تحضير البيانات
يجب عليك اتخاذ الإجراءات التالية لتجهيز البيانات للاستخدام مع YOLOv5:
1. اجمع البيانات: تتمثل الخطوة الأولى في جمع بيانات الصورة أو الفيديو التي ستحتاج إليها كشف الكائن. يجب أن تكون الأشياء التي ترغب في اكتشافها موجودة في الصور أو مقاطع الفيديو.
2- تنسيق البيانات: يمكنك فقط استيراد الصور إلى البرنامج النصي الخاص بك إذا كنت تستخدمها. يجب عليك تحويل مقطع فيديو إلى سلسلة من الصور إذا كنت تخطط لاستخدام واحدة. يمكنك استخراج الإطارات من فيلم باستخدام مكتبة مثل OpenCV.
import cv2
img = cv2.imread('path/to/image')
باستخدام مكتبة OpenCV ، يمكنك استخدام الأمر التالي لتحويل مقطع فيديو إلى سلسلة من الصور:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. تسمية البيانات: يجب تسمية البيانات إذا كنت تستخدم مجموعة البيانات الخاصة بك. رسم المربعات المحيطة حول العناصر التي ترغب في تحديدها في كل إطار من الصورة. إنها عملية تسمية البيانات. يمكنك استخدام عدة أدوات لمساعدتك في هذه العملية ، بما في ذلك LabelImg و RectLabel.
4- يجب تقسيم البيانات إلى مجموعات تدريب واختبار بعد أن تقوم بتمييزها. هذا أمر بالغ الأهمية لتقييم مدى جودة أداء النموذج الخاص بك.
5. أخيرًا ، قد تحتاج إلى معالجة البيانات مسبقًا قبل التدريب أو الاختبار. يمكن أن يستلزم ذلك قياس الصور أو مقاطع الفيديو ، أو توحيد قيم البكسل ، أو استخدام طرق لزيادة البيانات.
بعد الانتهاء من هذه الخطوات ، تكون بياناتك جاهزة.
قم بتشغيل البرنامج النصي للكشف
فيما يلي توضيح لبرنامج نصي للكشف يقوم بتحليل الصورة والعثور على الكائنات.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
المعالجة البعدية
يعد عدم الحد الأقصى للقمع أحد أكثر تقنيات المعالجة اللاحقة شيوعًا المستخدمة في اكتشاف الكائنات (NMS). نستخدم NMS للتخلص من المربعات المحيطة المتداخلة لنفس الكائن. لتنفيذ NMS على الاكتشافات ، يمكننا استخدام طريقة cv2.dnn.NMSBoxes () الخاصة بمكتبة OpenCV.
فيما يلي مثال على كيفية معالجة الاكتشافات اللاحقة باستخدام NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
المؤشرات = cv2.dnn.NMSBoxes (الاكتشافات ، الأسرار ، conf_thres ، nms_thres)
تصور
في حالة التصور ، يمكننا مرة أخرى استخدام مكتبة مثل OpenCV. يمكننا عرض المربعات المحيطة حول الكائنات المكتشفة في الصورة أو الفيديو المصدر. لرسم المربعات المحيطة بالصورة ، استخدم طريقة cv2.rectangle (). فيما يلي كيفية عرض الاكتشافات على الصورة الأصلية:
استيراد السيرة الذاتية 2
# Draw the bounding boxes on the image
بالنسبة لي في المؤشرات:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
التطبيقات
YOLOv5 هو نموذج قوي لتحديد الكائن. وبالتالي ، يمكننا الاستفادة منه في العديد من سيناريوهات العالم الحقيقي. من أبرز الاستخدامات في السيارات ذاتية القيادة. يمكن لـ YOLOv5 تحديد العناصر في الوقت الفعلي مثل السيارات وإشارات المرور.
في أنظمة المراقبة ، يمكننا استخدام YOLOv5 للتعرف على الكائنات وتتبعها في تدفقات الفيديو الحية. علاوة على ذلك ، يمكن أن يكون YOLOv5 رصيدًا كبيرًا في مجال الروبوتات. يمكن أن تساعد الروبوتات في اكتشاف وفهم محيطهم. هذا مهم للغاية لأنشطة مثل التنقل والتلاعب.
يمكن أيضًا استخدام YOLOv5 في أي صناعة تتطلب اكتشاف الكائنات ، مثل البيع بالتجزئة والرياضة والطبية والأمن.
وفي الختام
أخيرًا ، YOLOv5 هو الإصدار الأحدث والأكثر تطورًا من عائلة YOLO كشف الكائن عارضات ازياء
. أيضًا ، من الإنصاف القول إنه النموذج الأكثر دقة للكشف عن الأشياء المتاح. بفضل دقته وسرعته العالية ، يمكنك اختياره بأمان لمشاريع اكتشاف الأشياء الخاصة بك.
ريسكي أجوس
أقوم بإعداد أول يوميات حول مركبة الكشف باستخدام yolov5 وتعليمات الويب هذه للبحث عن معلومات حول ذلك.
أنا مهتم جدًا بالذكاء الاصطناعي.
إذا كان بإمكانك الحصول على أسئلة كثيرة حول الذكاء الاصطناعي ، فربما يمكنك مساعدتي
شكرا لك