cardstream
الأسئلة الشائعة

الأسئلة الشائعة

الأسئلة الأكثر تكرارًا: تثبيته وإزالته، وكم يكلّف، وما الذي يغادر جهازك، وما الذي يستطيع تسميته. وكل ما هو أطول من ذلك تجده في مركز التوثيق.

التثبيت والإزالة

التثبيت والتحديث والإزالة

سكربت التثبيت يمسّ موضعين اثنين فقط على جهازك، ولك أن تحذفهما متى شئت.

ما الذي أحتاجه لتشغيله؟

جهاز عليه Python 3.11 أو أحدث، ولا شيء آخر تقريبًا. الإصدار نفسه المكتوب بلغة Python الخالصة يغطي macOS arm64 وLinux amd64 وWindows amd64، دون حاجة إلى GPU. وبرنامج ffmpeg المثبّت على النظام لا يلزم إلا لمصادر السحب والاستقبال (RTSP وRTMP وSRT)، أما كاميرا الويب أو الملف أو واجهة المتصفح فلا تحتاج إليه.

أين يضع سكربت التثبيت الملفات؟

في موضعين. ~/.cardstream هو جذر التثبيت: فيه virtualenv داخل venv/ وأوزان النماذج داخل models/. والأمران cardstream-web وcardstream-client ملفا shim صغيران يُكتبان في ~/.local/bin، ويشغّلان برامج venv بعد أن تُملأ مسارات النماذج مسبقًا، فأي خيار تمرّره أنت له الأولوية. والموضعان كلاهما يتغيران عبر CARDSTREAM_HOME وINSTALL_DIR. لا يُمَسّ أي شيء آخر على الجهاز، والسكربت خصوصًا لا يعدّل ملف إعدادات shell عندك أبدًا: إن لم يكن ~/.local/bin ضمن PATH طبع لك تنبيهًا وترك التعديل لك.

كيف أحدّثه إلى نسخة جديدة؟

أعد تشغيل الأمر نفسه. يثبّت الإصدار الحالي في virtualenv الموجود ويعيد كتابة ملفَّي shim. والأوزان الموجودة أصلًا في ~/.cardstream/models تُترك كما هي، فهي لا تُجلب إلا إن كانت ناقصة، ولذلك فالتحديث تنزيل صغير لا ربع غيغابايت آخر. ولتثبيت إصدار بعينه بدلًا من الأحدث، اضبط CARDSTREAM_VERSION.

# الأمر نفسه؛ cardstream.ai/install.sh يحوّل إلى السكربت على main
$ curl -fsSL https://cardstream.ai/install.sh | sh
$ curl -fsSL https://cardstream.ai/install.sh | CARDSTREAM_VERSION=v0.5.0 sh
$ cardstream-web --version

كيف أزيله؟

بأمرين. الأول يزيل virtualenv وأوزان النماذج، والثاني يزيل ملفَّي shim. ولا شيء آخر يحتاج إلى تنظيف: لا خدمة تعمل في الخلفية، ولا عنصر يُفتح عند تسجيل الدخول، ولا حزمة نظام.

$ rm -rf ~/.cardstream # venv/ + models/
$ rm -f ~/.local/bin/cardstream-web ~/.local/bin/cardstream-client

إن كنت ثبّته مع ضبط CARDSTREAM_HOME أو INSTALL_DIR فاحذف تلك المسارات بدلًا منها، واستخدم sudo إن كنت وجّهت ملفَّي shim إلى مجلد من مجلدات النظام. وكل ما أضفته بيدك يبقى عليك أن تتراجع عنه: سطر PATH في ملف إعدادات shell، وتصدير XIMILAR_API_KEY، وأي مجلد مرّرته إلى --store-images. والتطبيق لا يكتب شيئًا آخر داخل مجلدك الرئيسي. تأكد من زواله بالأمر command -v cardstream-web في نافذة طرفية جديدة، فالقديمة تحتفظ بنتيجة البحث إلى أن تشغّل hash -r.

المفاتيح والتكلفة

كم يكلّف وما الذي يحتاجه

