HyperDreamBooth
Вышла новая статья от Google, в которой предлагается усовершенствованный подход создания персонализированной Stable Diffusion. Авторы пытаются решить проблему предыдущих подходов — большой размер хранимых весов и долгое дообучение на конкретных фотографиях. Побороть эти проблемы предлагается тремя подходами: LiDB (Lightweight DreamBooth), HyperNetwork, Relaxed Fine-tuning.
Lightweight DreamBooth (LiDB)
Это модификация существующего подхода Low-Rank Adaptation: раскладываем веса слоёв внимания не на две матрицы A и B, а на четыре — две необучаемые полуортогональные и две обучаемые (r = 1) . За счёт низкой размерности обучаемых частей получается сократить размер хранимых весов до ~130Kb, при этом итоговое качество изображений не страдает.
HyperNetwork
Обучаемые веса из LiDB — это выходы гиперсети, задача которой предсказать наиболее оптимальные начальные параметры для генерации конкретного человека. На вход сети поступает изображение целевого человека, при этом на вход Text Encoder — заготовленная фраза вида a [V] face. На выходе получаем набор векторов, которые уже и подставляем на место обучаемых весов LiDB. Гиперсеть предварительно обучается на большом датасете (для людей можно взять CelebAHQ) и дальше используется только в режиме предсказания (занимает ~2 секунды).
Relaxed Fine-tuning
Схема из двух предыдущих подходов даёт неплохие генерации, но они захватывают недостаточное количество деталей целевого человека. Поэтому предлагается использовать выход гиперсети как стартовые значения для матриц внимания, с последующим их дообучением через LoRA разложение (r > 1).
Достаточно 40 итераций (~20-30 секунд) дообучения для получения качественных результатов. Это в разы быстрее всех предыдущих методов персонализации.
Post #20
724
- 🔥 10