استدلال اكتشاف الأشياء في الوقت الفعلي في Python باستخدام ذكاء بيانات YOLOv7 PlatoBlockchain. البحث العمودي. عاي.

استدلال اكتشاف الكائن في الوقت الفعلي في Python باستخدام YOLOv7

المُقدّمة

يعد اكتشاف الأشياء مجالًا كبيرًا في رؤية الكمبيوتر ، وأحد أهم تطبيقات رؤية الكمبيوتر "في البرية".

لا يعد اكتشاف الكائنات موحدًا مثل تصنيف الصور ، ويرجع ذلك أساسًا إلى أن معظم التطورات الجديدة يتم إجراؤها عادةً بواسطة باحثين فرديين ومشرفين على الصيانة والمطورين ، بدلاً من المكتبات وأطر العمل الكبيرة. من الصعب تجميع البرامج النصية المساعدة الضرورية في إطار عمل مثل TensorFlow أو PyTorch والحفاظ على إرشادات API التي وجهت عملية التطوير حتى الآن.

هذا يجعل اكتشاف الكائن أكثر تعقيدًا إلى حد ما ، وعادةً ما يكون أكثر تفصيلاً (ولكن ليس دائمًا) ، وأقل سهولة من تصنيف الصور.

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

في هذا الدليل المختصر ، سنقوم بتنفيذ اكتشاف الكائنات في Python ، باستخدام أحدث إصدارات YOLOv7.

YOLO Landscape و YOLOv7

YOLO (أنت تنظر مرة واحدة فقط) هي منهجية ، بالإضافة إلى مجموعة من النماذج المصممة لاكتشاف الكائنات. منذ البداية في عام 2015 ، تم اقتراح YOLOv1 و YOLOv2 (YOLO9000) و YOLOv3 من قبل نفس المؤلف (المؤلفين) - واستمر مجتمع التعلم العميق في التقدم مفتوح المصدر في السنوات المستمرة.

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

لا يزال YOLOv5 هو المشروع الأساسي لبناء نماذج اكتشاف الكائنات ، والعديد من المستودعات التي تهدف إلى تطوير طريقة YOLO تبدأ بـ YOLOv5 كخط أساس وتقدم واجهة برمجة تطبيقات مماثلة (أو ببساطة تفرع من المشروع والبناء فوقه). هذه هي حالة YOLOR (أنت تتعلم تمثيل واحد فقط) و YOLOv7 التي بنيت على قمة YOLOR (نفس المؤلف). YOLOv7 هو أحدث تقدم في منهجية YOLO وعلى الأخص ، YOLOv7 يوفر رؤوسًا جديدة للنماذج ، يمكنها إخراج نقاط المفاتيح (الهياكل العظمية) وإجراء تجزئة للمثيل إلى جانب انحدار الصندوق المحيط فقط ، وهو ما لم يكن قياسيًا مع نماذج YOLO السابقة.

هذا يجعل تجزئة المثيل واكتشاف نقاط المفاتيح أسرع من أي وقت مضى!

بالإضافة إلى ذلك ، يعمل YOLOv7 بشكل أسرع وبدرجة أعلى من الدقة من النماذج السابقة بسبب انخفاض عدد المعلمات وزيادة الكفاءة الحسابية:

استدلال اكتشاف الأشياء في الوقت الفعلي في Python باستخدام ذكاء بيانات YOLOv7 PlatoBlockchain. البحث العمودي. عاي.

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

تثبيت YOLOv7

يتلخص تثبيت YOLOv7 واستخدامه في تنزيل مستودع GitHub على جهازك المحلي وتشغيل البرامج النصية المرفقة معه.

ملحوظة: لسوء الحظ ، حتى كتابة هذه السطور ، لا يقدم YOLOv7 واجهة برمجة تطبيقات برمجية نظيفة مثل YOLOv5 ، والتي يتم تحميلها عادةً من torch.hub()، تمرير مستودع GitHub فيه. يبدو أن هذه ميزة يجب أن تعمل ولكنها تفشل حاليًا. عندما يتم إصلاحه ، سأقوم بتحديث الدليل أو نشر دليل جديد على واجهة برمجة التطبيقات البرمجية. في الوقت الحالي - سنركز على نصوص الاستدلال المتوفرة في المستودع.

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

