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

 更新时间:2023年05月08日 09:50:53   作者:Coding的叶子  
Stable Diffusion是一种基于扩散过程的生成模型,由Ge et al.在2021年提出,该模型利用了随机变量的稳定分布,通过递归地应用扩散过程来生成高质量的图像,这篇文章主要介绍了AI图片生成Stable Diffusion环境搭建与运行,需要的朋友可以参考下

        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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pytorch实现加载保存查看checkpoint文件

    pytorch实现加载保存查看checkpoint文件

    这篇文章主要介绍了pytorch实现加载保存查看checkpoint文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python3实现监控新型冠状病毒肺炎疫情的示例代码

    Python3实现监控新型冠状病毒肺炎疫情的示例代码

    这篇文章主要介绍了Python3实现监控新型冠状病毒肺炎疫情的示例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Python+django实现简单的文件上传

    Python+django实现简单的文件上传

    这篇文章主要为大家详细介绍了Python+django实现简单的文件上传的相关代码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 详解Python中for循环的定义迭代方法

    详解Python中for循环的定义迭代方法

    for循环用于迭代序列(即列表、元组、字典、集合或字符串)。for 语句的写法如从对象开始按顺序给变量赋值,元素个数重复这个过程。对象可以是列表(数组)、元组、字符串等。本文将详细讲解Python中for定义迭代方法详解,需要的可以了解一下
    2022-04-04
  • Python实现栈和队列的简单操作方法示例

    Python实现栈和队列的简单操作方法示例

    这篇文章主要介绍了Python实现栈和队列的简单操作方法,结合实例形式详细分析了Python栈和队列的原理与简单实现技巧,需要的朋友可以参考下
    2019-11-11
  • pytorch LayerNorm参数的用法及计算过程

    pytorch LayerNorm参数的用法及计算过程

    这篇文章主要介绍了pytorch LayerNorm参数的用法及计算过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python使用Phantomjs截屏网页的方法

    Python使用Phantomjs截屏网页的方法

    今天小编就为大家分享一篇Python使用Phantomjs截屏网页的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 手把手教你Python抓取数据并可视化

    手把手教你Python抓取数据并可视化

    很多小伙伴在提到python数据可视化的时候第一反应就是matplotlib库,但实际上python还有很多很好用的数据可视化的库,下面这篇文章主要给大家介绍了关于如何利用Python抓取数据并可视化的相关资料,需要的朋友可以参考下
    2022-05-05
  • python xlsxwriter模块的使用

    python xlsxwriter模块的使用

    这篇文章主要介绍了python xlsxwriter模块的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python轻量级定时任务调度APScheduler的使用

    Python轻量级定时任务调度APScheduler的使用

    Apscheduler是一个基于Quartz的python定时任务框架,本文主要介绍了Python轻量级定时任务调度APScheduler的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论