cardstream
Functies

Kaartanalyse voor streamers. Snel en nauwkeurig.

cardstream is een toestandsmachine rond een endpoint voor kaartidentificatie. Alles hieronder maakt de identificatie beter, of zorgt ervoor dat ze alleen plaatsvindt als ze het betalen echt waard is.

Herkenning

Realtime kaartidentificatie vanuit elke stream

Vier identificatie-endpoints achter één schakelaar: verzamelkaartspellen, sportkaarten, graded slabs en comics.

De hele match, in één plat object

Naam, volledige naam, set, setcode, kaartnummer, serie, jaar en subcategorie komen als één object per geïdentificeerde kaart binnen: klaar om voor te lezen, te loggen of door te sturen naar je eigen tools.

Betrouwbaarheid waar je iets mee kunt

Elke match heeft de ruwe afstand en een niveau High / Medium / Low (grenzen bij 0.30 en 0.40). Stel een resultaatdrempel in en kaarten daaronder bereiken de overlay nooit.

Alternatieve matches

Bij elk resultaat komen tot vier andere kaarten die het ook had kunnen zijn. Is de bovenste match fout, dan staat de juiste meestal in dat korte lijstje.

Vooraf invullen verkleint de zoekruimte

Geef het spel, de setcode of het schrift op en het endpoint hoeft ze niet meer te raden. De waarden worden lokaal gecontroleerd: een typfout loopt op je eigen machine vast in plaats van stilletjes de verkeerde druk terug te geven.

Categorie per show

Eén flag, of tijdens de stream via het instellingenvenster: tcg, sport, slab of comics. Bij het wisselen vervalt elke vooraf ingevulde waarde die de nieuwe categorie niet kent, in plaats van dat die een waarde krijgt waar ze niets mee kan.

Voorkant, achterkant en rotatie

Bekende eigenschappen gaan met de uitsnede mee, zodat het endpoint classifiers overslaat die het niet nodig heeft: minder dat mis kan gaan, snellere antwoorden.

De beslis-engine

Snelle analyse van livestreams met AI

Eén toestandsmachine, gedeeld door beide deploymentvarianten. Alles hier draait op je eigen CPU, voordat er iets de machine verlaat.

Bewegingsfilter

Een gemiddeld verschil tussen frames zegt of het beeld tot rust is gekomen. Zolang de kaart nog door het beeld beweegt, gebeurt er verderop niets.

Identiteitsfilter

Een AI-model vergelijkt elke kaart in beeld via een embedding met de vorige. Het beantwoordt één vraag: dezelfde kaart, of een nieuwe?

Detectiebegrenzing in drie standen

De detectie draait vaak zolang er iets beweegt, zelden bij een stilstaande kaart en nauwelijks bij een lege mat. De standen zijn configuratie per kant, geen code.

Afkoeltijd, geen herhaalpoging, vergeten na afwezigheid

Een kaart die niet matchte, wordt niet eindeloos opnieuw geprobeerd; een kaart die in beeld blijft, wordt niet opnieuw geïdentificeerd; een kaart die lang genoeg weg is geweest, wordt bij terugkomst opnieuw geanalyseerd.

Aanroepbewaking en watchdog

Er loopt één identificatie tegelijk, met een minimuminterval en een timeout die de pipeline losmaakt als het endpoint blijft hangen. Een trage aanroep legt de stream nooit stil.

Supersnelle resultaten

De AI-modellen achter cardstream draaien op je eigen computer. Het systeem is erg snel en je hebt geen GPU nodig.

Invoer

Ondersteunde videobronnen en -typen

Bronnen zijn verwisselbaar; de analyse is dezelfde, welke je ook kiest.

Camera’s en bestanden

Een webcamindex, een videobestand, een stilstaand beeld, of de webcam van de browser als je de web-UI draait. Handig om een opstelling vóór de show te testen.

Ophalen: RTSP, RTMP, SRT

Richt het op een IP-camera, een encoder of een restreamer en het haalt de stream op, met een begrensde backoff bij het opnieuw verbinden als de feed wegvalt.

