cardstream
Возможности

Анализ карт для стримеров. Быстро и точно.

cardstream — это конечный автомат вокруг эндпоинта распознавания карт. Всё перечисленное ниже либо улучшает распознавание, либо следит за тем, чтобы оно происходило, только когда за него действительно стоит платить.

Распознавание

Распознавание карт в реальном времени с любого стрима

Четыре эндпоинта распознавания за одним переключателем: коллекционные карточные игры, спортивные карточки, карты в слабах и комиксы.

Всё совпадение одним объектом

Название, полное название, сет, код сета, номер карты, серия, год и подкатегория приходят одним объектом на каждую распознанную карту: его можно зачитать, записать в журнал или передать в свои инструменты.

Уверенность, на которую можно опереться

У каждого совпадения есть исходное расстояние и уровень High / Medium / Low (границы на 0.30 и 0.40). Задайте порог результата, и карты ниже него не попадут в оверлей.

Альтернативные совпадения

К каждому результату прилагается до четырёх других карт, которые могли оказаться на его месте. Если первое совпадение неверно, правильное обычно есть в этом коротком списке.

Подсказки, которые сужают поиск

Сообщите игру, код сета или письменность, и эндпоинту не придётся их угадывать. Значения проверяются локально: опечатка вызовет ошибку на вашем компьютере, а не вернёт незаметно не то издание.

Своя категория для каждого эфира

Один флаг или окно настроек прямо во время стрима: tcg, sport, slab или comics. При переключении подсказки, незнакомые новой категории, отбрасываются, а не уходят к ней бесполезным значением.

Лицо, рубашка и поворот

Известные признаки отправляются вместе с кропом, и эндпоинт пропускает ненужные классификаторы: меньше поводов для ошибок, быстрее ответы.

Движок решений

Быстрый анализ стримов с помощью ИИ

Один конечный автомат, общий для обоих вариантов развёртывания. Всё перечисленное здесь выполняется на вашем процессоре — до того, как что-либо покинет компьютер.

Фильтр движения

Средняя разница между кадрами показывает, замерла ли сцена. Пока карта движется в кадре, дальше ничего не срабатывает.

Фильтр повторов

Каждую карту в кадре ИИ-модель сравнивает с предыдущей по эмбеддингу. Она отвечает на один вопрос: та же карта или новая?

Три ступени частоты детекции

Детекция запускается часто, пока что-то движется, редко — на неподвижной карте и почти никогда — на пустом коврике. Ступени задаются в конфигурации, отдельно для каждого варианта развёртывания, а не зашиты в код.

Пауза, отказ от повторов, забывание

Карта, для которой совпадение не нашлось, не отправляется снова по кругу; карта, которую держат в кадре, не распознаётся повторно; карта, которой не было достаточно долго, при возвращении анализируется заново.

Ограничитель запросов и сторожевой таймер

Одновременно выполняется только одно распознавание, с минимальным интервалом и тайм-аутом, который выводит пайплайн из ступора, если эндпоинт завис. Медленный запрос никогда не останавливает стрим.

Сверхбыстрые результаты

ИИ-модели cardstream работают на вашем персональном компьютере. Система очень быстрая, и GPU ей не нужен.

Источники

Поддерживаемые источники и форматы видео

Источники взаимозаменяемы, а анализ одинаков, какой бы вы ни выбрали.

Камеры и файлы

Индекс веб-камеры, видеофайл, отдельное изображение или веб-камера браузера, если запущен веб-интерфейс. Удобно, чтобы проверить сетап перед эфиром.

Получение потока: RTSP, RTMP, SRT

Укажите IP-камеру, энкодер или сервис ретрансляции, и cardstream сам заберёт поток, а при обрыве переподключится с растущей, но ограниченной паузой.

Отправка: напрямую из OBS

Запустите cardstream в режиме ожидания, и пусть OBS отправляет ему RTMP или SRT: это один дополнительный вывод рядом с тем, что идёт на маркетплейс.

JPEG-кадры по WebSocket

Для самодельных сетапов: источником может быть любой процесс, который умеет отправлять 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 и детекторы заменены заглушками. Сделайте форк — и всё равно будет видно, не сломалось ли что-нибудь.

Открытый код. Работает у вас. Ваш стрим, ваш стек.

Ни платформы-посредника, ни платы за рабочие места: подключите API Ximilar или собственную систему распознавания, и cardstream будет обращаться к ней один раз на каждую новую карту, а не на каждый кадр. Проводите ли вы брейки на Whatnot, ведёте эфир в духе Fanatics Live или продаёте в прямом эфире на своей площадке — запустите cardstream уже сегодня вечером на том оборудовании, которое у вас есть.