لنقم بتنزيل المستودع ونقوم ببعض الاستدلال:

! git clone https://github.com/WongKinYiu/yolov7.git

هذا يخلق yolov7 الدليل في دليل العمل الحالي الخاص بك ، والذي يضم المشروع. دعنا ننتقل إلى هذا الدليل ونلقي نظرة على الملفات:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

ملحوظة: على مفكرة Google Colab ، سيكون عليك تشغيل السحر %cd الأمر في كل خلية ترغب في تغيير دليلك إليها yolov7، بينما تعيدك الخلية التالية إلى دليل العمل الأصلي. في Local Jupyter Notebooks ، تغيير الدليل مرة يبقيك فيه ، لذلك لا داعي لإعادة إصدار الأمر عدة مرات.

detect.py هي نصوص الاستدلال التي تدير عمليات الكشف وتحفظ النتائج ضمن runs/detect/video_name، حيث يمكنك تحديد video_name أثناء استدعاء detect.py النصي. export.py يقوم بتصدير النموذج إلى تنسيقات مختلفة ، مثل ONNX و TFLite وما إلى ذلك. train.py لتدريب كاشف YOLOv7 مخصص (موضوع دليل آخر) ، و test.py يمكن استخدامها لاختبار كاشف (يتم تحميله من ملف أوزان).

تحتوي العديد من الدلائل الإضافية على التكوينات (cfg) ، مثال على البيانات (inference) ، والبيانات الخاصة بإنشاء النماذج وتكوينات COCO (data، الخ).

مقاسات YOLOv7

يتم قياس النماذج المستندة إلى YOLO جيدًا ، ويتم تصديرها عادةً كنماذج أصغر وأقل دقة ونماذج أكبر وأكثر دقة. ثم يتم نشرها على أجهزة أضعف أو أقوى على التوالي.

يقدم YOLOv7 عدة أحجام ، وقارن بينها وبين MS COCO:

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

الموديل حجم الاختبار APتجربه بالعربي AP50 اختبار AP75 اختبار دفعة 1 إطارا في الثانية دفعة 32 متوسط ​​الوقت
يولوف 7 640 51.4% 69.7% 55.9% 161 إطارا في الثانية مللي 2.8
YOLOv7-X 640 53.1% 71.2% 57.8% 114 إطارا في الثانية مللي 4.3
YOLov7-W6 1280 54.9% 72.6% 60.1% 84 إطارا في الثانية مللي 7.6
YOLOv7-E6 1280 56.0% 73.5% 61.2% 56 إطارا في الثانية مللي 12.3
YOLOv7-D6 1280 56.6% 74.0% 61.8% 44 إطارا في الثانية مللي 15.0
YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36 إطارا في الثانية مللي 18.7

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

الاستدلال بالفيديو مع YOLOv7

خلق inference-data مجلد لتخزين الصور و / أو مقاطع الفيديو التي ترغب في الكشف عنها. بافتراض وجوده في نفس الدليل ، يمكننا تشغيل برنامج اكتشاف باستخدام:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

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

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

لاحظ أن المشروع سيعمل ببطء على الأجهزة التي تعتمد على وحدة المعالجة المركزية (مثل 1000 مللي ثانية لكل خطوة استدلال في الإخراج أعلاه ، ويتم تشغيله على جهاز MacBook Pro 2017 المستند إلى Intel) ، وأسرع بشكل كبير على الأجهزة القائمة على وحدة معالجة الرسومات (أقرب إلى 5 مللي ثانية / إطار على V100). حتى على الأنظمة القائمة على وحدة المعالجة المركزية مثل هذا النظام ، yolov7-tiny.pt يعمل في 172ms/frame، والتي على الرغم من أنها بعيدة كل البعد عن الوقت الفعلي ، إلا أنها مناسبة جدًا للتعامل مع هذه العمليات على وحدة المعالجة المركزية.

بمجرد الانتهاء من التشغيل ، يمكنك العثور على الفيديو الناتج أسفل runs/video_1 (الاسم الذي قدمناه في ملف detect.py call) ، المحفوظة كملف .mp4:

استدلال اكتشاف الأشياء في الوقت الفعلي في Python باستخدام ذكاء بيانات YOLOv7 PlatoBlockchain. البحث العمودي. عاي.

الاستدلال على الصور

يتلخص الاستدلال على الصور في نفس العملية - توفير عنوان URL لصورة في نظام الملفات ، والاستدعاء detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

ملحوظة: اعتبارًا من الكتابة ، لا يؤدي الإخراج إلى تغيير حجم الملصقات إلى حجم الصورة ، حتى إذا قمت بتعيينها --img SIZE. هذا يعني أن الصور الكبيرة ستحتوي على خطوط مربعة ضيقة للغاية وتسميات صغيرة.

استدلال اكتشاف الأشياء في الوقت الفعلي في Python باستخدام ذكاء بيانات YOLOv7 PlatoBlockchain. البحث العمودي. عاي.

وفي الختام

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

في مزيد من الإرشادات ، سنغطي اكتشاف نقاط المفاتيح وتجزئة المثيلات.

المضي قدمًا - التعلم العميق العملي لرؤية الكمبيوتر

طبيعتك الفضولية تجعلك ترغب في الذهاب إلى أبعد من ذلك؟ نوصي بالتحقق من الدورة: "التعلم العميق العملي لرؤية الكمبيوتر باستخدام Python".

استدلال اكتشاف الأشياء في الوقت الفعلي في Python باستخدام ذكاء بيانات YOLOv7 PlatoBlockchain. البحث العمودي. عاي.

دورة أخرى في الرؤية الحاسوبية؟

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

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

ماذا يوجد في الداخل؟

  • المبادئ الأولى للرؤية وكيف يمكن تعليم أجهزة الكمبيوتر "الرؤية"
  • مهام وتطبيقات مختلفة للرؤية الحاسوبية
  • أدوات التجارة التي ستجعل عملك أسهل
  • البحث عن مجموعات البيانات وإنشائها واستخدامها للرؤية الحاسوبية
  • نظرية وتطبيق الشبكات العصبية التلافيفية
  • التعامل مع تحول المجال والتواجد المشترك والتحيزات الأخرى في مجموعات البيانات
  • نقل التعلم والاستفادة من وقت تدريب الآخرين والموارد الحسابية لصالحك
  • بناء وتدريب مصنف حديث لسرطان الثدي
  • كيفية تطبيق جرعة صحية من الشك على الأفكار السائدة وفهم الآثار المترتبة على التقنيات المعتمدة على نطاق واسع
  • تصور "الفضاء المفهوم" لـ ConvNet باستخدام t-SNE و PCA
  • دراسات حالة عن كيفية استخدام الشركات لتقنيات الرؤية الحاسوبية لتحقيق نتائج أفضل
  • تقييم النموذج المناسب ، تصور الفضاء الكامن وتحديد انتباه النموذج
  • إجراء بحث في المجال ومعالجة مجموعات البيانات الخاصة بك وإنشاء اختبارات نموذجية
  • أحدث البنيات ، تطور الأفكار ، ما الذي يجعلها فريدة من نوعها وكيفية تنفيذها
  • KerasCV - مكتبة العمل قيد التقدم لإنشاء خطوط الأنابيب والنماذج الحديثة
  • كيف تحلل وتقرأ الأوراق وتنفذها بنفسك
  • اختيار النماذج حسب التطبيق الخاص بك
  • إنشاء خط أنابيب تعلم آلي شامل
  • المناظر الطبيعية والحدس في اكتشاف الكائنات باستخدام شبكات R-CNN و RetinaNets و SSDs و YOLO أسرع
  • المثيل والتجزئة الدلالية
  • التعرف على الكائنات في الوقت الفعلي باستخدام YOLOv5
  • تدريب كاشفات الأجسام YOLOv5
  • العمل مع المحولات باستخدام KerasNLP (مكتبة WIP ذات قوة الصناعة)
  • دمج المحولات مع ConvNets لإنشاء تسميات توضيحية للصور
  • ديب دريم
  • تحسين نموذج التعلم العميق لرؤية الكمبيوتر

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

اكثر من ستاكابوز