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. 提示词公式

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

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

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

相关推荐
没有梦想的咸鱼185-1037-16638 小时前
【遥感技术】从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
pytorch·python·深度学习·机器学习·数据分析·cnn·transformer
钟爱蛋炒饭8 小时前
基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统
python·神经网络·机器学习
eqwaak08 小时前
Python Pillow库详解:图像处理的瑞士军刀
开发语言·图像处理·python·语言模型·pillow
RE-19018 小时前
制冷剂中表压对应温度值的获取(Selenium)
爬虫·python·selenium·jupyter·pandas·danfoss·reftools
测试老哥9 小时前
Python+selenium自动化生成测试报告
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
IT北辰9 小时前
Linux 系统python环境( Miniconda),最新版
linux·运维·python
keerduoba10 小时前
PDFParser 的pickle.loads 寻找链(源码)wmctf2025-pdf2text
python·pdf·pickle·pdf与pickle反序列化
云宏信息10 小时前
赛迪顾问《2025中国虚拟化市场研究报告》解读丨虚拟化市场迈向“多元算力架构”,国产化与AI驱动成关键变量
网络·人工智能·ai·容器·性能优化·架构·云计算
该用户已不存在10 小时前
PHP、Python、Node.js,谁能称霸2025?
python·node.js·php
luckys.one10 小时前
第12篇|[特殊字符] Freqtrade 交易所接入全解:API、WebSocket、限频配置详解
网络·ide·python·websocket·网络协议·flask·流量运营