يحتوي هذا المستودع على نماذج مدربة تم الإبلاغ عنها في الورقة "Quo Vadis ، التعرف على الإجراء؟ نموذج جديد ومجموعة بيانات حركية" لجواو كارريرا وأندرو زيسرمان. تم نشر الورقة على Arxiv في مايو 2017 ، وسيتم نشرها كورقة مؤتمر CVPR 2017.
قدم "Quo Vadis" بنية جديدة لتصنيف الفيديو ، أو القنوات ثلاثية الأبعاد المضخمة أو I3D. هنا ننشر نماذج Inception-V1 I3D المدربة على تقسيم تدريب مجموعة بيانات الحركية.
في ورقتنا ، أبلغنا عن نتائج حديثة على مجموعات بيانات UCF101 و HMDB51 من صياغة هذه النماذج. تم وضع نماذج I3D التي تم تدريبها مسبقًا على الحركية في المركز الأول في تحدي CVPR 2017 Charades.
يتضمن المستودع أيضًا نقطة تفتيش تدرب مسبقًا باستخدام مدخلات RGB وتم تدريبها من نقطة الصفر على حركية 600.
جديد : تم عرض المعالجة المسبقة للفيديو التي استخدمناها الآن بواسطة Google. لإعدادها ، تحقق من هذه الإرشادات في ريبو MediaPipe من Google.
إخلاء المسئولية: هذا ليس منتج Google الرسمي.
أولاً اتبع التعليمات لتثبيت Sonnet.
ثم ، استنساخ هذا المستودع باستخدام
$ git clone https://github.com/deepmind/kinetics-i3d
قم بتشغيل رمز المثال باستخدام
$ python evaluate_sample.py
باستخدام الأعلام الافتراضية ، يقوم هذا بإنشاء طراز I3D ثنائي البث ، ويقوم بتحميل نقاط تفتيش I3D المدربة مسبقًا في جلسة TensorFlow ، ثم يمرر مقطع فيديو من خلال النموذج. تمت معالجة الفيديو على سبيل المثال ، مع توفير صفائف RGB و Flow Numpy (انظر المزيد من التفاصيل أدناه).
يقوم البرنامج النصي بإخراج قاعدة موتر Logits ، وكذلك أفضل 20 فئة حركية تنبأ بها النموذج بقيم احتمالية ووجودها. باستخدام الأعلام الافتراضية ، يجب أن يشبه الإخراج ما يلي إلى الاختلافات في الدقة العددية:
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
يمكن تشغيل ملف الاختبار باستخدام
$ python i3d_test.py
يتحقق هذا من أنه يمكن بناء النموذج بشكل صحيح وينتج أشكالًا صحيحة.
تم تدريب النموذج الافتراضي مسبقًا على ImageNet ثم الحركية ؛ تسمح أعلام أخرى بتحميل نموذج تم تدريبه مسبقًا فقط على الحركية واختيار RGB أو تدفق التدفق فقط. يوضح البرنامج النصي multi_evaluate.sh
كيفية تشغيل جميع هذه المجموعات ، مما يولد عينة إخراج في out/
Directory.
تحتوي data/checkpoints
على نقاط التفتيش الأربع التي تم تدريبها. تتم تهيئة تلك التي تم تدريبها على الحركية باستخدام عمليات التهيئة الافتراضية للون / TensorFlow ، في حين يتم تهيئة تلك التي تم تدريبها مسبقًا على ImageNet عن طريق bootstrapplics من نموذج Inception-V1 ثنائي الأبعاد إلى 3D ، كما هو موضح في الورقة. الأهم من ذلك ، يتم تدريب تدفقات RGB وتدفق على حدة ، ولكل منها فقدان تصنيف Softmax. أثناء وقت الاختبار ، نجمع بين الدفقين عن طريق إضافة سجلات مع توصيل متساو ، كما هو موضح في رمز evalute_sample.py
.
نحن نتدرب باستخدام SGD المتزامن باستخدام tf.train.SyncReplicasOptimizer
. لكل من تدفقات RGB و Flow ، نتجمع عبر 64 نسخة متماثلة مع 4 نسخ متماثلة احتياطية. أثناء التدريب ، نستخدم 0.5 تسرب ونطبق الدُفعات ، بحجم صغير قدره 6. المحسن المستخدم هو SGD بقيمة زخم قدرها 0.9 ، ونستخدم 1E-7 انحلال الوزن. يتم تدريب نماذج RGB و Flow على خطوة 115 ألف و 155 ألف على التوالي ، مع جداول معدل التعلم التالية.
RGB:
تدفق:
وذلك لأن نماذج التدفق كانت مصممة لتتطلب المزيد من التدريب بعد تشغيل أولي من خطوات 115 ألف.
يتم تدريب النماذج باستخدام تقسيم التدريب من الحركية. على مجموعة اختبار الحركية ، نحصل على دقة أعلى 1 / أعلى 5 التالية:
نموذج | ImageNet + حركية | حركية |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
Flow-I3d | 63.4 / 84.9 | 61.5 / 83.4 |
اثنين من ثنائي I3D | 74.2 / 91.3 | 71.6 / 90.0 |
تضمن إصدار مجموعة بيانات DeepMind Kinetics فقط معرفات YouTube وأوقات البدء والنهاية للمقاطع. بالنسبة لبيانات العينة هنا ، نستخدم مقطع فيديو من مجموعة بيانات UCF101 ، والتي يتم توفير جميع مقاطع الفيديو بالكامل. الفيديو المستخدم هو v_CricketShot_g04_c01.mp4
الذي يمكن تنزيله من موقع UCF101.
تستخدم المعالجة المسبقة لدينا المكتبات الداخلية ، التي تم الآن التحقق من المصادر المفتوحة من Google MediaPipe Repo. يفعل ما يلي: لكلا الجداول ، نأخذ إطارات في 25 إطارًا في الثانية. بالنسبة للحركية ، فإننا نقص على مقاطع الفيديو في أوقات البدء والنهاية المقدمة.
بالنسبة إلى RGB ، يتم تغيير حجم مقاطع الفيديو للحفاظ على نسبة العرض إلى الارتفاع بحيث يكون أصغر البعد 256 بكسل ، مع استيفاء ثنائية الخط. ثم يتم إعادة قياس قيم البكسل بين -1 و 1. أثناء التدريب ، نختار بشكل عشوائي محصول صورة 224x224 ، أثناء الاختبار ، نختار محصول الصور 224x224 من الفيديو. يحتوي ملف .npy
المقدم وبالتالي على شكل (1, num_frames, 224, 224, 3)
لـ RGB ، المقابل لحجم دفعة 1.
لدفق التدفق ، بعد أخذ عينات من مقاطع الفيديو عند 25 إطارًا في الثانية ، نقوم بتحويل مقاطع الفيديو إلى رمادي. نحن نطبق خوارزمية التدفق البصري TV-L1 ، على غرار هذا الرمز من OpenCV. يتم اقتطاع قيم البكسل إلى النطاق [-20 ، 20] ، ثم يتم إعادة قياسها بين -1 و 1. نستخدم فقط أول بعدين للإخراج ، ونطبق نفس المحاصيل على RGB. يحتوي ملف .npy
المقدم وبالتالي على شكل (1, num_frames, 224, 224, 2)
للتدفق ، المقابل لحجم الدُفعة 1.
فيما يلي صور GIF تُظهر ملفات .npy
المتوفرة. من بيانات RGB ، أضفنا 1 ثم نقوم على 2 إلى تنقذ بين 0 و 1. بالنسبة لبيانات التدفق ، أضفنا قناة ثالثة من جميع 0 ، ثم أضفنا 0.5 إلى المصفوفة بأكملها ، بحيث تكون النتائج أيضًا بين 0 و 1.
للحصول على تفاصيل إضافية حول المعالجة المسبقة ، تحقق من ذلك ، والرجوع إلى الورقة أو اتصل بالمؤلفين.
ساعد برايان تشانغ ، وجواو كارريرا ، وفيوريكا باتراوشيان ، ودييغو دي لاس كاساس ، كلوي هيلير ، وأندرو زيسرمان في إعداد هذا الإصدار الأولي. نود أيضًا أن نشكر الفرق التي تقف وراء مجموعة بيانات Kinetics وورقة Inception الأصلية التي تستند إليها هذه الهندسة المعمارية والرمز.
للمساهمة في هذا المستودع ، ستحتاج أولاً إلى توقيع اتفاقية ترخيص Google (CLA) ، المقدمة في ملف المساهمة. سنكون قادرين بعد ذلك على قبول أي طلبات سحب ، على الرغم من أنها لا تهدف حاليًا إلى التوسع إلى نماذج أخرى مدربة.
بالنسبة لأي أسئلة ، يمكنك الاتصال بمؤلفي ورقة "Quo Vadis" ، والتي يتم سرد رسائل البريد الإلكتروني في الورقة.