Одним из преимуществ технологий машинного обучения является их способность к обучению и адаптации на основе новых данных, что позволяет решать задачи распознавания образов, обработки естественного языка и поиска закономерностей и аномалий. Традиционно, собранные данные обрабатываются на серверах, однако для ряда задач целесообразнее (а иногда необходимо) использовать другой подход, называемый граничным машинным обучением (edge machine learning).


В этой статье мы расскажем о практическом применении нашего фреймворка машинного обучения для встраиваемых систем на примере демонстрационного стенда, который мы показывали на форуме “Армия-2023”.


Вступление


Одним из преимуществ технологий машинного обучения является их способность к обучению и адаптации на основе новых данных, что позволяет решать задачи распознавания образов, обработки естественного языка, поиска закономерностей и аномалий. Этот набор преимуществ позволил использовать нейронные сети совместно с умными устройствами. Традиционно, собранные данные обрабатываются алгоритмами машинного обучения на серверах. При таком подходе приходится мириться со временем ожидания передачи и обработки данных. Взрывной рост количества устройств, приводит к увеличению объёмов генерируемых данных, и, как следствие, нагрузке на серверную инфраструктуру.


Однако для ряда задач целесообразнее использовать другой подход, называемый граничным машинным обучением (edge machine learning), который объединяет в себе такие понятия как:


  • граничные вычисления (edge computing) — парадигма распределённых вычислений, осуществляемая на самих устройствах, либо в их сети;
  • машинное обучение (machine learning) — класс адаптивных алгоритмов, использующих методы обучения на основе получаемых данных.

Таким образом, преимущества такого подхода дают нам:


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

Синаптика


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


Для решения этих задач мы разработали для операционной системы реального времени “Нейтрино” интеллектуальную платформу “Синаптика”. Она является фреймворком для построения систем сбора, обработки и анализа данных с использованием технологий машинного обучения. Одним из примеров практического применения “Синаптики” является программный комплекс мониторинга аномальных процессов (ПК МАП) (более подробную информацию можно получить из другой нашей статьи).


В этом году для выставки "Армия-2023" мы подготовили специальный стенд с платформой "Синаптика".


Описание стенда


Чтобы продемонстрировать возможности платформы "Синаптика", мы разработали аппаратно-программный комплекс для распознавания лиц с целью контроля доступа к объектам критической информационной инфраструктуры (КИИ). В составе демонстрационного стенда использовались: ИК-камера, вычислительный модуль с ЗОСРВ "Нейтрино", роутер.



Фото стенда


Камера получает поток с камеры в ИК-спектре и передаёт его по протоколу RTSP (real time streaming protocol). Разработанное приложение принимает поток, предварительно обрабатывает полученный кадр и, если в кадре присутствует лицо, анализирует его. Анализ изображения, полученного с ИК-камеры, позволяет извлекать дополнительные детали из оттенков серого двумерного изображения. После идентификации человека выводится информация о наличии или отсутствии у него доступа.


Схематически алгоритм работы показан на картинке:




Пример идентификации лица одного из сотрудников нашей компании (Цветные области — это извлечённые признаки для распознаваемого лица)


Приложение состоит из следующих структурных компонентов:


  • Модуль управления — осуществляет взаимодействие между модулями более низкого уровня;
  • Модуль захвата изображения — читает rtsp-поток и по запросу модуля управления получает кадр, контролирует конвейер;
  • Модуль поставки данных — непрерывный поток данных, получаемый от камеры;
  • Модуль предобработки — производит предварительную обработку изображения, используя OpenCV;
  • Модуль анализа — обрабатывает предобработанный предыдущим модулем кадр;
  • Графический интерфейс — интерфейс приложения, выводит изображение с камеры и информацию о процессе и результатах распознавания;
  • База данных — хранилище биометрических данных о лицах, которые имеют доступ к объекту критической инфраструктуры.


Структурные компоненты приложения


В общем случае, распознавание лица человека представляет собой:


  • предобработку и анализ полученного с камеры изображения,
  • сопоставление с имеющейся базой биометрических данных.

Предобработка кадра


Первый этап предобработки полученного изображения включает в себя поиск и выделение на нём лица человека. Для этого применяется метод detectMultiScale() из библиотеки OpenCV. Он позволяет выполнять поиск расположения лица и глаз человека в кадре. В случае, если найти лицо удаётся, полученная область, содержащая изображение лица, выделяется из всего кадра. Дальнейшие преобразования ведутся только с этой областью.


Анализируя градиент серого можно получить дополнительную информацию о трёхмерном контуре лица, так как яркость того или иного пикселя коррелирует с расстоянием от камеры до точки — чем меньше расстояние, тем темнее пиксель. На основе данных о яркости пикселей “подсвечиваются” особые зоны лица (выделяются пиксели, попадающие в определённые диапазоны яркости), которые наиболее характеризуют его контур.


