Как стать автором
Обновить

Большой брат (пока) подслеповат

Время на прочтение 8 мин
Количество просмотров 21K

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

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

Я заинтересовался состязательными нейронными сетями, когда глубокой осенью 2018 года прочел статью «Do neural nets dream of electric sheep?» («Снятся ли нейронным сетям электроовцы»)? Автор проанализировала несколько примеров, где нейронка изрядно озадачивается, обнаружив овец в необычном сеттинге. Особенно интересен следующий пример:

Как видите, и NeuralTalk2, и Azure «мыслят стереотипно»: в датасетах, на которых они обучались, овцы не лазали по деревьям, поэтому одна сеть увидела здесь «стаю крупных белых птиц», а другая «стадо жирафов». В другом примере подобных атак на алгоритмы компьютерного зрения (такие примеры называются «состязательными») обнаруживается, что даже небольшой поворот изображения сбивает нейронную сеть с толку:

Револьвер превращается в мышеловку, лодочная станция – в гильотину, а сервант с фарфором – в прожектор. Причем, в примере с сервантом мне даже удается посмотреть на эту ошибку «глазами нейронки», но остальные ее ошибки понять не получается.

Попытки эксплуатации аналогичных уязвимостей при распознавании лиц активизировались в 2019 году после манифестаций в Гонконге, когда стало понятно, что маскировка эффективнее брутфорса (протестующие пытались громить умные камеры). Последовавшая вскоре эпидемия COVID-19 и масочный режим вновь подстегнули такие исследования и, в частности, показали, что маска – плохая защита от нейронки. Лицо человека имеет характерную форму (скулы) и симметрию, кроме того, легко выявляется по симметричным и при этом блестящим глазам. На Хабре публиковался перевод интересного исследования о том, легко ли обмануть алгоритм распознавания лиц при помощи медицинской маски (спойлер: нет).

Обнаружение и распознавание лиц

Для начала разграничим две эти задачи – на самом деле, они сильно отличаются по сложности. Для обнаружения лица (1) достаточно, чтобы программа выявляла на картинке овал, а на нем – два глаза. Но для того, чтобы убедиться, что это именно человеческое лицо, а тем более распознать его, требуется гораздо более скрупулезный анализ характерных точек. Далее коротко расскажу о градиентной маскировочной маске, описанной в статье Брюса Макдональда.

Таким образом, алгоритм распознавания лица учитывает положение сразу множества легко идентифицируемых точек: зрачка, радужки, мочек ушей, уголков губ, кончика носа, скул – а также расстояния между этими точками. Поэтому обычная медицинская маска – не лучшая маскировка. Она не закрывает глаз, не закрывает ушных мочек; общая симметрия лица также сохраняется. Но в 2019 году, до повсеместного распространения масочного режима, антинадзорная градиентная маска была по-настоящему интересной находкой:

Программа на Python (исходный код) создает градиентный узор/шум (так называемые «гистограммы направленных градиентов»), распределяющий линии и продолговатые фигуры таким образом, что они кажутся камере видеонаблюдения набором схематически очерченных лиц. Обратите внимание на имитацию глаз и бровей. Методом Q-обучения автор также нашел такой вариант замощения маски этими группами характерных точек, при котором «лица» выглядят разупорядоченно и тем более осложняют опознание носителя маски:

fitness = mlrose.CustomFitness(detected_max)
problem = mlrose.DiscreteOpt(length=24, fitness_fn=fitness,
maximize=True, max_val=scale_factor)
schedule = mlrose.ExpDecay()
best_state, max_faces = mlrose.simulated_annealing(problem, schedule=schedule, max_attempts=10, max_iters=1000,
init_state=initial_state, random_state=1)

print('Optimal state found: ', best_state)
print('Max fitness found: ', max_faces)
# сохраняем оптимальный найденный результат
get_img_from_state(best_state)
print("Number of faces in output: ", len(detect_faces(cv2.imread(OUTPUT)))) 

По-видимому, такой антинадзорный узор действительно эффективен для обмана простого приложения вроде Snapchat или камеры видеонаблюдения. Тем не менее, эпидемия внесла коррективы в работу компьютерного зрения: теперь алгоритмы целенаправленно тренируют на распознавание лица в маске. Так, на Хабре в корпоративном блоге «Productivity Inside» была переведена статья Томаса Смита, который попытался обмануть приложение Face++. Эта программа не только распознает лица, но и сравнивает лица, отснятые в разных условиях, чтобы проверить, принадлежит ли лицо с обоих кадров одному и тому же человеку.

Точность распознавания лица в этой программе без применения маски составила более 95%, а различные маски все равно не слишком сбивали Face++: детская маска с собачьей мордочкой снижала точность распознавания до 82,4% - хотя теоретически «второе лицо» должно было дезориентировать систему. Автор предположил, что лицо распознавалось лучше, так как сама (детская) маска была меньше. Обычная медицинская маска снижала точность распознавания лица до 74,7%, что все равно очень высоко, а маска с вышеприведенным антинадзорным узором вообще не помогла: точность распознавания выросла более чем до 83%. Таким образом, в 2020 году алгоритмы компьютерного зрения уже явно ориентированы на распознавание масок. Но программа в принципе не смогла обнаружить лицо на фотографии, когда автор вместе с обычной медицинской маской надел черные очки. Таким образом, сокрытие большей части лицевых скул, носа и глазной симметрии по-прежнему эффективно против распознавания лиц.

