cardstream
Dokumentation

Dokumentation

Alt kører på din egen computer: Installer det, giv det et kamera, og bestem, hvornår det må sende et kald. Ordnet efter, hvad du gerne vil gøre.

Installer og kør

Fra ingenting til et kort på skærmen

Én kommando installerer klienten, modelvægtene og de to shims. Den eneste adgangsoplysning i hele systemet er din Ximilar-nøgle.

Installationsscriptet

Opretter et venv i ~/.cardstream, kontrollerer releasens wheel mod dens kontrolsummer, henter modelvægtene og lægger begge kommandoer på din PATH. De andre metoder (wheel, Docker, kildekode) står på downloadsiden.

$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh
Alle installationsmetoder →

Manuel installation

Et checkout og pip virker også. Extras er uafhængige af hinanden: [client] er brugerfladen og kilderne, [onnx] eller [torch] leverer backends til detektoren og embeddingmodellen.

$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream
$ pip install -e '.[client,onnx]'

Din Ximilar-nøgle

Identifikationen drives af Ximilar collectibles/v2. XIMILAR_API_KEY er den eneste miljøvariabel, der overhovedet bliver læst. Alt andet er et flag.

$ export XIMILAR_API_KEY=your-key

Første kørsel

Åbner brugerfladen i browseren med dit webcam. Hold et kort op: Overlayet viser, hvordan tilstandsmaskinen tænker, og derefter matchet, når det lander.

$ cardstream-web
# → http://127.0.0.1:8001

Tjek, hvad du har

Begge kommandoer udskriver deres version og afslutter. Der skal ingen modelfiler til, så det virker, i samme øjeblik installationen er færdig.

$ cardstream-web --version
cardstream 0.5.0

Headless, til faste setups

Den samme pipeline uden browser: Resultaterne udskrives i terminalen. Samme flag som cardstream-web, én proces ved siden af kameraet.

$ cardstream-client --source 0
Brug det

Giv det dit show

Kilderne kan udskiftes, og analysen er den samme, uanset hvilken du vælger. Alt er et flag, og indstillingsdialogen justerer de vigtige live.

Webcams og filer

Browserens webcam er standard for cardstream-web. Et indeks, en videofil eller et stillbillede virker alle steder. Godt til at teste før showet.

$ cardstream-web # browserens webcam
$ cardstream-client --source clip.mp4

Hent en stream

Peg det mod et IP-kamera, en encoder eller en restreamer: rtsp://, rtmp://, srt:// og ws://-feeds med JPEG, med genopkobling og begrænset backoff.

$ cardstream-web --source rtsp://cam/stream1

Lad OBS sende

Kør det som lytter, og tilføj ét ekstra RTMP- eller SRT-output i OBS. Kræver systemets ffmpeg-program (brew install ffmpeg).

$ cardstream-web --source rtmp://0.0.0.0:1935/live --listen

Forhåndsvalg indsnævrer søgningen

Spil, sætkode og skriftsystem valideres lokalt, før de sendes. Angiv altid --alphabet, når du angiver --game: Et forhåndsvalgt spil forhindrer endpointet i selv at genkende alfabetet.

$ cardstream-web --game "Pokémon" --alphabet japanese --set-code M4

Indstillingsdialogen

Kategori, spil, sætkode, alfabet og tærskler kan justeres fra browseren midt i streamen, uden genstart, og felterne har samme validering som processen.

Tre opløsninger at skrue på

Hvad kameraet optager, hvad der sendes, og hvad der analyseres, er tre forskellige tal. Analysen kører i lille format, og udsnittet til identifikation skæres ud af det fulde billede.

$ cardstream-web --camera-width 3840 --width 1280
Gennemgå showet

Gem showet, og gennemgå det senere

Slået fra som standard. Ét flag gemmer den historik, siden opbygger (hvert kort, du har vist, med sit udsnit), i en session på din egen Ximilar-konto, så showet stadig er der morgenen efter.

Historikken med miniaturer

Brugerfladen i browseren viser hvert kort, du har vist, med det nyeste øverst: en miniature af det udsnit, der blev identificeret, prisen med --price-stats, og hvor længe kortet blev på streamen. Den liste ligger på din egen computer.

Gem et show

--ximilar-stream NEW starter en session og udskriver dens id. Derfra gemmes hver række i historikken, mens showet kører: Uploads samles i baggrunden, forsøges igen ved netværksfejl og holder aldrig showet tilbage. Ved en normal afslutning uploades resten, og sessionen lukkes.

$ cardstream-web --game "Pokémon" --alphabet latin \
    --price-stats --ximilar-stream NEW
