डॉक्यूमेंटेशन
सब कुछ आपकी मशीन पर चलता है: इसे इंस्टॉल करें, इसके सामने कैमरा लगाएं और तय करें कि इसे कब कॉल करने की इजाज़त है। आप जो करना चाहते हैं, उसी के हिसाब से बंटा हुआ।
शून्य से स्क्रीन पर कार्ड तक
एक कमांड क्लाइंट, मॉडल वेट्स और शिम, तीनों इंस्टॉल कर देती है। पूरे सिस्टम का अकेला क्रेडेंशियल आपकी Ximilar कुंजी है।
इंस्टॉल स्क्रिप्ट
~/.cardstream में एक venv बनाती है, रिलीज़ के wheel को उसके चेकसम से जांचती है, मॉडल वेट्स डाउनलोड करती है और दोनों कमांड आपके PATH में डाल देती है। बाकी तरीके (wheel, Docker, सोर्स) डाउनलोड पेज पर हैं।
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh इंस्टॉल के सभी तरीके → मैन्युअल इंस्टॉल
चेकआउट और 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 इमेज उन्हें खुद ले आते हैं; सीधे चेकआउट में उन्हें 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 पढ़ें →रिलीज़ और आर्टिफ़ैक्ट
wheel, चेकसम और इंस्टॉल स्क्रिप्ट, हर रिलीज़ के साथ एक सेट, और साथ में Docker और सोर्स बिल्ड।
डाउनलोड पेज →