最近两年AI绘画技术突飞猛进,从最初的简单风格迁移到如今能够根据文字描述生成高质量图像,开源社区涌现出一批优秀的绘画大模型。这些模型让普通开发者也能在自己的设备上运行强大的AI绘画功能,而不必依赖商业API。
目前主流的开源绘画模型主要基于扩散模型(Diffusion Model)架构,相比早期的GAN模型,扩散模型在图像质量和稳定性上都有显著提升。典型的开源实现包括Stable Diffusion系列、Disco Diffusion等,它们都可以在消费级GPU上运行,有些甚至支持CPU推理。
扩散模型的核心思想是通过逐步去噪的过程生成图像。训练时,模型学习如何逆转一个逐步添加噪声的过程。具体来说:
这种方法的优势在于:
| 模型名称 | 参数量 | 特点 | 硬件需求 |
|---|---|---|---|
| Stable Diffusion 1.4 | 约8亿 | 首个开源的文本到图像扩散模型 | 4GB显存可运行 |
| Stable Diffusion 2.0 | 约10亿 | 改进的文本编码器,支持更高分辨率 | 6GB显存推荐 |
| Disco Diffusion | 约15亿 | 侧重艺术风格生成,适合创意作品 | 需要高端GPU |
| Waifu Diffusion | 基于SD微调 | 专攻动漫风格生成 | 同SD需求 |
以Stable Diffusion为例,本地部署的基本步骤:
bash复制python -m venv sd_env
source sd_env/bin/activate # Linux/Mac
bash复制pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu116
pip install diffusers transformers scipy ftfy
从Hugging Face下载模型权重:
python复制from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
use_auth_token="你的HuggingFace token"
).to("cuda")
注意:首次运行需要登录Hugging Face账号并同意模型使用协议
基本生成代码示例:
python复制prompt = "一只穿着宇航服的柴犬在月球表面漫步,科幻风格,4k高清"
image = pipe(prompt, height=512, width=512, num_inference_steps=50).images[0]
image.save("astronaut_dog.png")
关键参数解析:
num_inference_steps:去噪步数,通常25-50步guidance_scale:文本引导强度,7-15效果较好seed:随机种子,用于复现结果优质提示词通常包含:
负面提示词也很重要,可以排除不想要的内容:
code复制low quality, blurry, distorted anatomy, extra limbs
有三种主要微调方式:
Dreambooth:用少量图片(3-5张)教会模型新概念
bash复制python train_dreambooth.py \
--pretrained_model_name="CompVis/stable-diffusion-v1-4" \
--instance_data_dir="my_concept_images" \
--output_dir="custom_model"
Textual Inversion:学习特定风格的文本嵌入
LoRA:低秩适配,高效微调部分参数
python复制pipe.enable_xformers_memory_efficient_attention()
python复制pipe = pipe.to(torch.float16)
python复制from diffusers import DPMSolverSinglestepScheduler
pipe.scheduler = DPMSolverSinglestepScheduler.from_config(pipe.scheduler.config)
问题:生成的图像模糊或有畸变
问题:面部或手部畸形
错误信息:CUDA out of memory
解决方案:
python复制pipe.enable_attention_slicing()
优化方向:
python复制from diffusers import DPMSolverMultistepScheduler
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
开源绘画大模型不仅可用于艺术创作,还能应用于:
一个实用的商业应用示例 - 批量生成产品背景:
python复制products = ["咖啡杯", "运动鞋", "蓝牙耳机"]
for product in products:
prompt = f"{product}放在极简主义风格的白色背景上,商业摄影,8k"
image = pipe(prompt).images[0]
image.save(f"{product}_promo.png")
在实际使用中,我发现模型的输出质量很大程度上取决于提示词的具体程度。与其用抽象的描述,不如想象你在给一位画家下brief - 越详细、越视觉化的描述通常效果越好。比如"一只猫"这样的提示太宽泛,而"一只橘色虎斑猫趴在窗台上晒太阳,午后光线,毛茸茸的细节,写实风格摄影"就能得到更具针对性的结果。