Alt om at gemme et show →

Hvad der uploades

Rækkerne som tekst (kort, sæt, pris, tid på streamen, de betalte kald bag dem) og det udsnit, hver række blev identificeret ud fra, på højst 1024 px: det billede, identifikationskaldet allerede har modtaget. Med --no-ximilar-stream-images gemmes der kun tekst. Din Ximilar-konto skal have tjenesten Cardstream.

$ cardstream-web --ximilar-stream NEW --no-ximilar-stream-images

Gennemgå det i Ximilar-appen

Hver session lander i Cardstream-sektionen i Ximilar-appen: hvad du viste og hvornår, showets værdi, de mest værdifulde produkter og de hyppigste sæt, og hvert kort med sit udsnit. Marker, hvad der blev solgt, ret et forkert match, og tilføj noter.

Åbn Ximilar-appen →

Fortsæt efter en genstart

Angiv sessionens id i stedet for NEW, og showet fortsætter i samme session. Selv hvis en normal afslutning har lukket den, åbnes den bare igen. Kun starten af en session bliver faktureret, så det koster ingenting at fortsætte.

$ cardstream-web --ximilar-stream <session-id>

Team-workspaces

En session gemmes i standard-workspacet for din API-nøgle. Vælg et andet med --ximilar-workspace, og angiv samme id, når du fortsætter en session, der er gemt der.

$ cardstream-web --ximilar-stream NEW \
    --ximilar-workspace <workspace-id>
Kør det med ro i maven

Ét identifikationskald pr. nyt kort

Lokale signaler (bevægelse, detektion, identitetsfilteret) afgør, hvornår et identifikationskald faktisk er berettiget. Her er de knapper, du kan skrue på for at holde det ærligt.

Tærskler

En resultattærskel holder svage match væk fra overlayet. Lighedstærsklen afgør, om det er samme kort eller et nyt. Forget-after rydder hukommelsen, når et kort har været væk længe nok.

$ cardstream-web --result-threshold 0.35

Den anbefalede kørsel

RF-DETR-segmentering med et identitetsfilter på ONNX-embeddings: standardindstillingerne, som de leveres. En cardstream-web uden flag kører præcis dette, når vægtene er på plads. Skriver du det ud, er det den samme pipeline.

$ cardstream-web \
    --segmentor-model model/segmentation/onnx/model.onnx \
    --embed-model model/similarity/onnx/model.onnx

Hold det på localhost

Den lokale app har ingen adgangskontrol og ligger inde med din API-nøgle. --host er som standard 127.0.0.1. Lad den blive der, og åbn aldrig porten mod et lokalnetværk.

“Model not found” ved opstart

Modelvægtene hentes separat og er ikke en del af repoet. Installationsscriptet og Docker-imaget henter dem. Et rent checkout skal have dem lagt i model/segmentation/ og model/similarity/, og det klarer scripts/build-from-source.sh --models for dig.

Angiv det spil, du viser

I et show med ét spil behøver endpointet ikke gætte spillet ved hvert kald. Angiv det, og søgningen indsnævres til det spil: hurtigere svar, færre forkerte udgaver. Angiv --alphabet sammen med det, for et forhåndsvalgt spil forhindrer endpointet i selv at genkende skriftsystemet.

$ cardstream-web --game "Pokémon" --alphabet japanese

ffmpeg, når du får brug for det

--listen og --ffmpeg kalder systemets ffmpeg-program. Almindelige pulls virker med en ren pip-installation. Opsætningen, hvor OBS sender, gør ikke.

Gå i dybden

Ud over standardindstillingerne

Skift modellerne ud, eller læs koden: Hele pipelinen er én installerbar pakke.

Brug dine egne vægte

Detektionen og identitetsfilteret vælger backend selv: Modelfamilien bestemmer klassen, filendelsen bestemmer runtime. RF-DETR eller RT-DETRv2, .onnx eller en transformers-mappe.

Modelbackends →

Modelkataloget

Alle de vægte, cardstream kan indlæse, trænet af Ximilar og udgivet under Apache-2.0 sammen med releaserne: hvad hver model gør, hvor hurtigt den kører, og hvilken licens den har.

Modelkatalog →

Kort fortalt

Hvad det koster, hvad der forlader computeren, hvilke kort det kan genkende, og de to kommandoer, der fjerner det igen.

Læs FAQ →

README og issues

README-filen dækker alle flag, og issues er stedet for fejl og spørgsmål.

Læs README →

Releases og artefakter

Wheels, kontrolsummer og installationsscriptet, én samling pr. release, plus Docker og build fra kildekode.

Til downloadsiden →