cardstream
FAQ

자주 묻는 질문

가장 자주 나오는 질문들을 모았습니다. 설치와 제거, 비용, 내 컴퓨터 밖으로 나가는 것, 그리고 무엇을 식별할 수 있는지. 더 긴 내용은 모두 문서 허브에 있습니다.

설치와 제거

설치, 업데이트, 제거

설치 스크립트가 건드리는 곳은 컴퓨터에서 딱 두 곳뿐이며, 둘 다 언제든 직접 삭제할 수 있습니다.

실행하려면 무엇이 필요한가요?

Python 3.11 이상이 설치된 컴퓨터, 거의 그게 전부입니다. macOS arm64, Linux amd64, Windows amd64 모두 같은 순수 Python 릴리스로 지원되며 GPU는 필요 없습니다. 시스템 ffmpeg 바이너리는 pull 소스와 listen 소스(RTSP, RTMP, SRT)를 쓸 때만 필요하고, 웹캠, 파일, 브라우저 UI에는 필요하지 않습니다.

설치 스크립트는 파일을 어디에 두나요?

두 곳입니다. ~/.cardstream이 설치 루트로, venv/에 가상 환경(venv)이, models/에 모델 가중치가 들어갑니다. cardstream-web과 cardstream-client 두 명령어는 ~/.local/bin에 기록되는 작은 심(shim) 스크립트로, 모델 경로를 미리 채운 채 venv 안의 바이너리를 exec 하므로 직접 넘긴 플래그가 항상 우선합니다. 두 위치 모두 CARDSTREAM_HOME과 INSTALL_DIR로 바꿀 수 있습니다. 컴퓨터의 다른 곳은 전혀 건드리지 않으며, 특히 셸 프로필은 절대 수정하지 않습니다. ~/.local/bin이 PATH에 없으면 안내 메시지만 출력하고 변경은 사용자에게 맡깁니다.

새 버전으로 업데이트하려면 어떻게 하나요?

같은 한 줄 명령어를 다시 실행하면 됩니다. 기존 가상 환경에 현재 릴리스를 설치하고 심 스크립트를 다시 씁니다. ~/.cardstream/models에 이미 있는 가중치는 그대로 둡니다(가중치는 없을 때만 받아옵니다). 그래서 업데이트는 작은 다운로드로 끝나며, 4분의 1 기가바이트를 또 받는 일은 없습니다. 최신 버전 대신 특정 릴리스를 설치하려면 CARDSTREAM_VERSION을 설정하세요.

# 같은 한 줄 명령어. /install.sh는 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

제거하려면 어떻게 하나요?

명령어 두 개면 됩니다. 첫 번째는 가상 환경과 모델 가중치를, 두 번째는 두 심 스크립트를 삭제합니다. 그 밖에 정리할 것은 없습니다. 데몬도, 로그인 항목도, 시스템 패키지도 없습니다.

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

CARDSTREAM_HOME이나 INSTALL_DIR을 설정하고 설치했다면 대신 그 경로를 삭제하세요. 심 스크립트를 시스템 디렉터리에 두었다면 sudo가 필요합니다. 직접 추가한 것은 직접 되돌려야 합니다. 셸 프로필에 넣은 PATH 줄, XIMILAR_API_KEY export, --store-images에 넘긴 폴더 등이 여기에 해당합니다. 그 밖에 앱이 홈 디렉터리 아래에 쓰는 것은 없습니다. 새 셸에서 command -v cardstream-web을 실행해 사라졌는지 확인하세요. 기존 셸은 hash -r을 실행하기 전까지 이전 조회 결과를 캐시하고 있습니다.

키와 비용

비용과 필요한 것

중간에 끼는 플랫폼은 없습니다. 내 하드웨어, 내 키, 그리고 외부 호출을 최대한 줄이는 것이 임무인 엔진뿐입니다.

Ximilar API 키가 필요한가요?

