cardstream
Funktioner

Kortanalys för streamare. Snabb och träffsäker.

cardstream är en tillståndsmaskin runt en slutpunkt för kortidentifiering. Allt nedan gör antingen identifieringen bättre eller ser till att den bara sker när den faktiskt är värd att betala för.

Igenkänning

Kortidentifiering i realtid från vilken stream som helst

Fyra identifieringsslutpunkter bakom en och samma omkopplare: samlarkortspel, sportkort, graderade kort och serietidningar.

Hela träffen i ett enda objekt

Namn, fullständigt namn, set, setkod, kortnummer, serie, år och underkategori kommer som ett objekt per identifierat kort, klart att läsa upp, logga eller skicka vidare till dina egna verktyg.

Konfidens du kan agera på

Varje träff har med sig det råa avståndet och en nivå, High / Medium / Low (gränser vid 0.30 och 0.40). Sätt en resultattröskel så når kort under den aldrig fram till overlayen.

Alternativa träffar

Varje resultat kommer med upp till fyra andra kort som det hade kunnat vara. Om toppträffen är fel finns den rätta oftast i den korta listan.

Förval som snävar in sökningen

Ange spelet, setkoden eller skriftsystemet så slutar slutpunkten att gissa dem. Värdena valideras lokalt: ett stavfel ger ett fel på din dator i stället för att i tysthet ge fel utgåva.

Kategori per sändning

En flagga, eller inställningsdialogen mitt i streamen: tcg, sport, slab eller comics. Vid ett byte tas de förval bort som den nya kategorin inte känner till, i stället för att den får ett värde som den inte kan använda.

Framsida, baksida och rotation

Kända attribut skickas med utsnittet så att slutpunkten hoppar över klassificerare som inte behövs: färre saker som kan bli fel, och snabbare svar.

Beslutsmotorn

Snabb analys av livestreamar med AI

En tillståndsmaskin, gemensam för båda driftsätten. Allt här körs på din egen CPU, innan något lämnar datorn.

Rörelsespärr

En genomsnittlig skillnad mellan bildrutor visar om scenen har blivit stilla. Ingenting längre fram i kedjan utlöses medan kortet fortfarande rör sig genom bilden.

Identitetsspärr

Varje kort i bild jämförs med det föregående av en AI-modell, med hjälp av embeddingar. Den besvarar en enda fråga: samma kort eller nytt kort?

Detektering som stryps i tre nivåer

Detekteringen körs ofta medan något rör sig, sällan på ett stilla kort och knappt alls på en tom matta. Nivåerna är konfiguration per driftsätt, inte kod.

Cooldown, inga omförsök, forget-after

Ett kort som inte gav någon träff prövas inte om i en loop, ett kort som hålls kvar i bild identifieras inte på nytt, och ett kort som har varit borta tillräckligt länge analyseras från början när det kommer tillbaka.

Anropsvakt och watchdog

En identifiering i taget, med ett minsta intervall och en timeout som får loss pipelinen om slutpunkten hänger sig. Ett långsamt anrop får aldrig streamen att stanna upp.

Blixtsnabba resultat

AI-modellerna bakom cardstream körs på din egen dator. Systemet är mycket snabbt, och du behöver ingen GPU.

Indata

Videokällor och format som stöds

Källorna är utbytbara och analysen är identisk vilken du än väljer.

Kameror och filer

Ett webbkameraindex, en videofil, en stillbild eller webbläsarens webbkamera när du kör webbgränssnittet. Bra för att testa riggen före sändningen.

Hämta: RTSP, RTMP, SRT

Rikta det mot en IP-kamera, en kodare eller en restreamingtjänst så hämtar det flödet, och återansluter med en väntetid som växer upp till ett tak när flödet bryts.

Skicka: OBS rakt in

Kör det som lyssnare och låt OBS skicka RTMP eller SRT till det: en extra utgång bredvid den som matar din marknadsplats.

JPEG-flöden över WebSocket

