воскресенье, 01 октября 2017
Если вы вдруг не знали, в Москве всё шире используется видеонаблюдение с технологией распознавания лиц:
www.mos.ru/news/item/30105073/"Медуза" проанализировала возможные способы обмануть систему:
meduza.io/slides/kamery-nablyudeniya-uchatsya-r...Прочитав статьи
www.cs.cmu.edu/~sbhagava/papers/face-rec-ccs16.... и
telegra.ph/Novyj-makiyazh-korolya-07-14 я понял, что где-то это уже видел. Мимикрия! И несмотря на то, что во второй статье сотрудник "Яндекса" мутновато отказался говорить о деталях алгоритма, я полагаю, что он достаточно прост.
много текста и картинокДля начала рассмотрим стандартное человеческое лицо:

Здесь поставлены базовые линии, и их пересечения характеризуют лицо и позволяют проводить идентификацию. Это расстояние между глазами, высота носа, высота от переносицы до линии рта. Высота лба и длина лица от переносицы до подбородка легко скрадываются одеждой и потому не используется. Для обмана системы достаточно сделать невозможным чёткое определение хотя бы одного параметра. Как? Обратимся к биологии.
Животные на нашей планете миллионы лет обманывают "системы распознавания лиц" хищников или своих потенциальных жертв, и решений здесь куча. Самое простое - скрыть глаза (которые всегда выдают голову):


Можно в дополнение к этому "нарисовать" фальшивый глаз для дополнительной дезориентации:

Нужно отметить, что расчленяющая окраска - не панацея:

Этот пример утрированный, но несмотря на камуфляж мы всё же опознаём лицо - глаза-то не замаскированы.
Таким образом, для начала нужно "спрятать" глаза. Традиционный для животных способ в виде полосы работать не будет, потому что глаза человека не одноцветны. Поэтому проще пойти от противного - нарисовать ещё один глаз. Берём среднее лицо, пусть этого парня зовут Геннадий.

Нарисуем ему ещё один глаз:

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

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

Это не кто иной, как Rick Genest, известный также под именем Зомби-Бой, и вот он в брачном наряде обычном виде:

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

Можно пугать людей, они вас даже запомнят, но стоит смыть макияж - и вряд ли кто-то узнает. Обратите внимание, каким плоским сразу стало лицо Геннадия и как на нём трудно сосредоточиться. В случае нейросети, у которой "за спиной" не миллионы лет эволюции, результат будет ещё заметнее.
Кроме светотеневого, человеческое лицо имеет характерный линейный рисунок, мало зависящий от освещения. Брови, глаза, нос и губы образуют букву "Т". Поскольку удалять брови как-то жалко, просто объединим их в одну сплошную черту (заодно это будет элемент расчленяющей окраски) и нарисуем сверху фальшивые брови:

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

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

Получился портрет работы Пикассо макияж, с которым не то что камере - специалисту будет сложно понять, какой человек перед ним. Красавчик, правда?
Макияж может показаться сложным, но я намеренно собрал все возможные приёмы на одном лице и утрировал их. Вполне возможно, на практике достаточно будет совсем небольшого вмешательства.
Системы распознавания, работающие в инфракрасном спектре, обманываются аналогичным образом. Вот изображение человеческого лица в ИК-диапазоне:

Нос и щёки холоднее, чем область вокруг глаз и носогубный треугольник. Наносим на нос и щёки крем, вызывающий локальное раздражение и прилив крови, а около глаз кладём толстый слой теплоизолирующего грима и вуаля - уже не человек.
Понятно, что алгоритмы распознавания будут улучшаться, но до тех пор, пока их создают люди - их можно обмануть.
P.S. Самый простой способ обойти систему распознавания лиц был показан в конце фильма "V значит вендетта". Я всего лишь попробовал пойти сложным путём из научного интереса.

P.P.S. В ходе написания этого поста внезапно понял, что боевая раскраска лица гем-лордов из Саги о Форкосиганах могла иметь не только церемониальное значение.
Гем-лорд слева.
@музыка:
Unheilig - Einer von Millionen
@темы:
размышлизмы
Интересно написано, спасибо!
А Буджолд это та ещё трава, сам регулярно перечитываю.