لا منصة وسيطة: أجهزتك ومفتاحك ومحرّك مهمته أن يرسل أقل عدد ممكن من الطلبات.

هل أحتاج إلى مفتاح Ximilar API؟

في مسار التعرّف الافتراضي، نعم، وهو بيانات الاعتماد الوحيدة التي يحتاجها النظام كله. احصل على مفتاح من ximilar.com وصدّره باسم XIMILAR_API_KEY قبل أن تبدأ. وإن ربطت نظام التعرّف الخاص بك بدلًا منه، فستحتاج إلى ما تطلبه نقطة النهاية تلك ولا شيء من Ximilar.

$ export XIMILAR_API_KEY=your-key

كم يكلّف cardstream نفسه؟

لا شيء. لا اشتراك ولا ترخيص لكل مستخدم ولا رسوم منصة: حزمة Python واحدة برخصة متساهلة تشغّلها على أجهزتك، وأوزان الكشف منشورة برخصة Apache-2.0 مع الإصدارات. ما تدفع ثمنه هو طلبات التعرّف إلى نقطة النهاية التي تربطها أيًّا كانت، وإبقاء هذا العدد منخفضًا هو الغاية الكاملة من المحرّك المحلي: نحو طلب واحد لكل بطاقة مختلفة تعرضها، أي قرابة مئة في الساعة حيث يرسل مسار بسيط يعمل على كل إطار بمعدل 15 fps ما مجموعه 54,000 طلب. وحفظ العرض في حسابك على Ximilar يضيف رسم بدء جلسة واحدًا لكل عرض، وإكماله بعد إعادة التشغيل مجاني.

هل أستطيع استخدام نماذجي، أو نظام التعرّف الخاص بي؟

كلاهما ممكن. محدِّد موقع البطاقة ومرشّح الهوية يُوجَّهان بحسب بيئة التشغيل: تصدير RF-DETR المرفق بصيغة .onnx، أو تصدير RT-DETRv2، أو مجلد transformers أو معرّف hub ما دمت تجرّب في ضبط نموذجك. وخطوة التعرّف التي بعده مجرد نقطة نهاية، فتوجيهها إلى نظام التعرّف الخاص بك يُبقي كل مرشّح وتقنين وفترة تهدئة أمامها بلا تغيير. انظر بيئات تشغيل النماذج ومكتبة النماذج.

التشغيل

العتاد والبثوث والبقاء في أمان

يعمل بجانب عرضك على الجهاز الذي تبثّ منه أصلًا.

هل أحتاج إلى GPU؟

لا. الأوزان المرفقة تصديرات ONNX بحجم يناسب المعالج، وكل ما يفعله المحرّك المحلي، أي مرشّح الحركة وتقنين الكشف والتضمين الذي يجيب عن «البطاقة نفسها أم بطاقة جديدة؟»، يعمل على المعالج الذي تملكه أصلًا. الـ GPU خيار لأوزانك الأعلى دقة، وليس شرطًا للإعدادات الافتراضية أبدًا.

هل يعمل مع Whatnot أو Fanatics Live؟

نعم، لكن ليس بالاتصال بمنصة البيع، بل بأخذ نسخة من الفيديو الذي تنتجه أصلًا. الكاميرا الافتراضية في OBS، أو مخرج RTMP أو SRT ثانٍ بجانب المخرج الذي يغذّي المنصة، أو سحب RTSP من مرمِّز، أو ببساطة كاميرا خاصة به موجّهة إلى الطاولة نفسها. ودليل البيع عبر البث المباشر يشرح الطرق الأربع من أولها إلى آخرها.

ما الذي يغادر جهازي فعلًا؟

في وضع العميل، صورة JPEG مقصوصة واحدة لكل بطاقة مختلفة: لا البث، ولا الإطارات المحيطة بها، ولا بقية الطاولة. كل قرار في هل يُرسَل شيء أم لا يُتخذ محليًا أولًا، فساعة من الفيديو تعرض فيها مئة بطاقة تعني مئة طلب صغير. والاستثناء الوحيد أنت من يفعّله: مع --ximilar-stream يُحفظ سجل العرض أيضًا، أي صف نصي لكل بطاقة مع الصورة المقصوصة التي جرى التعرّف عليها منها، في جلسة داخل حسابك على Ximilar. وهو متوقف افتراضيًا، والخيار --no-ximilar-stream-images يقصر الحفظ على النص.

