今天咱们来聊聊怎么用Python玩转Stable Diffusion模型。Stable Diffusion是当下最火的AIGC(AI生成内容)模型之一,能生成高质量的图像。咱们会用Python调用这个模型,生成一些有趣的图片。别担心,就算你是Python小白,也能跟着一步步搞定。
1. 环境准备
在开始之前,得先把环境搭好。Stable Diffusion模型依赖一些Python库,咱们得先安装好。打开终端,输入以下命令:
pip install torch torchvision torchaudio
pip install diffusers transformers scipy
这些库分别是PyTorch(深度学习框架)、Diffusers(扩散模型库)、Transformers(自然语言处理库)和Scipy(科学计算库)。装好之后,咱们的环境就差不多准备好了。
2. 加载Stable Diffusion模型
接下来,咱们得把Stable Diffusion模型加载进来。Diffusers库已经帮咱们封装好了,直接用就行。来看代码:
from diffusers import StableDiffusionPipeline
import torch
# 加载模型
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
这里咱们加载了Stable Diffusion的1.4版本模型,并且把模型放到了GPU上(如果你有的话)。是为了节省显存,用半精度浮点数来跑模型。torch_dtype=torch.float16
温馨提示:如果你没有GPU,可以把去掉,模型会在CPU上运行,不过速度会慢很多。pipe.to("cuda")
3. 生成第一张图片
模型加载好了,咱们来生成第一张图片。Stable Diffusion模型需要一个文本提示(prompt)来生成图片。比如,咱们输入“一只戴着墨镜的猫”,看看它能生成啥。
prompt = "一只戴着墨镜的猫"
image = pipe(prompt).images[0]
image.save("cool_cat.png")
运行这段代码后,你会得到一个名为的图片文件。打开看看,是不是有点意思?cool_cat.png
温馨提示:生成的图片质量跟你的提示词有很大关系。提示词越详细,生成的图片越符合你的预期。比如“一只戴着墨镜的猫,背景是海滩,阳光明媚”会比“一只猫”生成更具体的图片。
4. 调整生成参数
Stable Diffusion模型有很多参数可以调整,咱们来看看几个常用的。
4.1 图片尺寸
默认生成的图片尺寸是512x512,但你可以调整成其他尺寸。比如生成1024x768的图片:
image = pipe(prompt, height=768, width=1024).images[0]
温馨提示:图片尺寸越大,生成时间越长,显存占用也越多。如果你显存不够,可能会报错。
4.2 生成步数
生成步数(num_inference_steps)控制生成图片的精细程度。步数越多,图片质量越高,但生成时间也越长。默认是50步,你可以试试调整:
image = pipe(prompt, num_inference_steps=100).images[0]
4.3 随机种子
Stable Diffusion模型生成图片时依赖随机种子。如果你想让生成的图片可复现,可以设置一个固定的种子:
import torch
generator = torch.Generator("cuda").manual_seed(42)
image = pipe(prompt, generator=generator).images[0]
这样,每次运行代码生成的图片都会是一样的。
5. 批量生成图片
有时候咱们想一次生成多张图片,看看哪个效果最好。Stable Diffusion模型也支持批量生成。来看代码:
prompts = ["一只戴着墨镜的猫", "一只穿着西装的狗", "一只骑着自行车的熊猫"]
images = pipe(prompts).images
for i, image in enumerate(images):
image.save(f"image_{i}.png")
这段代码会生成三张图片,分别保存为、和。image_0.pngimage_1.pngimage_2.png
6. 处理生成失败的情况
有时候模型可能会生成一些不太理想的图片,比如模糊或者不符合预期的内容。这时候咱们可以调整提示词,或者增加生成步数。如果还是不行,可以试试换个随机种子。
温馨提示:Stable Diffusion模型生成图片的过程是不可逆的,也就是说,你不能中途调整参数。如果生成的图片不满意,只能重新生成。
7. 进阶玩法:自定义模型
如果你对Stable Diffusion模型感兴趣,还可以尝试训练自己的模型。Diffusers库提供了训练脚本,你可以用自己的数据集来微调模型。不过这个就比较复杂了,适合有一定深度学习基础的同学。
# 这里只是一个示意代码,实际训练需要更多步骤
from diffusers import StableDiffusionPipeline, UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="unet")
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", unet=unet)
8. 总结
今天咱们用Python玩转了Stable Diffusion模型,从环境搭建到生成图片,再到调整参数和批量生成,基本上把常用的功能都过了一遍。Stable Diffusion模型非常强大,能生成各种有趣的图片,唯一的限制可能就是你的想象力了。
如果你对AIGC感兴趣,Stable Diffusion绝对是一个值得深入研究的模型。希望今天的教程能帮你入门,接下来就靠你自己去探索更多有趣的玩法了。
更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!