Python本地部署Stable Diffusion实现在纯CPU环境下的实现

最近在研究使用 Stable Diffusion 通过提示词生成图片的实现,因为电脑配置问题,反复尝试不同模型版本,效率上都不理想(主要是电脑太烂,只能纯CPU模式运行,大一点的模型,生成一张图片都要两三分钟,头大),最后找到一个相对满意的大佬基于SD1.5训练的,再被另一大佬导出为OpenVINO格式后,时间可控制在二十多秒生成一图。

下面就以该模型的使用作一个简单部署,不再花时间在模型研究上了,继续往下进行了,后续会以提示词为主,让SD能按照自己想要的效果生图。

一、环境搭建

1. 啰嗦几句

这个是大头,需要安装的依赖比较多,而且很多组件版本有要求,也是反复踩坑后得出的结论

好多是建议使用Conda进行环境隔离搭建的,我试了下,有好有坏吧,每次使用都要先cmd进入命令行模式,再conda activate xxx 激活环境,后续再在该环境操作,可能我没研究明白,但我还是感觉直接使用pythonvenv虚拟环境搭配VS Code更直观,同样是环境隔离,VS Code又可以直接识别当前目录下的虚拟环境,不用担心全局环境的污染

说了这么多,是为了有个思想准备,就是如果中间出问题了,知道从哪解决,有个思路,实际命令就几句话

2. 开始安装

按照官方建议,Python版本最好是3.10.6(低了很多组件不支持,高了有些函数被舍弃了,其中踩坑的还有一点是pip的版本也可能会导致出错,如果有碰到,就降级到24.0及以下)

bash 复制代码
# 建立虚拟环境,建议先设置国内加速源,不然速度感人 
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
python -m venv .venv
# 安装大模型依赖 
pip install optimum-intel openvino diffusers transformers

3. 模型下载

Dreamshaper 8 是一个基于 Stable Diffusion 技术的文本生成图像模型。该项目由 Lykon 开发,是在runwayml/stable-diffusion-v1-5模型基础上进行微调得到的。

使用下面的openvino版本加上lcm优化,可以实现在cpu上也能跑出理想成绩(相对而言)

至于模型怎么下载下来,我是先使用的 git clone 下载所有配置文件,然后再手动下载指定目录下的LFS大文件,再放置到相应目录。科学上网这块我也没找到更好的方法!

bash 复制代码
https://huggingface.co/yujiepan/dreamshaper-8-lcm-openvino

二、代码调试

1. 文生图实现

如果环境顺利搭建起来,那恭喜你,后面就可以开心的测试你想要的提示词了

python 复制代码
from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionPipeline
import torch
import os

# 多线程加速(根据自己的需要设置相应的核心线程数 4 8 12 16等)
os.environ["OMP_NUM_THREADS"] = "4"
torch.set_num_threads(4)

# 模型加载(根据你本地模型存放的路径设置)
model_id = "./modles/dreamshaper-8-lcm-openvino"
pipe = OVStableDiffusionPipeline.from_pretrained(
    model_id, device='CPU')

# 输入你喜欢的提示词吧(只支持英文,英文不好的借助翻译软件实现)
# 正向提示词(你想的结果)
prompt = 'cute girl typing at a laptop, 4k, details'  
# 负向提示词(你不想出现的情况)
nprompt = 'worst quality, blurry, duplicate'  

# 开始图片生成(输入相应参数即可,因为是lcm优化,步数4-8即可,参考值1-3即可)
image = pipe(prompt=prompt,
             negative_prompt=nprompt,
             num_inference_steps=5,
             guidance_scale=1).images[0]
image.save('output.jpg')
# print(image) # <PIL.Image.Image image mode=RGB size=512x512 at 0x214080BE950>
image.show()

2. 提示词公式

描述人物,场景,环境,画幅视角,其他画面要素,定义高品质标准化,画风,其他特殊要求

更多玩法,还在探索中,后续共同探讨......

再放两张上述提示词生成的图片效果,有时相同提示词也可能出现意想不到的惊喜或惊吓,多生成几张,挑选满意的即可,做好心理准备......

相关推荐
CTA量化套保7 小时前
近期零基础量化学习:先分阶段,再用 AI 检查缺口
人工智能·python
清水白石0087 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
Elias不吃糖8 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
TechWayfarer8 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip
七牛开发者9 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
河南凹凸环境艺术设计9 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python
AI导出鸭PC端12 小时前
Gemini流程图怎么导出?AI导出鸭一键解决格式兼容难题
人工智能·ai·word·流程图·豆包·ai导出鸭
wuyk55512 小时前
Python 第三章:列表 List
服务器·开发语言·python
笨鸟先飞,勤能补拙12 小时前
从预测到决策:人工智能与机器学习的系统方法、工程闭环与现实边界
大数据·人工智能·windows·python·机器学习·密码学