Kortgenkendelse i særklasse til dine livestreams. Bygget til breaks, pakkeåbninger og liveshows.
cardstream følger med i dit break, din pakkeåbning eller dit show og identificerer hvert samlekort, i samme øjeblik det kommer ind i billedet: navn, sæt og konfidens, live. Analyser dine liveshopping-streams med et system til sporing af kort. Til streamere, der vil vide mere.
Fra Pokémon til Magic: The Gathering
Skift kategori fra show til show, og hele motoren følger med: Detektionen, filtrene og identifikationskaldet peger alle på det rigtige endpoint. Hvert match kommer tilbage med navn, sæt, sætkode, kortnummer, serie og år.
Samlekortspil
collectibles/v2/tcg_id Moderne og vintage TCG-enkeltkort, direkte fra streamen. Endpointet læser illustrationen, rammen og teksten, så kortet bliver identificeret ud fra det samme billede, dine seere kigger på. Du skal hverken lede efter sætsymbolet eller knibe øjnene sammen for at læse kortnummeret.
- Pokémon
- Magic: The Gathering
- Yu-Gi-Oh!
- One Piece
- Lorcana
- Digimon
- Dragon Ball Super
- Flesh and Blood
- Star Wars Unlimited
- Star Wars Destiny
- MetaZoo
- Riftbound
- Weiss Schwarz
- Union Arena
- Force of Will
- Grand Archive
- Vanguard
- Marvel Champions
- Sorcery
- Final Fantasy
- Gundam
- Duel Masters
- Naruto Mythos
- Hololive
- Garbage Pail Kids
Sportskort sport_id
Rookiekort, parallels, inserts og autografkort fra alle de store sportsgrene (baseball, basketball, amerikansk fodbold, fodbold, ishockey med flere): det præcise kort, det præcise sæt, det præcise år.
Graderede kort (slabs) slab_id
Læser labelen på et graderet kort: Kortet i en slab fra PSA, BGS eller CGC bliver identificeret, uden at du skal cracke den.
Tegneserier comics_id
Forsider identificeres på samme måde som kort: titel, nummer og år, ud fra ét enkelt billede, hvor hæftet ligger stille.
Tilslut et proprietært genkendelsessystem, eller dit eget
Alt det, der afgør, om der skal kaldes, sker før selve identifikationen: Detektionen, bevægelsesfilteret og identitetsfilteret kører alle lokalt og er uafhængige af udbyderen. Selve kaldet er ét trin, der kan udskiftes: Ximilar fra start, en proprietær tjeneste til identifikation af kort eller en model, du selv har trænet og hoster på din egen hardware.
Det er én lille grænseflade: Et udsnit af kortet går ind, et match kommer ud. Implementer IdentifyTarget, og hvert filter, hver drosling og hver tærskel foran den virker præcis som før. Det er stadig ét udsnit pr. nyt kort, uanset hvem der svarer.
# dit eget genkendelsessystem, samme motor class HouseIdentifier(IdentifyTarget): def identify(self, crop_bgr): return my_service.match(crop_bgr) # ét udsnit pr. nyt kort, uanset hvad $ cardstream-web --detector rfdetr
Ét kald pr. kort, ikke pr. billede
Pointen er at holde streamanalysen nede på de kald, der faktisk fortæller dig noget nyt. Open source-alternativet til lukkede SaaS-tjenester til kortgenkendelse: ingen platform i midten og ingen licens pr. bruger. Din hardware, din API-nøgle og en tilstandsmaskine, der kun sender et kald, når kortet i billedet virkelig er nyt.
En naiv pipeline, der spørger for hvert billede (frame) ved 15 fps, affyrer 54.000 identifikationer i timen. cardstream affyrer én for hvert nyt kort, du viser: omkring hundrede på den samme time.
Samme time, samme video, samme kort: 54.000 kald mod cirka 100. Bevægelses- og identitetsfilteret kører lokalt på din egen hardware. Der går kun et kald ud, når et virkelig nyt kort ligger stille i billedet.
Intet SaaS-abonnement, ingen pris pr. bruger, ingen lock-in. Host hele stacken selv, identifikationen inklusive, eller tilslut Ximilars API.
Alt, hvad et streamet kortshow har brug for
En medvært, der aldrig overser et kort: til livesælgere på platforme som Whatnot og Fanatics Live, til box breaks, til kortbutikkers streams og til katalogisering af samlinger. Overalt, hvor et kamera møder en stak pap.
Genkendt, så snart det er i billedet
Ingen scanknap. Ingen ventetid. Vis bare kortet, så går der cirka et halvt sekund fra pap til navn, sæt og konfidens, live på streamen.
Ét kald pr. kort
Et bevægelsesfilter og et identitetsfilter baseret på embeddings kører lokalt på din egen CPU. Hold kortet stille: nul gentagne kald. Skift kort: præcis ét nyt kald.
Alle streamkilder
Webcam, videofiler, RTSP, RTMP og SRT, hentet af cardstream selv eller sendt direkte fra OBS med --listen. WebSocket-feeds med JPEG til hjemmebyggede setups.
Valgfri identifikationsbackend
Ximilar collectibles/v2 fra start, eller peg den samme motor mod et proprietært system til kortgenkendelse eller et, du selv har trænet og hoster.
Brug dine egne modeller
Vægtene til lokaliseringsmodellen er vores: en finjusteret RF-DETR-segmenteringsmodel under Apache-2.0, som installationsscriptet henter. Detektorer med bounding boxes (RF-DETR, RT-DETRv2) understøttes også, hvis du hellere vil bruge din egen eksport.
Open source, selvhostet
Én Python-pakke under en permissiv licens. Læs den, fork den, og kør den på din egen hardware. Din nøgle, dine data, din infrastruktur.
Klog nok til at vide, hvornår API’et ikke skal kaldes
Mellem din stream og API’et står en tilstandsmaskine. Hvert billede løber gennem DecisionCore, én tilstandsmaskine, der kører lokalt, og tre lokale filtre afgør, hvornår det ene API-trin faktisk er berettiget.
Detektion
lokalt · uden API-kaldFind kortets firkant, og ret den op til et rent udsnit. Det lokale bevægelsesfilter drosler detektionen i tre trin: bevægelse, stillestående kort, tomt billede.
Bevægelsesfilter
lokalt · uden API-kaldEn billig gennemsnitlig forskel mellem billeder. Først når scenen har ligget stille i N billeder, er kortet et nærmere kig værd. Bevæger det sig stadig? Vent.
Identitetsfilter
lokalt · uden API-kaldEn sammenligning af embeddings besvarer ét spørgsmål: Er det samme kort som før? Samme kort → det gemte resultat sendes ud igen.
Identifikation
ximilar · 1 kaldKun et kort, der virkelig er nyt og ligger stille, udløser en identifikation hos Ximilar: asynkront, med debounce og uden for billedløkken. Resultatet sendes tilbage live.
Streamer du på egen hånd?
Én person, ét kamera og en lang aften med breaks: Du skal ikke have en hel udviklingsafdeling for at vide, hvilket kort der er på skærmen. Tilslut den stream, du allerede kører, og lad cardstream analysere den live, uanset om du sælger på en markedsplads eller direkte fra din egen kanal.
- Whatnot
- Fanatics Live
- eBay Live
- TikTok Shop
- Twitch
- YouTube Live
- din egen hjemmeside
Ingen adgang til din konto, ingen API-nøgler til markedspladsen, ingen bot i din chat og ingen tilknytning til nogen af platformene. cardstream læser din video og intet andet.
Du streamer allerede fra OBS
Tilføj ét output mere ved siden af det, der sender dit show. Dine købere ser præcis det samme som før: En kopi af det samme signal lander i cardstream, og hvert kort, der rammer bordet, bliver identificeret undervejs. Lytteren herunder kræver systemets ffmpeg-program. Du kan også springe det ekstra output helt over og lade cardstream læse det virtuelle kamera i OBS som et almindeligt webcam.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live # peg det andet mål i OBS herhen
Eller det kamera, der allerede står på bordet
Et kamera oppefra, et capture card, telefonen som webcam: det, du åbner pakker og viser kort frem under. Analysen kører på computeren ved siden af kameraet, så som standard forlader intet andet end ét udsnit pr. kort rummet.
$ cardstream-web --source 0 # webcam · brugerflade i browseren på localhost
Eller alt, der har en URL
Encodere, switchere, restreamere, et andet studie i den anden ende af byen. cardstream henter RTSP, RTMP og SRT, og WebSocket-feeds med JPEG er der til det hjemmebyggede setup.
$ cardstream-web \
--source rtsp://studio/stream1 Live-overlay
Navn, sæt og konfidens dukker op, i samme øjeblik kortet ligger stille: klar til at blive læst højt eller lagt ind i din scene igen.
Hvert kort bliver logget
En løbende historik over alt, du har vist: en miniature af hvert kort, og hvor længe det var på streamen. Gem den på din Ximilar-konto, og gennemgå showet morgenen efter: hvad der blev solgt, og hvad det var værd.
Overkommeligt for én person
Intet platformsgebyr, ingen licens pr. bruger. Et show på tre timer er en håndfuld identifikationskald, ikke ét pr. billede.
Trin for trin: Tilslut et show på Whatnot eller Fanatics Live →
Dit show, gemt og klar til gennemsyn
cardstream kører på din egen computer og gemmer som standard ingenting. Tilføj ét flag, og hvert kort, du viser, bliver også gemt i en session på din Ximilar-konto med sin pris, sin tid på skærmen og det udsnit, det blev identificeret ud fra. Åbn Ximilar-appen efter showet, og se, hvad det var værd.
$ cardstream-web --price-stats \ --ximilar-stream NEW # udskriver sessionens id og gemmer, mens showet kører
Showet i tal
Viste produkter, betalte API-kald, markedsværdi og gennemsnitlig tid på skærmen for hver session, med de mest værdifulde produkter og de hyppigste sæt ved siden af.
Hvert kort med sit billede
Hver række gemmer kortet, sættet, nummeret, prisen og det udsnit, kortet blev identificeret ud fra. Søg i listen efter produkt eller sæt, og filtrer dine sessioner efter status, platform og dato.
Gør sessionen til dit regnskab
Marker, hvad der blev solgt, tilføj en note, ret et forkert match eller prisen på det, og slet et falsk match. Giv sessionen et navn, og tilknyt dine egne metadata: et lotnummer, omkostninger, købere.
Fortsæt, hvor du slap
Genstartet midt i showet? Angiv sessionens id i stedet for NEW, og showet fortsætter i samme session, også selvom den var lukket. Med --ximilar-workspace gemmes det i et team-workspace.
Slået fra som standard: Uden --ximilar-stream er identifikationskaldet det eneste, der forlader din computer. Lagring kræver tjenesten Cardstream på din Ximilar-konto. Kun starten af en session bliver faktureret, og med --no-ximilar-stream-images gemmes der kun tekst.
Fra nul til live-identifikation i 3 trin
Installer det
Et virtualenv, releasens wheel (kontrolleret mod sin kontrolsum), modelvægtene og begge kommandoer på din PATH. Brug scriptet, installer samme wheel fra PyPI med pip (vægtene hentes separat), eller klon repoet, og byg det selv. Docker og Windows finder du på downloadsiden.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh # andre installationsmetoder → cardstream.ai/download
$ pip install 'cardstream[client,onnx]' # eller: uv tool install 'cardstream[client,onnx]' # wheel-filen har ingen vægte: pak de to tarballs fra cardstream.ai/models ud, # og peg flagene på dem: $ cardstream-web --segmentor-model segmentation_model/onnx/model.onnx \ --embed-model similarity_model/onnx/model.onnx
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream $ ./scripts/build-from-source.sh --models $ source .venv/bin/activate
Tilslut et identifikationssystem
Ximilar collectibles/v2 fra start: En nøgle fra ximilar.com er den eneste adgangsoplysning, hele systemet har brug for. Eller peg det samme trin mod dit eget genkendelsessystem.
$ export XIMILAR_API_KEY=your-key
Peg et kamera mod et kort
Åbn brugerfladen i browseren med dit webcam, eller giv cardstream dit show: Lad det hente en RTSP-stream, eller lad OBS sende RTMP direkte ind. Åbner du det samme sæt hele aftenen? Angiv det på forhånd, så holder endpointet op med at gætte: Engelske Pokémon-kort fra CRI er tre ting færre, der kan gå galt. Sæt --alphabet, hver gang du sætter --game, for når spillet er angivet på forhånd, slås endpointets egen genkendelse af skriftsystemet fra. Tilføj --price-stats, og hvert match kommer også med markedspriser i USD: median, prisspænd og seneste salg, på kortet og i historikken. Tilføj --ximilar-stream NEW for at gemme showet på din Ximilar-konto og gennemgå det bagefter.
$ cardstream-web # → http://127.0.0.1:8001 (hold et kort op) # Engelske Pokémon-kort, ét sæt (CRI - Chaos Rising), med markedspriser i USD: $ cardstream-web --game Pokemon --set-code CRI --alphabet latin --price-stats
Open source. Selvhostet. Din stream, din stack.
Ingen platform i midten og ingen licens pr. bruger: Tilslut Ximilars API eller dit eget identifikationssystem, så kalder cardstream det én gang pr. nyt kort i stedet for én gang pr. billede. Uanset om du kører breaks på Whatnot, holder et show i stil med Fanatics Live eller streamer fra dit eget liveshopping-setup, kan du køre cardstream i aften på den hardware, du allerede har.