Pull to refresh
137.67
Skillfactory
Учим работать в IT на курсах и в магистратурах

Нейросети в большом городе. Разбираемся, как они помогают идентифицировать людей, и запускаем собственную нейросеть

Reading time7 min
Views20K
Алгоритмы по детекции лиц плотно вошли в нашу жизнь, хотя и не все это замечают. Началось всё в 2015 году со сферы развлечений. Shapchat купил стартап Looksery, в котором разрабатывали AR-фильтры. Приложение распознавало лицо человека на фотографии и накладывало на него весёлые рожицы. Чуть позже, в начале 2016 года, Facebook купил белорусский стартап MSQRD и запустил маски в Facebook Stories. Но это можно считать только обкаткой таких технологий.

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




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

Детекция — обнаружение любых объектов.

Идентификация — установление соответствия неизвестного объекта известному. Например, мистер X оказывается Васей Пупкиным.

Дальнейшее развитие нейронных сетей подняло точность идентификации, достаточную для решения таких задач, как защита и безопасность. В 2017 году Apple представила FaceID — сканер, позволяющий разблокировать телефон по лицу владельца. Появился новый способ оплаты покупок по биометрии. Летом 2020 года сеть московских кафе Prime начала тестировать систему оплаты по лицу клиента. Вместо использования пропусков для турникетов начинают идентифицировать человека через видеокамеру.

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

Распознавание с помощью алгоритмов


В 2001 году Пол Виола и Майкл Джонс предложили метод детекции объектов, который широко использовался для определения лиц. В 2005 году Навнит Далал и Билл Триггс показали свои гистограммы направленных градиентов (Histogram of Oriented Gradients, HOG), с помощью которых также можно было детектировать лица.

К сожалению, качество данных подходов оставляло желать лучшего. Системы часто делали ошибки первого и второго рода.

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

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

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

  • Плохой уровень освещённости (света от монитора в тёмной комнате достаточно для распознавания);
  • Голова наклонена или слегка повёрнута;
  • Лицо не полностью в кадре или прикрыто ладонью;
  • Борода, очки — не проблема.

Так что те, кто до сих пор использует решения на основе старых алгоритмов, бросайте это дело!  Давно существуют решения, требующие такой же вычислительной мощности, но при этом дающие точность, близкую к 100 %.

Распознавание лиц в городах


По состоянию на 2019 год, количество камер с системой распознавания лиц, установленных в крупных городах:

  • Пекин – 470 тыс.;
  • Лондон – 420 тыс.;
  • Вашингтон – 30 тыс.;

В Москве сейчас установлено около 193 тыс. HD-камер. Расположение камер можно посмотреть на сайте data.mos.ru.

Также система распознавания лиц запущена в московском метро. Камеры установлены в вагонах и у турникетов. В 2021 году будет добавлена функция оплаты проезда через идентификацию лица. Когда человек пройдет через турникет, оплата спишется автоматически. Для этого всего лишь нужно связать банковскую карту с биометрическими данными.

Цели развёртывания систем распознавания


Теоретически эти меры должны будут сократить преступность, распознавая нарушителей за доли секунды. Система слежения позволит выявить самые опасные места в городе и вычислить нелегальных мигрантов. По данным МВД, за два года тестовой работы системы распознавания лиц нашли около 100 человек, находящихся в федеральном розыске, после чего в конце 2019 года к системе решили подключить все городские камеры.

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

К сожалению, ни одна система не идеальна — иногда данные уходят в сеть. В сети за скромную плату информация продаётся всем желающим. Чаще всего такие данные покупают частные детективы или коллекторы.

Как обрабатываются такие данные


Ряд компаний на протяжении более 40 лет активно разрабатывает системы распознавания человеческих лиц. В их числе даже знаменитый производитель оружия Smith & Wesson со своей системой ASID — Automated Suspect Identification System. А полиция Лондона сейчас тестирует похожую систему в сотрудничестве с японской компанией NEC. Но лидером в данной области можно смело назвать российскую компанию NtechLab. В 2015 году алгоритм распознавания лиц от NtechLab был признан лучшим на организованном Вашингтонским университетом международном конкурсе The MegaFace Benchmark. В мае 2016 NtechLab в числе трёх российских компаний была допущена к официальному тестированию технологий биометрии, проводимому NIST. Сам факт допуска к испытаниям дал компании право участвовать в гостендерах США и ряда других стран.