هل أستطيع مراجعة العرض بعد انتهائه؟

نعم، إن حفظته. ابدأ بالخيار --ximilar-stream NEW فتذهب كل بطاقة يسردها السجل، مع سعرها ومدة بقائها على البث والصورة المقصوصة التي جرى التعرّف عليها منها، إلى جلسة في حسابك على Ximilar أثناء العرض. ثم افتح قسم Cardstream في تطبيق Ximilar: قيمة العرض، ومنتجاته الأعلى قيمة ومجموعاته الأبرز، وكل بطاقة مع صورتها. علّم ما بيع وصحّح أي مطابقة خاطئة. أعدت التشغيل في منتصف العرض؟ مرّر معرّف الجلسة بدلًا من NEW فيستمر، حتى إن كانت قد أُغلقت. والحفظ في مساحة عمل الفريق يكون عبر --ximilar-workspace. التفاصيل هنا.

$ cardstream-web --price-stats --ximilar-stream NEW

هل أستطيع تشغيله على الشبكة المحلية ليفتح جهاز آخر الواجهة؟

لا تفعل. واجهة الويب بلا مصادقة وتحمل مفتاح API الخاص بك، فمكانها 127.0.0.1 ولا مكان غيره. الحاوية ترتبط داخليًا بالعنوان 0.0.0.0، ولهذا ينشر أمر docker run الموثَّق المنفذ على 127.0.0.1 فقط. وإن احتجت إليه فعلًا من جهاز آخر، فضع أمامه نفقًا بمصادقة من عندك بدلًا من فتح المنفذ.

$ docker run --rm -e XIMILAR_API_KEY -p 127.0.0.1:8001:8001 \
    -v cardstream-models:/models cardstream
التعرّف

ما الذي يسمّيه، وما مدى ثقته

كل مطابقة تصل مع مسافتها ومستواها والبطاقات الأخرى التي كان يمكن أن تكونها.

أي بطاقات يستطيع التعرّف عليها؟

أربع فئات ومفتاح تبديل واحد. ألعاب بطاقات التداول: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana ونحو عشرين لعبة أخرى، بطاقات فردية حديثة وقديمة تُقرأ مباشرةً من البث. والبطاقات الرياضية في كل الرياضات الكبرى، حتى النسخة الموازية والسنة. والبطاقات المقيّمة، تُقرأ من الملصق دون كسر العلبة. والقصص المصوّرة، بالعنوان والعدد والسنة. خيار واحد يحدد الفئة، أو تبدّلها نافذة الإعدادات أثناء البث. انظر القائمة الكاملة.

ماذا يحدث حين يسمّي بطاقة خاطئة؟

تراه قبل أن يقع. كل مطابقة تحمل المسافة الخام ومستوى High / Medium / Low، والحدّان عند 0.30 و0.40، ومعها بطاقات بديلة محتملة حتى أربع، والصحيحة في الغالب ضمن هذه القائمة القصيرة. اضبط عتبة للنتائج فلا يصل ما دونها إلى التراكب أصلًا. وإن كان العرض كله لعبة واحدة أو مجموعة واحدة، فالتحديد المسبق يضيّق البحث قبل أن يبدأ: أخبره باللعبة أو رمز المجموعة أو نظام الكتابة فتكفّ نقطة النهاية عن تخمينها.

مفتوح المصدر. على أجهزتك. بثّك أنت وأدواتك أنت.

لا منصة وسيطة ولا ترخيص لكل مستخدم: اربط Ximilar API أو نظام التعرّف الخاص بك، وسيرسل إليه cardstream طلبًا واحدًا لكل بطاقة مختلفة بدلًا من طلب لكل إطار. سواء كنت تفتح الصناديق على Whatnot، أو تقدّم عرضًا على طريقة Fanatics Live، أو تبثّ من منظومة تجارة مباشرة بنيتها بنفسك، شغّل cardstream الليلة على الأجهزة التي تملكها أصلًا.