AI自主图像生成 之 stable-diffusion(Anaconda+pycharm)本地部署

无需订阅专栏——AI自主图像生成 之 stable-diffusion-运行效果展示

一.介绍与实验效果

文章末尾包含:
1.我已打包到百度云的部署验证成功并包含模型权重的代码文件,可直接链接完成python环境配置的anaconda环境下使用。
2…我已打包到百度云的anaconda下的一个,完成python环境配置的anaconda环境的包yolov5_CS2(即各种包都安好了),可直接放到Anaconda\envs目录下使用。
在这里插入图片描述

1.环境与感受介绍

这几天跑省外出差被隔离在酒店,不过随身带了个主机和显示器(笔记本太差跑不了项目程序,只能随身带主机我真的栓Q…),正巧又刷到stable-diffusion开源的消息,现在就来试试搭建这个试试水。

硬件环境:显卡3060 12G显存,内存32G 主要就这两,cpu没太大要求,除非你想用cpu跑深度学习…
软件环境:基于Anaconda 的 python3.7下 pytorch版本:1.10.0+cu113 ,cuda: V11.3.58, cudnn 8.4.0

总体感觉很惊艳,在现有12G显存的硬件条件下我设置到了 高:512宽832的大小,不过稍微超出点点就要爆显存,程序就崩溃了,当然这个不是它的问题,穷是我的问题,因此大家在用的时候参考我这个图片大小和显存自己调整吧。

(当然也可以使用小图片加超清晰度的模型结合的方法,来避免爆显存这个问题,不过作为鸽子我估计我懒得弄,或许以后来研究这个迁移学习的时候,再说吧)

2.效果展示

略见无需订阅专栏——AI自主图像生成 之 stable-diffusion-运行效果展示

3.使用界面图

使用界面如下,完成后会在你的本地回环地址的 7860 端口提供一个web接口,通过浏览器访问就行,注意输入的描述是英文的哈。

PS:我发现相同图片大小下,描述越多,GPU占用越厉害,而且时间也长,不过我靠: 这个巨大的宇宙战舰从大气层冲入入侵人类家园,岩浆从地层中涌出,大量的机器人奔逃用,我用3060 12G花了 2个多小时。。。我靠, GPU占用%80到%100, 内存占用15g左右,不知道的还以为是挖矿。。。。)

在这里插入图片描述

二.环境准备

流程:

搭建使用GPU运算的pytorch‘的环境,也就是想根据你的显卡,选择对应的CUDA版本,再根据你的CUDA版本选择对应的pytorch的GPU版本

1.GPU硬件cuda,pytorch版本安装

查看当前已安装cuda与cudnn版本
查看你自身的GPU型号,如我这里GPU就是3060。
查询你的GPU是否支持 cuda: V11.3.58, cudnn 8.4.0 (一般30系列,与大多数新型号的都是支持的,老型号或专门的计算卡可能就不行)

完成cuda和python环境安装后,根据你的python环境版本,如下我的是python3.7,在pytorch官方下载安装以下两个对应cuda11与对应包,一个是tocrh包另一个是torchvision包,如下。

torch-1.10.0+cu113-cp37-cp37m-win_amd64.whl
torchvision-0.11.1+cu113-cp37-cp37m-win_amd64.whl

官方cuda11.3版本下载链接
cuda11.3版本下载百度云
提取码:qvfk

官方cudnn8.4.0下载链接
cudnn8.4.0下载百度云
提取码:r3gx

在这里插入图片描述
在这里插入图片描述

1.如果支持,

那么你安装了V11.3版本, cudnn 8.4.0 后可以直接使用我这里提供的,python7的环境包,下载后解压到 你的Anaconda\envs文件夹下即可使用
python包yolov5_CS2环境百度云链接
提取码:ndcm
在这里插入图片描述

2.如果不支持,

那么参考下面链接,选择好你的显卡对应的cuda,cudnn 以及pytorch,torchvision,然后再anaconda中创建一个环境把pytorch,torchvision安装进去。

Cuda与对应pytorch安装导流,还没安装好pytorch深度学习环境的看这个链接里面的链接把基础环境搭建了
当此时则需要自己手动安装依赖包了,那么需要哪些依赖包呢?
如下文件environment.yaml所示:

name: ldo
channels:
  - pytorch
  - defaults