Широкой аудитории алгоритм был представлен в виде сервиса FindFace, который искал людей во Вконтакте по фотографии. После своего запуска сервис наделал много шума в соцсетях, а также спровоцировал несколько скандалов с деаноном. По всей видимости, сервис был маркетинговым приёмом, призванным показать возможности платформы потенциальным покупателям технологии. Вскоре после этого разработчики закрыли сервис, и компания начала оказывать услуги государству и различным отраслям бизнеса. Стало известно, что мэрия Москвы заплатила NtechLab не менее $3,2 млн за использование её технологии в городской системе видеонаблюдения.

Собственная система слежения в домашних условиях на основе нейронных сетей


MTCNN — нейронная сеть для детекции лиц


MTCNN — это каскад свёрточных нейронных сетей. В модели используются 3 сети: P-Net, R-Net и O-net. Каждая последующая нейронная сеть увеличивает точность прогноза.



Первая P-Net на выходе выдаёт координаты ограничивающих прямоугольников предполагаемых лиц. Далее R-net отсекает области, где лиц скорее всего нет и добавляет уровень достоверности к тем областям, которые остались. В третьей сети мы снова избавляемся от прямоугольников с низким уровнем достоверности и добавляем координаты пяти лицевых ориентиров.


Результат работы mtcnn

Для тех, кто хочет поэкспериментировать, нейронная сеть упакована в Python-библиотеку с одноимённым названием MTCNN. Для запуска достаточно создать объект MTCNN и вызвать метод detect_face.

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

import cv2
from mtcnn import MTCNN
 
detector = MTCNN()
image = cv2.cvtColor(cv2.imread("ivan.jpg"), cv2.COLOR_BGR2RGB)
result = detector.detect_faces(image)
bounding_box = result[0]['box']
keypoints = result[0]['keypoints']
cv2.rectangle(image,
          	(bounding_box[0], bounding_box[1]),
       	   (bounding_box[0]+bounding_box[2], bounding_box[1] + bounding_box[3]),
          	(0,155,255), 2)
cv2.circle(image,(keypoints['left_eye']), 2, (0,155,255), 2)
cv2.circle(image,(keypoints['right_eye']), 2, (0,155,255), 2)
cv2.circle(image,(keypoints['nose']), 2, (0,155,255), 2)
cv2.circle(image,(keypoints['mouth_left']), 2, (0,155,255), 2)
cv2.circle(image,(keypoints['mouth_right']), 2, (0,155,255), 2)
cv2.imwrite("ivan_drawn.jpg", cv2.cvtColor(image, cv2.COLOR_RGB2BGR))
print(result)

У меня были проблемы с зависимостями пакетов. Если у вас появляются ошибки, скопируйте в файл requirements.txt эти пакеты:

opencv-python==4.2
tensorflow==1.12.3
keras==2.2.4
numpy == 1.16
protobuf==3.6.0
mtcnn

Если tensorflow не устанавливается тогда обновите setuptools командой:

pip install setuptools --upgrade --ignore-installed

FaceNet


Сиамская нейронная сеть, идентифицирующая лица. Слово «сиамская» означает, что она состоит из двух абсолютно одинаковых нейронных сетей с одинаковыми весами. Во время обучения FaceNet извлекает черты лица и преобразует их в евклидово пространство, где расстояния между точками вектора напрямую соответствуют мере сходства лиц. Сравнивая два изображения с двух сетей во время обучения, коэффициенты меняются так, чтобы увеличить евклидово расстояние, если изображены разные люди, и минимизировать его, когда изображён один и тот же человек.

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

Чтобы идентифицировать лицо, сначала нужно обнаружить его, для этого подойдет любой метод обнаружения. Когда нейросеть получает изображение, на котором глаза и губы находятся примерно на одном и том же месте, мы приводим картинку к разрешению 96x96 и передаём ее в FaceNet.

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


Принцип работы faceNet

Желающие протестировать модель могут заглянуть в этот репозиторий, а веса предварительно обученной сети можно скачать с google-диска.

Это стандартные реализации алгоритмов обнаружения. На уровне систем безопасности используется более тонкая и сложная настройка. Разумеется, это коммерческая тайна.

Слабые места подобных систем


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


На точность распознавания в условиях городской среды влияют такие факторы, как погодные условия, место размещения камеры, направление объектива, уровень освещённости, частичное закрывание лица шарфом или медицинской маской.


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

Перспективы развития систем видеонаблюдения


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

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

image



Tags:
Hubs:
Total votes 24: ↑23 and ↓1+30
Comments26

Articles

Information

Website
www.skillfactory.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Skillfactory School