Анализ карт для стримеров. Быстро и точно.
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 уже сегодня вечером на том оборудовании, которое у вас есть.