cardstream
FAQ

Najczęściej zadawane pytania

Pytania, które padają najczęściej: instalacja i usuwanie, koszty, to, co opuszcza Twój komputer, i to, co da się rozpoznać. Wszystko, co dłuższe, znajdziesz w centrum dokumentacji.

Instalacja i usuwanie

Instalacja, aktualizacja, odinstalowanie

Skrypt instalacyjny dotyka dokładnie dwóch miejsc na Twoim komputerze i oba możesz w każdej chwili usunąć.

Czego potrzebuję, żeby to uruchomić?

Komputera, na którym jest Python 3.11 lub nowszy, i to w zasadzie wszystko. Systemy macOS arm64, Linux amd64 i Windows amd64 obsługuje to samo wydanie pure-Python, a GPU nie jest wymagane. Systemowy program ffmpeg jest potrzebny tylko przy pobieraniu streamu i w trybie nasłuchu (RTSP, RTMP, SRT). Kamera internetowa, plik czy interfejs w przeglądarce go nie potrzebują.

Gdzie skrypt instalacyjny umieszcza pliki?

W dwóch miejscach. ~/.cardstream to katalog instalacji: virtualenv w venv/ i wagi modeli w models/. Dwa polecenia, cardstream-web i cardstream-client, to małe shimy zapisane w ~/.local/bin. Uruchamiają programy z venv z wpisanymi już ścieżkami do modeli, więc każda podana przez Ciebie flaga ma pierwszeństwo. Oba miejsca zmienisz zmiennymi CARDSTREAM_HOME i INSTALL_DIR. Niczego innego na komputerze skrypt nie rusza, a w szczególności nigdy nie edytuje profilu powłoki: jeśli ~/.local/bin nie ma w PATH, wypisuje informację i zostawia zmianę Tobie.

Jak zaktualizować do nowej wersji?

Uruchom ponownie to samo jednowierszowe polecenie. Instaluje ono bieżące wydanie w istniejącym virtualenv i zapisuje shimy na nowo. Wagi, które już leżą w ~/.cardstream/models, zostają nietknięte (są pobierane tylko wtedy, gdy ich brakuje), więc aktualizacja to małe pobieranie, a nie kolejne ćwierć gigabajta. Żeby trafić na konkretne wydanie zamiast najnowszego, ustaw CARDSTREAM_VERSION.

# to samo polecenie; /install.sh przekierowuje do skryptu na gałęzi 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

Jak to odinstalować?

Dwoma poleceniami. Pierwsze usuwa virtualenv i wagi modeli, drugie usuwa oba shimy. Nic więcej nie trzeba sprzątać: żadnego demona, żadnego elementu startowego, żadnego pakietu systemowego.

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

Jeśli przy instalacji ustawiono CARDSTREAM_HOME lub INSTALL_DIR, usuń zamiast tego tamte ścieżki, a jeśli shimy trafiły do katalogu systemowego, użyj sudo. To, co zostało dodane ręcznie, też trzeba cofnąć ręcznie: wiersz z PATH w profilu powłoki, eksport XIMILAR_API_KEY i każdy folder przekazany do --store-images. Niczego więcej aplikacja w katalogu domowym nie zapisuje. Sprawdź, czy wszystko zniknęło, poleceniem command -v cardstream-web w nowej powłoce: stara pamięta wynik wyszukiwania, dopóki nie uruchomisz hash -r.

Klucze i koszty

Ile to kosztuje i czego wymaga

Żadnej platformy pośrodku: Twój sprzęt, Twój klucz i silnik, którego zadaniem jest pytać jak najrzadziej.

Czy potrzebuję klucza API Ximilar?

Przy domyślnej ścieżce identyfikacji tak, i są to jedyne dane dostępowe, jakich potrzebuje cały system. Klucz dostaniesz na ximilar.com. Przed uruchomieniem wyeksportuj go jako XIMILAR_API_KEY. Jeśli zamiast tego podłączasz własny system rozpoznawania, potrzebujesz tego, czego wymaga tamten endpoint, i niczego od Ximilar.

$ export XIMILAR_API_KEY=your-key

Ile kosztuje sam cardstream?

Nic. Nie ma abonamentu, licencji na stanowisko ani opłaty za platformę: to jeden pakiet w języku Python na liberalnej licencji, który uruchamiasz na własnym sprzęcie, z wagami do detekcji publikowanymi na licencji Apache-2.0 razem z wydaniami. Płacisz za zapytania o identyfikację do endpointu, który podłączysz, a utrzymanie tej liczby jak najniżej to cały sens lokalnego silnika: mniej więcej jedno zapytanie na każdą pokazaną kartę, około stu na godzinę tam, gdzie naiwne rozwiązanie działające klatka po klatce przy 15 fps wysłałoby 54 000. Zapisywanie transmisji na koncie Ximilar dodaje jedno płatne rozpoczęcie sesji na transmisję. Wznowienie jej po restarcie jest darmowe.

Czy mogę użyć własnych modeli albo własnego systemu identyfikacji?

Jedno i drugie. Lokalizator kart i bramka tożsamości same dobierają backend: dostarczany eksport RF-DETR .onnx, eksport RT-DETRv2 albo katalog transformers lub identyfikator z huba, dopóki jeszcze pracujesz nad dostrajaniem modelu. Krok identyfikacji za nimi to po prostu endpoint, więc skierowanie go na własny system rozpoznawania zostawia bez zmian każdą bramkę, każde ograniczenie częstotliwości i każdą przerwę ochronną przed nim. Zobacz backendy modeli i katalog modeli.

