Stable Flow - метод редактирования изображений без предварительного обучения на основе flow-based моделей (FLUX).
Метод основывается на идее определения "жизненно важных слоев" в DiT, которые критически важны для формирования изображения. Эти слои определяются перебором слоев путем измерения отклонений в содержании изображения.
Редактирование изображения выполняется путем параллельной генерации, где признаки из траектории генерации исходного изображения инжектируются в траекторию редактируемого изображения. Такая стратегия раньше применялась в моделях на архитектуре UNet, теперь адаптирована для DiT.
Инъекция происходит только в vital layers, что дает стабильность редактирования, сохраняя нередактируемые области нетронутыми. Это дает возможность выполнять различные типы редактирования: нежесткие деформации, добавление объектов, замену объектов и изменение сцены, используя один и тот же механизм.
Для инпейнта реальных изображений применяется инверсия, выполняемая с помощью солвера Euler Ordinary Differential Equation (ODE), с добавлением метода "подталкивания" вне распределения. Этот метод заключается в небольшом скалярном возмущении чистого латентного пространства, что позволяет улучшить точность реконструкции и ограничить изменения в процессе редактирования.
Пользовательское исследование подтвердило, что Stable Flow превосходит SDEdit, P2P+NTI, Instruct-P2P, MagicBrush, MasaCTRL по 4 категориям: соответствие текстовому запросу, сохранение исходного изображения, реалистичность и общее качество редактирования.
⚠️ Для запуска кода Satble Flow необходим токен HuggingFace
⚠️ Проект поддерживает возможность CPU offload, он включается ключом
--cpu_offload
при инференсе.# Clone repo
git clone https://github.com/snap-research/stable-flow.git
cd stable-flow
# Create conda env
conda env create -f environment.yml
conda activate stable-flow
# Batch image inference
python run_stable_flow.py \
--hf_token YOUR_PERSONAL_HUGGINGFACE_TOKEN \
--prompts "A photo of a dog in standing the street" \
"A photo of a dog sitting in the street" \
"A photo of a dog in standing and wearing a straw hat the street" \
"A photo of a mink"
# Image editing inference
python run_stable_flow.py \
--hf_token YOUR_PERSONAL_HUGGINGFACE_TOKEN \
--input_img_path inputs/bottle.jpg \
--prompts "A photo of a bottle" \
"A photo of a bottle next to an apple"
@ai_machinelearning_big_data
#AI #ML #StableFlow