Dokumentation
Allt körs på din dator: installera det, rikta en kamera mot det och ställ in när det får göra anrop. Ordnat efter vad du försöker göra.
Från ingenting till ett kort på skärmen
Ett enda kommando installerar klienten, modellvikterna och shim-skripten. Den enda inloggningsuppgiften i hela systemet är din Ximilar-nyckel.
Installationsskriptet
Skapar en venv i ~/.cardstream, verifierar releasens wheel mot kontrollsummorna, hämtar modellvikterna och lägger båda kommandona i din PATH. Övriga vägar (wheel, Docker, källkod) finns på nedladdningssidan.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh Alla installationssätt → Manuell installation
Ett klonat repo och pip fungerar också. Extras är oberoende av varandra: [client] är gränssnittet och källorna, [onnx] eller [torch] ger backends för detektorn och embeddingmodellen.
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream $ pip install -e '.[client,onnx]'
Din Ximilar-nyckel
Identifieringen drivs av Ximilar collectibles/v2. XIMILAR_API_KEY är den enda miljövariabel som över huvud taget läses. Allt annat är flaggor.
$ export XIMILAR_API_KEY=your-key
Första körningen
Öppnar webbgränssnittet med din webbkamera. Håll upp ett kort: overlayen visar hur tillståndsmaskinen tänker, och sedan träffen när den kommer.
$ cardstream-web # → http://127.0.0.1:8001
Kontrollera vad du har
Båda kommandona skriver ut sin version och avslutas. Inga modellfiler behövs, så det fungerar i samma stund som installationen är klar.
$ cardstream-web --version
cardstream 0.5.0 Utan webbläsare, för riggar
Samma pipeline utan webbläsare: resultaten skrivs ut i terminalen. Samma flaggor som cardstream-web, en process bredvid kameran.
$ cardstream-client --source 0 Mata det med din sändning
Källorna är utbytbara och analysen är identisk vilken du än väljer. Allt är flaggor, och de viktigaste går att ställa om live i inställningsdialogen.
Webbkameror och filer
Webbläsarens webbkamera är standard för cardstream-web; ett kameraindex, en videofil eller en stillbild fungerar överallt. Bra för att testa före sändningen.
$ cardstream-web # webbläsarens webbkamera $ cardstream-client --source clip.mp4
Hämta en stream
Rikta det mot en IP-kamera, en kodare eller en restreamingtjänst: rtsp://, rtmp://, srt:// och JPEG-flöden över ws://, med återanslutningar vars väntetid växer upp till ett tak.
$ cardstream-web --source rtsp://cam/stream1 Låt OBS skicka
Kör det som lyssnare och lägg till en extra RTMP- eller SRT-utgång i OBS. Kräver systemets ffmpeg-binär (brew install ffmpeg).
$ cardstream-web --source rtmp://0.0.0.0:1935/live --listen Förval snävar in sökningen
Spel, setkod och skriftsystem valideras lokalt innan de skickas. Ange alltid --alphabet när du anger --game, eftersom ett förvalt spel gör att slutpunkten slutar känna av alfabetet själv.
$ cardstream-web --game "Pokémon" --alphabet japanese --set-code M4
Inställningsdialogen
Kategori, spel, setkod, alfabet och trösklar går att ställa om från webbläsaren mitt i streamen, utan omstart, och reglagen har samma validering som processen.
Tre reglage för upplösning
Vad kameran fångar, vad som skickas och vad som analyseras är tre separata tal. Analysen körs i liten skala; utsnittet för identifieringen skärs ut på nytt ur hela bildrutan.
$ cardstream-web --camera-width 3840 --width 1280 Spara sändningen, gå igenom den senare
Avstängt som standard. En flagga sparar historiken som sidan bygger upp, alltså varje kort du har visat med sitt utsnitt, i en session på ditt eget Ximilar-konto, så att sändningen finns kvar morgonen efter.
Historiken, med miniatyrer
Webbgränssnittet listar varje kort du har visat, med det senaste överst: en miniatyr av utsnittet som identifierades, priset om du kör med --price-stats och hur länge kortet var med i streamen. Den listan ligger på din dator.
Spara en sändning
--ximilar-stream NEW startar en session och skriver ut dess id. Därefter sparas varje rad i historiken medan sändningen pågår. Uppladdningarna buntas ihop i bakgrunden, görs om vid nätverksfel och bromsar aldrig sändningen. Vid ett normalt avslut laddas resten upp och sessionen stängs.
$ cardstream-web --game "Pokémon" --alphabet latin \ --price-stats --ximilar-stream NEWAllt om att spara en sändning →
Vad som laddas upp
Raderna som text (kort, set, pris, tid i streamen och de betalda anropen bakom) samt utsnittet som varje rad identifierades från, högst 1024 px: samma bild som identifieringsanropet redan har fått. Med --no-ximilar-stream-images sparas enbart text. Ditt Ximilar-konto behöver tjänsten Cardstream.
$ cardstream-web --ximilar-stream NEW --no-ximilar-stream-images Gå igenom den i Ximilar-appen
Varje session hamnar under Cardstream i Ximilar-appen: vad du visade och när, sändningens värde, dess mest värdefulla produkter och vanligaste set, och varje kort med sitt utsnitt. Markera vad som såldes, rätta en felaktig träff, lägg till anteckningar.
Öppna Ximilar-appen →Fortsätt efter en omstart
Ange sessionens id i stället för NEW så fortsätter sändningen i samma session. Även om ett normalt avslut har stängt den öppnas den helt enkelt igen. Bara starten av en session debiteras, så det kostar ingenting att fortsätta.
$ cardstream-web --ximilar-stream <session-id>
Arbetsytor för team
En session sparas i standardarbetsytan för din API-nyckel. Välj en annan med --ximilar-workspace, och ange samma id när du fortsätter en session som har sparats där.
$ cardstream-web --ximilar-stream NEW \ --ximilar-workspace <workspace-id>
Ett identifieringsanrop per unikt kort
Lokala signaler (rörelse, detektering och identitetsspärren) avgör när ett identifieringsanrop faktiskt är motiverat. Det här är reglagen som håller ordning på det.
Trösklar
En resultattröskel håller svaga träffar borta från overlayen, likhetströskeln avgör om det är samma kort eller ett nytt, och forget-after rensar minnet när ett kort har varit borta tillräckligt länge.
$ cardstream-web --result-threshold 0.35 Den rekommenderade körningen
RF-DETR-segmentering med en identitetsspärr på ONNX-embeddingar: standardinställningarna som följer med. Ett cardstream-web utan flaggor kör exakt detta så snart vikterna är på plats; skriver du ut alltihop får du samma pipeline.
$ cardstream-web \ --segmentor-model model/segmentation/onnx/model.onnx \ --embed-model model/similarity/onnx/model.onnx
Håll det på localhost
Den lokala appen saknar inloggning och har din API-nyckel. --host är som standard 127.0.0.1. Låt det vara så, och exponera aldrig porten mot ett LAN.
”Model not found” vid start
Modellvikterna laddas ner separat och ingår inte i repot. Installationsskriptet och Docker-imagen hämtar dem; i ett nyklonat repo måste de läggas i model/segmentation/ och model/similarity/, och scripts/build-from-source.sh --models gör det åt dig.
Ange vilket spel du visar
I en sändning med ett enda spel behöver slutpunkten inte gissa spelet vid varje anrop. Ange det så begränsas sökningen till det spelet: snabbare svar och färre felaktiga utgåvor. Skicka med --alphabet samtidigt, eftersom ett förvalt spel gör att slutpunkten slutar känna av skriftsystemet själv.
$ cardstream-web --game "Pokémon" --alphabet japanese
ffmpeg, när du behöver det
--listen och --ffmpeg anropar systemets ffmpeg-binär. Vanlig hämtning fungerar med en installation som bara använder pip, men upplägget där OBS skickar gör det inte.
Bortom standardinställningarna
Byt modeller eller läs koden: hela pipelinen är ett enda installerbart paket.
Ta med dina egna vikter
Detekteringen och identitetsspärren väljer backend själva: modellfamiljen avgör klassen och filändelsen avgör körmiljön. RF-DETR eller RT-DETRv2, .onnx eller en transformers-katalog.
Modellbackends →Modellkatalogen
Alla vikter som cardstream kan läsa in, tränade av Ximilar och publicerade under Apache-2.0 tillsammans med releaserna: vad var och en gör, hur snabbt den går och vilken licens den har.
Modellkatalog →Korta frågor, korta svar
Vad det kostar, vad som lämnar datorn, vilka kort det känner igen och de två kommandon som tar bort det igen.
Läs vanliga frågor →README och issues
README går igenom varje flagga; issues är platsen för buggar och frågor.
Läs README →Releaser och artefakter
Wheel-filer, kontrollsummor och installationsskriptet, en uppsättning per release, plus Docker och bygge från källkod.
Nedladdningssidan →