Главная › 🔍 Поиск по фото › Как работает поиск по лицу

Как работает поиск человека по фото лица и почему он не находит: очки, поворот головы, качество снимка

Поиск человека по фото лица идёт в четыре шага: система находит лицо, выравнивает его по ключевым точкам — глазам, бровям, уголкам рта, — превращает в набор чисел и сравнивает с лицами из своей базы по порогу. Человек не находится, если его снимков нет в базе: поисковик знает только открытые фото, которые успел проиндексировать. Вторая причина — плохой кадр: профиль, тёмные очки, маска, мелкое или размытое лицо, фильтр. А Google и TinEye ищут копии и похожие картинки, а не конкретного человека.

Причина промахаКакой шаг ломаетсяЧто делать
Снимков нет в открытом доступеСравнение с базойДругой кадр не поможет
Профиль, поворот головыПоиск лица и точекВзять кадр анфас
Тёмные очки, маска, рука, чёлкаТочки и числаКадр с открытым лицом
Мелкое или смазанное лицоПоиск лицаКрупный резкий кадр
Фильтры и ретушьЧислаИсходник без обработки
Снимку много летСравнение по порогуБолее свежее фото

Как устроен поиск по лицу: четыре шага

Разберём шаги на примере открытой библиотеки dlib: все они описаны в её документации.

Шаг 1. Найти лицо

Детектор ищет на снимке лицо и обводит его рамкой. Классический детектор dlib рассчитан на лица анфас размером примерно от 80 × 80 пикселей. Если увеличить снимок вдвое, он найдёт лица от 40 × 40 пикселей, но работать будет медленнее. Не нашлось лицо — сравнивать нечего.

Шаг 2. Выровнять по ключевым точкам

Затем на лицо ставятся ключевые точки: уголки рта, брови, глаза. В одном из примеров dlib таких точек 68, а для выравнивания перед распознаванием хватает пяти. По точкам лицо поворачивают, центрируют и вырезают квадрат 150 × 150 пикселей, чтобы все лица были в одной позе.

Шаг 3. Превратить лицо в числа

Нейросеть переводит выровненное лицо в числовой вектор. В dlib это 128 чисел. Авторы системы FaceNet описали тот же принцип в 2015 году: расстояние между векторами прямо показывает, насколько лица похожи, а на одно лицо уходит всего 128 байт.

Шаг 4. Сравнить с базой по порогу

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

Схема: поиск по лицу в четыре шага — найти лицо (детектор dlib — от 80 × 80 пикселей), выровнять по ключевым точкам (в примере dlib их 68), превратить в 128 чисел и сравнить с базой по порогу 0,6; под каждым шагом — что его ломает: профиль, мелкое лицо, тёмные очки, маска, фильтры, годы между снимками, отсутствие снимка в индексе
Инфографика: как устроен поиск по лицу и на каком шаге он промахивается

Главная причина промаха: человека нет в базе

Поисковики не видят весь интернет. Яндекс Картинки, по их справке, ищут только по картинкам в свободном доступе, и нужных снимков в выдаче может не быть, если Яндекс их не проиндексировал. TinEye объясняет промах так же: его краулер ещё не обошёл страницу, где лежит снимок.

Значит, фото из закрытого профиля, переписки или со страницы, закрытой от индексации, не найдётся, как бы хорош ни был кадр.

Не каждый поиск по картинке ищет людей

TinEye прямо пишет, что не распознаёт лица: он находит тот же снимок, даже обрезанный или отредактированный, но не другие фото того же человека. Google в справке перечисляет, что даёт поиск по изображению: похожие картинки, сведения об объектах на снимке и сайты с этим или похожим изображением. О поиске людей там ни слова. Сама компания пишет, что осторожно внедряет распознавание лиц в продукты, а её облачный сервис Vision не поддерживает распознавание конкретного человека. Яндекс среди задач поиска по картинке называет «узнать, что изображено или кто изображен на фото», но и он ищет только среди проиндексированных снимков.

Поиск копии снимка и поиск человека — разные задачи. Как понять, откуда взялась фотография и где она появилась впервые, разобрано в статье о том, как найти первоисточник фото.

Что сбивает поиск: ракурс, очки, маска, качество

Поворот головы

В профиль видна только половина лица, и точки ставятся неточно. В исследовании набора CFP 2016 года все проверенные алгоритмы теряли больше 10 % точности, когда профиль сравнивали с анфасом. В отчёте NIST 2019 года уже отмечено, что несколько алгоритмов находят снимки сбоку по базе фото анфас.

Очки

