cardstream
دستاویزات

دستاویزات

سب کچھ آپ کی مشین پر چلتا ہے: انسٹال کریں، اسے کیمرا دیں، اور طے کریں کہ اسے کال کرنے کی اجازت کب ہے۔ ترتیب اس حساب سے ہے کہ آپ کو کرنا کیا ہے۔

انسٹال کریں اور چلائیں

صفر سے اسکرین پر کارڈ تک

ایک ہی کمانڈ سے کلائنٹ، ماڈل ویٹس اور shim اسکرپٹس انسٹال ہو جاتے ہیں۔ پورے سسٹم میں کلید بس ایک ہے: آپ کی Ximilar کلید۔

انسٹال اسکرپٹ

~/.cardstream میں venv بناتا ہے، ریلیز کے wheel کو اس کے چیک سمز سے جانچتا ہے، ماڈل ویٹس لے آتا ہے اور دونوں کمانڈز آپ کے PATH پر رکھ دیتا ہے۔ باقی طریقے (wheel, Docker، سورس) ڈاؤن لوڈ صفحے پر ہیں۔

$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh
انسٹال کے تمام طریقے ←

دستی انسٹال

checkout اور pip سے بھی کام چل جاتا ہے۔ extras ایک دوسرے سے الگ ہیں: [client] میں UI اور سورسز ہیں، جبکہ [onnx] یا [torch] ڈیٹیکٹر اور ایمبیڈر کے بیک اینڈز فراہم کرتے ہیں۔

$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream
$ pip install -e '.[client,onnx]'

آپ کی Ximilar کلید

پہچان Ximilar collectibles/v2 پر چلتی ہے۔ XIMILAR_API_KEY وہ واحد انوائرمنٹ ویری ایبل ہے جسے کوئی بھی چیز پڑھتی ہے؛ باقی سب کچھ فلیگ ہے۔

$ export XIMILAR_API_KEY=your-key

پہلی بار چلانا

آپ کے ویب کیم پر براؤزر UI کھولتا ہے۔ کارڈ سامنے کریں؛ اوورلے دکھاتا ہے کہ اسٹیٹ مشین کیا سوچ رہی ہے، اور میچ آتے ہی وہ بھی۔

$ cardstream-web
# → http://127.0.0.1:8001

دیکھیں کیا انسٹال ہوا ہے

دونوں کمانڈز اپنا ورژن دکھا کر بند ہو جاتی ہیں۔ ماڈل فائلز کی ضرورت نہیں، اس لیے انسٹال مکمل ہوتے ہی یہ کام کرتا ہے۔

$ cardstream-web --version
cardstream 0.5.0

براؤزر کے بغیر، مستقل سیٹ اپ کے لیے

وہی پائپ لائن، براؤزر کے بغیر: نتائج ٹرمینل میں آتے ہیں۔ فلیگز وہی جو cardstream-web کے ہیں، اور کیمرے کے ساتھ ایک ہی پروسیس۔

$ cardstream-client --source 0
استعمال کریں

اسے اپنا شو دیں

سورسز بدلے جا سکتے ہیں اور جو بھی چنیں، تجزیہ وہی رہتا ہے۔ ہر چیز ایک فلیگ ہے؛ ان میں سے اہم، سیٹنگز کے ڈائیلاگ سے لائیو بدلے جا سکتے ہیں۔

ویب کیمز اور فائلز

cardstream-web کا طے شدہ سورس براؤزر کا ویب کیم ہے؛ کیمرے کا انڈیکس، ویڈیو فائل یا ساکن تصویر ہر جگہ چلتی ہے۔ شو سے پہلے ٹیسٹ کے لیے بہترین۔

$ cardstream-web # براؤزر کا ویب کیم
$ cardstream-client --source clip.mp4

اسٹریم کھینچیں

اسے کسی IP کیمرے، انکوڈر یا ری اسٹریمر کی طرف کریں: rtsp://، rtmp://، srt:// اور ws:// JPEG فیڈز، اور رابطہ ٹوٹے تو بڑھتے مگر محدود وقفوں سے خود دوبارہ جڑ جاتا ہے۔

$ cardstream-web --source rtsp://cam/stream1

OBS کو بھیجنے دیں

اسے لسنر کے طور پر چلائیں اور OBS میں ایک اضافی RTMP یا SRT آؤٹ پٹ لگا دیں۔ سسٹم کی ffmpeg بائنری درکار ہے (brew install ffmpeg)۔

$ cardstream-web --source rtmp://0.0.0.0:1935/live --listen

پری فل تلاش کو محدود کرتے ہیں

گیم، سیٹ کوڈ اور رسم الخط بھیجے جانے سے پہلے لوکل جانچے جاتے ہیں۔ جب بھی --game دیں، --alphabet ضرور دیں، کیونکہ گیم کا پری فل اینڈ پوائنٹ کو رسم الخط خود پہچاننے سے روک دیتا ہے۔