dependencies:
  - git
  - python=3.8.5
  - pip=20.3
  - cudatoolkit=11.3
  - pytorch=1.11.0
  - torchvision=0.12.0
  - numpy=1.19.2
  - pip:
    - albumentations==0.4.3
    - opencv-python==4.1.2.30
    - opencv-python-headless==4.1.2.30
    - pudb==2019.2
    - imageio==2.9.0
    - imageio-ffmpeg==0.4.2
    - pytorch-lightning==1.4.2
    - omegaconf==2.1.1
    - test-tube>=0.7.5
    - streamlit>=0.73.1
    - einops==0.3.0
    - torch-fidelity==0.3.0
    - transformers==4.19.2
    - torchmetrics==0.6.0
    - kornia==0.6
    - gradio==3.1.6
    - accelerate==0.12.0
    - pynvml==11.4.1
    - basicsr>=1.3.4.0
    - facexlib>=0.2.3
    - -e git+https://github.com/CompVis/taming-transformers#egg=taming-transformers
    - -e git+https://github.com/openai/CLIP#egg=clip
    - -e git+https://github.com/TencentARC/GFPGAN#egg=GFPGAN
    - -e git+https://github.com/xinntao/Real-ESRGAN#egg=realesrgan
    - -e git+https://github.com/hlky/k-diffusion-sd#egg=k_diffusion
    - -e .

其中pytorch和torchvision已经如上安装了,剩下的如 imageio==2.9.0 在进入你的环境后使用pip 安装如下

pip install imageio==2.9.0

而上面还有5个github上的项目文件

    - -e git+https://github.com/CompVis/taming-transformers#egg=taming-transformers
    - -e git+https://github.com/openai/CLIP#egg=clip
    - -e git+https://github.com/TencentARC/GFPGAN#egg=GFPGAN
    - -e git+https://github.com/xinntao/Real-ESRGAN#egg=realesrgan
    - -e git+https://github.com/hlky/k-diffusion-sd#egg=k_diffusion

我已经把这5个下载放到了 主程序文件的hand_five 下了
主程序文件百度云,见本章末尾链接(已改动,加入模型后可直接运行)
手动安装命令如下,在进入对应的文件夹后(可能有1个安不起,不管他,我已经直接把要用的taming给移到外出文件去了,就不用管他按不按得起了)

python setup.py install --user

在这里插入图片描述

3.c盘放个权重文件

由于在之后运行的时候,程序会自动去一个url链接下载一个权重文件放到 C:\Users\ppx.cache\torch\hub\checkpoints 路径下,但是那个url链接,是真的不友好,连不上,我这边翻墙下好了,所有想直接把它放过去。免得到时候卡起
放到C盘的权重文件百度云下载
提取码:gu5j

在这里插入图片描述

4.修改代码中权重文件路径

修改 CS_stable-diffusion-main\scripts\webui.py 的第134 行 model.ckpt 的路径为你的项目的路径,出来你和我一样把代码放在F盘的根目录

在这里插入图片描述

三.运行并测试

1.验证pytorch可用

import torch

print(torch.__version__)

打印出来是 1.10.0+cu113 或者别的 版本的pytorch的GPU版本的,就表示你pytorch是安装对了的,如果里面没有看到 +cu你的版本 那么你可能就默认安装成了cpu版本了,这时你要好好检查以一下你的python环境对不对。

2.开始运行

在以上的一堆环境都搭建完成后,现在用于可以开始运行了,使用pycharm打开代码文件如下(记得设置源码),运行里面 CS_stable-diffusion-main\scripts\webui.py 文件
在这里插入图片描述
如果是第一次运行,它还会下些东西如下
在这里插入图片描述
当完成下载后,它会运行得到一个本地ip端口下的访问接口,如下这里就是

http://localhost:7860/

在这里插入图片描述

3.网页访问使用

然后通过浏览器,访问 该http://localhost:7860/地址,可看到如下web网页
在这里插入图片描述
其中想输入框中,输入你的描述(英文)句子,即可生成对应的图像(注意图像高宽设置太大会崩溃,这里我12G显存推荐)
在这里插入图片描述
在这里插入图片描述
生成的图片被保存在 CS_stable-diffusion-main\scripts\outputs\txt2img-samples文件夹下

其他.关于文件结构与我修改了哪些地方

1.文件结构

如果你从github上git下来的话,除了以下红色框里面的文件或文件夹外,就是基本的代码状态了(当然还有几个cmd,那个是b站大佬写的window下的启动命令,我觉得以后,可能做自动化还有用,就懒得删,当然删了也没关系就是了)
在这里插入图片描述
在这里插入图片描述

将configs复制了一份到scripts,不然找不到一些文件
在这里插入图片描述
有一个github的安装包没有安装成功,我直接把它要用得上的文件夹给移出来了,这样安装不上也能用了
在这里插入图片描述
在这里插入图片描述

报错记录

以下启动时的以下报错,是你网不行,程序每次启动的时候要访问些神奇的url,我觉得应该是更新权重文件之类的,所有就没改这部分(当然你可以自己把它删了就不会包下面的错了),总之保存网正常就可以启动

