CoRe: лучший способ "клонирования" внешности или концепта при помощи диффузии



Существует 3 больших направления для клонирования внешности:

1. Обучение отдельного текстового эмбеддинга (Textual Inversion)

2. Дообучение UNet (DreamBooth)

3. IP-adapters



В этой работе (не впервые) попробовали скрестить Textual Inversion и DreamBooth, но на этот раз сделали это по-умному. Оказывается, что вот этот выученный "псевдотекстовый" эмбеддинг спецтокена концепта очень странный — у него большая норма, а ещё он перетягивает всё внимание на себя (см. картинку), искажая аутпуты на соседних токенах (в энкодере). Такая особенность выученных эмбеддингов ломает не только качество генерации, но и понимание сложных промптов.



Чтобы решить эту проблему, авторы предлагают хитрую регуляризацию — косинусное "стягивание" эмбеддингов на выходе текстового энкодера между обычным промптом без спецтокена концепта и таким же промптом со спецтокеном. Дополнительно они через MSE лосс минимизируют искажение attention-масок на слоях UNet (между двумя вариантами промптов). А чтобы победить неконтролируемый рост нормы эмбеддинга концепта, они его рескейлят на каждом шаге оптимизации. Само обучение делят на две части — сначала учат эмбеддинги, а потом уже размораживают UNet.



Судя по примерам и метрикам, это намного превосходит всё, что было раньше! Код обещают скоро выложить, но идея настолько простая, что её можно и самому быстренько имплементировать.



Статья