كيف تعلمنا كيفية تقسيم الفيديو إلى مشاهد باستخدام الرياضيات الذكية

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

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

صورة

مما يتكون الفيديو؟


مقطع الفيديو له هيكل هرمي. يتعلق الأمر بالفيديو الرقمي ، لذا فإن المستوى الأدنى هو البكسل ، والنقاط الملونة التي تشكل صورة ثابتة.

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

يتم تجميع اللقطات حسب المعنى ، ويطلق عليها المشاهد.يتميز المشهد بوحدة المكان والزمان والشخصيات.

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

يصعب الحصول على حدود اللقطات والمشاهد. قد تساعد المصادر من برامج التثبيت ، لكنها غير متاحة لنا.

لحسن الحظ ، يمكن للخوارزميات أن تفعل ذلك ، وإن لم يكن بشكل دقيق. سأخبرك عن خوارزمية التقسيم إلى مشاهد.

لماذا نحتاج هذا؟


نقوم بحل مشكلة البحث داخل الفيديو ونريد اختبار كل مشهد تلقائيًا لكل فيلم على ivi. يُعد التقسيم إلى مشاهد جزءًا مهمًا من خط الأنابيب هذا.

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

نظام التوصية مفيد أيضًا للانقسام في المشاهد. ومنهم ، يتم الحصول على علامات تصف الأفلام التي يحبها المستخدمون في الهيكل.

ما هي طرق حل المشكلة؟


يتم حل المشكلة من جانبين:

  1. يأخذون الفيديو كله ويبحثون عن حدود المشاهد.
  2. أولاً ، يقسمون الفيديو إلى لقطات ، ثم يجمعونها في مشاهد.

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

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

صورة

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

في عام 2016 ، اقترح دانييل روثمان وزملاؤه IBM خوارزمية تأخذ في الاعتبار بنية الوقت وصياغة الجمع بين اللقطات في المشاهد كمهمة تجميع متسلسل مثالية:

  • نظرا لتسلسل Nطلقات
  • بحاجة لتقسيمها إلى Kشرائح بحيث يكون هذا الفصل هو الأمثل.


ما هو الفصل الأمثل؟


حتى الآن ، نفترض ذلك Kبالنظر إلى أن عدد المشاهد معروف. فقط حدودهم غير معروفة.

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

الخطوات التحضيرية هي كما يلي:

  • نقوم بتحويل اللقطات إلى متجهات (رسم بياني أو مخرجات للطبقة قبل الأخيرة من الشبكة العصبية)
  • أوجد المسافات الزوجية بين المتجهات (الإقليدية ، جيب التمام ، أو غيرها)
  • نحصل على مصفوفة مربعة Dحيث أن كل عنصر هو المسافة بين اللقطات iو j.

صورة

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

يتم تتبع المربعات الداكنة على طول القطر - وهي المناطق التي تتشابه فيها اللقطات المجاورة مع بعضها البعض ، وبالتالي تكون المسافة أقل.

إذا اخترنا التضمينات الجيدة التي تعكس دلالات اللقطات واخترت وظيفة مسافة جيدة ، فإن هذه المربعات هي المشاهد. ابحث عن حدود المربعات - سنجد حدود المشاهد.

بالنظر إلى المصفوفة ، صاغ الزملاء الإسرائيليون ثلاثة معايير للتقسيم الأمثل:

(1)Hadd(t¯)=[]


(2)Havg(t¯)=[]


(3)Hnrm(t¯)=[][]


t¯هو ناقل الحدود المشهد.

أي من معايير التقسيم الأمثل للاختيار؟


وظيفة خسارة جيدة لمهمة التجميع التسلسلي الأمثل لها خاصيتان:

  1. إذا كان الفيلم يتكون من مشهد واحد ، فعندما نحاول تقسيمه إلى قسمين ، ستكون قيمة الوظيفة هي نفسها دائمًا.
  2. إذا تم تقسيمها بشكل صحيح إلى مشاهد ، فستكون القيمة أقل مما لو لم تكن صحيحة.

اتضح Haddو Havgلا تتأقلم مع هذه المتطلبات ولكن Hnrmالتأقلم. لتوضيح هذا ، سنجري تجربتين.

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

صورة

Haddيقول أنه في منتصف الفيديو يوجد تغيير في المشاهد ، وهذا غير صحيح في الواقع. فيHavgقفزات غير طبيعية إذا تم وضع القسم في بداية الفيديو أو نهايته. فقطHnrmيتصرف على النحو المطلوب.

