TRACE · v0.2

زیادہ تر ٹریکر “کہاں” پر رک جاتے ہیں۔ یہ آگے بڑھتا رہتا ہے۔

اصل دنیا میں تعاقب کبھی مسلسل نہیں ہوتا۔ کوئی گاڑی عمارت کے پیچھے چلی جاتی ہے، کوئی شخص کیمرے کی حد سے باہر نکل جاتا ہے۔ زیادہ تر نظام اسے ٹریک کا خاتمہ سمجھ لیتے ہیں۔ TRACE نہیں سمجھتا: وہ ٹریک کو ہاں یا نہ کے بجائے اس امکان کے طور پر رکھتا ہے کہ چیز اب بھی وہیں ہے، اس لیے ٹریک خلا پر ختم ہونے کے بجائے اس کے اندر مدھم پڑتا ہے، اور دوسری طرف سے دوبارہ پکڑا جا سکتا ہے۔

مرکز میں کچھ بھی نہیں جانتا کہ وہ کس کا تعاقب کر رہا ہے۔ کیمرے، جہاز، پیلٹ، جانور اور کھلاڑی ایک ہی مسئلہ ہیں، بس پروفائل مختلف ہے۔ نیچے دیے گئے MOT17 اور MOT20 کے اعداد متعدد اشیا کی تعاقبی درستی (MOTA) ہیں، یعنی وہ اکلوتا عدد جو یہ میدان ٹریکر کی کارکردگی کے لیے استعمال کرتا ہے۔

زبانC++23
MOT17 MOTA53.0%
MOT20 MOTA62.5%
جانچے گئے باکس1.47M
آخری پُشحال ہی میں
نام کیا کہتا ہے
Tتعاقب — ہر شے کہاں ہے، اور ہمیں کتنا یقین ہے
Rدوبارہ شناخت — وہی شے، گم ہو جانے کے بعد
Aربط — کون سا مشاہدہ کس ٹریک کا ہے
Cاقتراب — کون کس سے ملنے والا ہے
Eواقعات — وہ رویہ جو کسی کی توجہ کا حق رکھتا ہے
سادہ الفاظ میں

یہ کیا ہے، ایک منٹ میں

مسئلہ

سینسر چیزیں چھوڑ دیتے ہیں۔ کیمرہ ہر گزرنے والے کو نہیں پکڑتا، جہاز اپنا ٹرانسپانڈر بند کر سکتا ہے، کسی راہداری میں کیمرہ سرے سے نہ ہو۔ زیادہ تر ٹریکر “نظر نہیں آیا” کو “وہاں ہے ہی نہیں” پڑھتے ہیں، سو جب وہ چیز دوبارہ نمودار ہو تو اسے کوئی نئی چیز درج کر لیا جاتا ہے۔ وہ کہاں رہی، کس سے ملی، اور کیا یہ اس کے لیے معمول کی بات ہے — ان میں سے کسی کا جواب اب نہیں دیا جا سکتا۔

حل

TRACE ہر ٹریک کے ساتھ ایک عدد رکھتا ہے کہ وہ چیز اب بھی وہاں ہونے کا کتنا امکان ہے۔ کوئی چھوٹا ہوا مشاہدہ اس عدد کو گھٹاتا ہے اور اُس علاقے کو پھیلا دیتا ہے جہاں وہ ہو سکتی ہے؛ مٹاتا کچھ نہیں۔ ٹریک پیش گوئی کے سہارے چلتا رہتا ہے، اس کی بے یقینی ایمان داری سے بڑھتی ہے، اور جب کوئی چیز دوبارہ سامنے آتی ہے تو انجن طے کرتا ہے کہ یہ وہی ہے یا نہیں۔ یہاں دونوں مظاہرے آپ کو اسے اتنا دبانے دیتے ہیں کہ وہ فیصلہ غلط کر بیٹھے۔

یہ کس کے لیے ہے

