الخطأ الذي ينتج 10000 صورة عديمة الفائدة
إن الأسلوب الواضح لتحويل الفيديو إلى بيانات تدريب هو استخراج كل إطار. إنه شعور شامل. إنه قريب من أسوأ شيء يمكنك القيام به.
يفصل بين الإطارات المتتالية لفيديو بمعدل 30 إطارًا في الثانية 33 مللي ثانية. ما لم تكن الكاميرا أو الهدف يتحرك بسرعة، فإن الإطار 1001 يكون مطابقًا تقريبًا للإطار 1000 - نفس الوضع، نفس الإضاءة، نفس الخلفية، مع اختلاف بسيط في البكسلات. لا تحتوي مجموعة البيانات المكونة من 10000 إطار من هذا القبيل على 10000 مثال. ويحتوي على 300 موقف مختلف، يتكرر كل منها ثلاثين مرة.
ما يفعله ذلك بالتدريب محدد ومضر. تتدرج تكلفة التعليقات التوضيحية مع عدد الصور، بحيث تدفع ثلاثين مرة مقابل نفس المعلومات. المقاييس الزمنية للتدريب أيضًا. والأهم من ذلك، إذا انتهى الأمر بهذه التكرارات شبه المكررة على جانبي تقسيم التدريب/التحقق، فقد رأى النموذج مجموعة التحقق بشكل فعال - وستحصل على درجة تحقق لا تعني شيئًا.
لذا فإن القرار الأول ليس إعدادًا للأداة. إنها: إلى أي مدى يجب أن يتغير المحتوى قبل أن يتم احتساب الإطار كمثال جديد؟
اختيار الفاصل الزمني لأخذ العينات
اشتقها من الحركة في المشهد، وليس من معدل الإطارات المصدر. بعض نقاط بداية العمل:
- كاميرا ثابتة، موضوع بطيء (المراقبة، نمو النبات، قائمة الانتظار) - إطار واحد كل 2-10 ثوانٍ. أي شيء أكثر كثافة يعد زائدًا عن الحاجة.
- كاميرا ثابتة، موضوع نشط (شخص يعمل على مقعد، حركة المرور) - إطار واحد كل 0.5-2 ثانية.
- الكاميرا المتحركة (محمولة باليد، طائرة بدون طيار، كاميرا لوحة القيادة) - 2-5 إطارات في الثانية. تتغير الخلفية باستمرار، لذلك تظل الإطارات مميزة.
- إجراء سريع حيث تكون الوضعية نفسها هي التسمية (الرياضة، التعرف على الإيماءات) - 5-15 إطارًا في الثانية، ولكن فقط عبر المقاطع التي تحتوي على الإجراء.
طريقة حلها: استخرج مقطع اختبار مدته دقيقة واحدة على فترات قليلة وانظر إلى النتائج جنبًا إلى جنب. إذا كان بإمكانك تصفحها وتخبرك كل صورة بشيء جديد، فإن الفاصل الزمني صحيح. إذا بدا الأمر وكأنه كتاب صور متحركة، فقم بتوسيعه.
قم بإجراء العمليات الحسابية قبل الاستخراج. الإطارات = المدة × المعدل المستهدف. تسعون دقيقة من اللقطات بمعدل إطار واحد في الثانية هي 5400 صورة - وهو ما يعني أسبوعًا من التعليقات التوضيحية. عند إطار واحد لكل 5 ثواني يكون 1080، وهو ما يعادل يومين. يستحق هذا القرار خمس دقائق من التفكير.
في المستخرج، يأخذ وضع "الفاصل الزمني" الفجوة بالثواني مباشرة، ويظهر عدد الإطارات أثناء الكتابة - لذلك يكون الرقم أعلاه مرئيًا قبل الالتزام بدلاً من اكتشافه بعد ذلك.
إعدادات الاستخراج ذات أهمية في نهاية المطاف
التنسيق: PNG أو JPEG
الإجابة الصادقة هي أن الأمر عادةً لا يهم بقدر ما يتوقعه الناس، ولكن الحالات التي يهم فيها ذلك تستحق المعرفة.
استخدم PNG عندما تكون المهمة حساسة للتفاصيل الدقيقة أو المؤثرات المضغوطة - اكتشاف العيوب على الأسطح، أو العمل المجاور للتعرف الضوئي على الحروف، أو التصوير الطبي أو العلمي، أو أي شيء يمكنك من خلاله قياس قيم البكسل لاحقًا. استخدم JPEG بنسبة 90–95% للكشف عن الكائنات وتصنيفها بشكل عام، حيث تكون النماذج قوية إلى ضغط خفيف ويتراوح فرق التخزين من خمسة إلى عشرة أضعاف.
قاعدة تناسق واحدة بغض النظر عن الاختيار: لا تخلط. مجموعة البيانات التي تتكون من نصف PNG ونصف JPEG بجودة متفاوتة تعطي النموذج إشارة زائفة، والنماذج جيدة جدًا في العثور على إشارات زائفة.
الحل
استخرج بدقة المصدر وتصغير الحجم خط أنابيب المعالجة المسبقة الخاص بك، وليس في وقت الاستخراج. لا يمكنك استعادة التفاصيل التي تجاهلتها، وبعد عام من الآن قد تحتاج إلى اقتصاص 512 بكسل من اللقطات التي استخرجتها عند 224. التخزين أرخص من إعادة الاستخراج، خاصة إذا تم أرشفة اللقطات المصدر في مكان غير مناسب.
التسمية
أسماء تسلسلية مبطنة صفر، واسعة بما يكفي لأكبر مجموعة ستنتجها على الإطلاق. frame_00001.png، وليس frame_1.png. سيتم ترتيب الأدوات التي تقوم بفرز أسماء الملفات كنص frame_10 قبل frame_2، وإذا كان الترتيب الزمني مهمًا في أي مكان في المسار، فإن هذا الخطأ يكون دقيقًا ويصعب اكتشافه.
قم بتضمين المصدر في المسار بدلاً من اسم الملف، حتى يبقى المصدر:
dataset/
raw/
cam01_2026-03-14/
frame_00001.png
frame_00002.png
cam02_2026-03-14/
frame_00001.png
splits/
train.txt
val.txt
test.txt
الاحتفاظ بالتقسيم كملفات نصية تسرد المسارات - بدلاً من نسخ الصور فعليًا إلى دليل Train/ وval/ - يعني أنه يمكنك إعادة التقسيم دون إعادة النسخ، ويمكنك أن ترى بالضبط ما حدث وأين.
قاعدة التقسيم المهمة بالفعل
هذا هو الجزء الذي يستحق القراءة مرتين، لأنه هو الفرق بين معيار يمكنك الوثوق به وآخر لا يمكنك الوثوق به.
التقسيم حسب مصدر الفيديو، وليس حسب الإطار أبدًا.
إذا قمت بتبديل جميع الإطارات عشوائيًا وتقسيمها بشكل عشوائي بنسبة 80/20، فإن الإطارات من نفس الثانية من نفس الفيديو ستستقر على كلا الجانبين. مجموعة التحقق من الصحة هي تقريبًا نسخة من مجموعة التدريب، ودقة التحقق الخاصة بك تقيس الحفظ. تبلغ النماذج التي تم تدريبها بهذه الطريقة بشكل روتيني عن نسبة 97-99% ثم تفشل في الحصول على لقطات جديدة حقًا، وسيكون الفشل محيرًا حتى تنظر إلى كيفية إجراء التقسيم.
المنهج الصحيح: تعيين مقاطع فيديو كاملة للتدريب والتحقق والاختبار. إذا كان لديك مقطع فيديو طويل واحد فقط، فقم بتقسيمه حسب الوقت إلى كتل متجاورة - التدريب الأول بنسبة 70%، والتحقق التالي بنسبة 15%، والاختبار الأخير بنسبة 15% - وتجاهل بضع ثوانٍ على جانبي كل حد بحيث لا يوجد زوج شبه مكرر يمتد على جانبيه.
اذهب إلى أبعد من ذلك حيثما أمكن: احتفظ بالتسجيل بالكامل الجلسات، أو الكاميرات، أو مواقع مجموعة الاختبار. يقيس ذلك ما إذا كان النموذج يعمم عبر الشروط وليس عبر الطوابع الزمنية، وهو دائمًا تقريبًا السؤال الذي يهمك بالفعل.
العمل محليًا، وسبب أهميته هنا غالبًا
ملاحظة عملية خاصة بهذا المجال: غالبًا ما تكون مقاطع الفيديو البحثية والصناعية مواد لا يمكن تحميلها بشكل عرضي - تسجيلات المرضى، ولقطات من الأشخاص الذين وافقوا على دراسة وليس على خدمة سحابية، وخطوط تصنيع خاصة، وتجارب ما قبل النشر.
الاستخراج المستند إلى المتصفح بالملف على الجهاز؛ لا يتم نقل أي شيء، وهو ما يهم عندما يكون القيد عبارة عن موافقة أخلاقية أو اتفاقية معالجة بيانات وليس تفضيلًا. يمكنك تأكيد ذلك بدلاً من الاعتماد عليه — قم بتحميل الصفحة، وقطع الاتصال بالشبكة، واستخراجها. إذا كان لا يزال يعمل، فلن يحدث شيء في أي مكان. طريقة للتحقق من ذلك تستغرق حوالي دقيقة.
كن واضحًا بنفس القدر بشأن الحدود. يتم الاحتفاظ بالإطارات في الذاكرة حتى يتم التنزيل، لذا يلزم معالجة المصادر الطويلة في أجزاء ذات نطاق زمني. بالنسبة إلى خط أنابيب قابل للتكرار عبر مئات الملفات، يعد البرنامج النصي FFmpeg المحلي هو الأداة المناسبة — المتصفح مخصص للعمل الاستكشافي، وللاستخراج لمرة واحدة، وللحالات التي تريد فيها رؤية الإطارات أثناء تحديد الفاصل الزمني.
قائمة مرجعية قبل بدء التعليق التوضيحي
التعليق التوضيحي هو خطوة مكلفة. يؤدي التقاطها قبل أن تبدأ إلى توفير معظم الوقت:
- صفحة عبر 50 إطارًا عشوائيًا. هل تختلف بشكل واضح عن بعضها البعض؟ إذا لم يكن الأمر كذلك، فقم بتوسيع الفاصل الزمني وإعادة الاستخراج — الآن، وليس بعد وضع العلامات.
- تحقق من توازن الفصل. تمنحك عينات زمنية موحدة إطارات تتناسب مع مدة ظهور الأشياء على الشاشة، وليس بما يتناسب مع مدى اهتمامك بها. تحتاج الأحداث النادرة إلى استخراج مستهدف من نطاقاتها الزمنية المحددة.
- إزالة الإطارات الميتة. التلاشي، والإطارات السوداء عند القطع، وتوهج العدسة، ويد شخص ما فوق العدسة. إنها ضوضاء وتكلف وقتًا للتعليق التوضيحي.
- تأكد من أن التقسيم يتم عن طريق الفيديو أو عن طريق كتلة زمنية، وليس من خلال إطار عشوائي.
- سجل المصدر. الملف المصدر، والفاصل الزمني، وتاريخ الاستخراج، والتنسيق والجودة، جنبًا إلى جنب مع مجموعة البيانات. في غضون ستة أشهر، ستحتاج إلى إعادة إنتاجه أو تمديده، كما أن إعادة بناء "ما الفاصل الزمني الذي استخدمته" من الصور أمر غير سار.
لا شيء من هذا صعب. يتم تحديده قبل الاستخراج فقط بدلاً من اكتشافه بعد التعليق التوضيحي، وهذا هو الفرق كله.