cardstream
Dokumentation

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.

Installera och kör

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
Använd det

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
Gå igenom sändningen

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 NEW
Allt 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>
Drift du kan lita på

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.

Gå djupare

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 →