В этой публикации мы расскажем о том, как мы решали реальную, стратегически важную задачу компьютерного зрения и машинного обучения, разрабатывали подсистему бортового программного обеспечения для пилотируемых и беспилотных спасательных летательных аппаратов, предназначенную для детектирования и распознавания на изображениях малоразмерных трудноразличимых объектов. Помимо распознавания текстов, мы в Smart Engines постоянно решаем разные задачи из области компьютерного зрения. Поэтому, когда нам предложили участие в разработке подсистемы распознавания изображений, полученных со спасательных летательных аппаратов, мы, естественно, согласились. На первом этапе проекта в качестве целевого объекта выступал спасательный надувной плот ПСН-10. Вначале задача кажется достаточно простой: необходимо найти яркий оранжевый плот на водной поверхности. В соответствии с техническим заданием, допустимый ракурс съемки спасательного плота ограничен. Исследуемое изображение формируется камерой видимого диапазона; зоны обзора составляют ±20° в горизонтальной плоскости и ±15° в вертикальной плоскости относительно строительной оси летательного аппарата. Но быстро вскрылись подводные камни решаемой задачи. Рассмотрим три главные трудности, с которыми мы столкнулись. Во-первых, камера, которая формирует изображения видимого диапазона, является (внимание!) черно-белой. Несмотря на то, что в бытовых сферах жизни уже давно используются цветные камеры, для специального оборудования лучше выбирать черно-белые. Черно-белая камера обладает рядом преимуществ перед цветной. Давайте разберемся в основах устройства цифровых цветных камер. Светочувствительные элементы матриц цифровых камер реагируют только на силу попадающего на них света. Чем больше фотонов попало на светочувствительный элемент матрицы, тем, соответственно, выше яркость. Но как в таком случае цифровая камера распознает оттенки цвета? Для того чтобы сенсор цифровой камеры научился различать цвета, над его поверхностью устанавливают блок микроскопических светофильтров. Любой цвет в спектре можно получить путем смешения трех основных цветов: красного, зеленого и синего. Хотя распределение светофильтров по поверхности сенсора может быть разным, в большинстве цифровых камер на сегодняшний день применяется байеровская мозаика (Bayer pattern). В соответствии с этой цветовой моделью цветовые фильтры над поверхностью матрицы располагаются в шахматном порядке. Количество зеленых фильтров в два раза больше, чем красных или синих (человеческий глаз более чувствителен к зеленой части светового спектра). Таким образом, каждый светочувствительный элемент матрицы воспринимает только треть спектра предметной точки. Для получения остальных 2/3 цветов предметной точки участвуют расположенные рядом светочувствительные элементы. Не будем в данном случае обсуждать корректность получаемого цветного изображения с точки зрения точности цветопередачи. Обратим внимание здесь на другой аспект. Описанная конструкция цветных цифровых камер за счет наличия светофильтра обладает намного худшей светочувствительность, чем традиционная черно-белая. Как следствие, за счет конструктивных особенностей черно-белая камера позволяет «видеть» лучше и больше даже при плохой видимости. Помимо низкой светочувствительности, цветные камеры обладают еще одним существенным недостатком в поисково-спасательных задачах. Дело в том, что такие камеры фильтруют Инфракрасное излучение (для соответствия человеческому цветовосприятию). ИК излучение сильно влияет на отображение правильной цветовой гаммы. Если не применять дополнительного ИК фильтра, некоторые цвета отображаются иначе, чем они есть на самом деле. Установка ИК фильтра решает эту задачу, но значительно ухудшает ночную съемку или съемку в условиях плохой освещенности. Кроме того, ИК фильтр делает совершенно невозможным использование ИК маячков и ИК прожекторов на спасательном оборудовании. Таким образом, искать оранжевый плот нам пришлось на однотонных изображениях. Еще раз вспомним, что разрабатываемый алгоритм поиска плота ПСН-10 на изображениях предназначается для использования на летательных аппаратах. Как следствие, требование по энергоэффективности естественным образом накладывают ограничения на применяемые алгоритмы сложность вычислений и объем используемой оперативной памяти. На одном и том же запасе топлива (заряде АКБ) ЛА может либо долго летать, либо сложные алгоритмы обсчитывать. Мы исследовали несколько используемых в настоящее время способов поиска объектов. Как выяснилось, конкурентов у метода Виолы и Джонса с точки зрения вычислительной сложности нет. Ниже представлено сравнение современных нейросетевых архитектур  с методом поиска объекта Виолы и Джонса (взято из работы [1]). Detector Inference, GFLOPS Memory Consuption, GB Viola-Jones [2] 0.6 0.1 SSD [3] 45.8 0.7 Faster R-CNN [4] 223.9 2.1 R-FCN 50 [5] 132.1 2.4 R-FCN 101 [5] 186.6 3.1 PVANET [6] 40.1 2.6 Local RCNN [7] 1206.8 2.6 Yolo 9000 [8] 34.90 2.1 Из таблицы видно, что метод Виолы и Джонса в процессе распознавания практически в 60 раз вычислительно эффективнее, чем универсальная нейросетевая архитектура Yolo 9000. Таким образом, метод Виолы и Джонса был выбран в качестве используемого инструмента. Его, правда, пришлось немного адаптировать, чтобы обеспечить должное качество (перейти от яркостных признаков Хаара к граничным признакам). Как известно, метод Виолы и Джонса использует в качестве обучающей машины алгоритм AdaBoost – алгоритм машинного обучения, предложенный Йоавом Фройндом и Робертом Шапире. Идея алгоритмов машинного обучения заключается в построении распознающей зависимости между «объектами» и «ответами», используя для этого конечную совокупность прецедентов – пар «объект – ответ». Такую совокупность прецедентов называют обучающей выборкой. Причем для гарантии высокого качества распознавания методами машинного обучения необходимо, чтобы обучающая выборка была репрезентативна относительно генеральной совокупности. В 2001 году, когда Пол Виола и Майкл Джонс разрабатывали оригинальный алгоритм для поиска лиц на изображениях, проблем с обучающим датасетом не было. В нашей задаче ситуация другая. Изображений с летательных аппаратов, снимающих спасательные плоты заданного типа, нет. Мы приняли решение синтезировать данные. Известно, что при правильном выборе признакового пространства метод Виолы и Джонса позволяет обучать детекторы на полностью синтезированных данных. Измерив все характеристики настоящего спасательного плота ПСН-10, исследовав сотни изображений такого плота в Интернете, мы приступили к синтезу датасета. В качестве инструмента для 3D моделирования мы выбрали Blender. На этапе построение общей сцены были решены следующие подзадачи: моделирование, текстурирование и анимация плота типа ПСН-10; моделирование и анимация водной поверхности; настройка поведения плота на водной поверхности; построение траектории движения камеры; освещение; моделирование погодных условий. Внутренние инструменты Blender позволили легко смоделировать геометрию водной поверхности. Обширный список параметров предоставляет возможность настроить глубину воды, величину и направление волн, силу ветра и т. д. Осадки на сцене реализованы в виде системе частиц. Для дождя и снега отдельно смоделированы капля и снежинка. Всего мы было подготовлено 7000 изображений. Этого оказалось вполне достаточно для обучения и тестирования детектора спасательного плота ПСН-10. При обучении детектора Виолы и Джонса мы использовали граничные признаки Хаара, которые, в отличие от традиционных признаков Хаара, вычисляются поверх карты границ, а не поверх исходного изображения в градациях серого. Использование граничных признаков Хаара позволяют акцентировать внимание на форме искомого объекта, а не на его яркостных характеристиках. Обученный детектор (каскад классификаторов) состоял из 11 уровней и опирался в общей сложности всего на 55 признаков. Оценка качества работы обученного детектора производилась на 2403 синтезированных изображениях. Результаты представлены в следующей таблице. True Positive False Positive False Negative Precision Recall F-measure 2374 69 29 0.972 0.988 0.980 Здесь важно сразу отметить, что для нашей задачи ошибка второго рода (False Negative) куда важнее, чем ошибка первого рода (False Positive) – ложный пропуск реального плота намного страшнее, чем случайная «галлюцинация» детектора. Помимо анализа работы на синтетике, нам удалось найти на YouTube небольшой ролик с реальными кадрами – видео со спасательной операции экипажа БМРТ «Дальний Восток». В этой статье мы рассказали о двух междисциплинарных приемах – синтез данных для машинного обучения и адаптации традиционного метода поиска лиц Виолы и Джонса для распознаваний других объектов. В своей системе распознавания документов эти приемы мы используем каждый день: технологии синтеза используются для генерации обучающих датасетов с различных документов «персональными данными», а метод Виолы и Джонса, в различных модификациях, используется в технологии локализации документов и других структурных элементов. Такой системный междисциплинарный подход позволяет нам улучшать текущие и создавать новые продукты и решения. Кстати, о новом. Последние версии наших Smart ID Engine, Smart Document Engine и Smart Code Engine позволяют, помимо распознавания текстовых реквизитов, решать следующие задачи: распознавание паспорта РФ на мобильном телефоне сфотографированного «книжечкой» под разными углами, в разном освещении, в видеопотоке и на фотографиях; распознавание бизнес-документов (счета, уставы, другие слабо структурированные документы) за считанные секунды, прямо на мобильном телефоне; выделение признаков подлинности на изображениях документов как в оптическом, так и ИК и УФ диапазонах; определение «живости» документов (определение ксерокопий, детекция пересъемки документа с экрана); небиометрическая сверка селфи и фотографии из документа непосредственно на мобильном устройстве; надежное распознавание баркодов, в том числе DataMatrix, которые используются при маркировке товаров. Эта статья написана по материалам научной публикации: Usilin S. A. et al. Training Viola-Jones detectors for 3D objects based on fully synthetic data for use in rescue missions with UAV // Вестник Южно-Уральского государственного университета. Серия: Математическое моделирование и программирование. – 2020. – Т. 13. – №. 4. doi: 10.14529/mmp200408. Granger, Eric, Madhu Kiran, and Louis-Antoine Blais-Morin. A comparison of CNN-based face and head detectors for real-time video surveillance applications // 2017 Seventh International Conference on Image Processing Theory, Tools and Applications (IPTA). – IEEE, 2017. Viola P. et al. Robust real-time object detection // International journal of computer vision. – 2001. – Vol. 4. – No. 34-47. – P. 4. Liu W. et al. Ssd: Single shot multibox detector // European conference on computer vision. – Springer, Cham, 2016. – P. 21-37. Ren S. et al. Faster r-cnn: Towards real-time object detection with region proposal networks // Advances in neural information processing systems. – 2015. – P. 91-99. Dai J. et al. R-fcn: Object detection via region-based fully convolutional networks // Advances in neural information processing systems. – 2016. – P. 379-387. Kim K. H. et al. Pvanet: Deep but lightweight neural networks for real-time object detection // arXiv preprint arXiv:1608.08021. – 2016. Vu T. H., Osokin A., Laptev I. Context-aware CNNs for person head detection // Proceedings of the IEEE International Conference on Computer Vision. – 2015. – P. 2893-2901. Redmon J., Farhadi A. YOLO9000: Better, Faster, Stronger. CoRR, abs/1612.08242. URL: http://arxiv. org/abs/1612.08242. – 2016.