cardstream
FAQ

Veelgestelde vragen

De vragen die het vaakst terugkomen: installeren en verwijderen, wat het kost, wat je machine verlaat en wat het kan benoemen. Alles wat langer is, staat in het docs-overzicht.

Installeren en verwijderen

Installeren, bijwerken, verwijderen

Het installatiescript komt op precies twee plekken op je machine, en beide mag je zo weer weggooien.

Wat heb ik nodig om het te draaien?

Een machine met Python 3.11 of nieuwer, en veel meer is het niet. macOS arm64, Linux amd64 en Windows amd64 vallen allemaal onder dezelfde pure-Python-release, zonder GPU. De ffmpeg-binary van je systeem is alleen nodig voor de bronnen die een stream ophalen of erop luisteren (RTSP, RTMP, SRT); een webcam, een bestand of de browser-UI heeft hem niet nodig.

Waar zet het installatiescript alles neer?

Op twee plekken. ~/.cardstream is de installatiemap: een virtualenv in venv/ en de modelgewichten in models/. De twee commando’s, cardstream-web en cardstream-client, zijn kleine shims in ~/.local/bin; ze starten de binaries uit de venv met de modelpaden al ingevuld, dus elke flag die je meegeeft heeft voorrang. Beide locaties verplaats je met CARDSTREAM_HOME en INSTALL_DIR. Verder wordt er niets op de machine aangeraakt. Het script past in het bijzonder nooit je shellprofiel aan: staat ~/.local/bin niet in je PATH, dan meldt het dat en laat het de wijziging aan jou over.

Hoe werk ik bij naar een nieuwe versie?

Voer dezelfde regel opnieuw uit. Die installeert de huidige release in de bestaande virtualenv en schrijft de shims opnieuw. Gewichten die al in ~/.cardstream/models staan, blijven onaangeroerd (ze worden alleen opgehaald als ze ontbreken), dus een update is een kleine download en niet nog eens een kwart gigabyte. Wil je een specifieke release in plaats van de nieuwste, stel dan CARDSTREAM_VERSION in.

# dezelfde regel; /install.sh verwijst door naar het script op 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

Hoe verwijder ik het?

Met twee commando’s. Het eerste verwijdert de virtualenv en de modelgewichten, het tweede de twee shims. Verder valt er niets op te ruimen: geen daemon, geen inlogonderdeel, geen systeempakket.

$ rm -rf ~/.cardstream # venv/ + models/
$ rm -f ~/.local/bin/cardstream-web ~/.local/bin/cardstream-client

Heb je geïnstalleerd met CARDSTREAM_HOME of INSTALL_DIR ingesteld, verwijder dan die paden, en gebruik sudo als je de shims in een systeemmap hebt laten zetten. Wat je met de hand hebt toegevoegd, moet je ook zelf terugdraaien: een PATH-regel in je shellprofiel, de export van XIMILAR_API_KEY en elke map die je aan --store-images hebt meegegeven. De app schrijft verder niets in je thuismap. Controleer of het weg is met command -v cardstream-web in een nieuwe shell: de oude onthoudt het pad tot je hash -r uitvoert.

Sleutels en kosten

Wat het kost en wat het nodig heeft

Geen platform ertussen: jouw hardware, jouw sleutel, en een engine die als taak heeft zo weinig mogelijk aanroepen te doen.

Heb ik een Ximilar-API-sleutel nodig?

Voor de standaardidentificatie wel, en het is het enige inloggegeven dat het hele systeem nodig heeft. Vraag er een aan op ximilar.com en exporteer hem als XIMILAR_API_KEY voordat je start. Koppel je in plaats daarvan je eigen herkenner, dan heb je nodig wat dat endpoint vraagt, en niets van Ximilar.

$ export XIMILAR_API_KEY=your-key

Wat kost cardstream zelf?

Niets. Er is geen abonnement, geen licentie per gebruiker en er zijn geen platformkosten: één Python-pakket met een ruime licentie dat je op je eigen hardware draait, met detectiegewichten die samen met de releases onder Apache-2.0 zijn gepubliceerd. Je betaalt voor identificatie-aanroepen naar het endpoint dat je koppelt, en dat aantal laag houden is het hele doel van de lokale engine: ongeveer één aanroep per nieuwe kaart die je laat zien, zo’n honderd in een uur waarin een naïeve pipeline die bij 15 fps elk frame opstuurt er 54.000 zou doen. Een show opslaan in je Ximilar-account voegt per show één gefactureerde sessiestart toe; verdergaan na een herstart is gratis.

Kan ik mijn eigen modellen gebruiken, of mijn eigen identificatiesysteem?

Allebei. De kaartlocator en het identiteitsfilter kiezen hun backend zelf: de meegeleverde RF-DETR-export in .onnx, een RT-DETRv2-export, of een transformers-map of hub-id zolang je nog aan een finetune sleutelt. De identificatiestap daarachter is gewoon een endpoint. Laat je die naar je eigen herkenner wijzen, dan blijft elk filter, elke begrenzing en elke afkoeltijd ervoor ongewijzigd. Zie de modelbackends en het modeloverzicht.