ہر وہ شخص جو ایک سے زیادہ سینسروں پر، اور ان کے درمیان خلا کے ساتھ، چیزوں کا پیچھا کرتا ہے: ایسا مقام جس کے کیمرے ہر راہداری کا احاطہ نہیں کرتے، یا سمندری نگرانی جہاں کوئی جہاز سفر کے بیچ اپنا ٹرانسپانڈر بند کر سکتا ہے۔ مرکز نہیں جانتا کہ وہ کس کا تعاقب کر رہا ہے — کیمرے، جہاز، پیلٹ، جانور اور کھلاڑی ایک ہی مسئلہ ہیں، بس پروفائل مختلف ہے۔ یہ کھوجیں لیتا ہے؛ انہیں پیدا کرنا کسی اور کا کام ہے۔

احاطے میں خلا اور غیر موجودگی ایک چیز نہیں۔ اس صفحے کا باقی حصہ انجینئرنگ ہے: خود انجن، جو آپ کے براؤزر میں دو منظرناموں پر چل رہا ہے، پیمائشی اعداد، فی ٹریک اس کی قیمت، اور ایک سادہ فہرست کہ یہ کیا نہیں کرتا۔
مسئلہ

جو ٹریک پہلے ہی چھوٹے ہوئے فریم پر حذف ہو جائے، وہ کبھی ٹریک تھا ہی نہیں

سینسر چیزیں چھوڑ دیتے ہیں۔ کیمرے کے پاس کھوج کا امکان ہوتا ہے، ضمانت نہیں؛ جہاز اپنا ٹرانسپانڈر بند کر سکتا ہے؛ کسی راہداری میں کیمرہ سرے سے ہوتا ہی نہیں۔ جیسے ہی احاطہ کم ہوتا ہے، وہ ٹریکر جو “نظر نہیں آیا” کو “موجود نہیں” سمجھ لیتا ہے، شناخت کھو بیٹھتا ہے، اور جب وہ شے دوبارہ ظاہر ہوتی ہے تو اسے نئی شناخت مل جاتی ہے۔ آگے کا ہر سوال — یہ کہاں کہاں رہی، کس کس سے ملی، کیا یہ اس کے لیے معمول ہے — اب بے جواب ہے۔

TRACE ان دو چیزوں کو الگ رکھتا ہے جنہیں زیادہ تر ٹریکر آپس میں ملا دیتے ہیں۔ ہر ٹریک اپنے ساتھ یہ رکھتا ہے: r، یعنی وہ امکان کہ وہ سرے سے موجود بھی ہے، جسے اس کے مقام سے الگ رکھا جاتا ہے۔ چھوٹا ہوا اسکین r کو کم کرتا ہے اور مقام کے تخمینے کو چوڑا کر دیتا ہے؛ یہ کچھ بھی حذف نہیں کرتا۔ ٹریک بغیر شہادت کے چلتا رہتا ہے، اور ایسا کرتے ہوئے اس کی بے یقینی ایمان داری کے ساتھ بڑھتی جاتی ہے۔

نیچے دیے گئے دونوں مظاہرے آپ کو یہی دکھا رہے ہیں۔ نقطہ دار دائرہ انجن کی یہ بات ہے کہ وہ کہیں یہیں ہے اور میں ہر لمحے کم یقین سے یہ کہہ رہا ہوں — اور یہ بتایا جانا کام کی بات ہے، وہی بات جو حذف شدہ ٹریک آپ کو نہیں بتا سکتا۔

وجود

Bernoulli، بولین نہیں

320 ذرات کے فلٹر پر ایک Poisson Multi-Bernoulli Mixture (PMBM) ٹریکر۔ وجود ایک امکان ہے جو چھوٹ جانے پر گھٹتا ہے اور شہادت ملنے پر سنبھلتا ہے، اس لیے کسی اوٹ کی قیمت شناخت نہیں بلکہ اعتماد ہوتی ہے۔

امکانیت

شہادت پر دوسری رائے

امکان کے ساتھ ساتھ ایک امکانیاتی وجود بھی چلتا ہے جو شہادت کی مقدار کے بجائے اس کا معیار ناپتا ہے۔ جب دونوں میں فرق آ جائے تو کئی کمزور کھوجیں جھوٹے یقین میں ڈھال دی گئی ہوتی ہیں۔

