সচরাচর জিজ্ঞাসা
যে প্রশ্নগুলো সবচেয়ে বেশি আসে: ইনস্টল করা ও মুছে ফেলা, খরচ, আপনার কম্পিউটার ছেড়ে কী বাইরে যায়, আর এটি কী কী চিনতে পারে। এর চেয়ে লম্বা সবকিছু আছে ডকস হাবে।
ইনস্টল, আপডেট, আনইনস্টল
ইনস্টল স্ক্রিপ্ট আপনার কম্পিউটারে ঠিক দুটি জায়গায় হাত দেয়, আর দুটোই আপনি চাইলে মুছে ফেলতে পারেন।
চালাতে কী কী লাগে?
Python 3.11 বা তার পরের ভার্সনসহ একটি কম্পিউটার, মোটামুটি এটুকুই। একই pure-Python রিলিজে macOS arm64, Linux amd64 ও Windows amd64 সবই চলে, GPU লাগে না। সিস্টেমের ffmpeg বাইনারি লাগে শুধু পুল ও লিসেন সোর্সের জন্য (RTSP, RTMP, SRT); ওয়েবক্যাম, ফাইল বা ব্রাউজার UI‑এর জন্য লাগে না।
ইনস্টল স্ক্রিপ্ট কোথায় কী রাখে?
দুটি জায়গায়। ~/.cardstream হলো ইনস্টলের মূল ফোল্ডার: venv/-এ একটি virtualenv আর models/-এ মডেল ওয়েট। দুটি কমান্ড, cardstream-web ও cardstream-client, আসলে ~/.local/bin-এ লেখা ছোট দুটি লঞ্চার স্ক্রিপ্ট (shim); এগুলো মডেলের পাথ আগে থেকে বসিয়ে venv‑এর বাইনারি চালায়, তাই আপনি যে ফ্ল্যাগই দিন, সেটিই প্রাধান্য পায়। দুটি জায়গাই CARDSTREAM_HOME ও INSTALL_DIR দিয়ে সরানো যায়। কম্পিউটারের আর কিছুতেই হাত পড়ে না; বিশেষ করে স্ক্রিপ্ট কখনো আপনার শেল প্রোফাইল বদলায় না: ~/.local/bin আপনার PATH-এ না থাকলে এটি শুধু জানিয়ে দেয়, বদলটা আপনার হাতেই ছেড়ে রাখে।
নতুন ভার্সনে কীভাবে আপডেট করব?
একই এক লাইনের কমান্ডটি আবার চালান। এটি আগের virtualenv‑এই চলতি রিলিজ ইনস্টল করে আর shim দুটি নতুন করে লেখে। ~/.cardstream/models-এ আগে থেকে থাকা ওয়েটে হাত দেয় না (ওয়েট নামানো হয় শুধু না থাকলে), তাই আপডেট মানে ছোট একটি ডাউনলোড, আবার সিকি গিগাবাইট নয়। সর্বশেষটির বদলে নির্দিষ্ট কোনো রিলিজ চাইলে CARDSTREAM_VERSION সেট করুন।
# একই এক লাইনের কমান্ড; /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 সেট করে ইনস্টল করে থাকলে তার বদলে ওই পাথগুলো মুছুন, আর shim কোনো সিস্টেম ডিরেক্টরিতে বসিয়ে থাকলে sudo ব্যবহার করুন। নিজের হাতে যা যোগ করেছিলেন, তা সরানোর কাজটিও আপনার: শেল প্রোফাইলের PATH লাইন, XIMILAR_API_KEY এক্সপোর্ট, আর --store-images ফ্ল্যাগে দেওয়া যেকোনো ফোল্ডার। অ্যাপ আপনার হোম ডিরেক্টরিতে আর কিছু লেখে না। নতুন একটি শেলে command -v cardstream-web চালিয়ে দেখে নিন, সত্যিই মুছেছে কি না; পুরোনো শেল hash -r না চালানো পর্যন্ত আগের খোঁজ ক্যাশে রেখে দেয়।
খরচ কত, আর কী কী লাগে
মাঝখানে কোনো প্ল্যাটফর্ম নেই: হার্ডওয়্যার আপনার, API কী আপনার, আর এমন একটি ইঞ্জিন, যার কাজই হলো যত কম সম্ভব কল করা।
আমার কি Ximilar API কী লাগবে?
ডিফল্ট শনাক্তকরণ পথের জন্য হ্যাঁ, আর পুরো সিস্টেমে এটিই একমাত্র ক্রেডেনশিয়াল। ximilar.com থেকে একটি API কী নিন, আর শুরু করার আগে 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 id। এর পেছনের শনাক্তকরণ ধাপটি স্রেফ একটি এন্ডপয়েন্ট; তাই একে নিজের শনাক্তকরণ সিস্টেমের দিকে ঘুরিয়ে দিলেও সামনের প্রতিটি ফিল্টার, থ্রটল ও কুলডাউন যেমন ছিল তেমনই থাকে। দেখুন মডেল ব্যাকএন্ড ও মডেল ক্যাটালগ।
হার্ডওয়্যার, স্ট্রিম আর নিরাপদ থাকা
যে কম্পিউটার থেকে আগে থেকেই স্ট্রিম করেন, সেটিতেই শোয়ের পাশাপাশি চলে।
GPU কি লাগবে?
না। সঙ্গে আসা ওয়েটগুলো CPU‑এর উপযোগী করে বানানো ONNX এক্সপোর্ট, আর লোকাল ইঞ্জিন যা যা করে (মোশন ফিল্টার, ডিটেকশন থ্রটল, “একই কার্ড, নাকি নতুন?” প্রশ্নের উত্তর দেওয়া এমবেডিং), সবই চলে আপনার হাতে থাকা প্রসেসরে। নিজের বেশি নির্ভুল ওয়েট চালাতে চাইলে GPU একটি বিকল্প, ডিফল্টের জন্য কখনোই শর্ত নয়।
Whatnot বা Fanatics Live‑এর সঙ্গে কি চলে?
হ্যাঁ, তবে মার্কেটপ্লেসের ভেতরে ঢুকে নয়; আপনি যে ভিডিও আগে থেকেই তৈরি করছেন, এটি সেখান থেকেই একটি কপি নেয়। OBS‑এর ভার্চুয়াল ক্যামেরা, প্ল্যাটফর্মে যাওয়া আউটপুটের পাশে দ্বিতীয় একটি RTMP বা SRT আউটপুট, এনকোডার থেকে RTSP পুল, কিংবা একই ম্যাটের দিকে তাক করা এর নিজের একটি ক্যামেরা। লাইভে বিক্রির গাইডে চারটি উপায়ই শুরু থেকে শেষ পর্যন্ত দেখানো আছে।
আমার কম্পিউটার ছেড়ে আসলে কী বাইরে যায়?
ক্লায়েন্ট-সাইড মোডে আলাদা প্রতিটি কার্ডে একটি JPEG ক্রপ; স্ট্রিম নয়, তার আশপাশের ফ্রেম নয়, ম্যাটের বাকি অংশও নয়। কিছু পাঠানো হবে কি না, সেই প্রতিটি সিদ্ধান্ত আগে লোকালভাবেই হয়; তাই যে এক ঘণ্টার ভিডিওতে আপনি এক শ কার্ড দেখান, তা মানে এক শটি ছোট রিকোয়েস্ট। একটিই ব্যতিক্রম আছে, আর সেটি চালু করা আপনার হাতে: --ximilar-stream দিলে শোয়ের ইতিহাসও (প্রতি কার্ডে একটি টেক্সট সারি আর যে ক্রপ থেকে সেটি শনাক্ত হয়েছিল) আপনার নিজের Ximilar অ্যাকাউন্টের একটি সেশনে সেভ হয়। ডিফল্টভাবে বন্ধ, আর --no-ximilar-stream-images দিলে শুধু টেক্সটই যায়।
শো শেষে কি পর্যালোচনা করা যায়?
হ্যাঁ, যদি সেভ করেন। --ximilar-stream NEW দিয়ে শুরু করুন; ইতিহাসে থাকা প্রতিটি কার্ড (দাম, স্ট্রিমে থাকার সময় আর যে ক্রপ থেকে সেটি শনাক্ত হয়েছিল, সবসহ) শো চলতে চলতেই আপনার Ximilar অ্যাকাউন্টের একটি সেশনে চলে যায়। পরে Ximilar অ্যাপের Cardstream অংশ খুলুন: শোয়ের মোট মূল্য, সবচেয়ে দামি পণ্য ও শীর্ষ সেট, ছবিসহ প্রতিটি কার্ড; কী বিক্রি হলো চিহ্নিত করুন আর ভুল ম্যাচ ঠিক করুন। শোয়ের মাঝখানে রিস্টার্ট করতে হলো? NEW-এর জায়গায় সেশন id দিন, সেশন বন্ধ হয়ে গিয়ে থাকলেও শো চলতে থাকবে। টিমের ওয়ার্কস্পেসে সেভ করতে লাগে --ximilar-workspace। বিস্তারিত এখানে।
$ cardstream-web --price-stats --ximilar-stream NEW LAN‑এ চালিয়ে অন্য কম্পিউটার থেকে UI খোলা যাবে?
না, করবেন না। ওয়েব UI‑তে কোনো লগইন নেই, আর এতে আপনার 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 আর আরও প্রায় 20টি গেম; নতুন ও ভিনটেজ সিঙ্গেল কার্ড, সরাসরি স্ট্রিম থেকে পড়া। সব বড় খেলার স্পোর্টস কার্ড, প্যারালাল আর সাল পর্যন্ত মিলিয়ে। গ্রেডেড স্ল্যাব, কেস না ভেঙে লেবেল থেকে পড়া। আর কমিকস: শিরোনাম, সংখ্যা ও সাল ধরে। একটি ফ্ল্যাগেই ক্যাটাগরি ঠিক হয়, অথবা স্ট্রিমের মাঝখানে সেটিংস ডায়ালগ থেকে বদলে নেওয়া যায়। পুরো তালিকা দেখুন।
ভুল কার্ডের নাম বললে কী হয়?
আপনি আগেই টের পাবেন। প্রতিটি ম্যাচের সঙ্গে থাকে কাঁচা দূরত্ব আর উচ্চ / মাঝারি / নিম্ন স্তর (সীমা 0.30 ও 0.40‑এ), সঙ্গে সর্বোচ্চ চারটি বিকল্প কার্ড, যেগুলো এটি হতে পারত; ঠিক কার্ডটি সাধারণত ওই ছোট তালিকাতেই থাকে। ফলের একটি থ্রেশহোল্ড ঠিক করে দিন, তার নিচের কিছুই আর ওভারলে পর্যন্ত পৌঁছাবে না। পুরো শো এক গেম বা এক সেটের হলে প্রিফিল শুরুর আগেই খোঁজার পরিসর ছোট করে দেয়: গেম, সেট কোড বা লিপি বলে দিন, এন্ডপয়েন্টকে সেগুলো আর আন্দাজ করতে হবে না।
ওপেন সোর্স। সেলফ-হোস্টেড। স্ট্রিম আপনার, স্ট্যাকও আপনার।
মাঝখানে কোনো প্ল্যাটফর্ম নেই, ব্যবহারকারীপ্রতি লাইসেন্সও নেই: Ximilar API বা নিজের শনাক্তকরণ সিস্টেম যুক্ত করুন, cardstream তাতে কল করবে আলাদা প্রতিটি কার্ডে একবার, প্রতি ফ্রেমে নয়। Whatnot‑এ বক্স ব্রেক করুন, Fanatics Live‑এর মতো শো চালান কিংবা নিজের লাইভ কমার্স সেটআপ থেকে স্ট্রিম করুন, cardstream আজ রাতেই চালু করুন হাতে থাকা হার্ডওয়্যারে।