Habr AI→ المصدر

YOLO و Redis: كيفية تخزين نتائج الكشف في الفيديو مؤقتًا

يعالج YOLO الفيديو، لكن عند تعطل الشبكة أو الكاميرا يبدأ كل شيء من جديد — ويعمل GPU بلا جدوى. يحفظ التخزين المؤقت في Redis نتائج الكشف لكل إطار، لذلك تستأنف إعا

YOLO و Redis: كيفية تخزين نتائج الكشف في الفيديو مؤقتًا
المصدر: Habr AI. كولاج: Hamidun News.
◐ استمع للمقال

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

لماذا هذا مؤلم

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

يشبه إعادة الحساب من الصفر: إذا كانت المعالجة في الإطار 1200، ثم تعطل الخادم، عند إعادة التشغيل تبدأ من الإطار 0 وتجد الأشخاص والسيارات في أول 1200 إطار مرة أخرى. في الوقت نفسه، تفقد معلومات التتبع — معرّفات الكائنات على هذا القطاع من الفيديو. إذا كنت بحاجة لتتبع شخص معين في الفيديو بالكامل، فإن فقدان البيانات يعني انقطاع المسار وخلط معرّفات بين الكائنات.

تتفاقم المشكلة بسبب الحجم: في المراقبة لمدة نصف يوم، حيث يتم معالجة 100+ ساعة من المادة يومياً، فإن خسارة التقدم تعني زيادة متناسبة في التكاليف.

التخزين المؤقت في Redis

Redis هو تخزين في الذاكرة يعمل بسرعة (زمن استجابة بالميلي ثانية). الفكرة: تذكر نتائج الكشف لكل إطار والاستعادة عند إعادة التشغيل. يخزن النظام مؤقتاً:

  • نتائج الكشف لكل إطار (قائمة الكائنات وإحداثياتها والفئة)
  • معرّف التتبع لكل كائن بين الإطارات (الربط بين نفس الكائن في الإطارات المتجاورة)
  • طوابع الوقت للمعالجة (متى تمت معالجة كل إطار)
  • حالة المعالجة (آخر إطار مكتمل)

عند إعادة التشغيل، يتحقق النظام من Redis ويجد آخر إطار تمت معالجته ويستمر من تلك النقطة. لا تقضي وحدة معالجة الرسومات الوقت في الاستدلال المتكرر للإطارات القديمة، فقط للإطارات الجديدة.

الحل العملي

تقدم المقالة مقاطع Python جاهزة للاستخدام يمكن نسخها واستخدامها على الفور. يحل الكود ثلاث مهام:

  • تخزين نتائج YOLO مؤقتاً في Redis بمفتاح مثل `video:{video_id}:frame:{frame_num}` و TTL لتنظيف البيانات القديمة
  • الاستعادة عند إعادة التشغيل: يتحقق النظام من Redis ويتخطى الإطارات المعالجة بالفعل ويبدأ بالإطار الجديد
  • تتبع معرّفات الكائنات بين الإطارات مع تخزين الروابط في الذاكرة المؤقتة

يشارك المؤلف الخبرة من العالم الحقيقي: يصبح النظام متسامحاً مع الأعطال، ويتم معالجة الفيديو دون فقدان البيانات حول مسارات الكائنات. عملياً، توفر وحدة معالجة الرسومات 30–50% من وقت المعالجة على مقاطع الفيديو الطويلة بتخطي الاستدلال المتكرر.

ما يعنيه هذا

بالنسبة لأنظمة تحليل الفيديو في الإنتاج، هذا حاسم. كاميرات المراقبة، تحليل الرياضة، الأنظمة المستقلة — في كل مكان YOLO + Redis يوفر الوقت والمال على الكهرباء والحسابات. فقط أضف Redis إلى البنية، وتصبح فشل الشبكة مشكلة منسية.

ZK
Hamidun News
أخبار الذكاء الاصطناعي بدون ضوضاء. اختيار تحريري يومي من أكثر من 400 مصدر. منتج من جمال حميدون، رئيس الذكاء الاصطناعي في Alpina Digital.
ما رأيك؟
جارٍ تحميل التعليقات…