为主播打造的卡牌分析。快,而且准。
cardstream 是一台包裹在卡牌识别端点外面的状态机。下面的每一项,要么让识别更准,要么确保只在真正值得付费的时候才去识别。
从任意直播实时识别卡牌
一个开关背后是四个识别端点:集换式卡牌游戏、球星卡、评级卡砖和漫画。
完整匹配结果,一个对象搞定
名称、全名、系列、系列代码、卡号、子系列、年份和子类别,每张识别出的卡都以一个对象送达,可以直接念出来、记录下来,或推进你自己的工具里。
可以据此行动的置信度
每条匹配都带有原始距离和高 / 中 / 低三级置信等级(分界点在 0.30 和 0.40)。设一个结果阈值,低于它的卡不会出现在叠加层上。
备选匹配
每个结果都附带最多四张它本来也可能是的其他卡。如果首选匹配错了,正确答案通常就在这个短名单里。
缩小搜索范围的预设
告诉它游戏、系列代码或文字系统,端点就不用再猜。这些值在本地验证:打错字会在你的机器上直接报错,而不是悄悄返回错误的版本。
每场直播一个类别
一个参数,或者直播中在设置对话框里选:tcg、sport、slab 或 comics。切换时,新类别不认识的预设会被丢弃,而不是发一个它用不了的值过去。
正面、背面与旋转
已知属性随裁切图一起发出,端点就能跳过不需要的分类器:出错的环节更少,回答更快。
用 AI 快速分析直播
一台状态机,两种部署形态共用。这里的一切都在你自己的 CPU 上运行,在任何数据离开本机之前。
运动闸门
一次帧间平均差分判断画面是否已经静止。卡还在画面里移动时,后续任何环节都不会触发。
身份闸门
画面里的每张卡都通过 AI 模型的嵌入向量与上一张比较。它只回答一个问题:同一张卡,还是新卡?
三档检测节流
有东西在动时检测频繁,卡静止时检测很少,桌面空着时几乎不检测。各档的数值是配置项,而不是写死在代码里。
冷却、不重试、定时遗忘
匹配失败的卡不会被反复重试;一直留在画面里的卡不会被重复识别;消失足够久的卡回来时会重新分析。
调用守卫与看门狗
同一时间只有一次识别在进行,带最小间隔和超时机制,端点挂起时能让流水线脱困。一次慢调用绝不会拖住直播。
极速结果
cardstream 背后的 AI 模型就跑在你的个人电脑上。系统非常快,而且完全不需要 GPU。
支持的视频源与类型
视频源可以随意更换;无论选哪个,分析都完全相同。
摄像头与文件
网络摄像头编号、视频文件、静态图片,或者运行 Web 界面时的浏览器网络摄像头。适合开播前测试一套配置。
拉流:RTSP、RTMP、SRT
指向一台 IP 摄像头、编码器或转推服务,它就会拉流;信号中断时以有上限的退避自动重连。
推流:OBS 直接推入
以监听模式运行,让 OBS 把 RTMP 或 SRT 推过来:在推给交易平台那一路旁边再加一路输出。
WebSocket JPEG 流
给自制设备用:任何能通过 socket 发送 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。
两个入口,一条流水线
一个给固定设备和脚本用的无界面命令,一个想看它工作时用的本地浏览器界面。两者接受同样的参数,构建同样的流水线。
一份凭据,只存本地
你的 Ximilar 密钥从你自己机器的环境变量里读取。这里不用注册账号,没有需要信任的中间层,除了进程本身没有任何东西需要持续运行。
没有任何东西阻塞循环
JPEG 解码、检测、HTTP 和磁盘写入全部在事件循环之外运行。处理慢的帧直接丢弃,而不是排进一条越来越长的队列。
实时设置对话框
阈值、类别、游戏、系列代码和文字系统都可以在直播中从浏览器里重新调整,而且每个控件都由同一份描述符列表生成,界面和验证不可能脱节。
为直播打造的叠加层
状态徽标、边界框,以及你展示过的每张卡的历史记录(每张卡的缩略图和它在画面里停留的时间),一个参数就能把它保存到你的 Ximilar 账号。想看闸门怎么判断时,还有调试面板。
离线测试套件
整个套件不需要网络也不需要模型文件就能运行:ONNX 会话和检测器都用替身。fork 之后,你依然能知道自己有没有弄坏什么。
开源。自托管。你的直播,你的技术栈。
没有中间平台,没有按席位收费的许可:接入 Ximilar API 或你自己的识别系统,cardstream 对每张不同的卡只调用一次,而不是每帧一次。无论你是在 Whatnot 上拆盒、做 Fanatics Live 式的直播秀,还是在自己的直播电商环境里开播,今晚就能用手头现有的硬件跑起 cardstream。