In gebruik

Hardware, streams en veilig blijven

Het draait naast je show, op de machine waarvan je al streamt.

Heb ik een GPU nodig?

Nee. De meegeleverde gewichten zijn ONNX-exports op maat van de CPU, en alles wat de lokale engine doet (het bewegingsfilter, de detectiebegrenzing, de embedding die de vraag “dezelfde kaart of een nieuwe?” beantwoordt) draait op de processor die je al hebt. Een GPU is een optie voor je eigen, nauwkeurigere gewichten, maar nooit een vereiste voor de standaardinstellingen.

Werkt het met Whatnot of Fanatics Live?

Ja, maar niet door op de marktplaats in te pluggen: het tapt de video af die je toch al maakt. De virtuele camera van OBS, een tweede RTMP- of SRT-uitvoer naast degene die het platform voedt, een stream die het via RTSP van een encoder ophaalt, of gewoon een eigen camera die op dezelfde mat gericht staat. De gids voor liveverkopers loopt alle vier de routes van begin tot eind door.

Wat verlaat mijn machine nu echt?

In client-side modus één JPEG-uitsnede per nieuwe kaart: niet de stream, niet de frames eromheen, niet de rest van de mat. Elke beslissing over of er iets wordt verstuurd, valt eerst lokaal, dus een uur video waarin je honderd kaarten laat zien, is honderd kleine verzoeken. De enige uitzondering zet je zelf aan: met --ximilar-stream wordt ook de geschiedenis van de show (een tekstrij per kaart plus de uitsnede waarop hij is geïdentificeerd) opgeslagen in een sessie in je eigen Ximilar-account. Standaard uit, en met --no-ximilar-stream-images blijft het bij tekst.

Kan ik een show achteraf terugkijken?

Ja, als je hem opslaat. Start met --ximilar-stream NEW en elke kaart in de geschiedenis, met zijn prijs, de tijd op stream en de uitsnede waarop hij is geïdentificeerd, gaat naar een sessie in je Ximilar-account terwijl de show loopt. Open daarna het onderdeel Cardstream van de Ximilar-app: de waarde van de show, de waardevolste producten en de topsets, elke kaart met zijn afbeelding; markeer wat verkocht is en corrigeer een verkeerde match. Midden in de show opnieuw moeten starten? Geef de sessie-id mee in plaats van NEW en hij gaat verder, ook als hij al was gesloten. Opslaan in een teamworkspace doe je met --ximilar-workspace. De details.

$ cardstream-web --price-stats --ximilar-stream NEW

Kan ik het op mijn LAN draaien zodat een andere machine de UI kan openen?

Doe dat niet. De web-UI heeft geen authenticatie en bevat je API-sleutel, dus die hoort op 127.0.0.1 en nergens anders. De container bindt intern aan 0.0.0.0, en daarom publiceert de gedocumenteerde docker run de poort alleen op 127.0.0.1. Heb je hem echt vanaf een andere machine nodig, zet er dan je eigen tunnel met authenticatie voor in plaats van de poort open te zetten.

$ docker run --rm -e XIMILAR_API_KEY -p 127.0.0.1:8001:8001 \
    -v cardstream-models:/models cardstream
Identificatie

Wat het benoemt, en hoe zeker het is

Elke match komt met zijn afstand, zijn niveau en de kaarten die het ook had kunnen zijn.

Welke kaarten kan het identificeren?

Vier categorieën, één schakelaar. Verzamelkaartspellen: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana en nog een stuk of twintig, losse kaarten, modern en vintage, rechtstreeks van de stream gelezen. Sportkaarten uit alle grote sporten, tot op de parallel en het jaar. Graded slabs, gelezen van het label zonder de houder open te breken. En comics, op titel, nummer en jaar. Eén flag kiest de categorie, of je wisselt tijdens de stream in het instellingenvenster. Bekijk de volledige lijst.

Wat gebeurt er als het de verkeerde kaart noemt?

Je ziet het aankomen. Elke match heeft de ruwe afstand en een niveau High / Medium / Low (de grenzen liggen bij 0.30 en 0.40), plus tot vier alternatieve kaarten die het ook had kunnen zijn, en de juiste staat meestal in dat korte lijstje. Stel een resultaatdrempel in en alles daaronder bereikt de overlay helemaal niet. Is een hele show één spel of één set, dan verklein je de zoekruimte al voordat ze begint door vooraf in te vullen: geef het spel, de setcode of het schrift op en het endpoint hoeft ze niet meer te raden.

Open source. Zelf gehost. Jouw stream, jouw stack.

Geen platform ertussen, geen licentie per gebruiker: koppel de Ximilar-API of je eigen identificatiesysteem, en cardstream roept het één keer per nieuwe kaart aan in plaats van één keer per frame. Of je nu breaks doet op Whatnot, een show draait zoals op Fanatics Live of live verkoopt via je eigen opstelling: draai cardstream vanavond nog, op de hardware die je al hebt.