기본 식별 경로를 쓴다면 필요합니다. 그리고 시스템 전체에서 필요한 인증 정보는 이것 하나뿐입니다. ximilar.com에서 키를 발급받아 시작 전에 XIMILAR_API_KEY로 export 하세요. 대신 자체 인식 시스템을 연결한다면 그 엔드포인트가 요구하는 것만 있으면 되고, Ximilar에서는 아무것도 필요하지 않습니다.

$ export XIMILAR_API_KEY=your-key

cardstream 자체의 비용은 얼마인가요?

무료입니다. 구독도, 사용자당 라이선스도, 플랫폼 수수료도 없습니다. 관대한 라이선스의 Python 패키지 하나를 내 하드웨어에서 실행할 뿐이며, 감지 모델 가중치는 릴리스와 함께 Apache-2.0으로 공개됩니다. 비용이 드는 것은 연결한 엔드포인트로 보내는 식별 호출뿐이고, 그 횟수를 줄이는 것이 로컬 엔진의 존재 이유입니다. 보여 준 서로 다른 카드 한 장당 대략 1회로, 프레임마다 호출하는 단순한 파이프라인이 15 fps에서 한 시간에 54,000회를 쏘는 동안 약 100회로 끝납니다. 방송을 Ximilar 계정에 저장하면 방송마다 세션 시작 1회가 과금되며, 재시작한 뒤 이어서 저장하는 것은 무료입니다.

자체 모델이나 자체 식별 시스템을 쓸 수 있나요?

둘 다 가능합니다. 카드 로케이터와 동일성 게이트는 백엔드를 골라 연결할 수 있습니다. 기본 제공되는 RF-DETR .onnx 내보내기, RT-DETRv2 내보내기, 또는 파인튜닝을 반복하는 중이라면 transformers 디렉터리나 hub id도 됩니다. 그 뒤의 식별 단계는 그저 엔드포인트일 뿐이므로, 자체 인식 시스템을 가리키게 해도 그 앞단의 게이트, 스로틀, 쿨다운은 전부 그대로 유지됩니다. 모델 백엔드와 모델 목록을 참고하세요.

실행

하드웨어, 스트림, 그리고 안전하게 쓰기

이미 방송에 쓰고 있는 그 컴퓨터에서, 방송과 나란히 실행됩니다.

GPU가 필요한가요?

아니요. 기본 제공 가중치는 CPU에 맞게 크기를 맞춘 ONNX 내보내기이고, 로컬 엔진이 하는 모든 일(모션 게이트, 감지 스로틀, "같은 카드인가, 새 카드인가?"에 답하는 임베딩)은 지금 쓰고 있는 프로세서에서 돌아갑니다. GPU는 더 높은 정확도의 자체 가중치를 쓸 때의 선택지일 뿐, 기본 구성에서 필수인 적은 없습니다.

Whatnot이나 Fanatics Live에서도 쓸 수 있나요?

네. 다만 마켓플레이스에 직접 연결하는 방식이 아니라, 이미 만들고 있는 영상을 끌어오는 방식입니다. OBS 가상 카메라, 플랫폼으로 보내는 출력 옆의 두 번째 RTMP 또는 SRT 출력, 인코더에서의 RTSP pull, 아니면 같은 매트를 향한 전용 카메라도 됩니다. 라이브 판매 가이드에서 네 가지 경로를 모두 처음부터 끝까지 다룹니다.

실제로 내 컴퓨터 밖으로 나가는 것은 무엇인가요?

클라이언트 모드에서는 서로 다른 카드 한 장당 JPEG 크롭 한 장뿐입니다. 스트림도, 그 앞뒤의 프레임도, 매트의 나머지 부분도 나가지 않습니다. 무언가를 보낼지 말지에 대한 모든 결정이 먼저 로컬에서 내려지므로, 카드 100장을 보여 준 한 시간짜리 영상은 작은 요청 100건이 됩니다. 단 하나의 예외는 여러분이 직접 켜는 것입니다. --ximilar-stream을 쓰면 방송 기록(카드마다 텍스트 한 줄과 그 카드의 식별에 쓰인 크롭)이 여러분의 Ximilar 계정 안의 세션에도 저장됩니다. 기본값은 꺼져 있으며, --no-ximilar-stream-images를 쓰면 텍스트만 저장됩니다.

