我们使用的工具是huggingface
提供的diffusers
,一个在纯python
环境下运行的库。废话不多说,我们进入今天的教程。
安装
diffusers
目前不支持python 3.12
,因此我们使用虚拟环境来安装。
# 使用3.10版本的python创建venv
/opt/homebrew/opt/python@3.10/libexec/bin/python3 -m venv .venv
# 激活venv
source .venv/bin/activate
安装diffusers
及其依赖:
pip install diffusers accelerate transformers
下载模型
和之前文章里介绍的一样,模型我们还是选择自己下载。你可以到huggingface
网站下载已经训练好的模型,比如[runwayml/stable-diffusion-v1-5
]。
Tips:你可以使用如下命令下载
huggingface
上的模型:
git lfs install
git clone git@hf.co:<MODEL ID> # example: git clone git@hf.co:bigscience/bloom
此外,diffusers
支持AUTOMATIC1111
的模型,因此你可以去[Civitai]下载各种CheckPoint
和LoRA
。本文使用的模型就是Civitai
的[dreamshaper]。选择模型时要注意以下几点:
- 根据自己的喜好选择模型的风格,比如“写实”、“动漫”或者“魔幻”
- 模型有一个属性是“基础模型”,如下图。对应的诸如
SD 1.5
、SDXL 1.0
、SDXL Turbo
等等。SD
系列只能生成512x512
的图片,SDXL
系列可以生成1024x1024
及以上的图片。而Turbo
系列可以将生成所需的时间缩短。根据自己的电脑配置选择合适的模型吧。
选择好模型后,就点击Download
下载吧。
加载模型
如果你的模型是单个safetensors
格式的,使用from_single_file
加载,如果是从huggingface
下载的预训练模型,使用from_pretrained
加载。此外如果你的模型是SDXL
,使用StableDiffusionXLPipeline
,因此dreamshaperXL
模型加载的代码如下:
from diffusers import StableDiffusionXLPipeline
pipe = StableDiffusionXLPipeline.from_single_file("your/path/dreamshaperXL_v21TurboDPMSDE.safetensors")
使用GPU运行
windows
用户可以根据如下代码判断自己的电脑能否进行GPU
推理:
device = "cuda" if torch.cuda.is_available() else "cpu"
MAC
的M1
和M2
芯片可以使用如下代码:
device = 'mps'
然后:
pipe = pipe.to(device)
调度器
diffusers
的调度器对应的是AUTOMATIC1111
中的Sampling method
,它对获得高质量的图像至关重要。Sampling method
和diffusers
的调度器的对应关系可以参照[此处]。
至于如何选择调度器,在模型的详情页可以找到作者给出的建议,比如:
这里作者建议的是DPM++ SDE Karras
,可以参照上面的对应表找到对应的调度器为DPMSolverSinglestepScheduler
,初始化参数为use_karras_sigmas=True
。
调度器代码如下:
pipe.scheduler = DPMSolverSinglestepScheduler.from_config(pipe.scheduler.config, use_karras_sigmas=True)
提示词
提示词的质量对最终生成的图像质量有很大的影响。提示词的写法这里不做展开,提示词的例子:
prompt = "masterpiece, cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney"
negative_prompt = "worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed"
提示词目前有77个长度的限制,要突破这个限制,可以将提示词向量化,以下是代码例子:
pip install compel
compel = Compel(
tokenizer=[pipe.tokenizer, pipe.tokenizer_2] ,
text_encoder=[pipe.text_encoder, pipe.text_encoder_2],
returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED,
requires_pooled=[False, True]
)
conditioning, pooled = compel(prompt)
negative_prompt_embeds, negative_pooled = compel(negative_prompt)
图片生成
image = pipe(
prompt_embeds = conditioning,
pooled_prompt_embeds=pooled,
negative_prompt_embeds = negative_prompt_embeds,
negative_pooled_prompt_embeds=negative_pooled,
# height=800,
# width=512,
num_inference_steps=6,
guidance_scale=2,
strength=0.5
).images[0]
image.save("data/out.jpg")
这里对图片生成质量有影响的几个参数是guidance_scale
和num_inference_steps
,这两个参数分别对应AUTOMATIC1111
里的CFG Scale
和Sampling steps
。你也可以在模型的详情页找到作者给出的建议:
至此,运行代码,你应该可以获得模型生成的图片了。
总结
本文介绍了使用diffusers
在本地运行Stable Diffusion
的方法,并进行了一次基本的Text to Image
的实践。下篇文章将继续介绍diffusers
使用LoRA
,ControlNet
和Adapter
生成高级图片的实践。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