В процессе своей деятельности мы ежедневно сталкиваемся с проблемой определения приоритетов развития. Учитывая высокую динамику развития IT индустрии, постоянно возрастающую востребованность со стороны бизнеса и государства к новым технологиям, каждый раз, определяя вектор развития и инвестируя собственные силы и средства в научный потенциал нашей компании, мы следим за тем, чтобы все наши исследования и проекты носили фундаментальный и междисциплинарный характер.
Поэтому, развивая нашу главную технологию – фреймворк распознавания данных HIEROGLYPH, мы заботимся как о повышении качества распознавания документов (наша основная бизнес-линия), так и возможности применения технологии для решения смежных задач распознавания. В сегодняшней статье мы расскажем, как на базе нашего движка распознавания (документов), мы сделали распознавание более крупных, стратегически важных объектов в видеопотоке.
Постановка задачи
Используя имеющиеся наработки построить систему распознавания танков, позволяющую проводить классификацию объекта, а также определять базовые геометрические показатели (ориентацию и расстояние) в слабоконтролируемых условиях без использования специализированного оборудования.
Решение
В качестве основного алгоритма при решении задачи мы выбрали подход статистического машинного обучения. Но одной из ключевых проблем машинного обучения, является необходимость наличия достаточного количества обучаемых данных. Очевидно, что натуральные изображения, полученные с реальных сцен, содержащие необходимые нам объекты, нам недоступны. Поэтому было решено прибегнуть к генерации необходимых данных для обучения, благо опыт в этом месте у нас большой (https://habr.com/ru/company/smartengines/blog/264677/). И все же, полностью синтезировать данные для данной задачи нам показалось неестественным, поэтому для моделирования реальных сцен был подготовлен специальный макет. На макете установлены различные объекты, моделирующие сельскую местность: характерное ландшафтное покрытие, кусты, деревья, заграждения и т.д. Изображения захватывались с помощью цифровой малоформатной камеры. В процессе захвата изображений существенно менялся задний план сцены для обеспечения большей устойчивости алгоритмов к изменениям фона.
В качестве целевых объектов выступали 4 модели боевых танков: Т-90 (Россия), М1А2 Абрамс (США), Т-14 (Россия), Меркава III (Израиль). Объекты располагались на различных позициях полигона, тем самым расширяя список допустимых видимых ракурсов объекта. Значительную роль сыграли инженерные заграждения, деревья, кусты и прочие ландшафтные элементы.
Таким образом, за пару дней мы собрали достаточный набор для обучения и последующей оценки качества работы алгоритма (несколько десятков тысяч изображений).
Непосредственно распознавание решили разбить на две части: локализация объекта и классификация объекта. Локализация выполнялась с помощью обученного классификатора Виолы и Джонса (все-таки танк — это нормальный ригидный объект, ничем не хуже чем лицо, поэтому “слеповатый на детали” метод Виолы и Джонса быстро локализует целевой объект). А вот классификацию и определение ракурса мы доверили сверточной нейронной сети — в этой задаче нам важно, чтобы детектор успешно выделял те особенности, которые, скажем отличают Т-90 от Меркавы. В результате удалось построить эффективную композицию алгоритмов, успешно решающую задачу локализации и классификации однотипных объектов.
Далее, мы запустили полученную программу на всех имеющихся у нас платформах (Intel, ARM, Эльбрус, Байкал, КОМДИВ), оптимизировали вычислительно-трудные алгоритмы для повышения быстродействия (про это мы уже неоднократно писали в своих статьях, например тут https://habr.com/ru/company/smartengines/blog/438948/ или https://habr.com/ru/company/smartengines/blog/351134/) и добились устойчивой работы программы на устройстве в режиме реального времени.
В результате проведения всех описанных действий у нас получился полноценный программный продукт, обладающий существенными тактико-техническими характеристиками.
Smart Tank Reader
Итак, представляем вам нашу новую разработку — программу для распознавания образов танков в видеопотоке Smart Tank Reader, которая:
- Решает задачу “свой-чужой” для заданного набора объектов в режиме реального времени;
- Определяет геометрические показатели (расстояние до объекта, преимущественная ориентация объекта);
- Работает в неконтролируемых погодных условиях, а также в случае частичного перекрытия объекта посторонними объектами;
- Полностью автономная работа на целевом устройстве, в том числе в условиях отсутствия радиосвязи;
- Список поддерживаемых процессорных архитектур: Эльбрус, Байкал, КОМДИВ, а также x86, x86_64, ARM;
- Список поддерживаемых операционных систем: ОС Эльбрус, ОС AstraLinux, ОС Атликс, а также MS Windows, macOS, различные дистрибутивы Linux, поддерживающие gcc 4.8, Android, iOS;
- Полностью отечественная разработка.
Обычно в заключении к своим статьям на Хабре мы даем ссылку на маркетплейс, где каждый желающий с помощью своего мобильного телефона может скачать демонстрационную версию приложения, чтобы на деле оценить работоспособность технологии. В этот раз, учитывая специфику получившегося приложения, мы желаем всем нашим читателям никогда не в жизни сталкиваться проблемой оперативного определения принадлежности танка к определенной стороне.
Автор: SmartEngines