خود انجن

ایک کیمرہ اسٹیٹ، جس کی کچھ راہداریاں کوئی نہیں دیکھ رہا

بھول بھلیاں اصل کیمرہ اسٹیٹ کا سستا بدل ہیں، اور یہ ہر وہ خاصیت دے دیتی ہیں جو کثیر کیمرہ تعاقب کو مشکل بناتی ہے: دیواریں راستوں کو غیر لکیری بنا دیتی ہیں، ہر رنگین خانہ ایک کیمرہ ہے سو حد پار کرنا واقعی ایک حوالگی ہے، اور دھاری دار خانے بند ہیں — اندھی راہداریاں جہاں انجن کو بالکل کچھ نہ ہوتے ہوئے شناخت تھامے رکھنی ہے اور دوسرے سرے پر دوبارہ اٹھانی ہے۔

trace::Engine — WebAssembly

لوڈ ہو رہا ہے…
حقیقت — زیرِ نظر حقیقت — دیگر ٹریک، جو نظر میں ہے ٹریک، اندھا چلتا ہوا بند کیمرہ

حقیقت کے مقابلے میں جانچ

کھوج
—
کیمروں نے جو دیا اس کا تناسب
—
اوسط غلطی
—
شناخت کی تبدیلیاں
—
وہمی ٹریک
—
وسطی اسکین
—

یہ اسکین

اب تک کی کھوج
—
اب تک کی غلطی
—

اٹھائے گئے واقعات —

اگلی متوقع ملاقات —

کیمروں نے جو دیا اس کا تناسب ہی ایمان دار مخرج ہے: کوئی ٹریکر ایسی شے کی اطلاع نہیں دے سکتا جسے کسی سینسر نے کھوجا ہی نہ ہو، سو خام کھوج کی شرح ٹریکر کی ناکامیوں کو اسٹیٹ کی ناکامیوں کے ساتھ ملا دیتی ہے۔ 100% سے اوپر کا مطلب ہے کہ انجن نے ان اسکینوں میں بھی شے تھامے رکھی جن میں اسے کسی نے دیکھا ہی نہیں۔ کیمرے بند کریں اور اسے چڑھتے دیکھیں۔

trace::Engine جو نکلتا ہے libtrace_core.a، وہی لائبریری جس سے مقامی اوزار بھی جُڑتے ہیں — —۔ پورا رن ایک ہی بار حساب ہوتا ہے اور پھر چلا کر دکھایا جاتا ہے، سو یہ اینیمیشن انجن کی رفتار نہیں؛ اس کے ساتھ لکھا وسطی اسکین وقت ہی وہ رفتار ہے۔
یہ کام کیسے کرتا ہے

پانچ مرحلے، اور ایک رپورٹ

T · A

تعاقب اور ربط

320 ذروں والے مخلوط Ornstein–Uhlenbeck فلٹر پر Bernoulli وجود کے ساتھ ایک PMBM ٹریکر — رفتار ایک OU عمل کی پیروی کرتی ہے جس کا طرزِ حرکت (پیدل، گاڑی میں، ساکت) خود ایک Markov زنجیر ہے، اور یہی “مخلوط” والا حصہ ہے۔ ایک سے ایک تفویض کے لیے 14 دوروں میں Gibbs نمونہ گیری، پھر نقل کا ادغام۔ ربط چلتا ہے فی سینسر، کیونکہ انفرادیت سینسر کے بارے میں ایک حقیقت ہے، دنیا کے بارے میں نہیں — ایک دوسرے پر چڑھے دو کیمرے اگر دونوں ایک ہی شخص کی اطلاع دیں تو یہ تصدیق ہے، دو لوگ نہیں۔ اسے عالمی سطح پر نافذ کرنے کی قیمت 2.08 وہمی ٹریک فی اسکین تھی؛ فی سینسر یہ 0.08 ہے۔

R

معمول سے دوبارہ شناخت

