Введение

Распознавание лиц - это проблема автоматического распознавания людей по лицам. Несмотря на то, что в настоящее время системы распознавания лиц, основанные на глубоком обучении, обладают высокой точностью, эти модели слишком сложны для запуска во встроенной системе, такой как Raspberry Pi. Кроме того, традиционные недорогие вычислительные системы сталкиваются со многими проблемами, такими как поза (ориентация лица в 3D) и освещение. Здесь мы покажем вам, как сделать систему распознавания лиц устойчивой к трехмерной ориентации и в то же время достаточно простой, чтобы ее можно было запускать на Raspberry Pi с частотой кадров 8 ~ 10 изображений в секунду.

Системный трубопровод

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

Первым этапом в каждой системе распознавания лиц является обнаружение лиц. В литературе существует множество детекторов лиц, каждый из которых имеет свои преимущества и недостатки. Здесь мы использовали детектор лиц «Viola & Jones», поскольку он достаточно легкий, чтобы работать на малине, и обеспечивает приемлемую степень точности.

Обнаружение знаковых точек на лице

После обнаружения лица лицо следует выровнять, чтобы облегчить задачу распознавания. Например, мы могли бы использовать метод 2D-выравнивания, чтобы выровнять лица в нашей базе данных, чтобы они имели одинаковое положение глаз и рта. Лучшие методы используют методы трехмерного выравнивания, которые пытаются создать фронтальный вид лица, удаляя фактор позы. Здесь мы использовали метод трехмерного совмещения, основанный на двухмерных и трехмерных точечных соответствиях. С этой целью мы использовали стандартный детектор ориентиров на лицах², который может оценивать 2D положения ориентиров на лицах всего за одну миллисекунду.

Выравнивание 3D³

Для совмещения нам понадобится 3D-модель лица. Модель состоит из трехмерных координат точек, лежащих на грани. Используя обнаруженные в 2D точки лица и соответствующие им 3D-точки, мы можем оценить позу (ориентацию) лица в 3D. Затем создается фронтальное изображение путем обратного проецирования пикселей изображения на 3D-модель и последующего проецирования во фронтальную систему отсчета. Поскольку части лица могут быть закрыты, эти части оцениваются путем взятия соответствующих симметричных областей незакрытых частей.

Обнаружение плохо выровненных изображений

Этап фронтализации может потерпеть неудачу по разным причинам, что приведет к плохому распознаванию. Например, детектор лиц может обнаруживать участок, не содержащий лица, в первую очередь, двухмерная оценка точек может быть не такой точной и т. Д. Чтобы справиться с этим, не добавляя дополнительных вычислительных затрат, мы обучили каскадный детектор HAAR классифицировать хорошие выравнивания от плохих выравниваний. Поскольку мы уже знаем масштаб лица на выровненном изображении, этот шаг выполняется очень быстро и предотвращает плохое распознавание.

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

Изображения, которые классифицируются как хорошее совмещение, продолжаются до последнего блока для идентификации. Здесь мы использовали дескриптор LBPH (Local Binary Pattern Histogra m) для описания каждого изображения. Идея состоит в том, чтобы разделить изображение на сетку 8x8. Затем дескриптор LBPH извлекается из каждого блока. Объединение всех дескрипторов дает окончательный дескриптор, описывающий лицо. Чтобы выполнить распознавание, дескриптор нового тестового изображения сравнивается с доступными дескрипторами в базе данных, и, если имеется близкое совпадение, лицо объявляется распознанным. Мы также могли бы использовать классификатор, такой как SVM (машина опорных векторов), особенно если у нас есть большая база данных с различными изменениями выражения лица и освещения, однако в нашем случае мы полагались на простое сравнение дескрипторов с несколькими выровненными изображениями на человека в базе данных.

Вывод

Мы представили подход к распознаванию лиц, который устойчив к позе лица и в то же время достаточно легкий для работы на Raspberry Pi 3. Наша первая реализация работает со скоростью 8 ~ 10 изображений в секунду.

Вы можете найти код на нашем гитхабе:

Https://github.com/appstud/3DFaceRecognitionOnRaspberryPI

Фавзи Хаттар: Phd, Appstud Lab
Вычитано: Джереми Бассо и Ромуальдом Рибасом

  1. Виола, П. и Джонс, М., 2001. Быстрое обнаружение объектов с использованием усиленного каскада простых функций. CVPR (1), 1 (511–518), стр. 3.
  2. Каземи, В. и Салливан, Дж., 2014. Выравнивание грани за одну миллисекунду с помощью ансамбля деревьев регрессии. В Протоколах конференции IEEE по компьютерному зрению и распознаванию образов (стр. 1867–1874).
  3. Хасснер, Т., Харел, С., Паз, Э. и Энбар, Р., 2015. Эффективная фронтализация лица на изображениях без ограничений. В Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 4295–4304).