Pushen: OBS rechtstreeks erin

Draai het als listener en laat OBS er RTMP of SRT naartoe pushen: één extra uitvoer naast degene die je marktplaats voedt.

WebSocket-JPEG-feeds

Voor zelfgebouwde opstellingen: elk proces dat JPEG-frames over een socket kan sturen, is een geldige bron.

Drie resolutieknoppen

Wat de camera opneemt, wat er wordt verstuurd en wat er wordt geanalyseerd, zijn aparte getallen. De analyse draait klein en goedkoop; de uitsnede die ter identificatie wordt verstuurd, wordt opnieuw uit het volledige frame gesneden.

Je frames blijven van jou

In client-side modus verlaat niets de machine behalve één JPEG-uitsnede per nieuwe kaart: niet de stream, niet de frames eromheen. De show opslaan in je Ximilar-account is een flag die je zelf aanzet.

Modellen

Onze gewichten, of die van jou

Analyseer livestreams met ons kant-en-klare model voor de CPU. Hogere nauwkeurigheid of extreme snelheid nodig? Train je eigen model en deploy het op GPU’s!

RF-DETR-segmentatie

De standaardlocator: een gefinetunede .onnx-export voor instance-segmentatie via onnxruntime, zonder torch. Het masker geeft de vier hoeken van de kaart, dus de betaalde uitsnede is rechtgetrokken en strak langs de kaartrand gesneden.

RF-DETR- / RT-DETRv2-detectie

Bounding boxes als alternatief dat je zelf aanzet: ONNX voor snelheid, of een transformers-map of hub-id zolang je nog aan een finetune sleutelt.

Gewichten inbegrepen

De RF-DETR-locator en het embeddingmodel zijn door Ximilar getraind en gepubliceerd onder Apache-2.0. De installer haalt ze op, dus er zit geen trainingsstap tussen jou en een werkende pipeline.

Backends voor de embedder

Embeddingmodellen in Torch, ONNX of LiteRT/TFLite voor het identiteitsfilter: gebruik de runtime die je al op de machine hebt.

Zware imports blijven lazy

Torch is geen dependency van de kern. Installeer alleen de extras die je backends nodig hebben, en al het andere draait gewoon.

Elke identificatiedienst

De identificatie-aanroep is één verwisselbare stap. Laat hem wijzen naar Ximilar, naar een commerciële herkenner of naar een model dat je zelf host.

In gebruik

Eén proces, naast de camera

De detectie en de filters draaien op je machine, vanuit één installeerbaar pakket, en de ene identificatie-aanroep gaat van daaruit rechtstreeks naar de API.

Twee ingangen, één pipeline

Een headless commando voor vaste opstellingen en scripts, en een lokale browser-UI als je wilt meekijken. Beide nemen dezelfde flags en bouwen dezelfde pipeline.

Eén inloggegeven, lokaal bewaard

Je Ximilar-sleutel, uitgelezen uit de omgeving op je eigen machine. Geen account om hier aan te maken, geen tussenlaag om te vertrouwen, niets om draaiende te houden behalve het proces zelf.

Niets blokkeert de loop

JPEG-decodering, detectie, HTTP en schrijven naar schijf draaien allemaal buiten de event-loop. Een traag frame wordt overgeslagen en komt niet in een rij die een groeiende achterstand wordt.

Instellingenvenster, live

Drempels, categorie, spel, setcode en schrift zijn tijdens de stream vanuit de browser bij te stellen. Elke knop komt bovendien uit één lijst met descriptors, zodat de UI en de validatie niet uit elkaar kunnen groeien.

Een overlay gemaakt voor streams

Statusbadge, bounding box en een geschiedenis van elke kaart die je hebt laten zien (een thumbnail van elke kaart en de tijd dat hij in beeld bleef), die je met één flag in je Ximilar-account opslaat. Een debugpaneel als je de filters wilt zien nadenken.

Offline testsuite

De hele suite draait zonder netwerk en zonder modelbestand: fakes voor de ONNX-sessies en de detectoren. Fork het en je ziet nog steeds of je iets hebt stukgemaakt.

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.