سویا ہوا ٹریک اپنے طرزِ زندگی سے دوبارہ پکڑا جاتا ہے — گھنٹے، x اور y پر فی شے ایک Gaussian مرکب۔ ظاہری شکل کے وصف بھی معاون ہیں اور عوامی پیمانوں پر جان بوجھ کر بند رکھے گئے ہیں، کیونکہ وہاں ایک بےعیب اوریکل وصف بھی نمبر ذرا نہیں بدلتا: 88% نقصان چھوٹی ہوئی کھوجوں کا ہے، جنہیں ظاہری شکل چھو بھی نہیں سکتی۔

C

تین اقترابی پیش گو، ایک پر ایک چڑھے ہوئے

ہندسی قطع دو ایسی اشیا کے لیے بالکل درست ہے جو ایک دوسرے کی طرف چل رہی ہوں، اور بے کار ہے اگر ان میں سے کوئی راستہ بدل لے۔ قربت کی شرح کا اخراج مڑے ہوئے راستے کو سنبھال لیتا ہے۔ طرزِ زندگی کی متقاطع پیش گوئی واحد ہے جو اُس وقت بھی چل سکتی ہے جب دونوں فریق ابھی ساکت ہوں۔ یہ مختلف حالات میں ناکام ہوتی ہیں، سو تینوں چلتی ہیں اور سب سے زیادہ پُریقین جیت جاتی ہے۔

E

آٹھ رویے، چلتے چلتے بدلنے والے

BRUSH_PASS, SDR_PATTERN, DEAD_DROP, PARALLEL_ROUTE, MODE_TRANSITION, LOITER, COVER_STOP, CHOKEPOINT۔ خطرے کی نمبر دہی آٹھ شہادتی ابعاد کو Beta–Monte-Carlo کے ذریعے یکجا کرتی ہے، اور رپورٹ ایک عدد کے بجائے پورا تجزیہ ساتھ لاتی ہے۔

خود انجن

ایک جہاز اپنا ٹرانسپانڈر بند کر دیتا ہے

ایک سمندری طاس پر سیٹلائٹ AIS کی کوریج۔ پانچ جہاز سفر میں ہیں؛ ان میں سے ایک سفر کے بیچ اپنا ٹرانسپانڈر بند کر دیتا ہے اور بعد میں دوبارہ ظاہر ہوتا ہے۔ درمیان میں کوئی اس کی اطلاع نہیں دیتا — نہ کوئی سینسر، نہ کوئی کھوج، نہ کسی قسم کی کوئی شہادت۔

دیکھیں کہ انجن اس کے ساتھ کیا کرتا ہے۔ پہلے ہی چھوٹے ہوئے اسکین پر مقام کا تخمینہ چند سو میٹر سے بڑھ کر تقریباً بارہ کلومیٹر ہو جاتا ہے اور ٹریک صرف پیش گوئی کے سہارے چلتا رہتا ہے۔ چند اسکین بعد اسے حذف کرنے کے بجائے ایک سوئے ہوئے ذخیرے میں ڈال دیا جاتا ہے، اور جب جہاز دوبارہ ابھرتا ہے تو انجن کو طے کرنا ہوتا ہے کہ یہ کوئی نئی شے ہے یا وہی جسے وہ پہلے سے جانتا ہے۔

بلیک آؤٹ کو لمبا کھینچیں تو یہ فیصلہ غلط کر بیٹھتا ہے۔ پانچ اسکین کی خاموشی پر شناخت بچ جاتی ہے؛ تقریباً دس کے بعد نہیں بچتی، اور جہاز ایک نئے ٹریک کے طور پر واپس آتا ہے۔ یہی ایمان دار نتیجہ ہے اور یہ اُس مظاہرے سے زیادہ قیمتی ہے جو ہمیشہ جیتنے کے لیے ترتیب دیا گیا ہو — وجہ کنٹرولوں کے نیچے درج ہے۔

dark-vessel — WebAssembly

لوڈ ہو رہا ہے…
مشتبہ، اطلاع دیتا ہوا مشتبہ، خاموش ہو گیا دیگر ٹریفک مشتبہ کا اپنا ٹریک دیگر ٹریک