في التجربة الثانية ، سنصنع المصفوفة نفسها مع ضوضاء موحدة ، ولكننا نطرح مربعين منها ، كما لو كان لدينا مشهدان مختلفان قليلاً عن بعضهما البعض.

صورة

للكشف عن هذا اللصق ، يجب أن تأخذ الوظيفة قيمة دنيا عندt=70. لكن الحد الأدنىHadd لا يزال أقرب إلى منتصف الجزء بينما Havg- إلى البداية. فيHnrm الحد الأدنى الواضح مرئي في t=70.

تظهر الاختبارات أيضًا أنه يتم تحقيق التقسيم الأكثر دقة باستخدامHnrm. يبدو أنك بحاجة إلى تناوله ، وسيكون كل شيء على ما يرام. ولكن دعونا أولاً ننظر إلى مدى تعقيد خوارزمية التحسين.

اقترح دانييل روثمان ومجموعته البحث عن التقسيم الأمثل باستخدام البرمجة الديناميكية . وتنقسم المهمة إلى مهام فرعية بطريقة تعاودية ويتم حلها بدورها. توفر هذه الطريقة أفضل مستوى عالمي ، ولكن للعثور عليها ، تحتاج إلى التكرار على كل منها[2..K]جميع تركيبات الأقسام من اللقطات 0 إلى Nth واختيار الأفضل. هناK - عدد المشاهد و N- عدد اللقطات.

لا التحسينات والتسريعHadd ستعمل في الوقت المناسب O(NK). فيHnrmهناك معلمة أخرى للتعداد - منطقة القسم ، وفي كل خطوة ، من الضروري التحقق من جميع قيمه. وفقا لذلك ، يزيد الوقت إلىO(NKN2).

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

كيف تقدر عدد المشاهد؟


اقترحت مجموعة من شركة IBM أنه نظرًا لأن العديد من صفوف المصفوفة تعتمد خطيًا ، فإن عدد العناقيد المربعة على طول القطر سيكون تقريبًا مساوٍ لرتبة المصفوفة.

للحصول عليها وفي نفس الوقت تصفية الضوضاء ، تحتاج إلى تحليل مفرد للمصفوفةD.

صورة

من بين القيم المفردة ، مرتبة ترتيبًا تنازليًا ، نجد نقطة المرفق - النقطة التي يتباطأ فيها انخفاض القيم بشكل حاد. مؤشر نقطة المرفق هو العدد التقريبي للمشاهد في الفيلم.

بالنسبة للتقريب الأول ، هذا يكفي ، ولكن يمكنك استكمال الخوارزمية بالاستدلال لأنواع مختلفة من السينما. في أفلام الحركة ، هناك المزيد من المشاهد ، وفي المنزل - أقل.

الاختبارات


أردنا أن نفهم شيئين:

  1. هل فرق السرعة مثير للغاية؟
  2. ما مقدار الدقة التي يعانيها عند استخدام خوارزمية أسرع؟

تم تقسيم الاختبارات إلى مجموعتين: البيانات الاصطناعية والحقيقية. في الاختبارات التركيبية ، تمت مقارنة جودة وسرعة الخوارزميتين ، وفي الاختبارات الحقيقية ، قاما بقياس جودة أسرع خوارزمية. تم إجراء اختبارات السرعة على MacBook Pro 2017 ، 2.3 جيجاهرتز Intel Core i5 ، 16 جيجابايت 2133 ميجاهرتز LPDDR3.

اختبارات الجودة الاصطناعية


لقد أنشأنا 999 مصفوفة لمسافات زوجية تتراوح في الحجم من 12 إلى 122 لقطة ، وقسمناها عشوائيًا إلى مشاهد 2-10 وأضفنا ضوضاء عادية من الأعلى.

لكل مصفوفة ، تم العثور على الأقسام المثلى من حيثHadd و Hnrm، ومن ثم حساب مقاييس الدقة والاستدعاء و F1 و IoU.

نعتبر الدقة والاستدعاء للفترة الزمنية باستخدام الصيغ التالية:

(4)Precisioninterval=


(5)Recallinterval=


نعتبر F1 كالمعتاد ، واستبدال الدقة الفاصلة واستدعاء:

(6)F1interval=2PrecisionintervalRecallintervalPrecisioninterval+Recallinterval


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

