cardstream
FAQ

Questions fréquentes

Les questions qui reviennent le plus : l’installer et le supprimer, ce qu’il coûte, ce qui quitte votre machine et ce qu’il sait reconnaître. Tout ce qui demande plus de place se trouve dans la documentation.

Installer et supprimer

Installer, mettre à jour, désinstaller

Le script d’installation touche exactement deux emplacements sur votre machine, et vous pouvez supprimer l’un comme l’autre.

De quoi ai-je besoin pour le faire tourner ?

D’une machine avec Python 3.11 ou plus récent, et c’est à peu près tout. macOS arm64, Linux amd64 et Windows amd64 sont tous couverts par la même release en pur Python, sans GPU. Le binaire ffmpeg du système n’est nécessaire que pour les sources en pull et en écoute (RTSP, RTMP, SRT) : une webcam, un fichier ou l’interface navigateur s’en passent.

Où le script d’installation range-t-il les choses ?

À deux endroits. ~/.cardstream est la racine de l’installation : un virtualenv dans venv/ et les poids des modèles dans models/. Les deux commandes, cardstream-web et cardstream-client, sont de petits shims écrits dans ~/.local/bin ; ils lancent les binaires du venv avec les chemins des modèles déjà renseignés, et toute option que vous passez l’emporte. Les deux emplacements se déplacent avec CARDSTREAM_HOME et INSTALL_DIR. Rien d’autre n’est touché sur la machine. En particulier, le script ne modifie jamais le profil de votre shell : si ~/.local/bin n’est pas dans votre PATH, il affiche un message et vous laisse faire le changement.

Comment passer à une nouvelle version ?

Relancez la même commande. Elle installe la release actuelle dans le virtualenv existant et réécrit les shims. Les poids déjà présents dans ~/.cardstream/models ne sont pas touchés (ils ne sont téléchargés que s’ils manquent) : une mise à jour est donc un petit téléchargement, pas un quart de gigaoctet de plus. Pour installer une release précise plutôt que la dernière, définissez CARDSTREAM_VERSION.

# la même commande ; /install.sh redirige vers le script de la branche 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

Comment le désinstaller ?

En deux commandes. La première supprime le virtualenv et les poids des modèles, la seconde supprime les deux shims. Il n’y a rien d’autre à nettoyer : pas de démon, pas d’élément lancé à l’ouverture de session, pas de paquet système.

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

Si vous avez installé avec CARDSTREAM_HOME ou INSTALL_DIR définis, supprimez plutôt ces chemins-là, avec sudo si vous aviez placé les shims dans un répertoire système. Ce que vous avez ajouté à la main reste à défaire par vous : une ligne PATH dans le profil de votre shell, l’export de XIMILAR_API_KEY et tout dossier passé à --store-images. L’application n’écrit rien d’autre dans votre répertoire personnel. Vérifiez qu’il a bien disparu avec command -v cardstream-web dans un nouveau shell : l’ancien garde le résultat en cache jusqu’à ce que vous lanciez hash -r.

Clés et coût

Ce que ça coûte et ce qu’il faut

Pas de plateforme intermédiaire : votre matériel, votre clé et un moteur dont le travail est d’appeler l’extérieur le plus rarement possible.

Ai-je besoin d’une clé API Ximilar ?

Pour l’identification par défaut, oui, et c’est le seul identifiant dont tout le système a besoin. Obtenez-en une sur ximilar.com et exportez-la dans XIMILAR_API_KEY avant de démarrer. Si vous branchez votre propre système de reconnaissance à la place, il vous faut ce qu’exige cet endpoint-là, et rien de Ximilar.

$ export XIMILAR_API_KEY=your-key

Combien coûte cardstream lui-même ?

Rien. Pas d’abonnement, pas de licence par poste, pas de frais de plateforme : un seul paquet Python sous licence permissive, que vous faites tourner sur votre propre matériel, avec des poids de détection publiés sous Apache-2.0 avec les releases. Ce que vous payez, ce sont les appels d’identification vers l’endpoint que vous connectez, et tout l’intérêt du moteur local est d’en réduire le nombre : environ un appel par carte distincte que vous montrez, soit une centaine par heure là où un pipeline naïf, image par image à 15 fps, en lancerait 54 000. Enregistrer un show sur votre compte Ximilar ajoute un démarrage de session facturé par show ; le reprendre après un redémarrage est gratuit.

Puis-je utiliser mes propres modèles, ou mon propre système d’identification ?

Les deux. Le localisateur de cartes et le filtre d’identité passent par des backends interchangeables : l’export RF-DETR .onnx fourni, un export RT-DETRv2, ou un dossier transformers ou un identifiant du hub tant que vous itérez encore sur un affinage. L’étape d’identification qui vient ensuite n’est qu’un endpoint : la pointer vers votre propre système de reconnaissance laisse intacts tous les filtres, limitations et temps de repos placés en amont. Voir les backends de modèles et le catalogue de modèles.