Таким образом, соотношение сторон выделенной области кадра, содержащей изображение лица, информация о “подсвеченных” зонах лица, информация о расположении глаз — всё это является отличительными уникальными признаками, позволяющими идентифицировать лицо конкретного человека.


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


“Синаптика” не ограничивает нас в выборе фреймворка машинного обучения — можно выбрать TensorFlow Lite, ONNX Runtime, mlpack и другие фреймворки. Однако, для анализа изображений в демонстрационном проекте мы выбрали нестандартную модель нейронной сети — интерференционную нейронную сеть. Одной из её отличительных черт является использование математической модели биологического нейрона. Использование интерференционной модели нейронной сети (и соответствующей ей библиотеки Interference) в нашем проекте даёт следующие преимущества:


  • возможность дообучения и изменения архитектуры нейросети “на лету”, что позволит при необходимости обновлять данные о доступе сотрудников;
  • невысокая ресурсоёмкость вычислительных процессов обучения и распознавания;
  • возможность ускорения вычислений путём переноса вычислений на GPU или нейроускорители.

Подробнее о применении интерференционной нейронной сети для динамического анализа данных в реальном времени можно прочитать по ссылке.


На основе интерференционной модели была разработана архитектура сети (по сути своей классификатор) конкретно под данную задачу. Архитектура предполагает, что перед анализом изображение разбивается на четыре равные части (исследования показали, что это оптимальное количество), как показано на рисунке.



Разделение изображения на четыре части: лоб, переносица, нос и рот, подбородок.


Схематически архитектура сети представлена на рисунке. Четыре нейрона (N1-N4) составляют один ансамбль. Один ансамбль отвечает за распознавание лица одного человека, относя его биометрические данные к определенному классу. Каждый класс может хранить набор из нескольких изображений для одного человека.



Архитектура одного ансамбля в сети


В процессе обучения для каждого человека создаётся новый ансамбль нейронов. Затем, чтобы запомнить его биометрические данные, каждая из перечисленных частей изображения подаётся построчно по два пикселя  (R, G, B каналы) на вход соответствующего нейрона (в зависимости от области лица). Как уже было сказано выше, на каждого человека приходится по четыре таких нейрона. После этого состояние нейронов сохраняется.


В процессе распознавания алгоритм подачи изображения на вход сети аналогичный. Состояние нейронов в ансамбле рассчитывается для распознаваемого изображения, а затем сравнивается со всеми сохранёнными ансамблями в сети. По степени соответствия можно сделать вывод о том, насколько распознаваемые данные совпадают с сохранёнными.


Планы на будущее


Мы постоянно развиваем архитектуру интеллектуальной платформы “Синаптика”. Планируется улучшение API фреймворка, чтобы сделать её удобнее для разработчиков, добавление большего количества фреймворков машинного обучения, расширение списка поддерживаемых аппаратных ускорителей для нейронный сетей, что позволит нам и нашим заказчикам решать больший спектр задач. Мы также продолжаем развитие наших собственных продуктов на базе Синаптики, планируем улучшение стенда с распознаванием лиц для последующих демонстраций.


В ближайшем будущем планируется цикл статей об интерференционной модели нейронных сетей, о её возможностях, архитектуре, математическом базисе и практическом применении, а пока можно ознакомиться с научной работой “Параметрический синтез интерференционной модели нейронной сети”.


Подписывайтесь на наш канал, чтобы быть в курсе свежих новостей

Комментарии (7)


  1. T968
    22.12.2023 08:11

    1. Nyptus
      22.12.2023 08:11

      Какая прелесть!


  1. Arkasha
    22.12.2023 08:11

    tldr: в QNX есть OpenCV


    1. a-n-d
      22.12.2023 08:11

      Про QNX не знаем, мы уже много лет с ним не работаем. И даже официальную поддержку не оказываем.

      OpenCV - да, мы его тоже к себе в ОС спортировали. Как standalone решение, так и в интересах данной платформы, а также TensorFlow Lite, MLPack и ряд других проектов. Сами библиотеки, вроде CV, закрывают около 5-10% функциональных потребностей платформы и не решают даже обсуждаемую частную задачу во всём её объеме.


  1. pi-null-mezon
    22.12.2023 08:11

    Для описанного вами алгоритма верификации по лицу, вы измеряли вероятность ложного несовпадения (FNMR) при вероятности ложного совпадения (FMR) 0.01 %?


    1. NickWare
      22.12.2023 08:11

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


  1. kh0
    22.12.2023 08:11

    А вообще, хороший повод обсудить, что лучше: хранить несколько снимков(точнее предобработанных данных на их основе) гражданина и по входному находить похожесть на основе чего-нибудь чисто математического или запихнуть всё в нейросети? Особенно в контексте предсказуемости, стабильности, скорости и энергоэффективности. А еще стоимости продукта и разнице в цене мат-базы. А еще в контексте защищенности. Я не особо в этом разбираюсь, но интересно. Я бы еще до кучи костылей накидал в виде нескольких копеечных лазерных меток/линий на лицо потерпевшего для определения объема.