Vanliga frågor och svar
Frågorna som dyker upp oftast: att installera och ta bort det, vad det kostar, vad som lämnar din dator och vad det kan känna igen. Allt som kräver längre svar finns i dokumentationen.
Installera, uppdatera, avinstallera
Installationsskriptet rör exakt två platser på din dator, och båda får du ta bort när du vill.
Vad behöver jag för att köra det?
En dator med Python 3.11 eller senare, och det är i stort sett allt. macOS arm64, Linux amd64 och Windows amd64 täcks alla av samma release i ren Python, och ingen GPU krävs. Systemets ffmpeg-binär behövs bara för källor som hämtas eller tas emot via en lyssnare (RTSP, RTMP, SRT); en webbkamera, en fil eller webbgränssnittet klarar sig utan.
Var lägger installationsskriptet saker?
På två ställen. ~/.cardstream är installationsroten: en virtualenv i venv/ och modellvikterna i models/. De två kommandona, cardstream-web och cardstream-client, är små startskript (shims) som skrivs till ~/.local/bin. De startar binärerna i venv med modellsökvägarna redan ifyllda, så varje flagga du anger har företräde. Båda platserna går att flytta med CARDSTREAM_HOME och INSTALL_DIR. Inget annat på datorn rörs. Framför allt ändrar skriptet aldrig din shellprofil: om ~/.local/bin inte finns i din PATH skriver det ut ett meddelande och överlåter ändringen åt dig.
Hur uppdaterar jag till en ny version?
Kör samma enradare igen. Den installerar den aktuella releasen i den befintliga virtualenv-miljön och skriver om shim-skripten. Vikter som redan ligger i ~/.cardstream/models lämnas orörda, eftersom de bara hämtas när de saknas. En uppdatering är därför en liten nedladdning, inte ännu en kvarts gigabyte. Vill du hamna på en viss release i stället för den senaste anger du CARDSTREAM_VERSION.
# samma enradare; /install.sh omdirigerar till skriptet på 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
Hur avinstallerar jag det?
Med två kommandon. Det första tar bort virtualenv-miljön och modellvikterna, det andra tar bort de två shim-skripten. Det finns inget mer att städa upp: ingen bakgrundstjänst, inget inloggningsobjekt, inget systempaket.
$ rm -rf ~/.cardstream # venv/ + models/ $ rm -f ~/.local/bin/cardstream-web ~/.local/bin/cardstream-client
Om du installerade med CARDSTREAM_HOME eller INSTALL_DIR angivna tar du bort de sökvägarna i stället, och använder sudo om du lät shim-skripten hamna i en systemkatalog. Sådant du har lagt till för hand får du också ta bort själv: en PATH-rad i din shellprofil, exporten av XIMILAR_API_KEY och eventuella mappar som du har angett till --store-images. Appen skriver ingenting annat under din hemkatalog. Kontrollera att det är borta med command -v cardstream-web i ett nytt shell; det gamla cachar sökningen tills du kör hash -r.
Vad det kostar och vad det kräver
Ingen plattform i mitten: din hårdvara, din nyckel och en motor vars uppgift är att göra så få anrop som möjligt.
Behöver jag en API-nyckel från Ximilar?
Ja, om du använder standardvägen för identifiering, och det är den enda inloggningsuppgift hela systemet behöver. Skaffa en på ximilar.com och exportera den som XIMILAR_API_KEY innan du startar. Om du ansluter din egen igenkänningstjänst i stället behöver du det som den slutpunkten kräver, och ingenting från Ximilar.
$ export XIMILAR_API_KEY=your-key
Vad kostar cardstream i sig?
Ingenting. Det finns ingen prenumeration, ingen licens per användare och ingen plattformsavgift: det är ett Python-paket med tillåtande licens som du kör på din egen hårdvara, med detekteringsvikter publicerade under Apache-2.0 tillsammans med releaserna. Det du betalar för är identifieringsanrop till den slutpunkt du ansluter, och att hålla nere det antalet är hela poängen med den lokala motorn: ungefär ett anrop per unikt kort du visar, omkring hundra på en timme där en naiv pipeline som går bildruta för bildruta i 15 fps skulle göra 54 000. Att spara en sändning på ditt Ximilar-konto lägger till en debiterad sessionsstart per sändning; att fortsätta den efter en omstart är gratis.
Kan jag använda egna modeller, eller mitt eget identifieringssystem?
Både och. Kortlokaliseraren och identitetsspärren väljer backend själva: den medföljande RF-DETR-exporten i .onnx, en RT-DETRv2-export, eller en transformers-katalog eller ett hub-id medan du fortfarande itererar på en finjustering. Identifieringssteget bakom är bara en slutpunkt, så om du pekar det mot din egen igenkänningstjänst förblir varje spärr, strypning och cooldown framför det oförändrad. Se modellbackends och modellkatalogen.
Hårdvara, streamar och säkerhet
Det körs vid sidan av din sändning, på den dator du redan streamar från.
Behöver jag en GPU?
Nej. De medföljande vikterna är ONNX-exporter dimensionerade för CPU, och allt den lokala motorn gör (rörelsespärren, strypningen av detekteringen, embeddingen som besvarar frågan ”samma kort eller nytt kort?”) körs på den processor du redan har. En GPU är ett alternativ för egna vikter med högre träffsäkerhet, aldrig ett krav för standardinställningarna.
Fungerar det med Whatnot eller Fanatics Live?
Ja, men inte genom att koppla upp sig mot marknadsplatsen: det kopplar in sig på den video du redan producerar. En virtuell kamera i OBS, en andra RTMP- eller SRT-utgång bredvid den som matar plattformen, en RTSP-hämtning från en kodare eller helt enkelt en egen kamera riktad mot samma spelmatta. Guiden för dig som säljer live går igenom alla fyra vägarna från början till slut.
Vad lämnar egentligen min dator?
I klientläget ett JPEG-utsnitt per unikt kort. Inte streamen, inte bildrutorna runt omkring, inte resten av mattan. Frågan om något över huvud taget ska skickas avgörs alltid lokalt först, så en timmes video där du visar hundra kort blir hundra små anrop. Det enda undantaget slår du själv på: med --ximilar-stream sparas också sändningens historik, en textrad per kort plus utsnittet som kortet identifierades från, i en session på ditt eget Ximilar-konto. Avstängt som standard, och med --no-ximilar-stream-images sparas enbart text.
Kan jag gå igenom en sändning i efterhand?
Ja, om du sparar den. Starta med --ximilar-stream NEW så hamnar varje kort som historiken listar, med pris, tid i streamen och utsnittet som det identifierades från, i en session på ditt Ximilar-konto medan sändningen pågår. Öppna Cardstream-delen av Ximilar-appen efteråt: sändningens värde, dess mest värdefulla produkter och vanligaste set, varje kort med bild. Där markerar du vad som såldes och rättar en felaktig träff. Omstart mitt i sändningen? Ange sessionens id i stället för NEW så fortsätter den, även om den hade stängts. För att spara i en arbetsyta för teamet används --ximilar-workspace. Detaljerna.
$ cardstream-web --price-stats --ximilar-stream NEW Kan jag köra det på mitt LAN så att en annan dator kan öppna gränssnittet?
Gör inte det. Webbgränssnittet saknar inloggning och har din API-nyckel, så det hör hemma på 127.0.0.1 och ingen annanstans. Containern binder 0.0.0.0 internt, och därför publicerar det dokumenterade docker run-kommandot porten enbart mot 127.0.0.1. Om du verkligen behöver nå det från en annan dator lägger du en egen autentiserad tunnel framför, i stället för att öppna porten.
$ docker run --rm -e XIMILAR_API_KEY -p 127.0.0.1:8001:8001 \ -v cardstream-models:/models cardstream
Vad det känner igen, och hur säkert det är
Varje träff kommer med sitt avstånd, sin nivå och de kort som det annars hade kunnat vara.
Vilka kort kan det identifiera?
Fyra kategorier, en omkopplare. Samlarkortspel: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana och ett tjugotal till, moderna löskort och vintage som läses av direkt från streamen. Sportkort från alla stora sporter, ner till parallell och år. Graderade kort, avlästa från etiketten utan att höljet bryts upp. Och serietidningar, efter titel, nummer och år. En flagga väljer kategori, eller så byter du i inställningsdialogen mitt i streamen. Se hela listan.
Vad händer när det pekar ut fel kort?
Du ser det komma. Varje träff har med sig det råa avståndet och en nivå, High / Medium / Low, med gränserna vid 0.30 och 0.40, plus upp till fyra alternativa kort som det hade kunnat vara, och det rätta finns oftast i den korta listan. Sätt en resultattröskel så når ingenting under den över huvud taget fram till overlayen. Om en hel sändning handlar om ett spel eller ett set snävar förvalen in sökningen innan den börjar: ange spelet, setkoden eller skriftsystemet så slutar slutpunkten att gissa dem.
Ö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.