Назад
89

Face Image Quality Assessment

89

Введение

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

Как определить, что фото качественное? Для обычных фото нам достаточно BRISQUE или другого статистического метода. Но в случае с различными специфическими доменами общие варианты могут не сработать. Далее мы рассмотрим задачу Image Quality Assessment для человеческих лиц.

Зачем определять качество фото лиц?

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

Рисунок 1. Плохое для аналитики фото — не видно лица, кадр размыт
Рисунок 2. А вот это нам подходит — лицо полностью в кадре, фото четкое

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

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

Какое фото можно назвать некачественным?

На этот вопрос есть много возможных ответов, но все они разделяются на две категории.

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

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

С помощью этих критериев можно получать как бинарную оценку (всем ли признакам соответствует фото), так и скор между нулем и единицей (за маску -0.15, за очки -0.10, за темное фото -0.08 и так далее). Но все-таки не все признаки, важные для распознавания, можно продумать заранее. И не все придуманные человеком признаки будут хорошо коррелировать с шансом верного распознавания лица по фото.

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

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

Как оценить модель определения качества фото?

Рассмотрим ситуацию: мы неким магическим образом обучили две модели определения качества фото лица. Как их теперь сравнить?

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

  • False Match — модель ложно считает двух разных людей за одного;
  • False Non-Match — модель ложно считает одного человека за двух разных.

Посчитаем False Non-Match Rate (FNMR) — долю отклоненных пар фото с одинаковой персоной среди всех пар с одинаковой персоной, то есть \( FNMR = \frac{FNM}{realy\ matched} \). FMR вводится аналогично: это доля принятых за одну персону пар фото с разными персонами среди всех пар фото с разными персонами, то есть \( FMR = \frac{FM}{not\ matched} \).

Рисунок 5. Связь между FMR и FNMR. Чем сильнее порог t, при котором мы считаем пару фото одного человека, тем больше фото мы отсекаем. Чем больше фото мы отсекаем, тем ниже False Match Rate и выше False Non-Match Rate. EER — точка, равная такому t, что FMR(t) = FNMR(t)

Мы можем зафиксировать любую из метрик на каком-то допустимом пороге ошибок по другой метрике, тогда мы будем смотреть только на “свободную” метрику. Например, зафиксируем FMR и будем сравнивать модели по FNMR при FMR = 0.01. Это записывается как FNMR@FMR=0.01.

А теперь вернемся к качеству фото. Посчитаем для всех фото FNMR@FMR=0.01, получим единственное число, соответствующее качеству работы модели без фильтрации.

Для каждого фото лица нужно получить скор качества, как при классификации. В примере ниже считаем 1 скором для идеального фото.

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

Будем выкидывать фото с наименьшим скором из выборки и считать FNMR@FMR=0.01 заново. Когда фото в выборке закончатся, FNMR будет равен нулю, так как False Non-Match больше нет, ведь нам нечего сравнивать.

Рисунок 7. FNMR больше → результат хуже. Мелкий пунктир — классические метрики, о них в следующем разделе. Пунктир крупнее и сплошные линии — нейросети с supervised и unsupervised обучением соответственно

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

Почему нельзя считать стандартные метрики для Image Quality Assessment?

Действительно, есть же популярные метрики для No-Reference Image Quality Assessment, определяющие оценку искажения изображения. Почему бы не использовать их?

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

Рисунок 8. BRISQUE=38.58
Рисунок 9. BRISQUE=41.49
Рисунок 10. BRISQUE=38.00
Рисунок 11. BRISQUE=2.15

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

При этом, сравнение рисунка 10 и рисунка 11 показывает влияние размытия на фоне на изменение оценки. Конечно, при распознавании лицо вырезается, и никакого фона не видно, но это еще раз подчеркивает, что метрика не оценивает, насколько хорошо модель распознавания срабатывает на таком фото.

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

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

Итоги

Итак, мы узнали:

  • что такое Face Image Quality Assessment и зачем он нужен;
  • какие критерии некачественного фото — вручную подобранные правила, результаты работы модели распознавания лиц;
  • как оценить работу модели на качество фото лица, используя метрики из биометрии: False Match Rate и False Non-Match Rate;
  • почему не подходят классические методы поиска шумных изображений.

И уже в следующем посте мы рассмотрим два подхода для решения этой задачи.

Телеграм-канал

DeepSchool

Короткие посты по теории ML/DL, полезные
библиотеки и фреймворки, вопросы с собеседований
и советы, которые помогут в работе

Открыть Телеграм

Увидели ошибку?

Напишите нам в Telegram!