Scene Flow
تدفق المشهد هو حقل الحركة ثلاثي الأبعاد للمشهد، أي متجه الإزاحة لكل نقطة ظاهرة بين الإطارات، ويُقدّر من بيانات الاستريو أو RGB-D أو LiDAR.
تدفق المشهد هو حقل الحركة ثلاثي الأبعاد للمشهد: متجه ثلاثي الأبعاد لكل نقطة سطح مرئية يصف انتقالها من موضعها في إطار إلى موضعها في الإطار التالي. وقد صاغ سوندار فيدولا وسايمون بيكر وزملاؤهما في جامعة كارنيغي ميلون المصطلح في ورقتهم لعام 1999 تدفق المشهد ثلاثي الأبعاد، وعرّفوه بأنه النظير ثلاثي الأبعاد لـالتدفق البصري. ويجمع تدفق المشهد الهندسة والحركة، لذا يخبر نظام الرؤية الحاسوبية بموقع كل نقطة وسرعة حركتها بالأمتار، بما في ذلك حركتها نحو الكاميرا أو بعيدًا عنها. وهذا يجعله إشارة أساسية في المركبات ذاتية القيادة والروبوتات، حيث يجب التعرّف إلى سيارة تنعطف للخروج أو شخص يخطو إلى المسار من خلال حركته.
تدفق المشهد والتدفق البصري#
التدفق البصري هو إسقاط تدفق المشهد على مستوى الصورة: فهو يسجل مقدار تحرك كل بكسل إلى الجانب أو إلى الأعلى والأسفل، ولا يقدم أي معلومات عن الحركة على امتداد خط رؤية الكاميرا. لذلك قد يتحرك جسمان لهما التدفق البصري نفسه بطرق مختلفة جدًا. ويستعيد تدفق المشهد المكوّن المفقود باستخدام تقدير العمق في كلا الزمنين، بإسقاط كل بكسل عكسيًا على امتداد شعاع الرؤية إلى العمق المقاس:
import numpy as np
K_inv = np.linalg.inv(np.array([[500.0, 0, 320], [0, 500.0, 240], [0, 0, 1]])) # inverse camera intrinsics
# Two objects with identical optical flow: each moves from pixel (400, 240) to (410, 240) in 0.1 s
for name, depth_before, depth_after in [("cyclist crossing", 8.0, 8.0), ("car approaching", 8.0, 6.0)]:
# Back-project each pixel along its viewing ray to the measured depth
before = depth_before * K_inv @ np.array([400, 240, 1.0])
after = depth_after * K_inv @ np.array([410, 240, 1.0])
# Scene flow is the 3D displacement of the same surface point
flow = after - before
print(f"{name}: scene flow {flow.round(2)} m, speed {np.linalg.norm(flow) / 0.1:.1f} m/s")ينزاح الجسمان 10 بكسلات إلى اليمين، لكن راكب الدراجة يتحرك جانبيًا مسافة 0.16 m بسرعة 1.6 m/s، بينما تقترب السيارة مسافة 2 m خلال عُشر ثانية بسرعة 20.1 m/s. وعند مسافة 6 m واقترابها بسرعة 20 m/s، تصل السيارة إلى الكاميرا في غضون 0.3 ثانية.
يختلف تدفق المشهد أيضًا عن تتبّع الكائنات، الذي يتابع هويات الكائنات باستخدام مربعات الإحاطة، وعن تتبّع النقاط، الذي يتابع نقاطًا ثنائية الأبعاد محددة عبر إطارات كثيرة. ويعمل تقدير السرعة في Ultralytics YOLO على مستوى التتبّع ثنائي الأبعاد: إذ يتابع كل مربع متتبَّع ويحوّل إزاحته بالبكسل إلى km/h باستخدام مقياس واحد للأمتار لكل بكسل في كامل المشهد، وهو ما يناسب الحالات التي تنظر فيها الكاميرا إلى الطريق من الأعلى وتسير فيها حركة المرور بمحاذاة الصورة.
كيفية تقدير تدفق المشهد#
تحدد المدخلات الطريقة المستخدمة. فتعطي الكاميرا المجسمة اختلاف المنظر في الزمنين والتدفق البصري بين الإطارات، وهو إعداد معيار KITTI لتدفق المشهد الذي أصدره موريتس مينزه وأندرياس غايغر عام 2015، ويضم 200 مشهد طريق للتدريب و200 للاختبار. وتعطي كاميرات RGB-D وأجهزة LiDAR سحابتي نقاط، غالبًا ما تُدمجان مع صور الكاميرا عبر دمج المستشعرات، فيما تتعلم شبكات مثل FlowNet3D مطابقة النقاط بينهما مباشرةً. أما الكاميرا الواحدة فتعتمد على العمق الأحادي المتعلّم والتدفق البصري لكل زوج من الإطارات.
عندما تتحرك الكاميرا، تبدو كل نقطة ثابتة وكأنها تتحرك أيضًا، لذا يقدّر النظام الكامل كذلك الحركة الذاتية، عادةً بالاستعانة بـتحديد الموقع والرسم البصري المتزامنان أو قياس المسافات، ويتعامل مع النقاط التي لا يتوافق تدفقها مع هذه الحركة باعتبارها متحركة بصورة مستقلة. وتتكون مشاهد القيادة في معظمها من أجسام صلبة، لذا تجمع أساليب مثل تدفق المشهد للأجسام لدى مينزه وغايغر وRAFT-3D البكسلات في عدد قليل من الأجسام الصلبة المتحركة، ما يثبّت التقديرات على هياكل السيارات عديمة الملمس. وتُعد حالات الاحتجاب الأصعب، إذ لا يمكن مطابقة النقاط التي تظهر أو تختفي بين الإطارات لقياسها.
تحتاج نماذج التعلّم العميق إلى حقيقة أرضية كثيفة لا تستطيع المستشعرات الحقيقية التقاطها، لذا يعتمد التدريب بدرجة كبيرة على البيانات الاصطناعية. وترسم مجموعات بيانات تدفق المشهد في فرايبورغ، بما فيها FlyingThings3D، عشرات الآلاف من الإطارات المجسمة مع قيم دقيقة لاختلاف المنظر والتدفق البصري وتغيّر اختلاف المنظر. وقد عُمّم FlowNet3D، الذي دُرّب على FlyingThings3D فقط، على عمليات مسح LiDAR حقيقية من KITTI.
تطبيقات عملية#
- الروبوتات المتنقلة: تستخدم الروبوتات التي تشارك المستودعات والأرصفة مع الناس الحركة ثلاثية الأبعاد للعوائق القريبة لتوقع مواقعها بعد ثانية وإعادة تخطيط مسارها لتفاديها.
- إعادة بناء المشهد الديناميكي: تمثّل عملية التنقيط الغاوسي رباعية الأبعاد وحقول الإشعاع العصبية الديناميكية مشهدًا متحركًا عبر تعلّم كيفية تحرك كل نقطة أو توزيع غاوسي بمرور الوقت؛ وهذا تدفق مشهد متعلّم يتيح إعادة تشغيل فيديو مسجل من وجهات نظر جديدة.
- القيادة الذاتية: يفصل تدفق المشهد المستند إلى LiDAR المركبات المتحركة والمشاة عن العالم الثابت بين عمليات المسح المتتالية. وأضافت مجموعة بيانات Waymo Open تسميات تدفق المشهد عام 2021، مع إطارات مشروحة أكثر بنحو 1,000 مرة من مجموعات بيانات تدفق المشهد الواقعية السابقة.










