Программное обеспечение для распознавания лиц для отслеживания пропавших детей.
Новость о пропавших детях недавно привлекла мое внимание.
Неправительственная организация Кайлаша Сатьярти Bachban Bacho Andolan (BBA) призывает все детские учреждения в Индии интегрироваться с правительствами, использовать портал «Отслеживание пропавших детей» и программное обеспечение для распознавания лиц, чтобы быстро находить пропавших детей. Это был отличный вариант использования в пространстве AI4Good, который побудил меня изучить эту тему. Эта статья — попытка показать с высоты птичьего полета, где мы находимся и как мы сюда попали. Цель состоит в том, чтобы побудить студентов изучить этот вариант использования с помощью инструментов с открытым исходным кодом.
Технология Apple iPhone X Face ID — наиболее наглядный пример современного состояния дел в этой области. В этом техническом документе приведены некоторые подробности.
https://images.apple.com/business/docs/FaceID_Security_Guide.pdf
Примечательны следующие моменты.
- Технология сосредоточена вокруг нейронных сетей.
- Нейронный движок работает на процессоре Apple A11 Bionic.
- Нейронная сеть была обучена на более чем миллиарде изображений.
- iPhone X использует систему камер TrueDepth, состоящую из ИК-излучателя и ИК-камеры, для создания изображения и карты глубины лица.
- Эти данные отправляются в нейронную сеть для создания математического представления лица, которое затем сравнивается с математическим представлением лица, изначально зарегистрированным пользователем.
- Если есть совпадение, делается положительный идентификатор.
- Apple утверждает, что эта технология имеет шанс 1 на миллион неправильной идентификации по сравнению с 1 на 50 000 для сенсорного ID.
Очень впечатляет. Эта технология является собственностью Apple, но другие, такие как Google, Facebook, Baidu и многие другие, скоро ее догонят. Давайте теперь попробуем увидеть, как эта область развивалась с годами и как обстоят дела с открытым исходным кодом.
Работа над программным обеспечением для распознавания лиц ведется с 1960-х годов. Однако использование глубокого обучения для распознавания лиц началось сравнительно недавно, и его можно проследить до новаторской работы, проделанной Яном ЛеКуном в области сверточных нейронных сетей (CNN). Янн ЛеКун был учеником Джеффри Хинтона, которого считают отцом нейронных сетей. В 1998 году Янн ЛеКун опубликовал свою известную статью о LeNet-5, 7-слойной CNN, которая использовалась для классификации цифр. С тех пор CNN широко используются в компьютерном зрении и обработке изображений. Позже Янн ЛеКун стал директором Facebook AI Research Lab (FAIR), и вполне уместно, что в 2014 году исследовательская группа FAIR опубликовала прорывную статью об использовании CNN для распознавания лиц. Она называлась DeepFace, и вы можете получить доступ к бумага здесь.
DeepFace был обучен на наборе данных из 4,4 миллиона изображений и сообщил о точности 97% по сравнению с 85% для системы идентификации следующего поколения ФБР в то время. Дальнейшие улучшения были предложены исследовательской группой Google, которая предложила подход на основе CNN под названием FaceNet в 2015 году. Документ FaceNet можно найти здесь.
https://arxiv.org/pdf/1503.03832.pdf
FaceNet был обучен на наборе данных из 200 миллионов изображений и показал точность 99,63%.
К настоящему времени должно быть очевидно, что интернет-гиганты, имевшие доступ к очень большим наборам данных для обучения, имели преимущество перед другими, а их модели были проприетарными. К счастью, исследовательские группы в нескольких университетах, таких как Оксфорд и CMU, помогли опубликовать модели в открытом доступе, которые не сильно отстают. Например, лаборатория CMU опубликовала свою работу под названием OpenFace, и с ней можно ознакомиться здесь.
http://cmusatyalab.github.io/openface/
Точно так же Visual Geometry Group (VGG) в Оксфорде публикует свои работы здесь.
http://www.robots.ox.ac.uk/~vgg/
Реализация FaceNet с использованием Tensorflow доступна здесь.
https://github.com/davidsandberg/facenet
OpenFace использует Torch, но для тех, кто предпочитает Keras, здесь также доступна версия OpenFace для Keras.
https://github.com/iwantooxxoox/Keras-OpenFace
Поскольку я начал с того, что хотел бы побудить студентов изучать распознавание лиц с помощью инструментов с открытым исходным кодом, вот мое предложение. Изучайте Python, Tensorflow и Keras. Все это находится в открытом доступе, и существует множество инструментов онлайн-обучения. Упомянутая выше модель распознавания лиц Keras OpenFace обеспечивает точность 93,8% и может давать хорошие результаты. Вот как будет работать решение для поиска пропавших детей.
- Все дети в детских учреждениях будут сфотографированы и фотографии будут загружены в трек портала пропавших детей.
- Фотографии всех пропавших детей загружены на портал отслеживания пропавших детей.
- Отслеживание пропавшего дочернего портала запускает все изображения через систему распознавания лиц CNN и генерирует векторы признаков каждого изображения.
- Векторы признаков пропавших без вести детей сопоставляются с векторами признаков изображений детей в детских учреждениях, и для каждого совпадения генерируется предупреждение.
Счастливого обучения !!.