Авторы работы, в которой выпустили набор снимков MeGlass, пишут, что очки могут значительно снизить точность распознавания. Тёмные очки закрывают глаза целиком, а это хуже. В исследовании бьюти-фильтров 2021 года сильнее всего вредили эффекты на глазах: без доработки точность опознания падала ниже 72 %.

Маска, шарф, рука

NIST в 2020 году проверил 89 коммерческих алгоритмов на снимках с масками, наложенными в цифровом виде (отчёт NISTIR 8311). У лучших ошибки выросли примерно с 0,3 % до 5 %, у многих — до 20–50 %. Чем выше маска закрывала нос, тем ниже была точность, и чаще программа вообще не могла извлечь черты лица. Шарф, капюшон, чёлка и рука мешают по той же причине: прячут часть точек.

Размер, резкость и свет

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

Фильтры и годы

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

Почему поиск находит чужих

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

Подойдёт ли снимок для поиска по лицу

Выберите, как выглядит лицо на снимке. Блок оценит пригодность снимка по нашей шкале от 0 до 100 и подскажет, что исправить. Это наша оценка по выводам исследований, а не обещание результата. Снимок никуда не загружается.

Закон и этика

Сведения о физиологических и биологических особенностях человека, по которым можно установить его личность, закон называет биометрическими персональными данными. По статье 11 закона № 152-ФЗ, если оператор использует такие сведения для установления личности, нужно письменное согласие человека; исключения — в части 2 статьи. Статья 152.1 Гражданского кодекса разрешает использовать изображение гражданина только с его согласия, с некоторыми исключениями, и даёт право требовать удалить снимок, распространённый в интернете с нарушением.

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

Проверка фото собеседника — другая задача: там ищут не человека, а копии снимка, сток или работу нейросети. Об этом — в статье о том, как проверить фото на сайте знакомств.

Как защитить свои фото от поиска по лицу

Правило простое: чего нет в открытом индексе, того поиск не найдёт.

  • Удалите лишние снимки. Если фото лежит на чужом сайте, попросите владельца сайта его удалить — так советует Google. Из поиска снимок пропадёт со временем, у Яндекса — примерно через две-три недели.
  • Проверьте копии. Робот Яндекса находит копии картинок, поэтому снимок может остаться на других сайтах.
  • Ограничьте доступ к профилям. Яндекс Картинки ищут только по изображениям в свободном доступе.
  • Не ставьте одну аватарку везде. Одинаковое фото связывает аккаунты: по одному профилю легко найти остальные. Чем это опасно, объясняет статья о том, что такое деанон и докс.
Почему алгоритм строит вектор лица, а не сравнивает пиксели

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

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

id="if-brands" class="if-brands">

Что мешает поиску по лицу: цифры проверок

ПомехаЧто показала проверкаКто проверял
МаскаОшибки лучших алгоритмов — с 0,3 % примерно до 5 %, у многих — 20–50 % (сравнение «один к одному»)NIST, 2020
Профиль вместо анфасаВсе алгоритмы теряли больше 10 % точности; нейросеть — 84,91 % против 94,57 % у людейНабор CFP, 2016
Эффекты на глазахТочность опознания ниже 72 %; без закрытия важных точек — выше 99 %Исследование бьюти-фильтров, 2021
Обычные очкиМогут значительно снизить точностьАвторы набора MeGlass, 2018
Мелкое лицоДетектор ищет лица от 80 × 80 пикселей, с увеличением снимка — от 40 × 40Документация dlib
Годы между снимкамиСходство снижаетсяNIST, 2019
Снимка нет в индексеНе найдётся при любом кадреСправка Яндекс Картинок, TinEye
Подготовка кадра перед поиском (обрезка фона, выбор анфаса без очков и фильтров)Повышает точность сопоставления ключевых точек лица и векторного представления (эмбеддинга)Рекомендации NIST FRVT и документации зрительного поиска

Итог

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

Частые вопросы о поиске по лицу

Как работает поиск по лицу?

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

Почему поиск по фото не находит человека?

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

Почему не работает поиск по фото в Google?

Он работает, но ищет не человека. В справке Google сказано, что поиск по изображению показывает похожие картинки, сведения об объектах на снимке и сайты с этим или похожим изображением. Поиска конкретных людей там нет, а сама компания пишет, что осторожно внедряет распознавание лиц.

Почему очки мешают распознаванию лиц?

Очки закрывают область глаз, а помехи на глазах, как показало исследование фильтров для селфи, вредят распознаванию сильнее всего. Авторы набора снимков MeGlass пишут, что даже обычные очки могут значительно снизить точность. Тёмные очки мешают сильнее, потому что прячут глаза целиком.

Как защитить свои фото от поиска по лицу?

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