Статья:

РАСПОЗНАВАНИЕ ЛИЦ НА МОБИЛЬНОМ УСТРОЙСТВЕ

Конференция: XLV Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»

Секция: Технические науки

Выходные данные
Никанов П.А., Батурин К.А. РАСПОЗНАВАНИЕ ЛИЦ НА МОБИЛЬНОМ УСТРОЙСТВЕ // Технические и математические науки. Студенческий научный форум: электр. сб. ст. по мат. XLV междунар. студ. науч.-практ. конф. № 10(45). URL: https://nauchforum.ru/archive/SNF_tech/10(45).pdf (дата обращения: 22.11.2024)
Лауреаты определены. Конференция завершена
Эта статья набрала 3 голоса
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

РАСПОЗНАВАНИЕ ЛИЦ НА МОБИЛЬНОМ УСТРОЙСТВЕ

Никанов Павел Александрович
студент, Рыбинский государственный авиационный технический университет имени П. А. Соловьева, РФ, г. Рыбинск
Батурин Кирилл Александрович
студент, Рыбинский государственный авиационный технический университет имени П. А. Соловьева, РФ, г. Рыбинск
Копачев Михаил Юрьевич
научный руководитель, ст. преподаватель, Рыбинский государственный авиационный технический университет имени П. А. Соловьева, РФ, г. Рыбинск

 

В настоящее время существует несколько вариантов решения проблемы распознавания лиц на мобильном устройстве.

При разработке приложения по распознаванию лиц нужно решить следующие задачи:

  • Определить количество персон и объем информации о них.
  • Разработать архитектуру программы.
  • Реализовать прототип.
  • Реализовать приложение для массового использования.

В первую очередь необходимо определить количество людей, которых программа будет распознавать, и объем информации о них. В нашем случае количество человек не превышает отметку в 60 персон, а информации о каждом, в среднем набирается на 8 КБ.

Прежде, чем составлять какую-либо архитектуру необходимо решить некоторые вопросы, например, где будет происходить распознавание лиц: удаленно на сервере или на локальном устройстве. В нашем случае было решено оставить обработку лиц в режиме offline, без подключения к интернет-соединению, то есть всё будет происходить на мобильном устройстве. У данного метода есть свои достоинства и недостатки. К достоинствам можно отнести дешевизну оборудования, так как не придётся использовать сервер для обработки запросов, и полную независимость от скорости интернет-соединения. Из недостатков же можно выделить меньшую точность распознавания и нахождения лиц на фотографии на мобильном устройстве, где в отличии от сервера не так много вычислительных мощностей, а также возможное устаревание информации: в зависимости, от того, когда клиент последний раз обновлял приложение, информация может оказаться неактуальной.

Таким же критическим вопросом является то, на какие устройства ориентировано данное приложение. В нашем случае для более массового охвата устройств были выбраны более “легкие” и быстрые алгоритмы, но из-за нацеленности на малый вес и скорость их работы, пострадала точность. Для сравнения: у одного алгоритма объёмом близким к 2МБ и временем работы на изображении 4000x3000 в 12 секунд была точность порядка 98%, а у алгоритма объёмом близким к 80КБ и временем работы на идентичном изображении в 1-2 секунды точность порядка 40%. Для того, понижения уровня шума, была введена сеть-классификатор, которая делила картинки на “лица”-“не лица”, что позволило достичь точности сопоставимой с более объёмными алгоритмами. Следует отметить, что сеть-классификатор в свою очередь потребляет мало ресурсов и может обработать порядка 80 изображений с подозрением на лицо в секунду.

Приложение структурно состоит из нескольких независимых друг от друга компонентов: блок управления камерой, блок нормализации изображения, блок выделения лиц, а также блок их распознавания. Для согласования работы данных модулей, был выделен специальный управляющий блок.

  • Блок управления камерой предоставляет возможность прямого потока с внешнего устройства на графическую оболочку в формате FullHD (соотношение сторон 16:9), а также получения фотографии(соотношение сторон 4:3), на котором программа выполнит детектирование и распознавание лиц. Итоговый кадр имеет больший размер, на тестовых устройствах максимальным размером изображения с камеры был 4000х3000. Это обусловлено тем, что пользователь, может захотеть узнать, что за люди находятся на групповом портрете, где из-за количества людей и построения композиции, размер лица, по сравнению с размером всего изображения, довольно мал, и чтобы алгоритм мог опознать всех этих людей, их лица должны быть различимыми, и размер каждого лица должен быть не меньше квадрата 64x64 пикселя, иначе появляются разночтения при распознании персоны. Размеры лиц, при которых конфликтов по распознанию практически не будет, должны быть не меньше 112х112 пикселей.
  • Блок нормализации выполняет предварительную обработку фотографий перед передачей её в блок выделения лиц. Производится обесцвечивание фотографии и приведение к стандартизированному размеру. Это обусловлено оптимизацией работы алгоритма, поскольку цветное изображение содержит большее количество информации, его дольше обрабатывать, что является значимым в условиях ограниченных вычислительных мощностей.
  • Блок выделения принимает на вход черно-белую фотографию, а возвращает массив прямоугольных областей, внутри которых, находятся изображения с подозрением на лица. Тестовые запуски приложения показали, что иногда детектор реагирует на участки изображения, похожие на лица, но ими не являющиеся, поэтому вслед за данным блоком расположена классифицирующая нейронная сеть. Это решение позволило значительно сократить количество ложных срабатываний алгоритма на специально отобранных “плохих” изображениях, при этом сеть-классификатор имела точность, превышающую 96%.
  • Блок распознавания лиц получает на вход выделенные на предыдущем этапе области, а также ссылку на исходное изображение с камеры. По окончанию обработки, он возвращает список идентификаторов персон, которые с наибольшей вероятностью запечатлены на исходном изображении, если же человек на изображении не был опознан, то используется “пустой” идентификатор, который показывает, что этот человек не был найден среди зарегистрированных персон. После этого, в соответствие каждому элементу списка, из базы данных может быть извлечена частичная (фамилия и инициалы), или полная информация (должность, и некоторые сведения).
  • Управляющий блок последовательно передаёт управление каждому функциональному блоку, в результате чего программа корректно функционирует. (см. Рисунок 1)

 

 

