cardstream
기능

스트리머를 위한 카드 분석. 빠르고 정확하게.

cardstream은 카드 식별 엔드포인트를 감싸는 상태 머신입니다. 아래의 모든 기능은 식별을 더 정확하게 만들거나, 정말 비용을 지불할 가치가 있을 때만 식별이 실행되도록 보장합니다.

인식

어떤 스트림에서든 실시간으로 카드를 식별

트레이딩 카드 게임, 스포츠 카드, 그레이딩 슬랩, 코믹스. 네 가지 식별 엔드포인트를 스위치 하나로 전환합니다.

매치 결과 전체를 하나의 객체로

이름, 전체 이름, 세트, 세트 코드, 카드 번호, 시리즈, 연도, 하위 카테고리가 식별된 카드 한 장당 하나의 객체로 도착합니다. 읽어 주기, 기록, 자체 도구 연동에 바로 쓸 수 있습니다.

판단에 쓸 수 있는 신뢰도

모든 매치에는 원시 거리 값과 High / Medium / Low 등급(경계값 0.30과 0.40)이 함께 제공됩니다. 결과 임계값을 설정하면 그보다 낮은 카드는 오버레이에 표시되지 않습니다.

대체 후보

모든 결과에는 가능성이 있는 다른 카드가 최대 4장까지 함께 제공됩니다. 최상위 매치가 틀렸더라도, 정답은 대개 이 짧은 목록 안에 있습니다.

검색 범위를 좁히는 사전 지정

게임, 세트 코드, 문자 체계를 미리 알려 주면 엔드포인트는 이를 추측하지 않습니다. 값은 로컬에서 검증되므로, 오타는 잘못된 판본을 조용히 돌려주는 대신 사용자의 컴퓨터에서 바로 실패합니다.

방송마다 카테고리 전환

플래그 하나로, 또는 방송 중 설정 대화 상자에서 tcg, sport, slab, comics를 선택합니다. 전환 시 새 카테고리가 모르는 사전 지정 값은 쓸 수 없는 값을 보내는 대신 버립니다.

앞면, 뒷면, 회전

이미 알고 있는 속성은 크롭과 함께 전송되므로 엔드포인트는 필요 없는 분류기를 건너뜁니다. 틀릴 요소는 줄고 응답은 빨라집니다.

판단 엔진

AI로 빠르게 분석하는 라이브 방송

두 가지 배포 형태가 공유하는 하나의 상태 머신. 여기 있는 모든 것은 데이터가 컴퓨터 밖으로 나가기 전에 사용자의 CPU에서 실행됩니다.

모션 게이트

프레임 차이의 평균값으로 장면이 안정됐는지 판단합니다. 카드가 아직 프레임 안에서 움직이는 동안에는 후속 처리가 전혀 실행되지 않습니다.

동일성 게이트

프레임 안의 각 카드를 AI 모델의 임베딩으로 직전 카드와 비교합니다. 답하는 질문은 단 하나, 같은 카드인가 새 카드인가입니다.

3단계 감지 스로틀

무언가 움직이는 동안에는 감지를 자주, 정지된 카드에는 드물게, 빈 매트에서는 거의 실행하지 않습니다. 각 단계의 값은 코드가 아니라 배포 형태별 설정입니다.

쿨다운, 재시도 없음, 일정 시간 후 잊기

매치에 실패한 카드를 반복해서 재시도하지 않고, 프레임 안에 계속 놓인 카드를 다시 식별하지 않으며, 충분히 오래 사라졌던 카드는 돌아왔을 때 새로 분석합니다.

호출 가드와 워치독

동시에 진행되는 식별은 한 건뿐입니다. 최소 간격과, 엔드포인트가 응답하지 않을 때 파이프라인을 풀어 주는 타임아웃을 갖추고 있습니다. 느린 호출이 스트림을 멈추는 일은 없습니다.

초고속 결과

cardstream을 움직이는 AI 모델은 사용자의 개인 컴퓨터에서 실행됩니다. 시스템은 매우 빠르며 GPU가 전혀 필요 없습니다.

입력

지원하는 영상 소스와 유형

입력 소스는 교체할 수 있으며, 어떤 것을 고르든 분석은 동일합니다.

카메라와 파일

웹캠 인덱스, 동영상 파일, 정지 이미지, 그리고 웹 UI를 실행했을 때의 브라우저 웹캠. 방송 전에 설정을 테스트하기에 좋습니다.

풀: RTSP, RTMP, SRT

IP 카메라, 인코더, 리스트리머를 지정하면 영상을 가져오며, 피드가 끊기면 상한이 있는 백오프로 다시 연결합니다.

푸시: OBS에서 바로

리스너로 실행하고 OBS가 RTMP나 SRT로 푸시하게 하세요. 마켓플레이스로 보내는 출력 옆에 출력 하나만 더 추가하면 됩니다.

WebSocket JPEG 피드

직접 만든 장비용: 소켓으로 JPEG 프레임을 보낼 수 있는 프로세스라면 무엇이든 유효한 소스입니다.

세 가지 해상도 설정

카메라가 캡처하는 해상도, 전송하는 해상도, 분석하는 해상도는 서로 다른 숫자입니다. 분석은 작고 저렴하게 실행되며, 식별을 위해 보내는 크롭은 전체 프레임에서 다시 잘라냅니다.

프레임은 사용자의 것

클라이언트 사이드 모드에서는 서로 다른 카드 한 장당 JPEG 크롭 한 장 외에는 아무것도 컴퓨터 밖으로 나가지 않습니다. 스트림도, 그 주변의 프레임도 전송되지 않습니다. 방송을 Ximilar 계정에 저장하는 것은 직접 켜야 동작하는 플래그입니다.

모델

저희 가중치로, 또는 직접 학습한 가중치로

CPU용으로 준비된 모델로 라이브 방송을 분석하세요. 더 높은 정확도나 극한의 속도가 필요하다면 직접 학습시켜 GPU에 배포하세요!

RF-DETR 세그멘테이션

기본 로케이터: 파인튜닝된 인스턴스 세그멘테이션 .onnx 익스포트를 onnxruntime으로 실행하며 torch는 필요 없습니다. 마스크에서 카드의 네 모서리를 얻으므로, 유료로 보내는 크롭은 기울기가 보정되고 카드 가장자리에 딱 맞게 잘립니다.

RF-DETR / RT-DETRv2 감지

옵트인 대안으로서의 바운딩 박스. 속도가 중요하면 ONNX, 파인튜닝을 아직 반복 중이라면 transformers 디렉터리나 hub id를 지정할 수 있습니다.

가중치 포함

RF-DETR 로케이터와 임베딩 모델은 Ximilar가 학습시켜 Apache-2.0으로 공개했습니다. 설치 프로그램이 가져오므로, 동작하는 파이프라인까지 학습 단계는 없습니다.

임베더 백엔드

동일 카드 게이트용 임베딩 모델은 Torch, ONNX, LiteRT/TFLite를 지원합니다. 컴퓨터에 이미 있는 런타임을 그대로 쓰세요.

무거운 임포트는 지연 로딩

Torch는 코어의 의존성이 아닙니다. 사용하는 백엔드에 필요한 extras만 설치하면 나머지는 모두 그대로 동작합니다.

어떤 식별 서비스든

식별 호출은 교체 가능한 하나의 단계입니다. Ximilar, 독자적인 인식 서비스, 또는 직접 호스팅하는 모델을 지정할 수 있습니다.

운영

카메라 옆에서 도는 프로세스 하나

감지와 게이트는 설치 가능한 패키지 하나로 사용자의 컴퓨터에서 실행되며, 단 한 번의 식별 호출이 거기서 곧장 API로 전달됩니다.

두 개의 진입점, 하나의 파이프라인

장비와 스크립트용 헤드리스 명령어, 그리고 동작을 직접 보고 싶을 때의 로컬 브라우저 UI. 둘 다 같은 플래그를 받아 같은 파이프라인을 구성합니다.

자격 증명 하나, 로컬에 보관

Ximilar 키는 사용자의 컴퓨터 환경 변수에서 읽습니다. 여기서 만들 계정도, 신뢰해야 할 중간 계층도 없으며, 계속 돌려야 하는 것은 프로세스 자체뿐입니다.

루프를 막는 것은 없음

JPEG 디코드, 감지, HTTP, 디스크 쓰기는 모두 이벤트 루프 밖에서 실행됩니다. 느린 프레임은 쌓여 가는 지연 큐에 들어가는 대신 버려집니다.

라이브 설정 대화 상자

임계값, 카테고리, 게임, 세트 코드, 문자 체계는 방송 중에 브라우저에서 다시 조정할 수 있습니다. 모든 컨트롤이 하나의 디스크립터 목록에서 생성되므로 UI와 검증이 어긋날 수 없습니다.

스트림을 위해 만든 오버레이

상태 배지, 바운딩 박스, 그리고 보여 준 모든 카드의 기록. 카드마다 썸네일과 프레임에 머문 시간이 남고, 플래그 하나면 이 기록이 Ximilar 계정에 저장됩니다. 게이트가 판단하는 과정을 보고 싶을 때는 디버그 패널이 있습니다.

오프라인 테스트 스위트

전체 스위트가 네트워크나 모델 파일 없이 실행됩니다. ONNX 세션과 디텍터에는 페이크를 사용합니다. 포크한 뒤에도 무언가를 망가뜨렸는지 확인할 수 있습니다.

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

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