【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
🔥 新闻
- 2025.08.28 🔥 发布了USO的演示版,现在就来体验吧!⚡️
- 2025.08.28 🔥 将fp8模式更新为主要低显存使用支持(请向下滚动)。这是送给消费级GPU用户的礼物。现在峰值显存使用量约为16GB。
- 2025.08.27 🔥 发布了USO的推理代码和模型。
- 2025.08.27 🔥 创建了USO的项目主页。
- 2025.08.27 🔥 发布了USO的技术报告。
📖 引言
现有文献通常将风格驱动与主体驱动生成视为两项独立任务:前者强调风格相似性,而后者则坚持主体一致性,导致二者形成明显对立。我们认为这两个目标可以在统一框架下实现协同,因为它们本质上都涉及"内容"与"风格"的解耦与重组——这正是风格驱动研究中经久不衰的核心命题。为此,我们提出USO框架(风格驱动与主体驱动生成的统一框架)。首先,我们构建了包含内容图像、风格图像及其对应风格化内容图像的大规模三元组数据集;其次,通过风格对齐训练和内容-风格解耦训练这两个互补目标,提出能同时实现风格特征对齐与内容风格解耦的分离式学习方案;最后,引入风格奖励学习范式以进一步提升模型表现。
⚡️ 快速开始
🔧 需求与安装
安装所需依赖
## create a virtual environment with python >= 3.10 <= 3.12, like
python -m venv uso_env
source uso_env/bin/activate
## or
conda create -n uso_env python=3.10 -y
conda activate uso_env## install torch
## recommended version:
pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu124 ## then install the requirements by you need
pip install -r requirements.txt # legacy installation command
然后下载检查点:
# 1. set up .env file
cp example.env .env# 2. set your huggingface token in .env (open the file and change this value to your token)
HF_TOKEN=your_huggingface_token_here#3. download the necessary weights (comment any weights you don't need)
pip install huggingface_hub
python ./weights/downloader.py
- 如果你有权重文件,请注释掉./weights/downloader.py中不需要的内容
✍️ 推理
- 从以下示例开始探索并激发您的创造力。✨
# the first image is a content reference, and the rest are style references.# for subject-driven generation
python inference.py --prompt "The man in flower shops carefully match bouquets, conveying beautiful emotions and blessings with flowers. " --image_paths "assets/gradio_examples/identity1.jpg" --width 1024 --height 1024
# for style-driven generation
# please keep the first image path empty
python inference.py --prompt "A cat sleeping on a chair." --image_paths "" "assets/gradio_examples/style1.webp" --width 1024 --height 1024
# for style-subject driven generation (or set the prompt to empty for layout-preserved generation)
python inference.py --prompt "The woman gave an impassioned speech on the podium." --image_paths "assets/gradio_examples/identity2.webp" "assets/gradio_examples/style2.webp" --width 1024 --height 1024
# for multi-style generation
# please keep the first image path empty
python inference.py --prompt "A handsome man." --image_paths "" "assets/gradio_examples/style3.webp" "assets/gradio_examples/style4.webp" --width 1024 --height 1024# for low vram:
python inference.py --prompt "your propmt" --image_paths "your_image.jpg" --width 1024 --height 1024 --offload --model_type flux-dev-fp8
-
您还可以将您的结果与
assets/gradio_examples
文件夹中的结果进行比较。 -
更多示例,请访问我们的项目页面或尝试在线demo。
🌟 Gradio演示
python app.py
为降低显存占用,请传递 --offload
和 --name flux-dev-fp8
参数。峰值显存占用将在16GB(单参考)至18GB(多参考)之间。
# please use FLUX_DEV_FP8 replace FLUX_DEV
export FLUX_DEV_FP8="YOUR_FLUX_DEV_PATH"# FLUX_DEV_FP8=/path/to/flux/FLUX.1-dev/flux1-dev.safetensors 即可python app.py --offload --name flux-dev-fp8
🌈 更多示例
我们提供一些提示词和结果以帮助您更好地理解模型。您可以查看我们的论文或项目主页获取更多可视化案例。
主题/身份驱动生成
若需将主体置入新场景,请使用自然语言描述,如“一只狗/男人/女人正在……”。若仅需转换风格而保持布局,请使用指令式提示,如“将风格转换为……风格”。对于人像保留生成,USO擅长呈现高皮肤细节的图像。实用建议:半身特写适用于半身提示词,当姿势或构图发生显著变化时则使用全身图像。
风格驱动生成
只需上传一两张风格图片,用自然语言描述你的需求。USO将根据你的提示生成图像,并匹配你上传的风格。
风格主题驱动生成
USO可以利用一个或两个风格参考对单个内容参考进行风格化处理。若需保持布局不变的生成,只需将提示语设为空即可。
布局保留生成
布局偏移生成
📄 免责声明
本项目开源仅供学术研究使用。项目中使用的大部分图片均为生成内容或来自开源数据集。如有任何疑虑,请联系我们,我们将及时删除不恰当内容。本项目基于 Apache 2.0 许可证发布。若应用于其他基础模型,请确保遵守原始许可条款。
本研究旨在推动生成式AI领域发展。用户可自由使用该工具创作图像,但须遵守当地法律并承担使用责任。开发者对用户滥用工具的行为概不负责。
https://github.com/bytedance/USO