N + 1 пытается обмануть FindFace
Еще десять лет назад системы распознавания лиц были в основном уделом научной фантастики и применялись довольно редко. Сегодня они везде — на улицах мегаполисов и даже в смартфонах. Вместе с российским разработчиком систем распознавания лиц NtechLab, технологическим партнером «Ростеха», рассказываем, как работает технология, стремительно вошедшая в нашу жизнь, и как решать возникающие из-за нее этические вопросы.
Для начала стоит разобраться с тем, что такое распознавание лиц. На самом вопрос нужно поставить иначе: «Почему мы воспринимаем лица людей настолько разными, если у всех нас (почти) есть два глаза, нос и рот?» Все дело в том, что формы этих частей лица, а также их взаимное расположение сильно различаются от человека к человеку. Кроме того, отличаются форма самой головы, форма щек и других черт. Важно и то, что их параметры не так сильно коррелируют между собой, как, к примеру, длина рук и ног, а также рост. Именно поэтому мы можем узнавать знакомые лица даже издалека.
А раз параметры лиц вполне конкретны и их можно описать аналитически, то и машины можно научить различать людей между собой. Первые эксперименты в этой области начались на заре компьютерной эры. Относительно быстро стали появляться первые результаты, которые показали, что это возможно. Однако почти сразу стало понятно, что от первого прототипа до надежно работающей в реальных условиях системы распознавания лиц предстоит большой путь.
Проблема в том, что перед камерой системы распознавания находятся живые люди, которые отходят дальше или ближе, поворачивают голову, улыбаются. А еще один и тот же человек может поменять прическу, накраситься или сделать пирсинг. То есть помимо индивидуальных для каждого человека параметров лица есть огромное количество вариантов того, как человек выглядит в конкретный момент. Постепенно развитие алгоритмов и наращивание мощности компьютеров позволило обогнать по точности работы людей. Благодаря этому системы распознавания начали внедряться повсеместно.
Системы распознавания лиц применяются для двух типов задач: аутентификации (проверки личности) и распознавания в потоке. Хотя как таковой границы между ними может и не быть. Первый тип связан с непосредственным взаимодействием человека с системой, после которого система допускает или не допускает его до какого-либо действия. Примеров много: разблокировка по лицу в гаджетах, тестовые системы автоматизированного контроля границы в аэропортах или пропуск в закрытые помещения.
Самый простой пример — это FaceID на iPhone и аналоги на других смартфонах. С инженерной точки зрения FaceID — почти выдающаяся система, однако с точки зрения распознавания лиц ее задача достаточно проста, потому что при взаимодействии с ней пользователи находятся почти вплотную перед датчиками, смотрят вперед, а еще освещаются встроенным инфракрасным проектором.
Распознавание людей без явного взаимодействия гораздо труднее, потому что тут нет идеальных условий, как при аутентификации. Самый частый пример подобной задачи — распознавание разыскиваемых людей в общественных местах. Такая сеть наблюдения из десятков тысяч камер работает на улицах Москвы и в общественном транспорте. Причем она синхронизирована с базой уголовного розыска и уже позволила задержать несколько сотен человек из нее.
Сложность такого распознавания заключается в ограниченности данных. Взять камеру в метро — ей необходимо в режиме реального времени распознавать лица под углом, как правило, частично закрытые шапками или волосами. Причем на каждое лицо может приходиться область всего в десятки пикселей шириной, а освещение может быть слабым.
Распознавание лиц работает на основе разных датчиков и технологий. Чаще всего для этого используются обычные или инфракрасные камеры. Сначала кадры с камеры пропускаются через алгоритм детектирования лица. Если в кадре есть лицо, область с ним отдается алгоритму для распознавания лиц. При классическом подходе на лице размечаются несколько десятков ключевых точек, расположенных в фиксированных участках лица, например, несколько точек по краю глаза.
Сравнивая взаимное расположение точек с базой, система определяет наиболее близкого человека. И если совпадение достаточно близкое, проводит между лицами из базы и перед камерой соответствие.
В последние годы для распознавания лиц используются нейросетевые алгоритмы. Они обучаются на огромном количестве фотографий людей и учатся определять важные для распознавания признаки на лицах. После получения фотографии обученная нейросетевая модель выдает вектор (или цифровой индекс). Он сравнивается с лицами из базы, которым также присвоен такой индекс.
Может показаться, что такую систему легко обмануть, показав фотографию человека. На самом деле в современных системах распознавания лиц также применяются алгоритмы определения живости лица. Есть несколько основных методов определения, что перед камерой стоит живой человек. Часто в одной системе используется сразу несколько. Например, базовые методы анализа оптического потока и определения плоской поверхности, отслеживание мимических движений, в том числе изменения направления взгляда и моргания. Правда, для определения мимики или моргания необходимо проанализировать не один снимок, а, как минимум, несколько, что замедляет процесс распознавания.
Помимо обычных двумерных камер для распознавания лиц используют и более «экзотические» системы. Многие из них можно увидеть в смартфонах: Samsung пару лет экспериментировала с датчиком для сканирования уникального узора радужки, а Apple и Google применяют в своих смартфонах более сложную систему трехмерного сканирования.
Эта система состоит из инфракрасной камеры и двух инфракрасных излучателей. Один из них просто равномерно освещает лицо, а второй проецирует на него узор из точек или полосок. Это позволяет восстанавливать рельеф поверхности лица. Значит, простой распечаткой для обмана такой системы уже не обойтись. При этом применить такую технологию для поиска преступников на улицах не получится. Для этого в базе данных розыска должны храниться не простые их «фотороботы», а полноценные 3D-сканы каждого лица.
Мы решили рассмотреть работу такой системы на конкретном российском примере — системе распознавания лиц FindFace от компании NtechLab. Ее успешно опробовали на Чемпионате мира по футболу в России в 2018 году. Эта же система работает на входах в офисы некоторых компаний. Она же ищет подозреваемых на улицах Москвы и в общественном транспорте. Кроме того, ее можно применять для анализа реакций людей на товары и услуги или для входа в банковские приложения по лицу. Иными словами, она имеет разные применения, но «под капотом» используется одни и те же алгоритмы.
В FindFace применяется стандартная для этой задачи и проверенная схема конвейера из алгоритмов. Изначально система получает кадр. На нем может быть один человек крупным планом, стоящий перед входом в офис, а может быть толпа людей в метро или даже вовсе не быть человека. Для того, чтобы не работать со всеми кадрами и не тратить вычислительные мощности зря, первым делом кадры анализирует алгоритм детектирования лица. Он ищет на изображении лица и вырезает области с ними.
Если в кадре обнаружено лицо или несколько, области с ними передаются на предварительную обработку, во время которой другой алгоритм старается привести области к нормальному виду со стандартной яркостью, углом поворота и другими параметрами.
И только после этой «рутины» лица отдаются основной сети для распознавания. Конкретные данные о ее устройстве разработчики не раскрывают, поскольку она является ключевой частью любой системы распознавания лиц. В общих чертах принцип работы нейросети для распознавания заключается в том, что после обучения на множестве лиц она способна замечать как базовые признаки, например, расстояние между глазами, так и более абстрактные признаки, которые тем не менее позволяют достаточно точно описать конкретное лицо.
На выходе нейросеть выдает вектор признаков, который затем сравнивается с векторами из базы. Если в базе удается найти похожий до определенной степени вектор, система выдает соответствие. При этом вместе с соответствием администратор видит «сырые» данные, в том числе индекс уверенности, а также индекс живости.
Точность FindFace на текущий момент находится на уровне нескольких лучших алгоритмов в мире по распознаванию лиц в неконтролируемых условиях, например, на городских улицах. Это подтверждается многими конкурсами, в том числе проводимыми NIST. Алгоритм делает ложноположительные ошибки, то есть некорректно узнает человека из базы в человеке перед камерой, в среднем раз в 15 миллионов случаев.
Помимо базовых составляющих у FindFace также есть дополнительные возможности, например, способность распознавать эмоции, что можно применять для выявления агрессивных людей или других целей. Сейчас разработчики NtechLab работают над алгоритмом, способным узнавать человека не только по лицу, но и по всему силуэту. Даже если лица не видно.
Мы решили не полагаться на данные разработчиков и пошли в офис NtechLab, чтобы лично попробовать обмануть систему распознавания лиц компании. Она установлена прямо на входе в офис и заменяет сотрудникам пропуск. Возле двери располагаются две камеры и небольшой монитор, на который выводится процесс распознавания и результат. А если система узнала человека, она приветствует его по имени, причем на разных языках.
В NtechLab мы поехали вдвоем. Одного из нас система знала и принимала за сотрудника, а второй был для нее неизвестным гостем. Разработчики дали нам полную свободу действий, хотя применять силу к двери все же было нельзя.
Основным нарушителем был наш выпускающий редактор Николай Воронцов, который был для системы «своим», поэтому большая часть тестов была направлена на ложноотрицательные срабатывания. Так принято называть реакцию системы, при которой она не узнает человека, который есть в базе. А в конце мы попытались проверить ее на самый опасный случай — ложноположительные срабатывания, при которых алгоритмы узнают знакомого человека в злоумышленнике.
Наша основная цель заключалась в том, чтобы тем или иным способом помешать системе увидеть ключевые области на лице, поэтому мы опробовали разные типы «маскировки». Часть из них — это дополнительные элементы одежды или внешности: три пары необычных очков, парик и косметическая маска.
Другой тип обмана — это попытка запутать систему необычными визуальными элементами на лице. На один из них нас вдохновил эксперимент Григория Бакунова из Яндекса, который со своей командой в 2017 году достаточно успешно обманул системы распознавания с помощью асимметричного макияжа. В оригинале за этот макияж отвечал алгоритм, который анализировал фотографию человека и добавлял полосы, круги и другие фигуры, чтобы добиться максимальной непохожести для алгоритмов распознавания лиц.
У нас такого алгоритма не было, поэтому сначала мы просто налепили в случайном порядке несколько полос из темной и серебристой изоленты. Затем мы усложнили задачу и ввели, по-видимому, основной компонент такого макияжа — линии, которые пересекают глаза и другие ключевые части лица, в стиле Дэвида Боуи. Кроме того, во время одного из подходов к камере мы с той же целью запутать систему закрасили половину лица темной краской.
Для проверки ложноположительных срабатываний мы воспользовались распечатками лиц на листах A4. Часть из них брали в исходном виде, на части обрезали контуры лица и плеч, а в одной из попыток наклеили круглую распечатку фотографии лица на лицо другого человека и вырезали глаза. Задумка заключалась в том, что движения тела и глаз компенсируют нереалистичность распечатки и позволят обойти алгоритм проверки живости.
Часть тестов система прошла без проблем: в случаях с париком и очками, асимметричным макияжем по образу того, что использовала команда Бакунова, и светящимися очками она сразу пропускала Николая.
С асимметричным макияжем в стиле Боуи и накинутым капюшоном FindFace тоже узнала его, но спустя несколько секунд, а не сразу. Действительно сработала только черная косметическая маска с прорезями для глаз, носа и рта. Когда половина лица была закрашена, а поверх были надеты асимметричные очки, дверь тоже не открылась. Однако по логам мы увидели, что основной алгоритм узнал человека, но алгоритм определения живости подумал, что его пытаются обмануть распечаткой или другим способом, и не пустил «злоумышленника» в офис.
Когда мы попытались «примерить» лицо сотрудников на другого человека, в основном алгоритмы справлялись и понимали, что их пытаются обмануть. Но распечатка на лице с прорезями для глаз оказалась критичной: она несколько раз почти сразу открывала дверь. Дело в том, что в офисе компании установлена не последняя версия программы, которая анализирует отдельные изображения с камеры, не сопоставляя соседние кадры между собой. По логам было видно, что почти со всеми изображениями FindFace справилась и подавала сигнал об обмане, но некоторые кадры не удалось отличить от реального человека.
Мы также проверили на этот баг мобильную версию, которая отсылает на сервер небольшой фрагмент видео. В таком случае обмануть нейросети не удалось никаким образом. Эта версия позиционируется разработчиками как решение для безопасной аутентификации в банковских приложениях.
Государственное применение системы распознавания лиц в России
Законодательство в сфере распознавания лиц в настоящее время формируется, поэтому многие вопросы, по-прежнему, в серой зоне. Например, Китай считает, что у государства есть право собирать данные о гражданах в любом объеме. Например, в Синьцзян-Уйгурском автономном районе Китая, по данным ООН, системы распознавания лиц используются для контроля за этническими уйгурами.
Часть американских штатов, например, Калифорния, уже приняли мораторий на распознавание лиц. В Европе обсуждается введение аналогичного (правда, временного) моратория на подобные технологии.
Григорий Копиев