- BrainTools - https://www.braintools.ru -
Вода камень точит. А у нас – не вода.
Итак.

Последние пару месяцев мы в Comexp Research Lab сотрудничаем с ГК «Барс» [1] в рамках развития их проекта «Ночной глаз» – это такая система для лодок и катеров. Команда проекта использовала TAPe+ML, подготовила собственный датасет, обучила нашу модель распознавания и встроила ее в решение с RGB-камерой и тепловизором.
Камера помогает увидеть обстановку на воде. Компьютерное зрение [2] помогает понять, что находится в кадре. Вместе они превращают систему ночного видения в инструмент, который не только показывает изображение, но и выделяет значимые объекты.
Система прошла испытания на воде и получила положительную оценку заказчика. Теперь мы вместе готовим локальную версию для коммерческих комплектов.
В целом понятно зачем. Но есть нюансы. Ночью оператору катера недостаточно просто видеть изображение с камеры. Нужно различать объекты на воде, следить за курсом и вовремя замечать то, что требует внимания [3]. В воде встречаются не только буи и катера, но и бревна и всякие другие препятствия, в темноте трудно различимые.
«Ночной глаз» уже решает задачу получения изображения при слабой освещенности. Добавление распознавания расширяет его возможности: система выделяет буи, лодки и другие целевые объекты прямо в кадре. Для судоводителя это дополнительная помощь при наблюдении за обстановкой. Не нужно постоянно искать каждый объект на экране самостоятельно: система обращает на него внимание.
Именно для этой задачи «Ночной глаз» выбрал TAPe+ML после проведения тестовых испытаний и сравнения, хех, с YOLO.
Как вы уже знаете, TAPe – это фундаментальный феномен, подобно электричеству, которое не сводится к отдельному устройству или способу его использования. TAPe всем нам открывает другой способ работы с информацией и позволяет создавать решения, либо недоступные при привычных подходах, либо кратно эффективнее с точки зрения как требуемых ресурсов (деньги, время, человеки, серверы, GPU, электроэнергия и пр.), так и, собственно, результата.
Одно из таких применений TAPe – компьютерное зрение уровня передовых мировых моделей, которое можно переносить на разные вычислительные носители, а не привязывать к тяжелой инфраструктуре. В ближайшее время мы выкатим on-premise модель с невероятными характеристиками и подробнее расскажем о ней. «Ночной глаз» фактически стал первым, кто ее получил.
Если вы впервые читаете о TAPe, можно начать с наших предыдущих материалов:
TAPe + ML: универсальная архитектура компьютерного зрения [4]
TAPe+ML v2: модель распознавания с числом параметров менее 100 тысяч [6]
Так вот. Напомним, что в нашей модели TAPe+ML высокое качество распознавания сочетается с компактной архитектурой: модель достигла 88,1% точности на ImageNet-1k и 65,3% mAP50–95 на COCO при менее чем 100 тысячах параметров. Это не предел. Читайте arXiv [7] или краткое резюме на Хабре уважаемом [8].
Если говорить совсем скромно и просто, то для разработчиков и производителей оборудования это принципиально новая возможность строить интеллектуальные продукты вокруг любой собственной задачи. Например, развернуть компьютерное зрение уровня SOTA на своей камере, без доступа к интернету.
Вот какие инструменты команда «Ночного глаза» получила:
загрузку тренировочных и валидационных данных;
ручную и автоматическую разметку;
обучение [9] моделей;
анализ результатов;
API для интеграции и автоматизации.
Мы предоставили им технологию и платформу. «Ночной глаз» подготовил предметные данные, обучил собственную модель и разработал программную часть, которая связывает распознавание с камерами и пользовательским интерфейсом.
Работу над CV-компонентом со стороны «Глаза» вел Илья Егоров. До этого проекта Илья занимался ИИ-интеграциями и автоматизацией бизнес-процессов. Использование TAPe+ML позволило ему перейти к прикладной задаче компьютерного зрения, не начиная с разработки собственной архитектуры.
Илья отвечал за подготовку данных, обучение и интеграцию. Аппаратная команда развивала камеры и оборудование «Ночного глаза».Такое разделение работы позволило соединить две компетенции: знание продукта и условий его эксплуатации со стороны «Ночного глаза» и технологию распознавания со стороны TAPe.
Я разговаривал с ним два часа, чтобы вытащить из него фактуру для этой статьи, задав примерно 80 вопросов. Как и большинство технарей, он был предельно немногословен, зато предельно конкретен. Сторителлинга не вышло, но контента более чем достаточно. Кроме того, Илья так впечатлился проектом и технологией, что через неделю будет читать лекцию и проводить семинар для слушателей ВШЭ на тему того, как компьютерное зрение в исполнении TAPe может помочь руководителям принимать управленческие решения. Об этом мы расскажем в свое время (я видел план лекции, там все круто и интересно).
Датасет: RGB, ночная съемка и тепловизор
Исходный датасет включал RGB-изображения лодок, буев и других объектов. Затем команда дополнила датасет ночными записями, кадрами с собственных камер и тепловизионными изображениями.
На одном из поздних этапов выборка содержала 2205 тренировочных и 506 валидационных изображений.
Это была не просто задача набрать больше картинок. Требовалось представить объекты так, как их увидит устройство: с разных расстояний, на фоне воды и берега, в RGB- и тепловизионном каналах.
При подготовке модели оказалось, что доступность изображений не всегда совпадает с важностью объекта для пользователя. Фотографии лодок и буев найти проще, чем кадры плавающего бревна или камня, едва выступающего над водой. При этом именно такие небольшие препятствия интересуют команду «Ночного глаза»: их нужно замечать в условиях слабой видимости.
Например, для первой попытки обучения на бревнах Илья собрал около 15 изображений – десять для обучения и пять для валидации (да, нашей модели нужно вот столько изображений для обучения). Поэтому работу над этой категорией выделили в отдельное направление, а в первой версии сосредоточились на буях и плавсредствах. Следующий этап – дополнительные съемки и расширение модели на малые препятствия.
Важна была не только категория объекта, но и то, как его видит конкретная камера. В открытых наборах встречались хорошие тепловизионные изображения, однако команде требовалось больше ближних кадров с собственного оборудования. Также нужно было расширить разнообразие лодок, снятых камерами «Ночного глаза» в темноте: разные типы плавсредств, ракурсы и расстояния.
Отдельная задача – туман. На этапе подготовки модели таких сцен в датасете еще не было. Команда запланировала пополнять выборку во время выходов на воду, чтобы развивать распознавание на съемках из реальных условий эксплуатации.
Так работа с данными стала частью развития продукта. Для первого решения команда «Ночного глаза» подготовила модель под приоритетные объекты, а для следующих версий сформировала конкретную программу сбора изображений: туман, малые препятствия, бревна и дополнительные ночные и тепловизионные сцены.
Автоаннотация TAPe+ML ускорила подготовку данных. Вместо того чтобы расставлять каждую рамку с нуля, Илья проверял и корректировал предложения системы.
Параллельно команда очищала разметку: уточняла границы объектов, разрешала конфликты между классами и удаляла повторяющиеся боксы. В ходе работы были удалены 416 дублирующихся рамок на 282 файлах.
API помог автоматизировать часть операций над датасетом. Илья использовал его не только для распознавания, но и для подготовки данных: удалял ошибочно выставленные дублирующиеся боксы одного класса на объекте, менял классы у уже размеченных объектов – например, при объединении buoy и marker_buoy (буя со световым огнем). До запуска обучения он также получал количество боксов по каждому классу в тренировочной и валидационной выборках, чтобы понять, где нужно добавить, перенести или убрать кадры. Все эти операции Илья выполнял через запросы к API.
Илья пересматривал набор категорий по мере обучения. Близкие классы объединяли, а приоритет отдавали объектам, важным для первого сценария использования: прежде всего буям и плавсредствам. Это позволило сосредоточить работу на конкретной пользовательской функции, а не на максимально длинном списке распознаваемых сущностей.
После обучения Илья подключил модель к камерам «Ночного глаза». На испытаниях система получала изображения с RGB-камеры и тепловизора, распознавала объекты через наш API и выводила рамки с названиями классов в пользовательском интерфейсе.
В выбранном запуске модель достигла F1 0,736 и mAP50 0,756. Показатели характеризуют качество обнаружения объектов: баланс между пропусками и ложными срабатываниями, правильность определения классов и расположения рамок. За этим результатом стояла работа с водными сценами: сбор кадров, проверка разметки, уточнение классов и добавление ночных и тепловизионных изображений.
На воде команда проверила, как обученная модель работает в составе «Ночного глаза».
Для «Ночного глаза» важно не просто найти объект в кадре, а определить его категорию. Буй и лодка требуют разной интерпретации, хотя на небольшом тепловизионном изображении могут выглядеть похоже.
Эту разницу показывает один из примеров подготовки модели. На одном и том же изображении базовая модель обозначила небольшие цели на воде как boat, а модель «Ночного глаза» использовала категорию buoy. Обучение на предметных данных позволило перейти от общего распознавания к категориям, нужным продукту.