فيما يلي النتائج:

image

تحسين الوظيفةHnrm فاز بجميع المقاييس ، كما هو الحال في اختبارات مؤلفي الخوارزمية.

اختبارات السرعة الاصطناعية


لاختبار السرعة ، أجرينا اختبارات اصطناعية أخرى. الأول هو كيف يعتمد وقت تشغيل الخوارزمية على عدد اللقطاتNمع عدد ثابت من المشاهد:

image

أكد الاختبار تقييمًا نظريًاO(NKN2): وقت التحسين Hnrmينمو كثير الحدود مع النمو Nمقارنة بالوقت الخطي O(NK)في Hadd.

إذا قمت بإصلاح عدد اللقطاتN وزيادة عدد المشاهد تدريجيًا K، نحصل على صورة أكثر إثارة للاهتمام. في البداية ، من المتوقع أن ينمو الوقت ، ولكن بعد ذلك يبدأ في الهبوط. الحقيقة هي أن عدد قيم المقام المحتملة (الصيغة3) أننا بحاجة إلى التحقق بما يتناسب مع عدد الطرق التي يمكننا كسرها Nشرائح يوم K. يتم حسابها باستخدام مجموعةN بواسطة K:

(7)CNK=N!K!(NK)!


مع النمو Kينمو عدد المجموعات أولاً ، ثم ينخفض ​​مع اقترابك N.

image

يبدو هذا رائعًا ، ولكن عدد المشاهد نادرًا ما يكون مساوياً لعدد اللقطات ، وسيستمر دائمًا في الحصول على هذه القيمة التي توجد بها العديد من المجموعات. في "آفينجرز" المذكورة 2700 طلقة و 105 مشاهد. عدد المجموعات:

C2700105=2700!105!(2700105)!=2.3410751551031162e+191


للتأكد من أن كل شيء تم فهمه بشكل صحيح وليس متشابكًا في تدوين المقالات الأصلية ، كتبنا رسالة إلى دانيال روثمان. وأكد ذلكHnrm بطيئة جدًا في التحسين وغير مناسبة لمقاطع الفيديو التي تزيد مدتها عن 10 دقائق Haddفي الممارسة يعطي نتائج مقبولة.

اختبارات البيانات الحقيقية


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

قمنا باختبار 20 فيلماً من مختلف الأنواع والأعوام للاختبار. تم الترميز على خمس مراحل:

  1. :
    • , .
  2. , .
  3. . « ?»
  4. CV. — , .
  5. , « ».

هذه هي الطريقة التي تبدو بها الشاشة الخربشة وشاشة المفتش:

image

وهذه هي الطريقة التي تنقسم فيها أول 300 لقطة من فيلم "Avengers: Infinity War" إلى مشاهد. على اليسار توجد المشاهد الحقيقية ، وعلى اليمين المشاهد التي تنبأت بها الخوارزمية:

image

للحصول على مصفوفة المسافة الزوجية ، قمنا بما يلي:


لكل فيديو من مجموعة البيانات ، أنشأنا مصفوفات لمسافات زوجية ، وكما هو الحال بالنسبة للبيانات الاصطناعية ، قمنا بحساب أربعة مقاييس. فيما يلي الأرقام التي خرجت:

  • الدقة : 0.4861919030708739
  • أذكر : 0.8225937459424839
  • F1 : 0.513676858711775
  • IoU : 0.37560909807842874

وماذا في ذلك؟


لقد حصلنا على خط أساسي لا يعمل بشكل مثالي ، ولكن الآن يمكنك البناء عليه بينما نبحث عن طرق أكثر دقة.

بعض الخطط الإضافية:

  • جرب بنى CNN الأخرى لاستخراج الميزات.
  • جرب مقاييس المسافة الأخرى بين اللقطات.
  • جرب طرق التحسين الأخرى Hnrm، على سبيل المثال ، الخوارزميات الجينية.
  • في محاولة لتقليل انهيار الفيلم كله إلى أجزاء منفصلة التي Hnrmيحقق في وقت معقول ، ومقارنة ما سيكون خسارة في الجودة.

تم نشر كود كل من الطرق والتجارب على البيانات الاصطناعية على Github . يمكنك لمس ومحاولة تسريع نفسك. طلبات الإعجاب والسحب مرحب بها.

وداعا للجميع ، نراكم في المقالات القادمة!

All Articles