Traceback (most recent call last):
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connection.py", line 175, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\util\connection.py", line 95, in create_connection
    raise err
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connectionpool.py", line 700, in urlopen
    self._prepare_proxy(conn)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connectionpool.py", line 996, in _prepare_proxy
    conn.connect()
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connection.py", line 358, in connect
    self.sock = conn = self._new_conn()
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connection.py", line 187, in _new_conn
    self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000257A066DD08>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\adapters.py", line 449, in send
    timeout=timeout
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\connectionpool.py", line 788, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /openai/clip-vit-large-patch14/resolve/main/vocab.json (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000257A066DD08>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:/CS_stable-diffusion-main/scripts/webui.py", line 366, in <module>
    model = load_model_from_config(config, opt.ckpt)
  File "F:/CS_stable-diffusion-main/scripts/webui.py", line 139, in load_model_from_config
    model = instantiate_from_config(config.model)
  File "F:\CS_stable-diffusion-main\ldm\util.py", line 85, in instantiate_from_config
    return get_obj_from_str(config["target"])(**config.get("params", dict()))
  File "F:\CS_stable-diffusion-main\ldm\models\diffusion\ddpm.py", line 461, in __init__
    self.instantiate_cond_stage(cond_stage_config)
  File "F:\CS_stable-diffusion-main\ldm\models\diffusion\ddpm.py", line 519, in instantiate_cond_stage
    model = instantiate_from_config(config)
  File "F:\CS_stable-diffusion-main\ldm\util.py", line 85, in instantiate_from_config
    return get_obj_from_str(config["target"])(**config.get("params", dict()))
  File "F:\CS_stable-diffusion-main\ldm\modules\encoders\modules.py", line 141, in __init__
    self.tokenizer = CLIPTokenizer.from_pretrained(version)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\transformers\tokenization_utils_base.py", line 1731, in from_pretrained
    user_agent=user_agent,
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\transformers\utils\hub.py", line 290, in cached_path
    local_files_only=local_files_only,
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\transformers\utils\hub.py", line 485, in get_from_cache
    r = requests.head(url, headers=headers, allow_redirects=False, proxies=proxies, timeout=etag_timeout)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\api.py", line 104, in head
    return request('head', url, **kwargs)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "D:\Anaconda\envs\yolov5_CS2\lib\site-packages\requests\adapters.py", line 510, in send
    raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /openai/clip-vit-large-patch14/resolve/main/vocab.json (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000257A066DD08>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))

进程已结束,退出代码 1




结尾

之前在说明里面插入得有的,为了方便下载,这里我特地都写到下面

python包yolov5_CS2环境百度云链接
提取码:ndcm

修改过的主文件github链接 2022.10.17修改
百度云链接放这居然会审核不通过,笑死我。
ps:自己在这里路径下把模型加上去才能用哦:CS_stable-diffusion-main\models\ldm\stable-diffusion-v1

官方cuda11.3版本下载链接
cuda11.3版本下载百度云
提取码:qvfk

官方cudnn8.4.0下载链接
cudnn8.4.0下载百度云
提取码:r3gx

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
要在CentOS 7上部署stable-diffusion-webui与NVIDIA GPU,首先需要确保您的系统满足以下要求: 1. 确保您的计算机上已经安装了合适版本的CentOS 7操作系统,可以通过官方渠道下载并安装。 2. 确保您的计算机上具备NVIDIA GPU,并安装了NVIDIA的驱动程序。您可以从NVIDIA的官方网站下载并安装适合您GPU型号和CentOS版本的驱动程序。 接下来,您可以按照以下步骤进行stable-diffusion-webui部署: 1. 安装Docker:在CentOS 7上安装Docker以便运行容器化应用程序。您可以使用以下命令安装Docker: ``` sudo yum install docker ``` 2. 启动Docker服务并将其设置为开机自启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 下载并运行stable-diffusion-webui容器: ``` sudo docker run -e GPU_INDEX=0 -p 80:80 diffusionai/stable-diffusion-webui ``` - 通过"GPU_INDEX=0"参数指定使用的GPU索引,如果您有多个GPU,可以根据需要进行调整。 - 使用"-p 80:80"参数将容器的80端口映射到主机的80端口,使得Web界面可以通过主机的IP地址进行访问。 4. 这样,您就成功地将stable-diffusion-webui部署在CentOS 7上了。现在,您可以在任意浏览器中访问http://您的主机IP地址,即可使用stable-diffusion-webui进行图像处理和分析。 请注意,上述步骤假设您已经正确地安装了操作系统和GPU驱动程序,并且系统中只有一个NVIDIA GPU可用。如果您遇到任何问题,建议参考各种文档和安装指南,或者咨询相关领域的专业人士。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员进化不脱发!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值