$ cardstream-web --game "Pokémon" --alphabet japanese --set-code M4

سیٹنگز کا ڈائیلاگ

کیٹیگری، گیم، سیٹ کوڈ، رسم الخط اور حدیں اسٹریم کے دوران براؤزر ہی سے بدلی جا سکتی ہیں۔ دوبارہ چلانے کی ضرورت نہیں، اور کنٹرولز پر وہی جانچ لاگو ہوتی ہے جو پروسیس پر۔

ریزولوشن کی تین سیٹنگز

کیمرا کیا ریکارڈ کرتا ہے، کیا بھیجا جاتا ہے اور کس کا تجزیہ ہوتا ہے، یہ تین الگ الگ اعداد ہیں۔ تجزیہ چھوٹی تصویر پر چلتا ہے؛ پہچان والا کراپ پورے فریم سے دوبارہ کاٹا جاتا ہے۔

$ cardstream-web --camera-width 3840 --width 1280
شو کا جائزہ

شو محفوظ کریں، بعد میں جائزہ لیں

طے شدہ طور پر بند۔ ایک فلیگ اس ہسٹری کو جو صفحہ بناتا ہے (آپ کا دکھایا ہوا ہر کارڈ، اپنے کراپ سمیت) آپ کے اپنے Ximilar اکاؤنٹ کے ایک سیشن میں محفوظ کر دیتا ہے، تاکہ اگلی صبح بھی شو وہیں موجود ہو۔

ہسٹری، تھمب نیلز کے ساتھ

براؤزر UI آپ کا دکھایا ہوا ہر کارڈ فہرست میں رکھتا ہے، سب سے نیا سب سے اوپر: پہچانے گئے کراپ کا تھمب نیل، --price-stats لگا ہو تو اس کی قیمت، اور یہ کہ وہ اسٹریم پر کتنی دیر رہا۔ یہ فہرست آپ کی مشین پر ہی رہتی ہے۔

شو محفوظ کریں

--ximilar-stream NEW ایک سیشن شروع کرتا ہے اور اس کا id دکھا دیتا ہے۔ اس کے بعد ہسٹری کی ہر قطار شو کے ساتھ ساتھ محفوظ ہوتی جاتی ہے: اپ لوڈز پس منظر میں اکٹھے ہو کر جاتے ہیں، نیٹ ورک کی خرابی پر دوبارہ کوشش ہوتی ہے، اور شو کبھی نہیں رکتا۔ ٹھیک طریقے سے بند کرنے پر جو باقی ہو وہ اپ لوڈ ہو جاتا ہے اور سیشن بند ہو جاتا ہے۔

$ cardstream-web --game "Pokémon" --alphabet latin \
    --price-stats --ximilar-stream NEW
شو محفوظ کرنے کی پوری تفصیل ←

کیا اپ لوڈ ہوتا ہے

قطاریں متن کی صورت میں (کارڈ، سیٹ، قیمت، اسٹریم پر وقت، اس کے پیچھے لگی بامعاوضہ کالز) اور وہ کراپ جس سے ہر قطار پہچانی گئی، زیادہ سے زیادہ 1024 px: وہی تصویر جو پہچان کی کال کو پہلے ہی مل چکی ہے۔ --no-ximilar-stream-images کے ساتھ صرف متن جاتا ہے۔ آپ کے Ximilar اکاؤنٹ پر Cardstream سروس ہونی چاہیے۔

$ cardstream-web --ximilar-stream NEW --no-ximilar-stream-images

Ximilar ایپ میں جائزہ لیں

ہر سیشن Ximilar ایپ کے Cardstream حصے میں آ جاتا ہے: آپ نے کیا دکھایا اور کب، شو کی مالیت، اس کے سب سے قیمتی پروڈکٹس اور سرفہرست سیٹس، اور ہر کارڈ اپنے کراپ کے ساتھ۔ جو بک گیا اس پر نشان لگائیں، غلط میچ درست کریں، نوٹس لکھیں۔

Ximilar ایپ کھولیں ←

دوبارہ چلانے کے بعد وہیں سے جاری رکھیں

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

$ cardstream-web --ximilar-stream <session-id>

ٹیم کے ورک اسپیسز

سیشن آپ کی API کلید کے طے شدہ ورک اسپیس میں محفوظ ہوتا ہے۔ کوئی دوسرا ورک اسپیس --ximilar-workspace سے بتائیں، اور وہاں محفوظ سیشن جاری رکھتے وقت وہی id دیں۔

$ cardstream-web --ximilar-stream NEW \
    --ximilar-workspace <workspace-id>
بے فکر ہو کر چلائیں

ہر الگ کارڈ پر پہچان کی ایک کال