För hemmabyggda riggar: varje process som kan skicka JPEG-bildrutor över en socket är en giltig källa.

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 och kostar lite; utsnittet som skickas för identifiering skärs ut på nytt ur hela bildrutan.

Bildrutorna förblir dina

I klientläget lämnar ingenting datorn utom ett JPEG-utsnitt per unikt kort: inte streamen, inte bildrutorna runt omkring. Att spara sändningen på ditt Ximilar-konto är en flagga som du själv väljer att slå på.

Modeller

Våra vikter, eller dina

Analysera livestreamar med vår färdiga modell för CPU. Behöver du högre träffsäkerhet eller extrem hastighet? Träna din egen och kör den på GPU:er!

RF-DETR-segmentering

Standardlokaliseraren: en finjusterad .onnx-export för instanssegmentering som körs via onnxruntime, utan torch. Masken ger kortets fyra hörn, så utsnittet som du betalar för rätas upp och skärs tätt längs kortets kant.

Detektering med RF-DETR / RT-DETRv2

Avgränsningsrutor som valfritt alternativ: ONNX för hastighet, eller en transformers-katalog eller ett hub-id medan du fortfarande itererar på en finjustering.

Vikterna ingår

RF-DETR-lokaliseraren och embeddingmodellen är tränade av Ximilar och publicerade under Apache-2.0. Installationsskriptet hämtar dem, så det finns inget träningssteg mellan dig och en fungerande pipeline.

Backends för embeddingmodellen

Embeddingmodeller i Torch, ONNX eller LiteRT/TFLite för identitetsspärren: använd den körmiljö du redan har på datorn.

Tunga importer laddas först vid behov

Torch är inget beroende för kärnan. Installera bara de extras som dina backends behöver, så fungerar allt annat ändå.

Valfri identifieringstjänst

Identifieringsanropet är ett enda utbytbart steg. Rikta det mot Ximilar, mot en proprietär igenkänningstjänst eller mot en modell som du driftar själv.

Köra det

En process, bredvid kameran

Detekteringen och spärrarna körs på din dator, från ett enda installerbart paket, och det enda identifieringsanropet går direkt därifrån till API:et.

Två ingångar, en pipeline

Ett kommando utan gränssnitt, för riggar och skript, och ett lokalt webbgränssnitt när du vill se det arbeta. Båda tar samma flaggor och bygger samma pipeline.

En inloggningsuppgift, som stannar lokalt

Din Ximilar-nyckel, läst ur miljövariablerna på din egen dator. Inget konto att skapa här, inget mellanled att lita på och ingenting att hålla igång utom själva processen.

Inget blockerar loopen

JPEG-avkodning, detektering, HTTP och diskskrivningar körs utanför händelseloopen. En långsam bildruta kastas, i stället för att köas upp till en växande fördröjning.

Inställningsdialog under sändning

Trösklar, kategori, spel, setkod och skriftsystem går att ställa om från webbläsaren mitt i streamen. Varje reglage genereras dessutom från en och samma lista med beskrivningar, så gränssnittet och valideringen kan inte glida isär.

En overlay byggd för streamar

Statusmärke, avgränsningsruta och en historik över varje kort du har visat, med en miniatyr av vart och ett och tiden det var i bild, som en flagga sparar på ditt Ximilar-konto. En felsökningspanel när du vill se hur spärrarna tänker.

Testsvit som körs offline

Hela sviten körs utan nätverk och utan modellfiler, med attrapper för ONNX-sessionerna och detektorerna. Forka repot och du kan ändå se om du har haft sönder något.

Öppen källkod. Egen drift. Din stream, din stack.

Ingen plattform i mitten och ingen licens per användare: anslut Ximilars API eller ditt eget identifieringssystem, så anropar cardstream det en gång per unikt kort i stället för en gång per bildruta. Oavsett om du kör breaks på Whatnot, sänder i Fanatics Live-stil eller streamar från din egen liveshoppinglösning kan du köra cardstream redan i kväll, på den hårdvara du redan har.