AI生成图片Stable Diffusion环境搭建与运行方法

2023-05-19 08:05:45 运行 生成 搭建

        Stable Diffusion是一种基于扩散过程的生成模型,由Ge et al.在2021年提出。该模型利用了随机变量的稳定分布,通过递归地应用扩散过程来生成高质量的图像。与其他生成模型相比,Stable Diffusion在生成高质量的图像方面具有显着优势。具体而言,该模型所生成的图像具有更好的细节保留能力和更自然的外观。通过对不同扩散时间的研究,Stable Diffusion还可以实现通过调整时间精度来生成图像的分辨率。

         在实践中,Stable Diffusion被广泛应用于图像生成、压缩、修复和增强等应用中。此外,该模型还可以与其他深度学习技术结合使用,例如GAN和VAE,以提高生成图像的质量和多样性。总之,Stable Diffusion是一种非常实用且具有潜力的图像生成模型,在未来的研究和应用中将发挥重要作用。

        本文主要介绍Stable Diffusion webui环境搭建,后续将陆续介绍参数设置、API搭建、模型基本原理、训练、部署等内容。具体更新可关注文章下方公众号,也可关注本专栏。所有相关文章会在《Python从零开始进行aiGC大模型训练与推理》中进行更新。

1 环境搭建

        显卡驱动、CUDA、CUDNN、Docker、Python等环境搭建请参考本专栏另一篇博文《Docker AIGC等大模型深度学习环境搭建(完整详细版)》,地址为“https://www.jb51.net/article/283300.htm”。

1.1 创建Python环境

        这里使用conda创建一个Python 3.10环境,命令如下所示。

conda create -n stdf python=3.10 -y
conda activate stdf

1.2 stable-diffusion-webui环境安装

        stable-diffusion-webui提供了网页前端页面用于Stable Diffusion模型生成图片,其GitHub官方工程地址为“Https://github.com/AUTOMATIC1111/stable-diffusion-webui”。官方工程页面提供了安装步骤,包括一些自动安装脚本。这里主要是手动进行安装,并在ubuntu 18.04与Ubuntu 20.04上进行验证,其环境安装命令如下所示。手动进行安装的好处在于及时了解报错信息并进行修复。

conda activate stdf
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
pip install -r requirements_versions.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2 启动stable-diffusion-webui

        stable-diffusion-webui的启动命令为“python launch.py”,启动后程序会自动安装和下载所依赖的其它环境。安装过程中出现的问题及解决方式如下所示。运行成功后,我们可通过网页浏览器访问,默认端口号为7860,访问地址为“IP:7860”或“0.0.0.0:7860”或“127.0.0.1:7860”或“localhost:7860”。如果需要通过其它主机进行访问,需要让防火墙允许该端口,命令为“sudo ufw allow 7860”。

        运行成功后页面如下。安装过程中出现的问题及解决方式如下所示。

2.1 openclip安装不上

        Openclip无法安装原因可能是网络问题导致无法获取到github上相应资源,因而可通过将其替换为gitee上对应资源加以解决。具体修改方式为将launch.py文件中的openclip_package所在行替换为如下内容,位于第234行左右。

openclip_package = os.environ.get('OPENCLIP_PACKAGE', "git+https://gitee.com/ufhy/open_clip.git@bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b")

2.2 libGL.so

        缺乏libGL.so库的报错信息为“ImportError: libGL.so.1: cannot open shared object file: No such file or directory”。该错误在安装OpenCV是经常会遇到,是系统本身缺乏相应库所导致的。解决方案如下。

apt update
apt install libgl1-mesa-glx -y

2.3 NaN

        由于精度问题导致模型出现NaN错误,以致于无法正常生成图片。这个问题在切换到Stable Diffusion v2.1版本模型时可能会出现。具体问题如下所示:

NansException: A tensor with all NaNs was produced in VAE. This could be because there's not enough precision to represent the picture. Try adding --no-half-vae commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.

        解决方法是将launch.py文件中的commandline_args = os.environ.get('COMMANDLINE_ARGS', "")替换为如下内容,位于第13行左右。

commandline_args = os.environ.get('COMMANDLINE_ARGS', "--no-half")

3 模型替换

        Stable Diffusion模型有多个版本,当前运行launch.py程序时会自动下载v1.5版本模型。Stable Diffusion模型存储在models/Stable-diffusion/下,如下图所示。我们可以去huggingface网站“https://huggingface.co/”上搜索并下载对应模型,然后将模型放到该文件夹下即可。下载时仅需要下载.safetensors后缀的模型文件即可。

         例如,stable-diffusion-2-1的下载地址为“https://huggingface.co/stabilityai/stable-diffusion-2-1”,点击页面中的“Files and versions”即可看到对应的模型文件。我们可以只下载其中.safetensors后缀的模型文件,也可以通过Git LFS下载全部内容。Git LFS安装与模型下载请参考《ChatGPT平替-ChatGLM环境搭建与部署运行》。

 4 启动端口修改

        如上所述,程序默认启动端口为7860,我们可通过命令“python launch.py --port 5800”来指定端口号。修改webui.py文件的第260行也可以改变端口号,如下所示。这里将share直接设置成True后可以允许公网访问。Server_name最好设置成“0.0.0.0”,如果设置成“127.0.0.1”,那么也可能会导致公网无法访问。

app, local_url, share_url = shared.demo.launch(
            share=True,
            server_name='0.0.0.0',
            server_port=5900,

5 后台运行

        默认情况下,关闭启动launch.py的终端窗口后,程序会退出。如果希望程序在后台运行,那么可以通过nohup命令实现。

        (1)保存日志到nohup.out

        “nohup python launch.py &”可使程序保持在后台运行,并且日志信息会保存到nohup.out文件。

        (2)不保存日志

        不保存日志的后台运行命令为“: nohup python launch.py > /dev/null 2>&1 &”。

        (3)关闭进程

        如果需要关闭后台进程,可通过“ps -aux | grep launch.py”查询到进程ID,并通过“kill -9 进程ID”来关闭进程。

        本文主要介绍Stable Diffusion webui环境搭建,后续将陆续详细介绍Stable Diffusion的参数设置、api搭建、模型基本原理、训练、部署等内容。所有相关文章会在《Python从零开始进行AIGC大模型训练与推理》中进行更新。

到此这篇关于AI图片生成Stable Diffusion环境搭建与运行的文章就介绍到这了,更多相关AI图片生成Stable Diffusion内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关文章