- BrainTools - https://www.braintools.ru -

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 1

Мы – Вадим Чернышев и Михаил Никитин из команды Tevian.  Ранее наши коллеги говорили о метриках в задаче трекинга объектов. Сегодня наша очередь: в рамках задачи Face Antispoofing, мы разберем, почему модель, обученная на разнообразном и крупном датасете, иногда работает хуже, чем сеть, обученная на небольшой, но сбалансированной выборке. И покажем, как один «хороший и легкий», но бездумно добавленный домен может убить обобщающую способность вашей нейросети, и что с этим можно сделать.

Постановка задачи Face Anti-spoofing

Задача Face Anti-spoofing неизбежно возникает при построении системы распознавания лиц, как один из ключевых ее этапов. На данном этапе производится проверка того, находится перед камерой живой человек («live») или подделка(«fake»). Подделки могут быть самыми разными — от распечатанных фотографий и видео на экране другого устройства до сложных 3D-масок и силиконовых голов. В этой статье мы говорим именно о таких «рукотворных» атаках, без участия дипфейков и генеративных методов. Задача кажется тривиальной, пока не столкнёшься с тем, насколько сильно признаки «живости» зависят от камеры, освещения и качества картинки.

Дисклеймер: Сегодня мы не про архитектуры, а про «диету» для нашей модели. Ваша модель — это то, что она ест (your model is what it eats).

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

Введение: Парадокс «мультидоменности»

Знакомая ситуация: вы собрали огромный датасет из двух десятков источников, старательно добавили всевозможные типы атак — от простых распечаток до продвинутых 3D-масок и ретрансляций. И теперь ожидаете, что ваша модель станет умнее. С приходом больших трансформеров мы привыкли считать, что нейросети стали прожорливыми: чем больше данных, тем лучше модель. Во многих сферах так и работает. К примеру, в банальной классификации животных сложно придумать домен, от добавления данных из которого мы перестанем отличать кота от крокодила. Будь то ночная ик-съемка или фото через решетки в зоопарке, трансформер это переварит. На примере многих задач машинного обучения [1] может сложиться впечатление [2], что архитектура трансформера буквально создана для переваривания хаоса и нахождения в нем инвариантных признаков (у крокодила – его чешуя, зубы, форма и так далее).

Однако в задаче Face Antispoofing картина оказывается принципиально иной. Цель модели — обнаружить не объект, а мельчайшие признаки поддельности: паттерны в микротекстурах, следы печати и тому подобное. Их проявление напрямую зависит от условий съемки: камеры, на которую снято лицо, устройства атаки (принтер, экран), освещенности и расположения источника света и так далее. Из-за этой зависимости одни и те же признаки атаки на разных данных могут выглядеть совершенно по-разному, а некоторые артефакты могут встречаться даже на живом лице (например, из-за особенностей или дефектов камеры). Поэтому данные в задаче Face Antispoofing не просто разные, они зачастую вступают в конфликт [3].

Представьте, что вы учите модель отличать реальное лицо от фотографии. В одном домене (например, данные с обычной веб-камеры) модель обнаруживает полезный признак A – скажем, определенный паттерн бликов и микроконтрастов на коже, возникающий при естественном освещении. Это становится для нее надежным маркером класса «live».

Затем вы добавляете новый домен – студийные снимки живых людей с равномерной подсветкой со всех сторон. Логика [4] подсказывает: эти данные «лёгкие» и должны помочь — ведь здесь отчетливо видно отсутствие признаков подмены. Но происходит обратное: в этих идеальных условиях полезный признак A исчезает. Более того, ровная, плоская текстура кожи в студийных условиях может статистически напоминать поверхность 3D-маски или фото-распечатки.

Если такие конфликтующие домены смешать уже на ранних этапах обучения, модель получает противоречивый сигнал: в одних данных признак A указывает на живое лицо, в других — он отсутствует у живых лиц, но присутствует у подделок. Вместо того чтобы найти дополнительные новые полезные признаки и рассматривать их в комплексе с признаком А, модель может изначально не зацепиться за признак A он ненадежен, опора на него никак не снижает loss. В результате ее внутренние «ориентиры» размываются с самого начала, и она не учится корректно отделять сложные случаи, для которых целый комплекс тонких признаков (включая А) решает исход классификации.

Валидационный loss на смеси из базового набора доменов + конфликтующего нового домена (описан в абзаце ниже)

Валидационный loss на смеси из базового набора доменов + конфликтующего нового домена (описан в абзаце ниже)

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

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

В идеальном мире работает простое правило: больше данных = лучше модель. В реальном мире данные — это не однородная масса, а совокупность «доменов» со своими статистическими особенностями. Слепое смешивание доменов без понимания их природы приводит к феномену negative transfer (негативного переноса), когда модель не становится универсальной, а усредняет свои знания до уровня «ниже среднего».

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 3

Михаил Никитин

Руководитель направления Face Recognition

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

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 4

Вадим Чернышев

Руководитель направления Face Antispoofing

Какие же домены могут привести к ухудшению качества?

Как мы уже подчеркнули, «Токсичный» домен в данном случае — это не обязательно плохие, ошибочные, или нерелевантные в целевой задаче данные. Это данные, распределение которых не просто отличается, но сильно конфликтует с остальными сценариями использования нашей модели. Добавим еще примеров и их разбор

Пример №1: Добавление данных, вынуждающих забыть хороший признак

Проблема: Добавляем в самое начало обучения супер реалистичные силиконовые маски или идеальные ретрансляции с 4K-экранов без видимых границ экрана. Модель учится ориентироваться на сверхчеткие, но редкие в реальности артефакты (редкие плоские блики, какие-то текстуры). В результате она «переключает» внимание [5] с общих признаков живости на эти специфичные и начинает «сыпаться» на обычных реальных лицах с простых веб-камер ноутбуков или СКУД’ов, где наличие или отсутствие такого рода артефактов скрыто за качеством снимка.

Чтобы понять, почему так происходит, давайте заглянем «под капот» процесса обучения. Нейросеть — это не библиотека знаний, а скорее набор сложных “привычек”, закодированных в весах.

Когда вы показываете модели новый домен, она не «добавляет» его в память [6], а перестраивает свои веса, чтобы учесть и старые, и новые данные. Сильный сигнал от нового, конфликтующего домена может буквально «стереть» полезные паттерны, выученные на старых данных. Это явление известно как catastrophic interference (катастрофическая интерференция). Это будет проблемой как при дообучении сети, так и при обучении с нуля.

Мы не можем позволить себе просто «залить» все данные в обучение. Когда ваша модель уже имеет достаточно высокое качество работы, вы становитесь особенно чувствительны к дисбалансу добавляемых доменов. Без стратегического подхода вы рискуете получить лишь сеть, которая знакома с чуть большим количеством доменов, но разбирается в них хуже предыдущей

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 5

Михаил Никитин

Руководитель направления Face Recognition

Пример №2: Добавление данных, дающих яркий ложный признак

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 6

Добавляем в тренировочный набор большой массив «живых» лиц низкого качества — с сильным шумом, блюром, низким разрешением. Источников таких данных множество, и искушение использовать их велико. Модель закономерно начинает ассоциировать характерные артефакты плохого качества с классом «live». В результате, качественную атаку (например, детализированную распечатку) модель может классифицировать как «spoof» — просто потому, что изображение слишком «чистое» и не соответствует зашумленному паттерну, который она выучила для живых лиц.

Самое коварное здесь — скрытность проблемы. На первых порах может показаться, что метрики растут: модель лучше отделяет «реалы» от атак. Но является ли это следствием того, что сеть стала «умнее», или она просто научилась ложной корреляции, работающей на нашем тестовом распределении (рост четкости увеличивает вероятность класса «spoof»)?

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

Вывод: Модель легко приобретает ложную корреляцию «низкое качество = живой человек», что ухудшает ее разделяющую способность (как минимум — рост отказов реальным пользователям с хорошими камерами, как максимум — путаница мыльных подделок с реальными лицами).

Ключевой принцип при добавлении нового домена — аналитически оценить, чем реальные лица и подделки отличаются друг от друга и от уже имеющихся данных. Если вы добавляете множество подделок на фоне океана — обеспечьте симметрию [7]: соизмеримое количество реальных лиц на том же фоне. Ваша задача — данными сразу дать алгоритму понять: «Океан на заднем плане — не признак, смотри на лица». В противном случае модель скорее всего найдет самый простой, но неправильный способ провести границу между классами, и узнаете вы об этом уже после релиза.

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 7

Вадим Чернышев

Руководитель направления Face Antispoofing

Как же заставить данные работать на нас, а не против? Вот практические стратегии, которые мы используем в Tevian

а схеме показан наш подход к безопасному добавлению новых доменов. Подробное описание каждого этапа — далее в тексте.

а схеме показан наш подход к безопасному добавлению новых доменов. Подробное описание каждого этапа — далее в тексте.

Этап 1: Фундамент

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

Этап 2: Аккуратное внедрение нового домена

Когда появляется новый домен (например, данные с новой камеры или новый тип маски), мы проводим его подробный анализ:

  • Визуально оцениваем примеры, сложные для текущего алгоритма.

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

  • Оцениваем статистические различия с остальными доменами – степень зашумленности, разрешение, соотношение классов, цвета и т.д.

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

Этап 3: Контрольный эксперимент и многоуровневый контроль качества

Обучаем модель с нуля на объединенном наборе (старые домены + новый). После обучения мы не смотрим на усредненные метрики. Вместо этого мы проводим детальную диагностику:

  • Сравниваем качество на всех тестовых наборах — и на новых, и на старых доменах.

  • Анализируем, дал ли новый домен реальный прирост там, где мы ожидали.

  • Проверяем, не произошла ли деградация на старых, критически важных доменах.

Если прирост есть и деградации нет — отлично! Домен можно интегрировать, переходим к этапу 5, пропуская 4-ый

Этап 4: Анализ и решение проблем

Если же мы наблюдаем/предполагаем деградацию, наступает время для анализа. Мы ищем корень проблемы:

Ложный яркий признак: Новый домен содержит артефакт, который модель может использовать для простого, но неправильного разделения (например, океан на фоне реалов, специфические шумы в камере в чисто spoof-домене). Решение: собрать или сгенерировать данные, подобрать аугментации, которые «ломают» эту ложную корреляцию.

Конфликт признаков: Новый домен «ломает» полезные признаки, выученные на старых данных. Решение: Применяем методы, которые изолируют влияние доменов:

  • Приглушаем роль домена. Суть заключается в регулировании важности ошибок предсказания для объектов из различных доменов. Вместо простого суммирования лоссов со всех данных(все домены одинаково важны), мы назначаем каждому домену свой коэффициент λ(лямбда), отражающий его важность и надежность. Или на этапе формирования батчей понижаем вероятность присутствия ненадежного домена.

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

  • Применяем адаптеры (LoRA и др.) Вместо дообучения всех миллионов параметров исходной модели, мы встраиваем в её слои очень маленькие «адаптеры» — дополнительные матрицы низкого ранга. Эти матрицы обучаются под конкретный домен, в то время как веса исходной модели остаются замороженными. Преимущество: Модель изучает специфику нового домена через адаптеры, практически не затрагивая и не «забывая» исходные, общие знания, закодированные в основных весах. Для каждого проблемного домена можно обучить свой легковесный адаптер.

  • Классифицируем домены с динамическим подключением нужного адаптера в реальном времени. Это стратегия «тяжелой артиллерии», которая объединяет предыдущий подход с классификацией всех сложных (или вообще всех) доменов. Таким образом, перед использованием основной архитектуры будет отрабатывать легковесный диспетчер, который сможет определить, что за тип данных поступает на вход и какие адаптеры нужно добавить к основной модели для лучшего результата

После внедрения предполагаемого решения проблемы возвращаемся к этапу 3.

Этап 5: Валидация и интеграция

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

Этот пайплайн кажется трудоемким, но на деле, при достижении определенной высокой точности на некоторых целевых доменах, только так удается по-настоящему улучшать нейросеть без деградации качества. Мы переходим от тактики «больше данных — лучше» к стратегии «умные данные — надежнее»

Данные против модели: почему больше — не всегда значит лучше в задаче Face Antispoofing - 9

Вадим Чернышев

Руководитель направления Face Antispoofing

Выводы

Слепой сбор всех данных подряд — тупиковый путь, который плохо сочетается с задачей Face Antispoofing.

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

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

Надеемся, этот разбор был полезен. Если у вас есть свои находки в борьбе с «токсичными» доменами — будем рады обсудить в комментариях!

Автор: vadim-chern

Источник [8]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/22622

URLs in this post:

[1] обучения: http://www.braintools.ru/article/5125

[2] впечатление: http://www.braintools.ru/article/2012

[3] конфликт: http://www.braintools.ru/article/7708

[4] Логика: http://www.braintools.ru/article/7640

[5] внимание: http://www.braintools.ru/article/7595

[6] память: http://www.braintools.ru/article/4140

[7] симметрию: http://www.braintools.ru/article/3088

[8] Источник: https://habr.com/ru/companies/tevian/articles/972064/?utm_source=habrahabr&utm_medium=rss&utm_campaign=972064

www.BrainTools.ru

Rambler's Top100