stable-diffusion-aesthetic-gradients
通过CLIP引导的审美向量,无需重新训练即可让Stable Diffusion生成结果贴合指定风格偏好
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过CLIP引导的审美向量,无需重新训练即可让Stable Diffusion生成结果贴合指定风格偏好
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Stable Diffusion 生成图片时,你是否遇到过这样的困扰?输入同样的 prompt,换一个人用就是更"好看",而你生成的总是差一点意思——色调偏冷、构图平淡、缺少某种说不清的氛围感。于是你开始疯狂调整参数、搜索各种"魔法咒语",但效果依然不稳定。
问题的根源不在于 prompt 的文字描述,而在于底层扩散模型无法理解你内心对"好看"的定义。传统的微调方法(LoRA、Textual Inversion)需要额外训练模型,门槛高、耗时长,且每次更换风格都要重新训练。
有没有一种方法,可以不需要重新训练,仅凭你喜欢的几张参考图,就能让 AI 生成的结果自动带上那种风格感?
这个问题的答案,就是今天要介绍的项目——Aesthetic Gradients(审美梯度)。
Aesthetic Gradients 诞生于 2022 年,由研究者 Victor Gallego 提出,并发表在 NeurIPS 2022 "Machine Learning for Creativity and Design" 研讨会。论文标题为《Personalizing Text-to-Image Generation via Aesthetic Gradients》,核心思想非常优雅:
不训练模型,而是训练一个"审美方向向量"——在每一步去噪过程中,通过 CLIP 引导生成结果向用户定义的审美偏好偏移。
技术原理可以类比为:传统 SD 生成如同在湖面任意划船,而 Aesthetic Gradients 是在船上安装了一个罗盘——它不改变船本身(模型权重),但始终指向你设定的方向(审美偏好),让每一步划桨都更精准地靠近目标。
具体来说,项目在标准 SD 的采样循环中插入了一个额外的 CLIP 引导步骤:用用户提供的参考图集计算一个"审美嵌入向量"(Aesthetic Embedding),在 DDIM 或 PLMS 采样过程中,每一步都对图像特征做额外的余弦相似度优化,使生成结果逐渐贴合目标审美。

上图展示了不同风格引导下的生成效果对比——同一张 T 裇图案,在不同审美向量引导下呈现出截然不同的视觉风格。
项目在 aesthetic_embeddings/ 目录下预置了多个训练好的审美向量,涵盖不同风格场景:
用户只需下载对应 .pt 文件,在推理时传入 --aesthetic_embedding 参数即可切换风格,无需任何额外训练。
如果你有自己的风格参考图集,项目提供了生成工具 scripts/gen_aesthetic_embeddings.py,只需准备一组(建议 2000 张以上)代表目标审美的图片,即可通过 CLIP 编码生成专属的审美向量。向量维度为 1×768(与 CLIP-L/14 文本编码器维度一致)。
核心脚本 scripts/txt2img.py 在标准 SD 推理参数基础上新增三个关键参数:
--aesthetic_steps:优化步数,推荐 2~20。步数越多,风格越强,但过高可能导致图像失真--aesthetic_lr:学习率,默认 0.0001,通常无需调整--aesthetic_embedding:指向 .pt 审美向量文件的路径项目代码架构建立在 CompVis 团队 Latent Diffusion(LDM) 框架之上,核心目录结构:
aesthetic_embeddings/ # 预置审美向量
assets/ # 示例生成图片
configs/ # 各模型配置(autoencoder、stable-diffusion 等)
ldm/ # 核心扩散模型实现
data/ # 数据集加载
models/ # 扩散模型架构
modules/ # UNet、Attention 等模块
util.py # 模型加载、采样器初始化
scripts/ # 推理脚本
txt2img.py # 文生图主脚本(带审美梯度)
gen_aesthetic_embeddings.py # 审美向量生成
img2img.py # 图生图
inpaint.py # 局部重绘
核心采样器支持 DDIM 和 PLMS 两种,后者为 DDPM 的多步变体,采样速度更快。代码还集成了 Stable Diffusion 官方的 NSFW 安全检查器(CompVis/stable-diffusion-safety-checker)。
技术栈方面,项目基于 PyTorch + PyTorch Lightning + Diffusers 库构建,训练框架使用 Lightning 的 Trainer 体系,支持分布式训练配置。
项目提供 environment.yaml conda 环境配置文件,包含 Python 3.8.5 + PyTorch 1.11 + CUDA 11.3 的完整依赖链。安装方式:
git clone https://github.com/vicgalle/stable-diffusion-aesthetic-gradients
cd stable-diffusion-aesthetic-gradients
conda env create -f environment.yaml
conda activate ldm
pip install -e .
python scripts/txt2img.py \
--prompt "a beautiful landscape painting" \
--aesthetic_embedding aesthetic_embeddings/sac_8plus.pt \
--aesthetic_steps 5 \
--plms \
--ddim_steps 50 \
--H 512 --W 512 \
--n_samples 4
由于基于早期 Stable Diffusion v1 实现(而非当前的 SDXL 或 SD 3),本项目在硬件需求上相对友好,但完整运行仍需要:
torch、diffusers、transformers、pytorch-lightning、einops、kornia 等核心包⚠️ 当前限制:项目未提供 Docker 容器化方案、无 Web UI 界面,主要依赖命令行调用,对非 Python 用户有一定门槛。
Aesthetic Gradients 的核心价值不在于生成质量本身,而在于它开创了一种**"不训练模型即可个性化"**的范式。与 LoRA 需要数小时训练、Textual Inversion 需要数十张图微调相比,Aesthetic Gradients 在推理时动态计算审美方向向量,真正实现了"即拿即用"。
这一思想对后来的多模态引导生成技术产生了重要影响。虽然后续随着 SDXL、SD3 等更大模型的出现,项目本身的实用价值有所下降,但它提出的 CLIP 引导优化框架,至今仍是 AIGC 个性化研究的重要参考方向。
项目基本信息