Au quotidien

Matériel, streams et sécurité

Il tourne à côté de votre show, sur la machine depuis laquelle vous streamez déjà.

Ai-je besoin d’un GPU ?

Non. Les poids fournis sont des exports ONNX dimensionnés pour le CPU, et tout ce que fait le moteur local (le filtre de mouvement, la cadence de détection, l’embedding qui répond à « même carte ou nouvelle carte ? ») tourne sur le processeur que vous avez déjà. Un GPU est une possibilité pour vos propres poids plus précis, jamais une obligation pour les réglages par défaut.

Est-ce que ça fonctionne avec Whatnot ou Fanatics Live ?

Oui, mais pas en se branchant sur la marketplace : il se sert de la vidéo que vous produisez déjà. La caméra virtuelle d’OBS, une seconde sortie RTMP ou SRT à côté de celle qui alimente la plateforme, un flux RTSP récupéré sur un encodeur, ou tout simplement sa propre caméra pointée sur le même tapis. Le guide de la vente en live détaille les quatre méthodes de bout en bout.

Qu’est-ce qui quitte réellement ma machine ?

En mode client, un recadrage JPEG par carte distincte : ni le stream, ni les images autour, ni le reste du tapis. Chaque décision sur le fait d’envoyer ou non quelque chose est d’abord prise en local : une heure de vidéo où vous montrez cent cartes, ce sont cent petites requêtes. La seule exception, c’est vous qui l’activez : avec --ximilar-stream, l’historique du show (une ligne de texte par carte et le recadrage qui a servi à l’identifier) est aussi enregistré dans une session de votre propre compte Ximilar. C’est désactivé par défaut, et --no-ximilar-stream-images s’en tient au texte.

Puis-je revoir un show après coup ?

Oui, si vous l’enregistrez. Démarrez avec --ximilar-stream NEW et chaque carte de l’historique, avec son prix, son temps à l’écran et le recadrage qui a servi à l’identifier, part dans une session de votre compte Ximilar au fil du show. Ouvrez ensuite la section Cardstream de l’application Ximilar : la valeur du show, ses produits les plus chers et ses extensions les plus fréquentes, chaque carte avec son image ; vous y marquez ce qui s’est vendu et corrigez une mauvaise correspondance. Un redémarrage en plein show ? Passez l’id de session à la place de NEW et il reprend, même si la session avait été fermée. Pour enregistrer dans un espace de travail d’équipe, ajoutez --ximilar-workspace. Tous les détails.

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

Puis-je l’ouvrir sur mon réseau local pour afficher l’interface depuis une autre machine ?

Non, ne le faites pas. L’interface web n’a pas d’authentification et détient votre clé API : sa place est sur 127.0.0.1 et nulle part ailleurs. Le conteneur écoute sur 0.0.0.0 en interne, et c’est pourquoi le docker run documenté ne publie le port que sur 127.0.0.1. Si vous en avez vraiment besoin depuis une autre machine, placez votre propre tunnel authentifié devant plutôt que d’ouvrir le port.

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

Ce qu’il reconnaît, et avec quelle certitude

Chaque correspondance arrive avec sa distance, son niveau et les cartes qu’elle aurait pu être à la place.

Quelles cartes peut-il identifier ?

Quatre catégories, un seul réglage. Les jeux de cartes à collectionner : Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana et une vingtaine d’autres, cartes à l’unité modernes ou vintage lues directement sur le stream. Les cartes de sport de tous les grands sports, jusqu’à la parallèle et à l’année. Les cartes gradées, lues sur l’étiquette sans ouvrir le boîtier. Et les comics, par titre, numéro et année. Une option choisit la catégorie, ou la fenêtre de réglages en change en plein stream. Voir la liste complète.

Que se passe-t-il quand il se trompe de carte ?

Vous le voyez venir. Chaque correspondance porte la distance brute et un niveau Élevé / Moyen / Faible (les bornes sont à 0.30 et 0.40), plus jusqu’à quatre autres cartes possibles, et la bonne se trouve le plus souvent dans cette courte liste. Fixez un seuil de résultat et tout ce qui est en dessous n’atteint jamais l’overlay. Si tout un show porte sur un seul jeu ou une seule extension, les préréglages resserrent la recherche avant même qu’elle commence : indiquez-lui le jeu, le code d’extension ou le système d’écriture et l’endpoint cesse de les deviner.

Open source. Auto-hébergé. Votre stream, votre stack.

Pas de plateforme intermédiaire, pas de licence par poste : connectez l’API Ximilar ou votre propre système d’identification, et cardstream l’appelle une fois par carte distincte plutôt qu’une fois par image. Que vous fassiez des breaks sur Whatnot, animiez un show façon Fanatics Live ou streamiez votre propre live shopping, lancez cardstream dès ce soir sur le matériel que vous avez déjà.