방송이 끝난 뒤에 다시 돌아볼 수 있나요?

네, 저장해 두었다면 가능합니다. --ximilar-stream NEW로 시작하면 기록에 오르는 모든 카드가 가격, 방송에 머문 시간, 식별에 쓰인 크롭과 함께 방송이 진행되는 동안 여러분의 Ximilar 계정 안의 세션으로 저장됩니다. 방송이 끝나면 Ximilar 앱의 Cardstream 섹션을 열어 보세요. 방송의 가치, 가장 값비싼 상품과 상위 세트, 이미지가 붙은 모든 카드를 볼 수 있고, 팔린 카드를 표시하거나 잘못된 매칭을 바로잡을 수 있습니다. 방송 도중에 재시작했나요? NEW 대신 세션 id를 넘기면 세션이 닫혔더라도 그대로 이어집니다. 팀 워크스페이스에 저장하려면 --ximilar-workspace를 쓰세요. 자세한 내용.

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

LAN에서 실행해서 다른 컴퓨터에서 UI를 열 수 있나요?

하지 마세요. 웹 UI는 인증이 없고 API 키를 갖고 있으므로 127.0.0.1에만 두어야 합니다. 컨테이너는 내부적으로 0.0.0.0에 바인딩되며, 문서의 docker run이 포트를 127.0.0.1에만 공개하는 것도 그 때문입니다. 정말로 다른 컴퓨터에서 써야 한다면 포트를 여는 대신 인증이 있는 터널을 직접 앞에 두세요.

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

무엇을 식별하고, 얼마나 확신하는가

모든 매치에는 거리, 등급, 그리고 대신 나올 수 있었던 후보 카드가 함께 옵니다.

어떤 카드를 식별할 수 있나요?

네 가지 카테고리, 스위치 하나입니다. 트레이딩 카드 게임은 포켓몬, 매직 더 개더링(Magic: The Gathering), 유희왕, 원피스, 로르카나를 비롯한 20여 종으로, 현행판과 빈티지 싱글 카드를 스트림에서 바로 읽어 냅니다. 스포츠 카드는 주요 스포츠 전 종목을 패러렐과 연도까지 구분합니다. 그레이딩 슬랩은 케이스를 깨지 않고 라벨에서 읽습니다. 그리고 만화책은 제목, 호수, 연도로 식별합니다. 플래그 하나로 카테고리를 고르거나, 설정 대화 상자에서 방송 중에 바꿀 수 있습니다. 전체 목록 보기.

엉뚱한 카드를 식별하면 어떻게 되나요?

미리 알아챌 수 있습니다. 모든 매치에는 원시 거리와 High / Medium / Low 등급(경계는 0.30과 0.40)이 붙고, 대신 나올 수 있었던 후보 카드도 최대 4장까지 함께 표시되는데, 정답은 대개 그 짧은 목록 안에 있습니다. 결과 임계값을 설정하면 그 아래는 오버레이에 아예 도달하지 않습니다. 방송 전체가 한 게임이나 한 세트라면 사전 지정으로 검색을 시작하기 전에 범위를 좁힐 수 있습니다. 게임, 세트 코드, 문자 체계를 알려 주면 엔드포인트가 그것들을 추측하지 않습니다.

오픈소스. 자체 호스팅. 여러분의 방송, 여러분의 스택.

중간에 끼는 플랫폼도, 좌석 라이선스도 없습니다. Ximilar API 또는 자체 식별 시스템을 연결하면 cardstream은 프레임마다가 아니라 서로 다른 카드 한 장당 한 번만 호출합니다. Whatnot에서 브레이크를 하든, Fanatics Live 같은 쇼를 진행하든, 자체 라이브 커머스 환경을 방송하든, 이미 가진 하드웨어로 오늘 밤 cardstream을 실행해 보세요.