Рисунок 1. Архитектура приложения

 

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

Приложение разрабатывается на две различные платформы, а именно, на Android и IOS. Для большей универсальности кода и его устойчивости к перемене некоторых составляющих, был выбран язык программирования Kotlin для написания универсальной библиотеки, которая будет управлять распознанием лиц и получением и передачей информации из базы данных в программу. Остальные блоки:

  • Блок управления камерой: Android/IOS - Flutter.
  • Блок нахождения лиц на снимке: Android - Kotlin; IOS - Swift.
  • Графическое представление программы: Android/IOS - Flutter.
  • Блок обработки снимка: Android - Kotlin; IOS - Swift.
  • Блок управления: Android - Kotlin; IOS - Swift.

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

При реализации прототипа были выявлены некоторые особенности работы со внешними устройствами на операционных системах Android, а именно проблемы работы с фронтальной и задней камерой. Большая часть проблем возникла из-за использования стороннего обработчика изображения с камеры, а именно библиотеки OpenCV, предназначенной для решения некоторых вопросов и постановкой экспериментов с целью оптимизации массовой версии. При работе с данной библиотекой были выявлены проблемы с производительностью наших решений по поиску лица и по размеру картинки, выдаваемой камерой мобильного устройства. В последующих версиях данные недочеты были устранены. Для увеличения размеров снимаемой фотографии была использована новая библиотека Сamera2API, позволяющая получать изображения, размер которых близок к размеру матрицы камеры мобильного устройства. В свое время для оптимизации алгоритма выделения лиц на фотографиях, был принят следующий план работы нового алгоритма:

  1. Алгоритм получает на вход целое изображение.
  2. Создаётся копия заданной области изображения, и масштабируется до размера 256х192 пикселей.
  3. На данном изображении выполняется поиск лица. Если поиск успешен, локальные координаты данного кусочного изображения приводятся к глобальным, относительно исходного изображения, и запоминаются (переход к пункту 5), иначе продолжается поиск более маленьких лиц.
  4. Исходное изображение разбивается на 12 кусочков: 2 разреза по горизонтали и 4 по вертикали. Таким образом у этих фотографий сохраняются пропорции 4:3. Далее детектирование производится на полученных маленьких изображениях (переход к пункту 3). После того как поиск выполнен, проводится дополнительная проверка на лица, расположенных на стыках этих областей (также переход к пункту 3). В условиях ограниченных вычислительных мощностей было принято решение ограничить глубину поиска 3 уровнями. Когда всё изображение отсканировано, выполняется переход к следующему шагу.
  5. Все части изображения с подозрением на наличие лица проходят классификацию через фильтрующую нейронную сеть.
  6. Отфильтрованные области обрабатываются нейронной сетью. На этом этапе мы получаем список идентификаторов людей, которые с наибольшей вероятностью были запечатлены на каждом из кусочков исходного изображения. При этом, если человек на изображении не был опознан, то используется “пустой” идентификатор, который показывает, что этот человек не был найден среди зарегистрированных.
  7. После этого, в соответствие каждому элементу списка, из базы данных может быть извлечена частичная (фамилия и инициалы), или полная информация (должность, и некоторые сведения) о конкретном человеке.

 

Список литературы:
1. Haar A. Zur Theorie der orthogonalen Funktionen-systeme // Math. Ann. 1910. Vol. 69. P. 331-371.
2. Haar A. Die Minkowskische Geometrie und die Annäherung an stetige Funktionen // Math. Ann. 1918. Vol. 78. P. 294-311.
3. The Swift Programming Language (Swift 5.3) [электронный ресурс]. San Jose : Apple Inc, 2020, URL : https://www.appsdissected.com/wp-content/uploads/2020/09/SwiftProgrammingLanguage53.pdf (дата обращения 22.10.21)
4. API Documentation | TensorFlow Core v2.7.0 [электронный ресурс]. Mountain View : Google, 2021, URL : https://www.tensorflow.org/api_docs (дата обращения 22.10.21)