Как ИТ-компания, Diatom Enterprises производит заказное программное обеспечение уже 13 лет. Тем не менее, в течение последнего года мы были глубоко заинтересованы в IoT, AI и робототехнике, и Robot Pepper был выбран в качестве идеальной платформы для интеграции всех разработок Diatom и внедрения их в бизнес-среду.

Недавно мы столкнулись с необходимостью использовать распознавание и обнаружение лиц в одном из наших экспериментальных проектов для робота Pepper и столкнулись с рядом проблем с этой функцией.
В Pepper встроенные функции обнаружения и распознавания лиц имеют несколько проблем. :

Длительный процесс обнаружения лица — до 15 секунд для обнаружения лица человека

  • Нестабильное распознавание лиц — при хорошем освещении 6 из 10; в условиях низкой освещенности 4 из 10.

Мы решили найти способ исправить основные недостатки Pepper.

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

Следующим шагом является распознавание лица. Мы расширили веб-API Microsoft для распознавания лиц, чтобы заранее узнавать новые лица по изображениям. Как только мы загрузим новые изображения лица в Microsoft Face API, человек будет готов к распознаванию.

С помощью нашего веб-API мы загружаем снимок, сделанный Pepper, в сервис Microsoft Face API и получаем в ответ JSON-данные о человеке, если изображение было распознано. Взамен мы можем получить имя, возраст, эмоции, пол и черты лица, такие как очки, усы, борода и бакенбарды. Затем Pepper использует эту информацию самостоятельно.

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

Ниже приводится краткий обзор наших результатов.

API лица Майкрософт

Это веб-сервис для распознавания и обнаружения лиц. Мы создали собственную оболочку для доступных методов Microsoft Face API. У оболочки есть некоторые дополнительные функции, необходимые для работы с Pepper.

Этот метод дал следующие результаты:

– Гибридный подход: распознавание лиц на Pepper (компьютер); распознавание происходит через службу веб-API. — В целом, определение и распознавание лиц теперь занимает до шести секунд — две секунды, чтобы сделать снимок на Pepper, и три-четыре секунды, чтобы передать его через Интернет, распознать и отправить результат обратно в Pepper. — Общее время обнаружения и распознавания человека — от трех до семи секунд — Распознавание лиц теперь работает очень стабильно; это 18 из 20. — Стоимость: MS Face API составляет 1,50 доллара США за 1000 транзакций для 0–1 000 000 транзакций.

Хранение лиц стоит 0,50 доллара США за 1000 изображений в месяц. Подробнее здесь.

Оболочка Emgu CV .NET библиотеки с открытым исходным кодом OpenCV

Этот подход работает на компьютере как автономное запущенное приложение. К компьютеру должна быть подключена камера. Камеры WebIP также хорошо подходят для этого.

Мы использовали настольное приложение для Windows для обнаружения и распознавания лиц. Распознавание лиц очень стабильно и может обнаруживать лица в пределах четырех метров. Распознавание лиц использует собственную базу данных. У каждого человека может быть несколько лиц, хранящихся в базе данных. К сожалению, распознавание лиц работает быстро, но очень нестабильно. Его нельзя использовать в производственных проектах.

Это дало следующие результаты:

– Гибрид: обнаружение лиц осуществляется на локальном компьютере; распознавание лиц осуществляется через веб-сервис. — Распознавание лиц — одна секунда — Стабильность распознавания лиц — 18 из 20 — Распознавание лиц — одна секунда — Стабильность распознавания лиц — 16 из 20 — Рабочее расстояние обнаружения и распознавания лиц — до четырех метров — Общее время обнаружения и распознавания человека - две секунды

– Стоимость: коммерческая лицензия стоит 399 долларов для одного разработчика или 799 долларов для целой рабочей группы из 25 разработчиков. Подробнее здесь.

Неправильное распознавание лица/ Неправильное распознавание лица

База данных лиц хранит множество версий лица человека в виде изображений в оттенках серого в папке:

Гибридный подход, основанный на распознавании лиц Emgu CV и распознавании лиц Microsoft Face API.

Мы настроили существующее настольное приложение на базе Windows, чтобы использовать библиотеку Emgu CV для распознавания лиц и Microsoft Face API для распознавания лиц. Это дало нам улучшения в стабильности сопоставления лиц.

Такой подход дал следующие результаты:

– На локальном компьютере — Распознавание лиц — одна секунда — Стабильность распознавания лиц — 18 из 20 — Распознавание лиц — четыре секунды — Стабильность распознавания лиц — 18 из 20 — Рабочее расстояние для обнаружения и распознавания лиц — до 3,5 метров — Общее время до обнаружить и распознать человека — пять-семь секунд

– Стоимость: см. № 1 и № 2 выше.

Инструмент распознавания лиц

Библиотека Luxand FaceSDK

Библиотека Luxand Face API — это локальное решение, размещаемое на компьютере. Мы использовали существующее демонстрационное настольное приложение для Windows, чтобы протестировать его функциональность. Распознавание лиц использует собственную базу данных. База данных SQL может использоваться для хранения данных о лицах. У каждого человека может быть несколько лиц, хранящихся в базе данных. Библиотека дает быстрый и стабильный вывод.

Это решение дало следующие результаты: — Локальный компьютер — Распознавание лиц — одна секунда — Стабильность распознавания лиц — 19 из 20 — Распознавание лиц — одна секунда — Стабильность распознавания лиц — 19 из 20 — Рабочее расстояние для обнаружения и распознавания лиц — вверх до 3,5 метров — Общее время обнаружения и распознавания человека — от одной до трех секунд

– Стоимость: подробнее смотрите здесь.

Пример живого распознавания

Резюме:

Как сетевые, так и компьютерные методы обнаружения и распознавания лиц имеют свои собственные сценарии использования.
Оба метода могут быть интегрированы в существующие ИТ-решения.

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

В нашем случае решение на основе библиотеки Luxand FaceSDK кажется самым простым с точки зрения разработки и стабильности распознавания. Стоимость решения можно запросить у компании Luxand и зависит от реального сценария использования.

Первоначально опубликовано на www.diatomenterprises.com.