Как мы меняем Anti-spoofing модель с вендорских решений на собственные

Привет! Меня зовут Ренат Алимбеков, я занимаюсь задачами, связанными с Computer Vision в Beeline Казахстан. Сейчас моя работа направлена на Anti-spoofing. 

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

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

Основы и термины

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

Видов атак на сервисы довольно много. Это могут быть:

  • распечатанное фото человека;

  • фото документа;

  • видео человека; 

  • резиновая маска человеческого лица; 

  • распечатанная фотография с прорезями для глаз и рта;

  • реконструкции лица и дипфейки.

В последнее время системы биометрии атакуют с помощью 3D-реконструкции лица: загружаешь 2D-фотографию и получаешь реалистичную 3D-реконструкцию лица. У реконструкции будет мимика вокруг рта и глаз, она может моргать.  

В интернете много сайтов, которые делают подобное, например, 3dthis.

Пример 3D-реконструкции лица
Пример 3D-реконструкции лица

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

Дипфейк Тома Круза очень популярен в ТикТоке
Дипфейк Тома Круза очень популярен в ТикТоке

Presentation attack — попытки заставить систему неверно идентифицировать пользователя или дать ему возможность избежать идентификации, с помощью демонстрации картинки, записанного видео и так далее.

Normal (Bona Fide) соответствует обычному алгоритму работы системы, то есть всему, что НЕ является атакой.

Отсюда следуют три самые распространенные простые метрики: 

  • Attack Presentation Classification Error Rate (APCER).

  • Bona Fide Presentation Classification Error Rate (BPCER).

  • Average Classification Error Rate (ACER).

Метрики и датасеты

Чтобы выбрать метрики для оптимизации, нужно понимать, какая перед нами стоит бизнес-задача. 

Например, если биометрия используется в «зонах особого внимания», то здесь APCER должен быть близок к нулю. То есть главная задача — не допустить проникновения злоумышленников. 

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

Именно поэтому в продуктах izi и Simply мы выбрали метрику ACER как основную, чтобы найти баланс между отражением атак и ошибкой пропуска реальных клиентов.   

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

Сравнение всех основных датасетов по face anti-spoofing
Сравнение всех основных датасетов по face anti-spoofing

Самый крупный датасет по Anti-spoofing сейчас — это CelebA-Spoof: Large-Scale Face Anti-Spoofing Dataset with Rich Annotations. Мы используем его и собственный валидационный датасет, собранный из наших систем верификации.

Наше Anti-spoofing решение

Схема архитектуры
Схема архитектуры

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

Дальше запускаем модель face-детектор для нахождения лица и обрезки. Кропнутое лицо передается в liveness-модель, которая принимает решение: атака или нет.

Однако, при построении Anti-spoofing модели мы столкнулись с рядом проблем. 

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

Также на задачу генерализации влияет domain shift problem. Допустим, есть данные с телефонов клиентов, но мы хотим использовать эту модель в банкоматах или симкоматах, где другое освещение и камера. Модель, обученная на данных мобильных устройствах, будет вести себя гораздо хуже на данных с банкомата или симкомата.

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

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

Схема архитектуры с двойным входом
Схема архитектуры с двойным входом

После этого мы перешли к решению проблемы быстрого переобучения и генерализации с помощью dropout и аугментаций.

Dropout – техника, которая выкидывает с некой вероятностью нейроны. Для аугментаций сначала мы использовали cutout, то есть вырезали прямоугольник. В какой-то момент у нас не получилось улучшить результат модели и мы перешли к использованию gridmask. Теперь вырезаем сетку прямоугольников из изображения, предотвращая переобучение.

Gridmask
Gridmask

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

Аугментации по областям лица
Аугментации по областям лица

И финальный вид модели, обученной с такими аугментациями, выглядит так: 

Схема модели
Схема модели

Результаты

Мы с командой оценили полученные результаты на валидационных датасетах как весьма неплохие. При этом модель verilive лучше генерализуется на разных датасетах. Поэтому сейчас мы хотим протестировать эту Anti-spoofing модель на части клиентов приложения. И если тестирование пройдет успешно, начнем разворачивать модель на остальных клиентов и продукты. 

Сравнительная таблица метрик по моделям и датасетам

Параметры

Метрики

Модель

ACER

APCER

BPCER

ROC AUC

Датасет celebA

verilive

8.2%

9.5%

6.9%

97.3

celebA

2.7% 

5.2%

0.3%

99.9

Собственный валидационный датасет

verilive

3%

2.6%

3.3%

99.3

celebA

24.4%

4.8%

43.9%

88.2

Нерешенные проблемы

Перед нами стоит еще ряд вызовов и остались проблемы, которые находятся в процессе решения. Например: 

  • высокий уровень отказов с некоторых типов камер с ноутбуков или устаревших смартфонов;

  • плохое освещение, которое влияет на уровень отказов;

  • размер модели — больше ста мегабайт. 

Хочется в будущем получить компактную быструю модель и при этом работающую без потери качества. Если у вас есть какие-то наработки или полезные статьи, поделитесь, пожалуйста, в комментариях — это нам поможет.

Читайте так же: