PixelSmile: открытая модель для редактирования эмоций на изображениях с плавным контролем интенсивности эмоций

PixelSmile

Исследователи из Fudan University и StepFun опубликовали PixelSmile — диффузионную модель для точного редактирования мимики на портретах и аниме-изображениях. Вместо обучения на дискретных метках, например, «страх/не страх», модель использует непрерывные числовые оценки интенсивности эмоций и симметричное контрастное обучение (symmetric contrastive learning), благодаря которому модель различает похожие эмоции в обе стороны: если страх отличается от удивления, то и удивление должно отличаться от страха. PixelSmile не просто добавляет эмоцию, но и плавно управляет степенью её выраженности. Проект полностью открытый: код опубликован на GitHub, веса на Hugging Face под лицензией Apache 2.0, попробовать модель можно в онлайн-демо.

Проблемы существующих подходов

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

Это называется семантическим перекрытием или запутанностью признаков. По сути, в пространстве признаков соседние эмоции лежат слишком близко и не разделены чёткой границей. Авторы подтвердили это экспериментально: люди-аннотаторы, классификаторы и генеративные модели систематически путают одни и те же пары эмоций. При этом нейросеть-классификатор ставит фотографии удивлённого человека оценку страха 0.95, то есть с уверенностью принимает удивлённого человека за испуганного.

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

Датасет FFE

Первый шаг к улучшению существующих методов, предложенный исследователями — заменить дискретные метки на числовые векторы. Для этого авторы создали датасет FFE (Flex Facial Expression), который содержит 60 000 изображений в двух доменах: реальные портреты и аниме-персонажи. Каждому изображению вместо одной метки присвоен 12-мерный вектор оценок интенсивности эмоций — по одному числу от 0 до 1 на каждую из 12 эмоций. Например, фотография может получить «радость» 0.85, «уверенность» 0.55 и близко к нулю по всем остальным категориям.

Построение датасета шло в четыре этапа: сбор базовых идентичностей (около 6 000 реальных портретов и 6 000 аниме-персонажей из 207 аниме-произведений), составление библиотеки текстовых промптов для 12 эмоций, генерация изображений с разными интенсивностями с помощью редактирующей модели Nano Banana Pro, и наконец — автоматическая разметка с помощью Gemini 3 Pro с частичной проверкой людьми-аннотаторами. Это позволило получить непрерывные мягкие метки (continuous soft labels), которые честно отражают семантическое перекрытие между эмоциями, а не скрывают его.

Помимо датасета, авторы создали бенчмарк FFE-Bench с четырьмя метриками:

  • mSCR (Mean Structural Confusion Rate, средний уровень семантической спутанности) — чем ниже, тем лучше модель разделяет похожие эмоции;
  • HES (Harmonic Editing Score, гармонический балл редактирования) — оценка, которая штрафует модель, если та хорошо меняет выражение, но портит внешность человека, или наоборот — хорошо сохраняет лицо, но почти не меняет эмоцию. Высокий балл только при одновременно хорошем результате по обоим критериям.;
  • CLS (Control Linearity Score, оценка линейности управления) — корреляция Пирсона между заданным коэффициентом интенсивности α и реально предсказанной интенсивностью: чем выше, тем более предсказуемо ведёт себя модель;
  • Acc — доля изображений, где предсказанная доминантная эмоция совпала с целевой.

FFE-Bench содержит 198 задач для оценки (98 реальных портретов и 100 аниме), доступен на Hugging Face. Код для запуска оценки будет опубликован в репозитории на GitHub.

Как работает PixelSmile

PixelSmile построена на Qwen-Image-Edit-2511 — открытой диффузионной модели от Alibaba для редактирования изображений по текстовым инструкциям. На вход подаётся одно RGB-изображение с лицом и текстовый промпт с целевой эмоцией. На выход — отредактированное изображение того же разрешения. Референсные изображения не нужны — всё управление через коэффициент интенсивности α.

Архитектура строится поверх предобученного Multi-Modal Diffusion Transformer (MMDiT) с LoRA. Ключевая идея — в том, как именно PixelSmile управляет интенсивностью эмоции во время инференса и как обучается на семантически близких эмоциях.

Интерполяция в текстовом латентном пространстве. Во время инференса не нужны референсные изображения. Берётся нейтральный текстовый промпт и промпт с целевой эмоцией, оба прогоняются через энкодер — получаются два эмбеддинга. Дальше строится линейная интерполяция между ними с коэффициентом α от 0 до 1: при α=0 получаем нейтральное лицо, при α=1 — максимальную интенсивность. При α > 1 можно получить ещё более выраженную эмоцию, и авторы показывают, что это работает без потери структурной согласованности.

pixelsmile 3
Слева — инференс: интерполяция между нейтральным и целевым эмбеддингом с коэффициентом α. Справа — обучение: симметричная пара семантически близких эмоций и три компонента функции потерь — flow matching loss, contrastive loss, identity loss.

Полностью симметричное совместное обучение. Это главное техническое нововведение. Обычно контрастивное обучение (contrastive learning) несимметрично: берём пример A как «якорь», B — как позитивный пример, C — как негативный. Но если делать так только в одну сторону для пары «страх/удивление», модель будет по-разному обрабатывать эти эмоции. Авторы применяют обучение сразу в обе стороны: в одном прогоне страх — позитивный, удивление — негативный; в следующем — наоборот. Это убирает направленную асимметрию и заставляет модель одинаково чётко разделять обе эмоции.

Полная функция потерь состоит из трёх компонент: flow-matching loss (согласует визуальную интенсивность с коэффициентом α из непрерывных аннотаций), симметричный контрастивный loss (разводит семантически близкие эмоции в пространстве признаков CLIP-энкодера), и identity loss на основе ArcFace (не даёт модели «сползти» к другой внешности при сильном редактировании).

Что показали эксперименты

Все количественные результаты получены на FFE-Bench. Авторы сравнивали PixelSmile с двумя группами бейзлайнов. Первая группа — универсальные ИИ-редакторы: Nano Banana Pro, GPT-Image-1.5, Seedream-4.5 (закрытые) и Qwen-Image-Edit, FLUX-Klein, LongCat (открытые). Вторая группа — методы для линейного контроля атрибутов: K-Slider, SliderEdit, ConceptSlider, AttributeControl.

По точности редактирования шести базовых эмоций PixelSmile набирает 0.8627 — лучший результат среди всех моделей, выше Nano Banana Pro (0.8431) и GPT-Image (0.8039). Но самый показательный результат — по метрике семантической спутанности mSCR: PixelSmile достигает 0.0550, тогда как GPT-Image — 0.1107, Nano Banana Pro — 0.1754, а большинство других моделей превышают 0.2000. Значение mSCR, близкое к 0.5, означает, что модель фактически сводит семантически близкие эмоции к одной эмоции — то есть вообще не различает их.

table 1

pixelsmile 5
Качественное сравнение с универсальными редакторами. Многие модели либо слабо меняют выражение, либо искажают внешность. PixelSmile чётко меняет выражение и сохраняет идентичность.

По сравнению с методами линейного контроля PixelSmile набирает CLS-6 = 0.8078 и HES = 0.4723 — снова лучший результат. Важный нюанс про конкурентов: K-Slider имеет отрицательный CLS, то есть интенсивность не растёт, а хаотично меняется при увеличении α. SliderEdit резко теряет сходство с оригиналом (ID similarity падает до ~0.4), когда эмоция достигает средней интенсивности. PixelSmile, напротив, удерживает ID similarity в диапазоне 0.6–0.7 при expression score до ~0.8 — что соответствует реалистичному диапазону, описанному в литературе.

table 2

pixelsmile 6
Сравнение пяти методов линейного контроля на эмоции удивления. Каждый метод показан в 6 шагах интенсивности слева направо. PixelSmile даёт монотонный плавный рост без потери идентичности.

Смешивание эмоций как побочный эффект

Поскольку модель обучена управлять интенсивностью каждой из 12 эмоций по отдельности, её можно попросить одновременно двигаться в сторону двух разных эмоций — и посмотреть, что получится. Авторы перебрали все 15 попарных комбинаций шести базовых эмоций. В 9 случаях из 15 результат выглядел осмысленно — например, «счастье + удивление» даёт что-то вроде восторженной радости, а «грусть + отвращение» — брезгливое уныние. Оставшиеся 6 комбинаций либо схлопывались в одну из эмоций (страх + удивление слишком похожи, чтобы смешаться), либо давали физически невозможное выражение лица — например, злость и счастье одновременно. Это говорит о том, что модель не просто выучила шаблоны «как выглядит злость», а действительно поняла, как эмоции соотносятся друг с другом в пространстве человеческой мимики.

Пользовательское исследование

В пользовательском исследовании 10 обученных аннотаторов оценивали три метода: PixelSmile, K-Slider и SliderEdit. Оценивалось два критерия — непрерывность изменений и сохранность личности, по шкале от 1 до 5. PixelSmile получил (4.48, 3.80) — наилучший баланс. K-Slider — (1.36, 4.06): личность сохраняет хорошо, но изменения почти не заметны. SliderEdit — (3.16, 1.14): эмоции меняет, но личность сильно искажает. Это совпадает с автоматическими метриками и подтверждает, что HES как метрика работает корректно.

Как запустить

PixelSmile строится поверх Qwen-Image-Edit-2511 — открытой диффузионной модели от Alibaba для редактирования изображений по текстовым инструкциям. Это мультимодальный диффузионный трансформер (MMDiT), который принимает исходное изображение и текстовый промпт и возвращает отредактированное изображение. В версии 2511 улучшена консистентность персонажей, снижен image drift и добавлена встроенная поддержка LoRA. Модель выпущена под лицензией Apache 2.0 и загружается отдельно с Hugging Face. Поверх неё накладывается LoRA-адаптер PixelSmile — файл PixelSmile-preview.safetensors весом ~4 МБ, который и отвечает за управляемое редактирование мимики.

На вход подаётся одно RGB-изображение с лицом и текстовый промпт с целевой эмоцией. На выход — одно или несколько изображений (по числу заданных значений α) того же разрешения с изменённым выражением лица. Референсные изображения не нужны.

Установка (Python 3.10, conda):

git clone https://github.com/Ammmob/PixelSmile.git
cd PixelSmile
conda create -n pixelsmile python=3.10
conda activate pixelsmile
pip install -r requirements.txt
bash scripts/patch_qwen_diffusers.sh

Последняя команда — обязательный патч для исправления бага в текущей версии библиотеки diffusers при работе с Qwen-Image-Edit. Без него инференс не запустится.

Поддерживается два способа запуска. Первый — с дефолтными аргументами, которые можно отредактировать прямо в скрипте:

bash scripts/run_infer.sh

Второй — с явными аргументами из командной строки:

bash scripts/run_infer.sh 
  --image-path /path/to/input.jpg 
  --output-dir /path/to/output 
  --model-path /path/to/Qwen-Image-Edit-2511 
  --lora-path /path/to/PixelSmile.safetensors 
  --expression happy 
  --scales 0 0.5 1.0 1.5 
  --seed 42

Параметр --scales задаёт значения коэффициента α — модель сгенерирует одно изображение для каждого значения. При α=0 лицо остаётся нейтральным, при α=1 — полное выражение, при α=1.5 эмоция усиливается сверх тренировочного диапазона. По умолчанию используется 50 шагов инференса (inference steps) — это видно в онлайн-демо. Поддерживаются все 12 выражений: happy, sad, angry, surprised, fear, disgust, anxious, contempt, confident, shy, sleepy, confused.

На момент публикации доступна preview-версия весов только для реального домена (human). Поддержка аниме и более стабильная версия анонсированы. Для обучения дополнительно нужен pip install -r requirements-train.txt и вспомогательные веса, полный список которых авторы обещают опубликовать отдельно. Обучение проводилось на 4 × NVIDIA H200.

Итог

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


neurohive telegram
Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии