Содержание статьи
Нейросеть для распознавания лиц. Часть 2
Что собой представляет нейронная сеть
Авторы отмечают, что, как и с большинством подобных моделей, эффективность их системы распознавания напрямую зависит от собранного датасета: узнать она может только тех людей, данные о которых у нее есть. Тем не менее, сбор данных с помощью напольных сенсоров и сторонних камер — гораздо более реальная задача, чем сбор отпечатков пальцев. Пока что непонятно, как разработанная модель будет справляться с возможными временными аномалиями походки, например, при перенесенном переломе или растяжении.
Команда британских и испанских разработчиков предложила метод распознавания человека по его походке. Нейросеть, основанная на методе глубокого остаточного обучения, позволяет распознавать человека по пространственным и временным характеристикам его следа практически со стопроцентной точностью. Об этом сообщается в статье, опубликованной в IEEE Transactions on Pattern Analysis and Machine Intelligence.
Создаём новый файл face_detect.py и сразу подключаем две нужные нам библиотеки: компьютерного зрения и работы с системными функциями. Последняя нужна для того, чтобы можно было найти, где лежит скрипт, и сориентироваться, как получить доступ к папке с моделью:
Для достижения высокой точности распознавания нейронная сеть предобучается на большом массиве изображений, например, таком, как в базе данных MegaFace .Это основной метод обучения для распознавания лиц. Рис. 6. База данных MegaFace содержит 1 млн. изображений более 690 тыс. людей После того, как сеть обучена распознавать лица, процесс распознавания лица может быть описан следующим образом (рис.7). Сначала изображение обрабатывается с помощью детектора лица: алгоритма, который определяет прямоугольный фрагмент изображения с лицом. Этот фрагмент нормализуется для того, чтобы легче обрабатываться нейронной сетью: наилучший результат будет достигнут, если все входные изображения будут одинакового размера, цветности Нормализованное изображение подаётся на вход нейронной сети для обработки алгоритмом. Данный алгоритм обычно является уникальной разработкой компании для повышения качества распознавания, однако существуют и «стандартные» решения для данной задачи. Нейронная сеть строит уникальный вектор признаков, который затем переносится в базу данных. Поисковая система сравнивает его со всеми векторами признаков, хранящихся в базе данных, и даёт результат поиска в виде определённого числа имён или профилей пользователей со схожими лицевыми признаками, каждому из которых присваивается определённое число. Это число представляет собой степень схожести нашего вектора признаков с найденным в базе данных. Рис. 7. Процесс распознавания лица
После запуска скрипта у нас будут работать две нейросети: одна будет искать все лица в кадре, а вторая — искать среди них те, которые ей известны. Если есть совпадение и мы знаем, как зовут человека под определённым id, то скрипт подставит его имя и мы увидим примерно такое:
Для обучения системы распознавания с помощью собранных данных ученые натренировали глубокую нейросеть, основанную на методе остаточного обучения, позволяющем облегчить тренировку модели с большим количеством слоев (с большей глубиной), которые часто необходимы для эффективного распознавания изображений с большим количеством параметров. Недавно с помощью такого метода обучения научились предсказывать поведение собаки по ее походке.
Часто помимо непосредственно результата сравнения, требуется оценить уровень «уверенности» системы в своём решении. Такое значение называют термином «уровень сходства» (или подобия, similarity score). Больший показатель сходства указывает на то, что два сравниваемых биометрических образца более похожи.
Модель проверили на трех датасетах разного размера, соответствующих различным ситуациям распознавания: проверка в аэропорту, проверка на рабочем месте и дома. Эффективность распознавания в зависимости от датасета (от самого маленького распознавания в аэропорту до данных, собранных «дома») составляла от 92,9 до 99,3 процента.
А можно так запомнить несколько человек?
Сейчас подобные алгоритмы применяются в пропускных системах в офисных зданиях — когда нужно повысить общий уровень безопасности. Для этого при оформлении пропуска сотрудников просят посмотреть в камеру и покрутить головой — в это время нейросеть делает много снимков и добавляет их в датасет, а потом переобучается с ними.
В биометрии вообще и биометрии для распознавания лиц, в частности, существует два типа приложений: верификация и идентификация. Верификация представляет собой процесс подтверждения определённой личности путём сравнения изображения индивида (вектора признаков лица или другого вектора признаков, например, сетчатки или отпечатков пальцев) с одним или несколькими ранее сохранёнными шаблонами. Идентификация — это процесс определения личности индивида. Биометрические образцы собирают и сравнивают со всеми шаблонами в базе данных. Существует идентификация в замкнутом множестве признаков, если предполагается, что человек существует в базе данных. Таким образом, распознавание объединяет один или оба термина — верификацию и идентификацию.
Как правило, работа любой нейронной сети может быть измерена с точки зрения точности: после настройки параметров и завершения процесса обучения сеть проверяется на тестовом множестве, для которого мы имеем отклик учителя, но который отделён от обучающего набора. Как правило, этот параметр является количественной мерой: число (часто в процентах), которое показывает, насколько хорошо система способна распознавать новые объекты. Еще одна типичная мера — это ошибка (может быть выражена как в процентах, так и в числовом эквиваленте). Тем не менее, для биометрии существуют более точные меры.
Использовать для распознавания по походке снимки стопы предложили ученые под руководством Омара Костиллья-Рейеса (Omar Costilla-Reyes) из Манчестерского университета. Для разработки такого метода они собрали базу данных из более чем 20 тысяч снимков следов 120 людей, полученных при помощи 88 пьезоэлектрических датчиков, рассчитывающих величину давления, на основе чего создается тепловые карты его распределения в зависимости от фазы шага. Добровольцев, участвующих в сборе данных, просили надеть любую удобную обувь и продемонстрировать свою естественную походку.
Конечно. Всё, что для этого нужно сделать, — запустить скрипт face_gen.py из прошлой статьи и ввести новый id. После этого программа сделает нужное количество снимков с камеры и добавит их в датасет. Так можно сделать сколько угодно раз — нейросети всё равно, сколько людей запоминать и распознавать.
Один из типов биометрических данных, которые можно использовать в качестве идентификатора, — это индивидуальные характеристики человеческой походки. Такие характеристики разделяются на пространственные и временные: к первым относятся измерения точек соприкосновения стопы с опорой (разворот стопы, длина шага и его база, то есть положение поверхности стопы), а ко вторым — длительность различных (опорных и двигательных) фаз шага. Большое количество факторов, влияющих на индивидуальность походки, снижает вероятность ее копирования к минимуму; тем не менее, в реальной ситуации подобное распознавание может осложняться внешними факторами. Например, для того, чтобы компьютер мог оценить походку, можно использовать технологии компьютерного зрения, но необходимо будет убедиться в том, что объект наблюдения находится в полной видимости, что невозможно обеспечить при недостаточном освещении или многолюдности.
Нейронная сеть в простейшем случае — математическая модель, состоящая их нескольких слоёв элементов, выполняющих параллельные вычисления. Изначально такая архитектура была создана по аналогии с мельчайшими вычислительными элементами человеческого мозга — нейронами. Минимальные вычислительные элементы искусственной нейронной сети тоже называются нейронами. Нейронные сети обычно состоят из трёх или более слоёв: входного слоя, скрытого слоя (или слоёв) и выходного слоя (рис. 1), в некоторых случаях входной и выходной слои не учитываются, и тогда количество слоёв в сети считается по количеству скрытых слоёв. Такой тип нейронной сети называется перцептрон. Рис. 1. Простейший перцептрон Важной особенностью нейронной сети является её умение обучаться на примерах, это называется обучением с учителем. Нейронная сеть обучается на большом количестве примеров, состоящих из пар вход-выход (соответствующие друг другу вход и выход). В задачах распознавания объектов такой парой будет входное изображение и соответствующий ему лейбл — название объекта. Обучение нейронной сети — итеративный процесс, уменьшающий отклонение выхода сети от заданного «ответа учителя» — лейбла, соответствующего данному изображению (Рис. 2). Этот процесс состоит из шагов, называемых эпохами обучения (они обычно исчисляются тысячами), на каждом из которых происходит подгонка «весов» нейронной сети — параметров скрытых слоёв сети. По завершении процесса обучения качество работы нейронной сети обычно достаточно хорошее для выполнения задачи, под которую она была обучена, хотя оптимальный набор параметров, идеально распознающий все изображения, часто подобрать невозможно. Рис. 2. Обучение нейронной сети
Глубокие, или глубинные, нейронные сети — это нейронные сети, состоящие из нескольких скрытых слоёв (Рис.3). Данный рисунок представляет собой изображение глубинной нейронной сети, дающее читателю общее представление о том, как выглядит нейронная сеть. Тем не менее, реальная архитектура глубинных нейронных сетей гораздо сложнее. Рис. 3. Нейронная сеть с множеством скрытых слоёв Создатели свёрточных нейронных сетей, конечно, сначала вдохновились биологическими структурами зрительной системы. Первые вычислительные модели, основанные на концепции иерархической организации визуального потока примата, известны как Неокогнитрон [1] Фукушимы (Рис.4). Современное понимание физиологии зрительной системы схоже с типом обработки информации в свёрточных сетях, по крайней мере, для быстрого распознавания объектов. Рис. 4. Диаграмма, показывающая связи между слоями в модели Неокогнитрон [1]. Позже эта концепция была реализована канадским исследователем Яном ЛеКуном в его свёрточной нейронной сети, созданной им для распознавания рукописных символов [2]. Данная нейронная сеть состояла из слоёв двух типов: свёрточных слоев и субдискретизирующих (subsampling) слоёв (или слоёв подвыборки-pooling). В ней каждый слой имеет топографическую структуру, то есть каждый нейрон связан с фиксированной точкой исходного изображения, а также с рецептивным полем (областью входного изображения, которая обрабатывается данным нейроном). В каждом месте каждого слоя существует целый ряд различных нейронов, каждый со своим набором входных весов, связанных с нейронами в прямоугольном фрагменте предыдущего слоя. Разные входные прямоугольные фрагменты с одинаковым набором весов связаны с нейронами из разных локаций. Общая архитектура глубинной нейронной сети для распознавания образов представлена на рисунке 5. Входное изображение представлено в виде набора пикселей или небольших участков изображения (например, 5-на-5 пикселей) Рис. 5. Диаграмма свёрточной нейронной сети Как правило, глубинные нейронные сети изображены в упрощённом виде: как стадии обработки, которые иногда называют фильтрами. Каждая стадия отличается от другой рядом характеристик, таких как размер рецептивного поля, тип признаков, который сеть учится распознавать в данном слое, и тип вычислений, выполняемых на каждой стадии. Сферы применения глубинных нейронных сетей, в том числе свёрточных сетей, не ограничиваются распознаванием лиц. Они широко используются для распознавания речи и аудио-сигналов, обработки показаний с разного типа сенсоров или для сегментации сложных многослойных изображений (таких как спутниковые карты [3]) или медицинских изображений (рентгеновские снимки, снимки фМРТ- см. здесь).
Определение качества алгоритма
Традиционно для авторизации и ограничения доступа используются данные или средства, доступные узкому кругу лиц: ключи, пароли, токены или специальные карточки. Однако пароль может быть разгадан, карточка — украдена, также в последнее время появляются методы подделки биометрических данных, индивидуальных для каждого конкретного человека: отпечаток пальца, сетчатка глаза и даже лицо. Поэтому появилась необходимость в более эффективной защите — в частности, требуются эффективные методы предоставления доступа только одному конкретному человеку.
Когда сотрудник после оформления пропуска прикладывает его к турникету, камера находит лицо этого сотрудника в кадре и пробует распознать его с помощью новой модели. После распознавания система смотрит, какой у него уровень доступа и можно ли пускать этого сотрудника через этот турникет.