مشتبہ، اِس وقت

اس کے بارے میں انجن کی حالت
—

پورے سفر میں

دوبارہ ابھرنے کے بعد
—
سب سے چوڑا اندھا سفر
—
واپسی سے پہلے کا وقفہ
—
اب تک کی کھوج
—

یہ کیوں ٹوٹتا ہے۔ یہاں دوبارہ شناخت طرزِ زندگی سے ہوتی ہے — گھنٹے اور مقام پر فی شے ایک مرکب، جو یہ پوچھتا ہے کہ کیا یہ نیا مشاہدہ کسی ایسی شے سے میل کھاتا ہے جس کا معمول انجن پہلے سے جانتا ہے۔ ایک ہی سیدھے سفر پر چلتے جہاز کا کوئی معمول ہوتا ہی نہیں۔ اسے ایک بار، ایک ہی سمت جاتے ہوئے دیکھا گیا ہے۔ سو چند اسکین کے بعد صرف حرکت کی پیش گوئی باقی رہتی ہے، اور بارہ ناٹ پر گھنٹہ وار اسکینوں کے ساتھ وہ بے یقینی ایک دن کے اندر ہر کام کی چیز سے بڑھ جاتی ہے۔

یہی طریقہ وہاں فیصلہ کن ہے جہاں سیکھنے کے لیے کوئی معمول ہی موجود ہو، اور اوپر والی بھول بھلیاں یہی دکھا رہی ہیں۔ جس حد کی وجہ بتا دی جائے وہ اُس صلاحیت سے زیادہ قیمتی ہے جس کی کوئی وجہ نہ بتائی جائے، اور یہ حد ریپازٹری کی اپنی فہرست میں درج ہے۔

وہی dark-vessel منظرنامہ جو trace_sim مقامی طور پر چلاتا ہے، اسی پروفائل، سینسر اور طاس کے ساتھ۔
شہادت

اصل کھوجوں پر دوبارہ چلایا گیا، صرف اپنے سمیولیٹر پر نہیں

MOTChallenge کے سلسلے — اصل ویڈیو پر اصل کھوجیوں کی اصل کھوجیں — یہاں کے واحد اعداد ہیں جو TRACE کے اپنے سمیولیٹر نے پیدا نہیں کیے۔

پیمانہباکسMOTAکھوجی کی چھت کی بازیابی
MOT17 ٹرین، 21 سلسلے336,89153.0%108.2%
MOT20 ٹرین، 4 سلسلے، 62–226 افراد فی فریم1,134,61462.5%114.7%
صرف ٹرین سپلٹ کے اعداد۔ یہ مقامی طور پر دوبارہ چلائے اور جانچے گئے ہیں۔ MOTChallenge کے تشخیصی سرور کو کچھ نہیں بھیجا گیا، جو عوامی لیڈر بورڈ سے موازنے کے قابل عدد کے لیے لازم ہوتا۔ چھت وہ ہے جو ایک بےعیب ٹریکر اسے دی گئی ہر کھوج دہرا کر حاصل کرتا؛ اسے پیچھے چھوڑنا ہی اصل کام ہے، اور یہ ان فریموں میں بغیر شہادت کے چل کر کیا جاتا ہے جو کھوجی سے رہ گئے۔
قیمت

بھیڑ کے حجم میں عملاً لکیری

ٹریکوسطی ms فی اسکینµs فی ٹریک
101.7135
12026.6152
27072.1159
400127.5159

ایک پروسیسر کور، Release بلڈ، Advanced Vector Extensions (AVX-512)۔ قیمت تقریباً n1.17 کے تناسب سے بڑھتی ہے، اور اکیلا تعاقب دس ٹریک سے چار سو ٹریک تک 135–159 µs فی ٹریک پر ہموار رہتا ہے — اسے یوں پڑھیں کہ “اہمیت مستقل کی ہے، جُز نما کی نہیں”۔

