Почему два сканера лица дают разные оценки
Одно фото, два приложения, разница в двадцать баллов. Откуда она берётся — точки лица, база для деления, обучающие данные, фильтры — и тест своими руками.
Коротко
Отправьте одно и то же фото в два приложения для сканирования лица — и разница в двадцать баллов совершенно обычное дело. Ни одно из них не сломано. Оценка — не свойство вашего лица, а выход конвейера, и на каждом его шаге заложены решения. Поменяйте решения — изменится число.
Три решения объясняют почти всю разницу: какие точки лица измеряются, на что делится это измерение и в какое место собственной шкалы попадает получившееся отношение. Есть и четвёртое, о котором почти никто не думает, — оно происходит до того, как приложение вообще что-то увидит.
1. Они измеряют не одни и те же точки
Конвейеры анализа лица опираются на схемы ключевых точек, и эти схемы не взаимозаменяемы:
- 68 точек — классическая разметка dlib и раннего OpenCV. Контур челюсти, две брови, переносица и основание носа, два контура глаз, внешняя и внутренняя линии губ.
- 98 точек — схема разметки WFLW, её используют многие исследовательские модели. Идея та же, но плотнее вокруг глаз и контура рта.
- 468 точек — MediaPipe Face Mesh, плотная сетка на всё лицо, включая щёки и лоб.
- 478 точек — та же сетка плюс десять точек радужки, по пять на глаз.
Где это видно: на ширине носа. При 68 точках есть две точки крыльев носа и один отрезок между ними. На сетке из 468 точек поперёк носа проходит несколько возможных пар, и от того, какую выберет формула, измерение сдвигается на несколько процентов. С шириной челюсти то же самое: самая внешняя точка щеки на плотной сетке анатомически не там, где угол челюсти в схеме из 68 точек. Два приложения могут честно написать «ширина челюсти» и измерять разные участки вашего лица.
Больше точек — не значит точнее. Плотная сетка даёт формуле больше выбора, а значит, больше поводов разойтись с соседним инструментом.
2. Любому отношению нужен знаменатель, и они берут разные
Расстояние в пикселях само по себе бессмысленно: оно меняется с разрешением, с дистанцией до камеры, с кадрированием. Поэтому каждый инструмент делит исходное расстояние на что-то. Обычные варианты:
| Знаменатель | Поведение |
|---|---|
| Межзрачковое расстояние | Устойчиво к кадрированию, но чувствительно к поиску уголка глаза |
| Ширина ограничивающего прямоугольника | Зависит от волос, ушей и маски фона |
| Ширина скул | Ближе всего к «ширине лица», но точка мягкая и уплывает |
| Высота от брови до подбородка | Меняется с мимикой и положением челюсти |
Два приложения могут вычислить абсолютно одинаковый отрезок носа и всё равно сообщить разные «отношения ширины носа» — потому что одно делит на ширину скул, а другое на ограничивающий прямоугольник. Если в прямоугольник попали волосы, знаменатель растёт, и все отношения разом уменьшаются. Так оценка падает целиком, хотя на лице ничего не изменилось.
Полезная проверка: если числа двигаются от смены причёски, но не от смены выражения лица, знаменатель — скорее всего ограничивающий прямоугольник.
3. Обучающие данные не нейтральны
Модели ключевых точек учатся на размеченных фотографиях, и эти фотографии определяют, на каких лицах модель точна. В опубликованных заметках Google о Face Mesh указан обучающий набор примерно из 30 тысяч изображений. Как бы он ни был устроен, ни один набор не представляет все группы населения одинаково, а известные слабые места в этой области устойчивы: крайние повороты головы, слабый свет, перекрытие очками, бородой или волосами, а также оттенки кожи, которые реже встречаются в разметке.
На практике это ошибка, которую вы не видите. Сдвиг на два-три пикселя в углу челюсти незаметен в превью, но это реальное изменение отношения, а отношение потом отображается на шкалу 0–100 с крутым наклоном. Маленькая ошибка на входе — заметная разница на выходе.
По той же причине одно и то же лицо получает разные оценки при другом свете в том же приложении. Это не настроение, это двигается уверенность детектора.
4. Кое-что происходит до запуска модели
Почти каждый телефон обрабатывает кадр до того, как его получит приложение: сглаживание кожи, тональная компрессия, иногда изменение формы лица. Отсюда два следствия.
Во-первых, сглаживание стирает текстурные градиенты, по которым модель ищет границы: линию губ, складку века, боковые поверхности носа. Точки начинают уплывать.
Во-вторых, изменение формы меняет саму геометрию. Модель затем измеряет изменённое лицо — и измеряет точно. Она делает свою работу правильно, просто на неправильном входе.
Приложение, читающее сырой буфер камеры, и приложение, читающее уже обработанное превью, разойдутся даже при одинаковых алгоритмах.
5. Последний шаг — это проект, а не измерение
Даже при одинаковых точках и одинаковом знаменателе число всё равно будет разным, потому что превращение отношения в оценку — проектное решение. Обычная схема: взять отношение r, зажать между минимумом и максимумом и линейно отобразить на 0–100. Сдвиньте границы — сдвинутся все оценки.
Семьдесят баллов в одном приложении могут означать «середина диапазона, чуть выше среднего». Семьдесят в другом — девяностый процентиль собственной выборки. Ни одна из границ не откалибрована по внешнему эталону: их выбирают так, чтобы распределение выглядело правдоподобно на нескольких сотнях тестовых фото.
Поэтому абсолютные числа не переносятся между приложениями. Порядок — переносится чуть лучше, и только среди похожих лиц.
Сравнение, которое действительно можно провести
Приём в том, чтобы убрать себя из уравнения. Напечатанная фотография — физическая константа: одна и та же геометрия и один и тот же свет каждый раз.
- Напечатайте чёткий портрет в анфас на матовой бумаге высотой около 15 см.
- Приклейте на стену на уровне глаз. Осветите спереди одной лампой, штору задерните.
- Просканируйте отпечаток каждым инструментом дважды с перерывом в десять минут. Запишите оба числа.
- Повторите с живым селфи: 60 см, объектив на уровне глаз, без фильтра.
- Соберите таблицу: инструмент, оценка отпечатка, оценка селфи, разница.
Как её читать:
- Отпечаток стабилен, селфи скачет — инструмент чувствителен ко входу, а не к лицу. Разброс идёт от света и позы.
- Оценка отпечатка сильно расходится с оценкой селфи у того же инструмента — идёт тяжёлая предобработка. У отпечатка нет текстуры кожи, которую можно сгладить, поэтому входы не эквивалентны.
- Два инструмента одинаково упорядочивают пять напечатанных лиц — они измеряют похожие вещи в разных шкалах.
- Порядок переворачивается — они измеряют разное, а ярлыки просто держат конструкцию вместе.
Сравнение порядка на пяти лицах — единственное межплатформенное сравнение, которое переживает разные шкалы. Абсолютные числа не переносятся, порядок — иногда да.
Если разброс идёт с вашей стороны, а не со стороны инструмента, сначала наведите порядок во входе: гайд по углам для селфи разбирает дистанцию, высоту объектива и свет, а анализатор формы лица удобен для проверки — прогоните одно и то же фото дважды.
Что делать с полученной оценкой
Ничто из этого не делает тесты скучнее. Это делает их читаемыми. Когда два приложения расходятся во мнении о вашем лице, это расхождение — факт о приложениях: об их точках, знаменателях, обучающем наборе и шкале. Это не факт о вас. Полезно знать до того, как относиться к скриншоту серьёзно.
Частые вопросы
Почему два приложения дают разные оценки за одно и то же фото?
Разные схемы точек, разные знаменатели для одного и того же отношения, разные обучающие данные и разные границы итоговой шкалы. Любого одного из этого хватает, чтобы сдвинуть оценку на десять баллов.
Более высокая оценка — более точная?
Нет. Эталона, к которому можно попасть, не существует. Высокая оценка обычно означает, что шкала закреплена ниже, или что формула поощряет черту, которая у вас есть.
Какое количество точек самое точное?
Единого ответа нет, всё зависит от задачи. 68 точек хорошо изучены и дёшевы; 468 или 478 дают плотное покрытие и подходят для анализа формы. Точность идёт от обучающего набора и от совпадения с вашими условиями, а не от числа точек.
Попробуйте бесплатные тесты по лицу
15 тестов только для развлечения. Загрузите одно селфи, получите балл и отнеситесь к нему ровно так серьёзно, как он заслуживает.
Открыть тесты