Следующий шаг – связать распознавание с камерами и интерфейсом. В испытательной конфигурации RGB-камера и тепловизор подключались к мини-ПК RDBox. Для работы с нашим API использовали интернет, раздаваемый с телефона.
TAPe+ML получала кадры и возвращала координаты обнаруженных объектов. Написанный командой «Ночного глаза» Python-сервис наносил рамки на изображения и выводил результат в интерфейсе системы.
Таким образом, обученная модель стала частью собственного решения «Ночного глаза». На экране пользователь видит не только изображение с камеры, но и выделенные объекты – результат совместной работы аппаратной системы, нашей модели распознавания и программной интеграции партнера.
На нескольких полевых испытаниях команда проекта проверила всю цепочку: получение изображений, передачу кадров, распознавание и отображение объектов в интерфейсе. Система работала с реальными камерами в водной среде.
Например, TAPe+ML обнаружила лодки на расстоянии 500 метров – по описанию участников испытаний, на изображениях с тепловизора и обычной камеры в тот момент не было видно «даже точки».

Конечно, система еще работает не идеально: однажды при проходе под мостом она распознала красные блики от его габаритных огней как буй – скорее всего, потому, что обучена распознавать в том числе буи с красными огнями. Это решается дообучением модели – а именно добавлением в датасет свежих кадров с лодок и добавлением нового класса «мост».
После испытаний естественным образом решили двигаться к локальному распознаванию. В коммерческой конфигурации рассматривается Android-планшет с RGB-камерой и тепловизором.
Локальная обработка означает, что CV-функция не будет зависеть от соединения с облачным API. Для производителя это возможность поставлять распознавание как часть комплекта оборудования.
Работа над локальной версией для «Ночного глаза» стала одним из этапов оптимизации TAPe+ML под процессорное ядро. Первоначальная поставка для проекта занимала около 28–30 МБ. Эта версия работала на RDBox с загрузкой ядра всего 30–60%.
Затем мы продолжили оптимизацию библиотек и исполнения. Текущая локальная поставка занимает около 4,2 МБ. Модель помещается во внутренней памяти [10] процессора и после первоначальной загрузки работает там – без постоянного переноса ее параметров из оперативной памяти. На протестированных CPU обработка кадра на одном ядре занимает 8,6–15,8 мс.
Для коммерческих комплектов «Ночного глаза» мы готовим локальное исполнение, обновления, активацию и поддержку. Команда проекта также планирует расширить набор распознаваемых объектов, включая малые препятствия на воде. Модель можно развивать вместе с продуктом: добавлять целевые съемки и обучать новые категории.
Параллельно с технической работой мы обсуждаем коммерческую модель «вендор — интегратор» и совместный заработок на всех этапах. Одна единица использования соответствует одному обработанному кадру. Стартовый пакет можно включать в стоимость комплекта, а затем пополнять по мере эксплуатации.
Такой подход позволяет нам учитывать разные сценарии. Частный катер используется сезонно и сравнительно недолго. Чартерное судно работает интенсивнее и чаще нуждается в пополнении.
В поставку предполагается включить не только использование модели, но и ее обновления и поддержку интеграции. Команда рассматривает и дальнейшее продвижение продукта на рынках ОАЭ и Европы.
Возможности модели (SOTA, 4,2 МБ, одно ядро CPU) открывают, как говорится, широкие возможности и для производителей, и для нас. Присоединяйтесь все, кому интересно.
С TAPe ML вы можете обучить модель на своих данных и встроить распознавание в собственный продукт – систему наблюдения, промышленное оборудование или пользовательский сервис. На платформе [11]ml.comexp.net [12] собраны инструменты для всего цикла: загрузки изображений, ручной и автоматической разметки, обучения, проверки результатов и интеграции. Детекция, сегментация, классификация, object tracking. Все там.
Начать можно с готовой модели: загрузить изображение и посмотреть, какие объекты она обнаружит. Базовая модель обучена на COCO и распознает 80 классов. Для собственных объектов и категорий можно создать и обучить отдельную модель.
Дальнейшая работа проходит в несколько шагов:
Загрузить данные своей задачи. На платформе доступны загрузка тренировочных и валидационных изображений, подготовка разметки и обучение. В «Ночном глазе» команда использовала RGB-кадры, ночные записи и тепловизионные изображения — данные с тех камер и из тех условий, в которых предстояло работать системе.
Разметить первые примеры и подключить авторазметку. Необязательно вручную размечать весь набор до первого обучения. После начальной разметки модель предлагает объекты на остальных изображениях, а пользователь подтверждает или исправляет результат. Такой цикл позволяет пополнять датасет, проверяя предложения системы, а не рисуя каждую рамку с нуля.
Обучить модель и проверить результат. Платформа предоставляет инструменты обучения и анализа результатов. Команда «Ночного глаза» использовала их, чтобы пересматривать набор классов, исправлять аннотации и дополнять данные ночными и тепловизионными сценами.
Подключить распознавание к своему продукту. Через API можно получать результаты обнаружения объектов и использовать их в собственном приложении. API также позволяет автоматизировать подготовку данных: в «Ночном глазе» с его помощью удаляли дублирующиеся рамки, объединяли классы и проверяли количество размеченных объектов в тренировочной и валидационной выборках.
Получить локальную версию для своего оборудования. После обучения мы можем подготовить исполнение под процессор заказчика. Текущая локальная поставка занимает около 4,2 МБ и работает на одном ядре CPU — без обязательной видеокарты (как мы и грозились [13]) и передачи кадров в облачный API.
Проектная команда «Ночного глаза» во главе с Ильей прошла этот путь: подготовила данные, обучила модель, встроила ее в систему и проверила работу на воде. TAPe ML предоставила инструменты для каждого этапа — от разметки до интеграции. Технология сочетает качество распознавания уровня SOTA с локальным исполнением на одном ядре CPU. Кажется, мы это уже говорили, но кашу маслом не испортишь.
Загрузите свои изображения на [11]ml.comexp.net [12] и проверьте распознавание на своей задаче.
Автор: oopatow
Источник [14]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/37087
URLs in this post:
[1] ГК «Барс»: https://bars-gk.ru/proekty/
[2] зрение: http://www.braintools.ru/article/6238
[3] внимания: http://www.braintools.ru/article/7595
[4] TAPe + ML: универсальная архитектура компьютерного зрения: https://habr.com/ru/articles/1004788/
[5] TAPe‑дневник: эксперименты с детекцией на COCO: https://habr.com/ru/articles/1015514/
[6] TAPe+ML v2: модель распознавания с числом параметров менее 100 тысяч: https://habr.com/ru/articles/1052302/
[7] Читайте arXiv: https://arxiv.org/abs/2609.20869
[8] Хабре уважаемом: https://habr.com/ru/users/oopatow/articles/
[9] обучение: http://www.braintools.ru/article/5125
[10] памяти: http://www.braintools.ru/article/4140
[11] : https://ml.comexp.net/
[12] ml.comexp.net: http://ml.comexp.net
[13] как мы и грозились: https://habr.com/ru/articles/1031194/
[14] Источник: https://habr.com/ru/articles/1095492/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1095492
Нажмите здесь для печати.