یہ n1.82 تھا، یہاں تک کہ اقترابی کھوجی نے ہر جوڑے کے لیے ہر ٹریک کا طرزِ زندگی والا تخمینہ دوبارہ بنانا چھوڑ دیا۔ اس سے مستقل میں بیس گنا فائدہ ہوا اور بہتر جُز نما نہیں ملا — اس کے ساتھ جو مکانی اشاریے کا گیٹ لگایا گیا تھا اس کا نصف قطر منظر سے بھی چوڑا تھا، سو وہ ہر جوڑا واپس کرتا رہا اور کچھ نہ کیا۔ ہر جوڑے کو اس کی اپنی دو رفتاروں سے باندھنے پر وہ کھوجی انجن کے 56% سے 44% پر آ گیا اور جُز نما تقریباً لکیری ہو گیا۔

400 بیک وقت ٹریک پر یہ ایک پروسیسر کور پر تقریباً 8 اسکین فی سیکنڈ بنتا ہے: 1 Hz والے کیمرہ نظام کے لیے ٹھیک، مگر 25 fps کے لیے نہیں، جب تک کام کو کئی ورکروں میں بانٹا نہ جائے۔ صفحہ یہ اس لیے کہتا ہے کہ پیمائش یہی کہتی ہے۔

ایمان دار حدود

یہ کیا نہیں کرتا

نہ کوئی کھوجی، نہ کوئی re-ID ماڈل

TRACE کھوجیں استعمال کرتا ہے۔ انہیں پیدا کرنا کسی اور کا کام ہے۔

رفتار کے تخمینے کی ایک حدِ ادنیٰ ہے

اسے رفتار × سمت کی پابندی مقام کے شور سے خاصی اوپر چاہیے۔ تقریباً 5 کی نسبت سے نیچے یہ تخمینہ رہتا ہی نہیں، اور بغیر شہادت کے چلنا اتنا ہی اچھا ہے جتنا یہ۔ کسی موٹے سینسر سے دیکھے گئے واقعی بل کھاتے ہدف کی رفتار ناپی ہی نہیں جا سکتی — یہ نقص کے بجائے ماڈل سازی کی ایک شرط ہے، مگر بغیر شہادت کے چلنے کے بارے میں کچھ کہنے سے پہلے اپنی پروفائل اس پر پرکھ لینی چاہیے۔

سینسر کی دستیابی کا اندازہ لگایا جاتا ہے، وہ معلوم نہیں ہوتی

احاطے کے خلا کا اندازہ صرف اس سے لگایا جاتا ہے کہ کسی نے کچھ اطلاع دی یا نہیں۔ اصل تنصیب کو معلوم ہوتا ہے کہ کون سے کیمرے بند ہیں، اور فی الحال یہ بات بتانے کا کوئی طریقہ موجود نہیں۔

نہ آڈٹ لاگنگ، نہ رسائی کا کنٹرول، نہ ڈیٹا رکھنے کی پالیسی

جن کاموں پر اسے لگایا جا سکتا ہے، ان میں سے کئی بڑے پیمانے پر نگرانی کی صلاحیتیں ہیں۔ جو کوئی اسے لوگوں پر استعمال کرے، اسے یہ ڈھانچہ خود اس کے گرد بنانا ہوگا، اور یہ جان بوجھ کر پہلے سے فراہم نہیں کیا گیا۔

CUDA کا راستہ محض ڈھانچہ ہے

src/cuda/kernels.cu موجود ہے اور انجن میں کوئی چیز اسے نہیں بلاتی۔ یہ کرنل کبھی چلے ہی نہیں۔ اسے بیک اینڈ کے بجائے ایک ادھوری شاخ سمجھیں — ریپازٹری بھی یہی کہتی ہے۔

سورس دستیاب

GNU Affero General Public License، اور ساتھ ایک تجارتی لائسنس

AGPL-3.0+، اور وہی شرائط جو یہاں ہر چیز کی ہیں: پڑھیے، چلائیے، جانچیے۔ اگر AGPL آپ کے بنانے کے ارادے سے میل نہ کھائے تو درجہ وار تجارتی لائسنس موجود ہے۔