لوکل اشارے (حرکت، ڈیٹیکشن، شناخت کا فلٹر) طے کرتے ہیں کہ پہچان کی کال کب واقعی ضروری ہے۔ یہ وہ سیٹنگز ہیں جو اسے قابو میں رکھتی ہیں۔

حدیں

نتیجے کی حد کمزور میچز کو اوورلے سے دور رکھتی ہے؛ مماثلت کی حد طے کرتی ہے کہ کارڈ وہی ہے یا نیا؛ اور forget-after تب یادداشت صاف کر دیتا ہے جب کارڈ کافی دیر سے غائب ہو۔

$ cardstream-web --result-threshold 0.35

تجویز کردہ طریقہ

RF-DETR سیگمنٹیشن کے ساتھ ONNX ایمبیڈنگ والا فلٹر: یہی طے شدہ سیٹنگز ہیں۔ ویٹس اپنی جگہ ہوں تو بغیر فلیگز کے cardstream-web بالکل یہی چلاتا ہے؛ فلیگز کھول کر لکھیں تو بھی پائپ لائن وہی ہے۔

$ cardstream-web \
    --segmentor-model model/segmentation/onnx/model.onnx \
    --embed-model model/similarity/onnx/model.onnx

اسے localhost پر ہی رکھیں

لوکل ایپ پر کوئی لاگ ان نہیں اور اس کے پاس آپ کی API کلید ہوتی ہے۔ --host کی طے شدہ قدر 127.0.0.1 ہے؛ اسے وہیں رہنے دیں اور پورٹ کبھی LAN پر نہ کھولیں۔

شروع ہوتے ہی ”Model not found“

ماڈل ویٹس الگ سے ڈاؤن لوڈ ہوتے ہیں، ریپو کا حصہ نہیں۔ انسٹال اسکرپٹ اور Docker امیج انہیں خود لے آتے ہیں؛ سادہ checkout میں انہیں model/segmentation/ اور model/similarity/ میں رکھنا پڑتا ہے، اور scripts/build-from-source.sh --models یہ کام آپ کے لیے کر دیتا ہے۔

بتائیں کہ شو کس گیم کا ہے

ایک ہی گیم کے شو میں ضرورت نہیں کہ اینڈ پوائنٹ ہر کال پر گیم کا اندازہ لگائے۔ گیم کا نام بتا دیں تو تلاش اسی گیم تک محدود ہو جاتی ہے: جواب تیز، غلط پرنٹ کم۔ ساتھ --alphabet بھی دیں، کیونکہ گیم کا پری فل اینڈ پوائنٹ کو رسم الخط خود پہچاننے سے روک دیتا ہے۔

$ cardstream-web --game "Pokémon" --alphabet japanese

ffmpeg، جب ضرورت پڑے

--listen اور --ffmpeg سسٹم کی ffmpeg بائنری چلاتے ہیں۔ سادہ کھینچنے والے سورسز صرف pip والے انسٹال سے بھی چلتے ہیں؛ OBS سے بھیجنے والا سیٹ اپ نہیں چلتا۔

مزید گہرائی میں

طے شدہ سیٹنگز سے آگے

ماڈلز بدلیں یا کوڈ پڑھیں: پوری پائپ لائن انسٹال ہونے والا ایک ہی پیکج ہے۔

اپنے ویٹس لائیں

ڈیٹیکشن اور شناخت کا فلٹر بیک اینڈ کے حساب سے چلتے ہیں: ماڈل فیملی کلاس چنتی ہے، اور فائل کی ایکسٹینشن رن ٹائم۔ RF-DETR یا RT-DETRv2، .onnx فائل یا transformers ڈائریکٹری۔

ماڈل بیک اینڈز ←

ماڈلز کی فہرست

ہر وہ ماڈل جس کے ویٹس cardstream لوڈ کر سکتا ہے، Ximilar کا ٹرین کیا ہوا اور ریلیزز کے ساتھ Apache-2.0 کے تحت شائع شدہ: ہر ایک کیا کرتا ہے، کس رفتار سے چلتا ہے اور اس پر کون سا لائسنس ہے۔

ماڈلز کی فہرست ←

مختصر جوابات

خرچ کتنا ہے، مشین سے باہر کیا جاتا ہے، یہ کون سے کارڈز پہچانتا ہے، اور وہ دو کمانڈز جو اسے ہٹا دیتی ہیں۔

عمومی سوالات پڑھیں ←

README اور issues

README میں ہر فلیگ درج ہے؛ بگز اور سوالات کی جگہ issues ہے۔

README پڑھیں ←

ریلیزز اور فائلز

wheels، چیک سمز اور انسٹال اسکرپٹ، ہر ریلیز کا اپنا پورا مجموعہ، اور ساتھ Docker اور سورس سے بلڈ بھی۔

ڈاؤن لوڈ صفحہ ←