Именно на уничтожении лицевой симметрии сосредоточен макияж-камуфляж по технологии CV Dazzle, разработанный Адамом Харви. Поскольку алгоритмы распознавания анализируют свыше 60 ключевых точек на лице, одного лишь макияжа недостаточно: слишком велика избыточность алгоритма. Зато помогают накладные волосы, шиньоны и скрывание хотя бы одного глаза. Полностью приведу здесь советы по стилю CV Dazzle:

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

  2. Переносица: Нужно частично закрыть область переносицы. При распознавании лиц наиболее важен тот регион, где сходятся лоб, нос и глаза. Мера особенно эффективна против алгоритма обнаружения лица из OpenCV.

  3. Глаза: Частично закройте одну или обе глазницы. Симметричное положение и темный цвет глаз – ключевые признаки, выдающие лицо.

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

  5. Голова: Исследование Ранрана Фэня и Балакришнана Прабхакарана из Техасского Университета показало, что запутать алгоритм распознавания лиц можно, скрыв эллиптические очертания головы. В качестве камуфляжа подойдут прически, водолазки и другие украшения, скрывающие эллиптическую форму лица.

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

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

Тем не менее, подобный камуфляж – пиррова победа, поскольку он делает человека малозаметным для камер, зато крайне заметным для человека. Менее броский вариант антинадзорной маскировки был придуман в 2017 году; его предложил инженер Яндекса Григорий Бакунов @bobuk. Его макияж для защиты от распознавания лиц делается при помощи блестящих полос и точек; показал себя особенно эффективным, чтобы сбивать с толку биометрию. То есть, макияж Бакунова не столько мешает камере распознать лицо – как вы помните из вышеприведенных примеров, камера вполне обнаружит лицо по ключевым точкам – сколько затрудняет опознание человека.    

По словам Бакунова, проект был свернут после получения первых положительных результатов, так как технология легко может быть использована во зло. Но она подсвечивает еще одну важную уязвимость: алгоритмы распознавания лиц настолько полагаются на симметрию глаз, что их можно ловить как раз на этом. Китайские ученые показали, что устройство Apple, открывающееся по идентификации лица пользователя (FaceID) легко обмануть, надев на спящего обладателя устройства очки, на которые на месте зрачков наклеены две черные точки. FaceID распознает лицо по ключевым точкам, а зрачки как таковые не распознает – ему достаточно характерной глазной симметрии и двух черных точек на месте зрачков.

Таким образом, чтобы обмануть видеонаблюдение, важнее скрывать симметрию области глаз; темные очки из опыта Смита — более эффективная маскировка, чем медицинская маска. Что касается опытов Бакунова, их успешность могла быть связана со сравнительным несовершенством технологий распознавания в 2017 году. Если система все-таки вычленит в толпе лицо, сопоставить его с фото в базе – дело техники.

Кепка-невидимка

Уже в опытах Харви отмечалось, что распознавание лица значительно усложняет шляпа с полями. Шляпа – простейшее устройство, корректирующее отражательную заметность глаз; то есть, поля частично блокируют как свет, попадающий в глаза, так и отраженный от глаза свет. Еще недавно шляпа была всеобщим мужским аксессуаром, в ней человек не выделялся в толпе. Поэтому данное направление исследований кажется предпочтительнее, чем макияж-камуфляж. Первое достижение в этой области – инфракрасная кепка:

Подобное устройство используется для «атаки с невидимой маской» IMA. На рынке доступны дешевые светодиоды, испускающие инфракрасное излучение с длиной волны 850 или 940 нм. Такой свет неразличим для человека, но отлично захватывается камерами видеонаблюдения. Такая камера раскладывает «увиденное» лицо на цветовые каналы R, G и B, и при этом весь инфраскрасный свет попадает в канал R, сильнейшим образом искажая картинку. Такие светодиоды под козырьком кепки практически не заметны, питание для них также требуется минимальное (по данным авторов, аккумулятор 18650 может поддерживать светодиод не менее двух часов).

Извлечение лица из последовательности видеокадров и сравнение найденного лица с фотографией из базы данных осуществляется методом «Face embedding» (встраивание лица). Лицо извлекается со множества кадров видео, эти данные преобразуются в векторы, после чего сравниваются с фотографией человека, которая может быть преобразована в такой же вектор. Инфракрасная кепка позволяет сорвать этот процесс уже на самом первом этапе, то есть, не дает вычленить лицо в толпе.

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

Заключение

Системы распознавания лиц и биометрия развиваются параллельно с цифровизацией человеческих учетных данных и, в сущности, противодействовать этому технологическому вектору очень сложно. Я полагаю, что подобные «состязательные» разработки для обмана идентифицирующих устройств рано или поздно будут криминализованы, но сам пока на биометрию переходить не собираюсь. В моем втором блоге на Хабре (куда вынес технические переводы) я недавно публиковал статью о том, что глубокое обучение уже упирается в пределы своих технических возможностей, поэтому до изобретения принципиально новых алгоритмов окончательная победа над подобными обманными приемами может быть еще далека. Предположу, что здесь мы скорее увидим гораздо более опасные атаки, когда злоумышленник научится виртуально накладывать на лицо преступника лицо другого человека, чтобы на пленке засветился невиновный человек, и можно было попытаться таким образом создать преступнику алиби. Либо могу представить дальнейшую миниатюризацию инфракрасных маячков, встраивание их в пирсинг, серьги или в контактные линзы. Макияж-камуфляж, вероятно, останется в истории подобной маскировки лишь первым и относительно «дешевым» шагом, который, однако, подсказал принципиально важные идеи и уязвимости для поборников приватности.    

Теги:
Хабы:
+43
Комментарии 53
Комментарии Комментарии 53

Публикации

Истории

Работа

Data Scientist
66 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн