配信者のためのカード解析。高速、そして高精度。
cardstream は、カード識別エンドポイントを包み込むステートマシンです。以下の機能はどれも、識別の精度を高めるか、あるいは本当に支払う価値があるときにだけ識別が実行されるようにするためのものです。
あらゆる配信からリアルタイムでカードを識別
トレーディングカードゲーム、スポーツカード、鑑定済みスラブ、コミック。4つの識別エンドポイントをスイッチ1つで切り替えられます。
マッチ結果を1つのオブジェクトに
名前、フルネーム、セット、セットコード、カード番号、シリーズ、年、サブカテゴリが、識別されたカード1枚につき1つのオブジェクトとして届きます。読み上げ、ログ記録、独自ツールへの連携にそのまま使えます。
判断に使える信頼度
すべてのマッチに、生の距離値と High / Medium / Low の3段階(境界は 0.30 と 0.40)が付きます。結果のしきい値を設定すれば、それを下回るカードはオーバーレイに表示されません。
候補マッチ
すべての結果に、可能性のある別のカードが最大4枚添えられます。最上位のマッチが間違っていても、正解はたいていこの短いリストの中にあります。
検索を絞り込むプリフィル
ゲーム、セットコード、文字体系をあらかじめ指定すれば、エンドポイントはそれらを推測しなくなります。値はローカルで検証されるため、タイプミスはあなたのマシン上で失敗し、誤った版が静かに返ってくることはありません。
番組ごとにカテゴリを切り替え
フラグ1つ、または配信中に設定ダイアログから、tcg / sport / slab / comics を選べます。切り替え時には、新しいカテゴリが扱えないプリフィルは送信せず、破棄されます。
表面・裏面・回転
既知の属性は切り抜きと一緒に送られるため、エンドポイントは不要な分類器をスキップできます。間違う要素が減り、応答も速くなります。
AIによる高速なライブ配信解析
2つのデプロイ形態が共有する、1つのステートマシン。ここにあるものはすべて、データがマシンの外に出る前に、あなた自身のCPU上で実行されます。
モーションゲート
フレーム差分の平均値から、シーンが静止したかどうかを判定します。カードがフレーム内を動いている間は、後続の処理は一切起動しません。
同一性ゲート
フレーム内の各カードを、AIモデルの埋め込みによって直前のカードと比較します。答えるのは「同じカードか、新しいカードか」という1つの問いだけです。
3段階の検出スロットル
何かが動いている間は検出を頻繁に、静止したカードにはまれに、何もないマットにはほとんど実行しません。各段階の値は設定項目で、コードに埋め込まれてはいません。
クールダウン、再試行なし、一定時間後に忘却
マッチに失敗したカードを繰り返し再試行することはなく、フレーム内に置かれたままのカードを再識別することもなく、十分な時間フレームから消えたカードは戻ってきたときに改めて解析されます。
呼び出しガードとウォッチドッグ
同時に進行する識別は1件のみ。最小間隔と、エンドポイントが応答しなくなったときにパイプラインを解放するタイムアウトを備えています。遅い呼び出しが配信を止めることはありません。
超高速な結果
cardstream を支えるAIモデルは、あなたのパソコン上で動作します。システムは非常に高速で、GPUは一切不要です。
対応する映像ソースと種類
ソース(入力)は差し替え可能で、どれを選んでも解析は同じです。
カメラとファイル
ウェブカメラのインデックス、動画ファイル、静止画像、そしてWeb UIを起動したときのブラウザのウェブカメラ。本番前にセットアップを試すのに便利です。
プル:RTSP、RTMP、SRT
IPカメラ、エンコーダー、リストリーマーを指定すれば映像をプルします。フィードが途切れたときは、上限付きバックオフで再接続します。
プッシュ:OBSから直接
リスナーとして起動し、OBSからRTMPまたはSRTでプッシュします。マーケットプレイスに送っている出力の隣に、出力を1つ追加するだけです。
WebSocket JPEGフィード
自作のリグ向けに:ソケット経由でJPEGフレームを送れるプロセスなら、どれでも有効なソース(入力)になります。
3つの解像度設定
カメラが取り込む解像度、送信する解像度、解析する解像度は、それぞれ別の数値です。解析は小さく低コストに実行され、識別のために送る切り抜きはフルフレームから切り出し直されます。
フレームはあなたのもの
クライアントサイドモードでは、異なるカード1枚につきJPEG切り抜き1枚以外は何もマシンの外に出ません。ストリームも、その前後のフレームも送信されません。配信を 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 だけをインストールすれば、それ以外はすべてそのまま動作します。
任意の識別サービス
識別の呼び出しは、差し替え可能な1ステップです。Ximilar、独自の認識サービス、あるいは自分でホストするモデルに向けられます。
カメラの隣で動く、1つのプロセス
検出とゲートは、インストール可能な1つのパッケージからあなたのマシン上で実行され、1回の識別呼び出しはそこから直接APIに送られます。
2つのエントリーポイント、1つのパイプライン
リグやスクリプト向けのヘッドレスコマンドと、動作を目で確かめたいときのローカルブラウザUI。どちらも同じフラグを受け取り、同じパイプラインを構築します。
認証情報は1つ、ローカルに保持
Ximilar のキーは、あなた自身のマシンの環境変数から読み込まれます。ここで作るアカウントはなく、信頼すべき中間層もなく、動かし続けるものはプロセスそのものだけです。
ループを止めるものはない
JPEGデコード、検出、HTTP、ディスク書き込みはすべてイベントループの外で実行されます。処理の遅いフレームは破棄され、遅延が積み上がるキューに入ることはありません。
ライブ設定ダイアログ
しきい値、カテゴリ、ゲーム、セットコード、文字体系は配信中にブラウザから再調整できます。すべてのコントロールが1つのディスクリプタリストから生成されるため、UIと検証がずれることはありません。
配信のために作られたオーバーレイ
状態バッジ、バウンディングボックス、そして見せたすべてのカードの履歴(各カードのサムネイルと、フレーム内に留まった時間)。この履歴はフラグ1つで Ximilar アカウントに保存できます。ゲートの判断過程を見たいときのデバッグパネルもあります。
オフラインのテストスイート
スイート全体がネットワークもモデルファイルもなしで実行できます。ONNX セッションと検出モデルにはフェイクを使用。フォークしても、何かを壊したかどうかを確かめられます。
オープンソース。セルフホスト。あなたの配信を、あなたのスタックで。
間に入るプラットフォームも、シートライセンスもありません。Ximilar API または独自の識別システムを接続すれば、cardstream はフレームごとではなく、異なるカードごとに1回だけ呼び出します。Whatnot でのブレイク、Fanatics Live 形式のショー、独自のライブコマース環境での配信——どんな形でも、今夜からお手持ちのハードウェアで cardstream を動かせます。