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

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

Что происходит на первой стадии, при детекции?

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

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

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

Что происходит на второй стадии, при выравнивании?

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

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

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

Что происходит на третьей стадии, при кодировании?

Сеть-кодировщик превращает выровненное лицо в вектор из 512 чисел. Для этого мы используем ArcFace. Этот вектор и есть математическое описание лица.

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

Стадия Вход Выход Отказывает, когда
Детекция (YuNet) Полное изображение Рамка + 5 опорных точек Лицо перекрыто, слишком мелкое, крайний ракурс
Выравнивание Рамка + точки Стандартизованная обрезка лица Опорные точки неточны
Кодирование (ArcFace) Выровненная обрезка Вектор из 512 чисел Обрезка испорчена, размыта или сильно сжата
Сравнение Вектор Ранжированный список с баллами Никогда — он всегда что-то возвращает

Последняя строка — самая важная, и она заслуживает отдельного раздела.

Что происходит на четвёртой стадии, при сравнении?

Сравнение измеряет косинусную близость между вашим вектором и каждым вектором в индексе, а затем возвращает ближайшие по порядку.

Косинусная близость лежит в диапазоне от 0 до 1 и описывает угол между двумя векторами. На наших данных порог, откалиброванный для кадров из видео, равен 0.40. Выше него пара считается, вероятно, одним и тем же человеком; ниже — это шум, который просто оказался ближайшим.

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

Почему именно индекс решает, что можно найти?

Потому что сравнение способно ранжировать лишь то, что уже закодировано. Индекс — это не поиск по вебу; это фиксированный набор векторов, посчитанный заранее.

В нашем — 241,792 лица, из которых 2,333 привязаны к актрисе с именем; собраны они с обложек и кадров со 106 сайтов (наш индекс, срез 2026-08). Отсюда прямо следуют два вывода:

  • Лицо, которое есть в индексе, но никогда не было связано с именем, вернётся как безымянная идентичность. Это обычное дело — только в наших данных о похожих актрисах 7,004 ссылки на идентичности без прикреплённого имени.
  • Лицо, которое вообще не индексировали, не вернётся ни при каком балле. Инструмент всё равно покажет вам свои ближайшие догадки.

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

Чем это отличается от обратного поиска по изображению?

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

Обратный поиск по изображению Поиск по лицу
Что сравнивает Отпечаток изображения целиком Вектор лица
Нужно, чтобы точная картинка была в сети Да Нет
Помогает ли обрезка по лицу Нет — становится хуже Да — это и есть вход
Переживает ли другой свет и позу Плохо По замыслу да
Работает ли по кадру, снятому вами самими Нет Да

Если инструменту становится хуже, когда вы обрезаете кадр по лицу, это не поиск по лицу. Надёжная проверка в один шаг.

Похожие вопросы


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