Uruchamianie

Sprzęt, streamy i bezpieczeństwo

Działa obok Twojej transmisji, na komputerze, z którego już streamujesz.

Czy potrzebuję GPU?

Nie. Dostarczane wagi to eksporty ONNX dobrane pod CPU, a wszystko, co robi lokalny silnik (bramka ruchu, ograniczanie częstotliwości detekcji, embedding odpowiadający na pytanie „ta sama karta czy nowa?”), działa na procesorze, który już masz. GPU to opcja dla własnych, dokładniejszych wag, nigdy wymóg przy ustawieniach domyślnych.

Czy to działa z Whatnot albo Fanatics Live?

Tak, choć nie przez podpięcie się do platformy sprzedażowej: korzysta z wideo, które i tak już nadajesz. Kamera wirtualna OBS, drugie wyjście RTMP lub SRT obok tego, które zasila platformę, pobieranie przez RTSP z enkodera albo po prostu osobna kamera skierowana na tę samą matę. Poradnik dla sprzedających na żywo przeprowadza przez wszystkie cztery sposoby od początku do końca.

Co tak naprawdę opuszcza mój komputer?

W trybie klienckim jeden wycinek JPEG na każdą nową kartę: nie stream, nie sąsiednie klatki, nie reszta maty. Każda decyzja o tym, czy cokolwiek wysłać, zapada najpierw lokalnie, więc godzina wideo, w której pokazujesz sto kart, to sto małych zapytań. Jedyny wyjątek włączasz samodzielnie: z flagą --ximilar-stream historia transmisji (wiersz tekstu na kartę plus wycinek, z którego została zidentyfikowana) jest też zapisywana do sesji na Twoim koncie Ximilar. Domyślnie wyłączone, a --no-ximilar-stream-images ogranicza zapis do tekstu.

Czy mogę przejrzeć transmisję po fakcie?

Tak, jeśli ją zapiszesz. Zacznij od --ximilar-stream NEW, a każda karta z historii (z ceną, czasem na streamie i wycinkiem, z którego została zidentyfikowana) trafia w trakcie transmisji do sesji na Twoim koncie Ximilar. Potem otwórz sekcję Cardstream w aplikacji Ximilar: wartość transmisji, jej najcenniejsze produkty i najczęstsze sety, każda karta ze zdjęciem. Oznacz, co się sprzedało, i popraw błędne dopasowanie. Restart w trakcie transmisji? Podaj id sesji zamiast NEW, a zapis potoczy się dalej, nawet jeśli sesja była już zamknięta. Zapis do przestrzeni roboczej zespołu wymaga --ximilar-workspace. Szczegóły.

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

Czy mogę uruchomić to w sieci LAN, żeby inny komputer otworzył interfejs?

Nie rób tego. Interfejs webowy nie wymaga uwierzytelniania i przechowuje Twój klucz API, więc jego miejsce jest na 127.0.0.1 i nigdzie indziej. Kontener nasłuchuje wewnątrz na 0.0.0.0 i właśnie dlatego opisane w dokumentacji polecenie docker run publikuje port wyłącznie na 127.0.0.1. Jeśli naprawdę potrzebujesz dostępu z innego komputera, postaw przed nim własny tunel z uwierzytelnianiem, zamiast otwierać port.

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

Co rozpoznaje i na ile jest pewny

Każde dopasowanie przychodzi z odległością, poziomem pewności i kartami, które też wchodziły w grę.

Jakie karty potrafi zidentyfikować?

Cztery kategorie, jeden przełącznik. Kolekcjonerskie gry karciane: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana i około dwudziestu innych, single nowe i vintage, czytane prosto ze streamu. Karty sportowe ze wszystkich najważniejszych dyscyplin, z dokładnością do parallela i roku. Ocenione karty w slabach, czytane z etykiety bez rozbijania etui. I komiksy: po tytule, numerze i roku. Kategorię wybiera jedna flaga albo okno ustawień, także w trakcie streamu. Zobacz pełną listę.

Co się dzieje, gdy wskaże złą kartę?

Widać to z daleka. Każde dopasowanie niesie surową odległość i poziom High / Medium / Low (granice leżą przy 0.30 i 0.40) oraz maksymalnie cztery alternatywne karty, które też wchodziły w grę, a właściwa zwykle jest na tej krótkiej liście. Ustaw próg wyniku, a nic poniżej niego w ogóle nie trafi na nakładkę. Jeśli cała transmisja to jedna gra albo jeden set, wartości podane z góry zawężają wyszukiwanie, zanim się zacznie: podaj grę, kod setu albo system pisma, a endpoint przestanie je zgadywać.

Open source. Na własnym sprzęcie. Twój stream, Twoje zasady.

Żadnej platformy pośrodku, żadnych licencji na stanowisko: podłącz API Ximilar albo własny system identyfikacji, a cardstream zapyta raz na każdą nową kartę zamiast raz na klatkę. Robisz breaki na Whatnot, prowadzisz transmisję w stylu Fanatics Live albo streamujesz z własnego setupu do live commerce? Uruchom cardstream jeszcze dziś wieczorem, na sprzęcie, który już masz.