stable-diffusion-AI画图软件常见报错的解决方案
听说AI软件造成了不少人失业(例如游戏画图工作室、电影海报工作室、语言文字编辑、撰稿人等),没有被裁的朋友都被公司要求必须会使用AI软件。即使没有被AI冲击的朋友,也是时候可以开始学点AI软件知识了,因为去年(2022年)AI软件的初步爆发是已经到来的AI技术革命的开端和前菜,未来会有越来越多的AI软件出现,利用AI软件可以轻松高效解决很多日常工作中遇到的问题。例如随意生成真人级的照片(下图是用16GB内存的Macbook Pro-M1芯片版绘制的512X712分辨率的AI图片)。

如果你觉得上图的分辨率不够高,下图AI生成的1024x1424分辨率的局部照片,是不是比上图更清晰一点。AI软件可以生成比下图更高分辨率的媲美真实照片的AI图片。AI生成以假乱真的照片都不是问题,所以游戏场景画图师、室内设计绘图师、电影海报绘图师这些画图工作者从去年底开始大量被AI画图软件取代,下岗的朋友听说还比较多的。
下一步被AI取代的工作也许是作曲家(我很好奇AI作曲有没有替代周杰伦的可能?我是周粉,万一今后作曲都是AI完成的,我是不是要变成AI粉?),文字工作者(听说被chatgpt搞下岗的文字工作者也不少),芯片设计工作者(AI可以设计芯片,请看不久前中科院的用AI设计芯片的新闻),AI其实不是近几年才出现的,其实已经应用很多很多年的天气预报采用的就是AI预测,也许那时候不叫AI预测,叫计算机模型预测?
多学点AI软件是没错的,本文介绍目前大热的stable diffusion-AI画图软件的常见报错解决方案。

1、由于模型文件出错导致的报错(换个正常的模型就正常出图,使用错误的模型文件就报错)
某天使用stable diffusion软件,发现又抽风了:

报错信息如下:
modules.devices.NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, Settings > Stable Diffusion /p>
网上已经有叫做一位名字叫做renaudbiborg的网友给出了这个问题的解决方案,就是加上--disable-nan-check 这个参数,怎么加呢?在终端输入下面的命令打开stable diffusion软件就行了:
python3 launch.py --xformers --disable-nan-check

也就是将--disable-nan-check接到python3 launch.py --xformers后面,命令如下:
python3 launch.py --xformers --disable-nan-check
使用python3 launch.py --xformers --disable-nan-check这个命令之后,是不报错了,但是画出来的图片是黑色的,看下图。

但是换成另外一个模型是正常的(见下图),这个奇怪的问题,上面的那位名字叫做renaudbiborg的网友已经说过了。

后来我发现,是我用u盘将这个模型文件拷贝到stable diffusion软件的model文件夹下的时候,模型文件错误导致的(u盘未退出就拔掉u盘,导致模型文件还未完全拷贝到u盘就拔掉u盘,所以就导致这个模型文件是错误的,linux系统还是建议退出u盘后再拔u盘,因为u盘写入文件的时候,你拔掉它,它不会提示你文件没有完全写入完毕的,但是你使用“弹出u盘”按钮的话,如果它还正在写入文件的话,它会提示你文件未写入完毕)。
2、勾选“面部修复”Restore faces时报错
报错信息:
RuntimeError: unexpected EOF, expected 1987209 more bytes. The file might be corrupted.
解决方案我是参考了网上一位名叫YuSitong1999 的朋友的解决方法(见下图),删除stable-diffusion-webuirepositoriesCodeFormerweightsfacelib文件夹下面的所有文件,然后重新画图(这时候要保证网络通畅,因为它会自动下载文件,如果网络不通,下次还会报错):

重新画图后,软件会自动下载下面的两个文件,无需手动下载:

3、由于英伟达显卡造成的无法使用stable diffusion(这个原因最常导致stable diffusion崩溃,特别是使用linux操作系统的朋友几乎每2个月必遇到这个问题,不要问为什么,在linux系统上使用英伟达显卡的朋友都懂)
cd到stable diffusion目录下,然后用python3 launch.py --xformers启动stable diffusion软件时,如果出现类似下图的报错,也就是出现类似Torch is not able to use GPU的报错,你就要检查一下,英伟达是否又更新驱动了,英伟达每次更新启动,Linux系统的英伟达显卡基本上就会出现一些问题(linux是个免费操作系统,人家就是希望搞点东西出来,好让那些使用linux的都改用windows,估计英伟达和windows是高级战略合作伙伴
)。
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check

看下图,图形那一栏,本来是nvidia却变成llvmpipe,代表要重新安装英伟达的驱动了。

要重新安装英伟达驱动,先在“软件和更新”界面(见下图)看看能否通过点击下图的“应用更改”按钮进行安装。

如果在上图无法安装的话,按照我下面介绍的四个步骤进行安装。下面四个步骤都是在“终端”进行操作。
第一步、停止nvidia驱动
sudo systemctl stop nvidia-persistenced
第二步、卸载nvidia驱动
sudo apt-get remove --purge nvidia-*
第三步、更新系统引导配置
sudo update-initramfs -u
第四步、cd到NVIDIA-Linux-x86_64-535.86.05.run文件夹下,然后执行下面的命令安装驱动程序,注意:NVIDIA-Linux-x86_64-535.86.05.run文件是在英伟达官网下载的GTX3060的最新驱动文件,你下载的文件也许不是叫NVIDIA-Linux-x86_64-535.86.05.run,反正“sudo ./你下载的驱动文件名”然后回车即可。
sudo ./NVIDIA-Linux-x86_64-535.86.05.run
运行上面的sudo ./NVIDIA-Linux-x86_64-535.86.05.run后,就会出现下图的界面,按照提示安装驱动即可。

驱动安装成功后,nvidia-smi回车会显示下图的界面,显示下图的界面代表驱动安装成功了:

4、AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'出错的解决方法
如果你用python3 launch.py --xformer来启动stable diffusion软件,出现这个问题的话,可以用下面的方法解决:
先编辑 crypto.py 文件,使用 # 注释掉有问题的行(我后来发现这一步不做也行),再用下面的两个命令升级 PyOpenSSL(运行下面的两条命令即可解决问题)。
pip install pip --upgrade
pip install pyopenssl --upgrade
总结
stable diffusion是一个免费的AI绘图软件,因为免费,所以经常会遇到这样那样的问题。上面的几个报错是我在使用stable diffusion软件过程中经常遇到的,给大家一个参考。
全文完,谢谢观看。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

弗老大
校验提示文案
今天适合买买买
校验提示文案
kevingame
校验提示文案
kevingame
校验提示文案
kevingame
校验提示文案
kevingame
校验提示文案
今天适合买买买
校验提示文案
弗老大
校验提示文案