أغلب المتتبّعات تتوقّف عند “أين”. أمّا هذا فيُواصل.
التتبّع في العالم الحقيقي ليس متّصلًا أبدًا. فمركبة تمرّ خلف مبنى، وشخص يخرج من مدى الكاميرا. ومعظم الأنظمة تعدّ ذلك نهاية المسار. أما TRACE فلا: فهو يحمل المسار بوصفه احتمالًا بأن الشيء ما زال هناك لا بوصفه نعم أو لا، فيخفت المسار عبر الفجوة بدل أن ينتهي عندها، ويمكن التقاطه ثانية على الجانب الآخر.
لا شيء في النواة يعرف ما الذي يتتبّعه. فالكاميرات والسفن والمنصّات النقّالة والحيوانات واللاعبون هم المشكلة نفسها بملمح مختلف. وأرقام MOT17 وMOT20 أدناه هي دقّة تتبّع الأجسام المتعدّدة (MOTA)، الرقم الوحيد الذي يستعمله المجال لمقدار جودة أداء المتتبّع.
ما هذا، في دقيقة واحدة
المستشعرات تُفوِّت أشياء. فالكاميرا لا تلتقط كل من يمرّ أمامها، والسفينة يمكنها إطفاء مرسِلها المجيب، والممرّ قد لا تكون فيه كاميرا أصلًا. ومعظم المتتبّعات تقرأ “لم يُرَ” على أنها “غير موجود”، فحين يعاود الشيء الظهور يُسجَّل شيئًا جديدًا. أين كان، ومن قابل، وهل هذا معتاد منه — لا يمكن الإجابة عن أيٍّ من ذلك بعد الآن.
يحتفظ TRACE مع كل مسار برقم يقول كم يُرجَّح أن الشيء ما زال هناك. والمشاهدة الفائتة تخفض ذلك الرقم وتوسّع المنطقة التي قد يكون فيها؛ ولا تحذف شيئًا. ويمضي المسار على التنبّؤ، ويكبر عدم يقينه بصدق، وحين يظهر شيء ثانية يقرّر المحرّك أهو نفسه أم لا. والعرضان هنا يتيحان لك دفع ذلك حتى يخطئ القرار.
كل من يتابع أشياء عبر أكثر من مستشعر وبينها فجوات: موقع لا تغطّي كاميراته كل ممرّ، أو مراقبة بحرية يمكن فيها لسفينة أن تطفئ مرسِلها المجيب في منتصف الرحلة. والنواة لا تعرف ما الذي تتتبّعه — فالكاميرات والسفن والمنصّات النقّالة والحيوانات واللاعبون هم المشكلة نفسها بملمح مختلف. تأخذ الاكتشافات مُدخَلًا؛ أما إنتاجها فعمل غيرها.
مسارٌ يُحذف عند أول إطار فائت لم يكن مسارًا قطّ
المستشعرات تفوتها أشياء. للكاميرا احتمال اكتشاف، لا ضمان؛ والسفينة تستطيع إطفاء مرسِلها المجيب؛ والممرّ قد لا تغطّيه كاميرا أصلًا. ولحظة تهبط التغطية، يفقد الهويةَ كلُّ متتبّع يساوي بين “غير مرئي” و“غير موجود”، وحين يعاود الكيان الظهور يحصل على هوية جديدة. وكل سؤال لاحق — أين كان هذا، ومن قابل، وهل هذا معتاد منه — صار بلا جواب.
يفصل TRACE بين أمرين يخلط بينهما أغلب المتتبّعات. كل مسار يحمل r، وهو احتمال وجوده أصلًا، مفصولًا عن موضعه. المسح الفائت يخفض r ويوسّع تقدير الموقع؛ ولا يحذف شيئًا. يمضي المسار بالتنبّؤ وحده، وينمو عدم اليقين فيه نموًّا صادقًا وهو يمضي.
هذا ما يعرضه عليك العرضان أدناه. الدائرة المتقطّعة هي المحرّك وهو يقول إنه في مكانٍ ما هنا، ويقيني يقلّ مع كل ثانية — وهو كلام مفيد أن يُقال لك، وهو ما لا يستطيع مسارٌ محذوف أن يقوله.
Bernoulli، لا قيمة منطقية
متتبّع بمزيج بواسون متعدّد برنولي (PMBM) فوق مرشّح بـ320 جسيمًا. والوجود احتمال يضمحلّ عبر الإخفاقات ويتعافى مع الدليل، فيكلّف الاحتجاب ثقةً لا هويّة.
رأي ثانٍ في الدليل
إلى جانب الاحتمال يعمل وجودٌ إمكانيّ يتتبّع جودة الدليل لا كمّيته. وحين يتباعد الاثنان، تكون اكتشافات ضعيفة كثيرة قد غُسِلت لتصير يقينًا زائفًا.
منظومة كاميرات، وفيها ممرّات لا يراقبها أحد
المتاهة بديلٌ رخيص عن منظومة كاميرات حقيقية، وهي تمنحك كل خاصّية تجعل التتبّع متعدّد الكاميرات صعبًا: الجدران تفرض مسارات غير خطّية، وكل لوحة ملوّنة كاميرا واحدة فيكون عبور الحدّ تسليمًا حقيقيًّا، واللوحات المخطّطة مُعطَّلة — ممرّات عمياء يضطرّ فيها المحرّك إلى الحفاظ على الهوية دون أي شيء البتّة، ثم التقاطها من جديد على الطرف الآخر.
trace::Engine — WebAssembly
جارٍ التحميل…التقييم مقابل الحقيقة
هذا المسح
الأحداث المُثارة —
اللقاء المتوقَّع التالي —
مما أعطته الكاميرات هو المقام الصادق: لا يستطيع أي متتبّع أن يبلّغ عن كيان لم يكتشفه أي مستشعر، فمعدّل الاكتشاف الخام يخلط إخفاقات المتتبّع بإخفاقات المنظومة. وما فوق 100% يعني أن المحرّك أبقى كيانات عبر مسحات لم يرَها فيها شيء. أطفئ الكاميرات وراقبه يصعد.
trace::Engine من libtrace_core.a، وهي المكتبة نفسها التي ترتبط بها الأدوات الأصيلة — —. يُحسب التشغيل كاملًا دفعةً واحدة ثم يُعاد عرضه، فالحركة ليست سرعة المحرّك؛ بل زمن المسح الوسيط المجاور لها هو سرعته.
خمس مراحل، وتقرير واحد
التتبّع والربط
متتبّع PMBM بوجود Bernoulli فوق مرشّح Ornstein–Uhlenbeck مختلط بـ320 جسيمًا — إذ تتبع السرعة عملية OU، ووضع الحركة فيها (سيرًا على الأقدام، أو في مركبة، أو ساكنًا) هو نفسه سلسلة Markov، وهذا هو الجزء “المختلط”. وأخذ عيّنات Gibbs للإسناد واحدًا لواحد عبر 14 جولة، ثم دمج التكرارات. ويجري الربط لكل مستشعر على حدة، لأن الحصرية حقيقة تخصّ المستشعر لا العالم — فإبلاغ كاميرتين متداخلتين عن شخص واحد تعزيزٌ للدليل، لا شخصان. وفرضها عالميًّا كلّف 2.08 مسار شبحي لكل مسح؛ ولكل مستشعر هي 0.08.
إعادة التعرّف بالروتين
يُستعاد المسار الخامل عبر نمط حياته — خليط غاوسي لكل كيان على الساعة والإحداثيين x وy. وواصفات المظهر مدعومة، وهي عمدًا مُعطَّلة على المعايير المرجعية العامة، لأن واصفًا مثاليًّا تامًّا هناك لا يحرّك الدرجة البتّة: 88% من العقوبة اكتشافات فائتة، والمظهر لا يمسّها.
ثلاثة متنبّئات تقارب، مركّبة
الاعتراض الهندسي دقيق لكيانين يمشيان أحدهما نحو الآخر، وعديم الفائدة إن ناور أحدهما. واستقراء معدّل التقارب يتعامل مع مسار منحنٍ. والتنبّؤ المتقاطع بنمط الحياة هو الوحيد الذي يمكن أن يُطلق والطرفان ما زالا ساكنين. تُخفق كلٌّ منها في ظروف مختلفة، فتعمل الثلاثة جميعًا ويفوز أوثقها.
ثمانية سلوكيات، قابلة للتبديل أثناء التشغيل
BRUSH_PASS, SDR_PATTERN, DEAD_DROP,
PARALLEL_ROUTE, MODE_TRANSITION, LOITER,
COVER_STOP, CHOKEPOINT. ويدمج تقييم التهديد ثمانية أبعاد للدليل عبر Beta–Monte-Carlo، ويحمل التقرير التفصيل لا الرقم الواحد.
سفينة تُطفئ مرسِلها المجيب
تغطية نظام التعريف الآلي (AIS) الساتلي فوق حوض محيطي. خمس سفن في عبور؛ إحداها تطفئ مرسِلها المجيب في منتصف الرحلة وتعود لاحقًا. ولا شيء يبلّغ عنها بينهما — لا مستشعر، ولا اكتشاف، ولا دليل من أي نوع.
راقب ما يفعله المحرّك بذلك. عند أول مسح فائت يقفز تقدير الموقع من بضع مئات من الأمتار إلى نحو 12 كيلومترًا، ويمضي المسار بالتنبّؤ وحده. وبعد مسحات قليلة يُحال إلى مجمّع خامل بدل أن يُحذف، وحين تعاود السفينة الظهور يكون على المحرّك أن يقرّر أهذا شيء جديد أم شيء يعرفه سلفًا.
مُدّ فترة الانقطاع أكثر، فيُخطئ في ذلك القرار. 5 مسحات من الصمت وتنجو الهوية؛ وبعد نحو 10 لا تنجو، وتعود السفينة مسارًا جديدًا. تلك هي النتيجة الصادقة، وهي أثمن من عرضٍ مضبوط ليفوز دائمًا — والسبب أسفل أدوات التحكّم.
dark-vessel — WebAssembly
جارٍ التحميل…المشتبه بها، الآن
على امتداد الرحلة
لماذا يفشل. إعادة التعرّف هنا تعمل بنمط الحياة — خليط لكل كيان على الساعة والموقع، يسأل هل تطابق هذه المشاهدة الجديدة شيئًا يعرف المحرّك روتينه سلفًا. والسفينة في عبور مستقيم واحد لا روتين لها؛ فقد رُئيت ذاهبة في اتّجاه واحد، مرّة واحدة. لذا بعد مسحات قليلة لا يبقى إلا تنبّؤ الحركة، وعند 12 عقدة مع مسحات كل ساعة يتجاوز عدم اليقين ذاك كل ما هو مفيد خلال يوم.
الآلية نفسها حاسمة حيث الروتين هو أمر قائم يمكن تعلّمه، وهو ما تعرضه المتاهة أعلاه. وقيدٌ بسببٍ معلن أثمن من قدرةٍ بلا سبب، وهذا القيد مذكور في قائمة المستودع نفسها.
dark-vessel نفسه الذي يشغّله trace_sim أصيلًا، بملفّ التعريف والمستشعر والحوض ذاتها.
مُعاد تشغيله على اكتشافات حقيقية، لا على محاكيه وحده
متتاليات MOTChallenge — اكتشافات حقيقية من كواشف حقيقية على فيديو حقيقي — هي الأرقام الوحيدة هنا التي لم ينتجها محاكي TRACE نفسه.
| المعيار | الصناديق | MOTA | استرداد سقف الكاشف |
|---|---|---|---|
| MOT17، تقسيمة التدريب، 21 متتالية | 336,891 | 53.0% | 108.2% |
| MOT20، تقسيمة التدريب، 4 متتاليات، 62–226 شخصًا/إطار | 1,134,614 | 62.5% | 114.7% |
خطّي عمليًّا مع حجم الحشد
| المسارات | وسيط ms لكل مسح | µs لكل مسار |
|---|---|---|
| 10 | 1.7 | 135 |
| 120 | 26.6 | 152 |
| 270 | 72.1 | 159 |
| 400 | 127.5 | 159 |
نواة معالج واحدة، وبناء إصدار، وامتدادات المتجهات المتقدّمة (AVX-512). والكلفة تنمو نحو n1.17 ويظلّ التتبّع وحده مسطّحًا عند 135–159 µs لكل مسار من 10 مسارات إلى 400 — اقرأ ذلك على أنّ “الثابت هو المهمّ، والأُسّ ليس كذلك”.
كانت الكلفة n1.82 إلى أن توقّف كاشف التقارب عن إعادة بناء تنبّؤ نمط الحياة لكل مسار مرّة لكل زوج. وقد كسب ذلك عاملًا قدره 20 في الثابت، لا أُسًّا أفضل — فبوّابة الفهرس المكاني التي أُضيفت معه كان نصف قطرها أوسع من المشهد، فأعادت كل زوج ولم تفعل شيئًا. وتقييد كل زوج بسرعتيه نقل ذلك الكاشف من 56% من المحرّك إلى 44%، ونقل الأُسّ إلى ما يقارب الخطّي.
عند 400 مسار متزامن يكون ذلك نحو 8 مسحات في الثانية على نواة معالج واحدة: يكفي لمنظومة كاميرات بتردّد 1 Hz، لا لـ25 fps دون تقسيم على عمّال. تقول الصفحة ذلك لأن القياس يقوله.
ما لا يفعله
لا كاشف، ولا نموذج إعادة تعرّف
يستهلك TRACE الاكتشافات. أمّا إنتاجها فشأن غيره.
لتقدير السرعة حدٌّ أدنى
يحتاج إلى سرعة × ثبات اتّجاه أعلى بكثير من ضجيج الموقع. ودون نسبة تبلغ نحو 5 لا يكون تقديرًا، والمضيّ بالتنبّؤ ليس أفضل منه بحال. والهدف الشديد التعرّج الذي يراه مستشعر خشن لا سرعة له قابلة للقياس — وهذا قيد نمذجة لا عيب، لكنه قيد ينبغي فحص ملفّ التعريف عليه قبل ادّعاء أي شيء عن المضيّ بالتنبّؤ.
توافر المستشعر مُستنتَج، لا معلوم
تُخمَّن فجوة التغطية من كون أي شيء قد بلّغ أصلًا. والنشر الحقيقي يعرف أي الكاميرات معطَّلة، ولا سبيل له حاليًّا لقول ذلك.
لا تسجيل تدقيقي، ولا ضبط وصول، ولا سياسة احتفاظ
عدد من الأشياء التي يمكن توجيهه إليها هي قدرات مراقبة جماعية. ومن ينشره على البشر يحتاج إلى بناء ذلك الهيكل حوله، وهو غير مُقدَّم افتراضيًّا عن عمد.
مسار CUDA هيكلٌ فارغ
src/cuda/kernels.cu موجود ولا شيء في المحرّك يستدعيه. ولم تُشغَّل النوى قطّ. عامله فرعًا غير مكتمل لا خلفية تنفيذ — والمستودع يقول الشيء نفسه.
رخصة جنو أفيرو العمومية العامة، ومعها ترخيص تجاري
AGPL-3.0+، والشروط نفسها كما في كل شيء آخر هنا: اقرأه، وشغّله، وافحصه. وإن كانت AGPL لا تناسب ما تريد بناءه، فثمّة ترخيص تجاري متعدّد المستويات.