直接用中文写提示词的Stable Diffusion扩展:sd-prompt-translator发布

Posted 深蓝居

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直接用中文写提示词的Stable Diffusion扩展:sd-prompt-translator发布相关的知识,希望对你有一定的参考价值。

最近在研究AIGC,先是玩了一下Midjourney,后来Midjourney免费额度用完了,也不再开放免费额度给新用户使用了,于是转而研究Stable Diffusion。
Stable Diffusion(以下简称SD)的最大优点就是开源免费,而且对硬件的要求不高,Mac M1芯片就能跑,当然如果是高端N卡当然是更好了。关于Stable Diffusion的介绍和使用方法,我另外用视频介绍,今天主要介绍SD的扩展(插件)。
官方的SD已经内部集成了多个扩展,比如Lora就是原生集成的,所有官方内部集成的扩展放在了stable-diffusion-webui/extensions-builtin文件夹,而用户自定义安装的扩展是放在stable-diffusion-webui/extensions文件夹。
在默认情况下,SD只支持使用英文+有限的Emoji颜文字来作为提示词(Prompt),对于我们国人尤其是英语不好的国人非常不友好。为此,有些扩展能够支持在界面上让用户输入英文,然后翻译成英文,用户再手动把翻译后的Prompt添加到提示词文本框中,这种使用方式任然不够方便,我们追求的是真正用中文直接写提示词,而不是要在界面上复杂的操作。另外很多扩展其实是WebUI前端增加的特性,对API无效,如果我们要基于WebAPI开发第三方AIGC应用,那么就无法使用中文提示词。于是我开发了这款SD的扩展:
本扩展基于ParisNeo/prompt_translator扩展进行的二次开发,增加了一些新特性,对国人和AIGC开发者更友好。

一、主要有以下特点:

1. 直接使用中文编写提示词,即使完全不会英文都不受影响。

以下是使用中文写提示词的示例:

2.完美兼容SD的提示词语法,支持中英文混输。

对于SD提示词语法中的权重括号、Lora尖括号等语法都支持,也支持中文和英文混着输入。以下是混输的示例:

3.本地自然语言处理模型进行翻译,使用时无需连接百度翻译、Google翻译等服务,可离线使用。

本插件在首次安装使用时需要联网下载约2.4G的翻译模型到本地,这个过程可能会花费几分钟到几十分钟的时间,具体视网络情况而定。下载模型保存在stable-diffusion-webui/extensions/sd-prompt-translator/scripts/models。如果重启了SD,那么再次使用时会在加载模型时耗费几秒的时间,然后接下来使用就很顺畅了。
因为接下来实际使用时都是使用本地模型进行翻译,没有连接百度翻译、谷歌翻译等互联网服务,所以可以完全离线使用。

4.支持自定义翻译字词。

如果有一些特定词汇翻译错误,或者是某些触发词,我们可以使用自定义翻译字词功能。在stable-diffusion-webui/extensions/sd-prompt-translator/scripts/translations.csv中保存了大量常用的中文触发词对应的英文Prompt,你可以手动修改该文件内容,增加自己的自定义翻译内容。

5.默认翻译中文,可选择翻译其他50多种语言。

除了默认的中文外,你如果熟悉其他语言,也可以设置其他语言为提示词的输入语言,具体设置在WebUI界面的“提示词翻译器”的“源语言”中设置。以下是设置成日语后,使用日语提示词生成图像的示例:

6.API支持,对开发AIGC应用更友好。

如果我们启用了API,那么在txt2img这个API调用时,可以直接使用中文字符串作为promt参数,以下是通过Postman调用API的示例,我们从命令行中也可以看到,我们的提示词被自动翻译成了系统能识别的英文Prompt,并产生了想要的图片。

二、如何安装使用:

1.打开Stable Diffusion,并切换到扩展Extensions标签页,并在下方选择"从网址安装" Install from URL,然后输入本扩展的地址:

然后点击“安装”Install按钮。

2.安装成功后切换到“已安装”Installed,确保“sd-prompt-translator”被启用,并点击“应用并重启应用界面”Apply and restart UI按钮。

重启WebUI后我们切换到文生图界面,可以看到我们的扩展出现在左下方:

3.本插件在安装并启用成功后就可以直接使用中文输入提示词框进行AIGC创作了。默认是没有开启负面提示词的翻译的,所以如果想在负面提示词中也使用中文,需要打开WebUI界面中的“提示词翻译器”框中的“翻译负面提示词”选项。

4.在提示词输入框中输入中文,点击生成按钮,系统如果是第一次使用,会自动从网上下载翻译用的语言模型,该模型较大,可能会耗费很长时间,Stable Diffusion的命令行下可以看到下载进度。模型下载只是第一次运行才需要,后续再使用就都是本地模型进行翻译。至此,我们就可以愉快的使用中文编写提示词了!

如果想知道系统执行的时候翻译出来的英文提示词是什么,在命令行模式下,或者在出图的右下角会显示英文提示词的内容。
 
 

打开stable diffusion webui时,提示缺少clip或clip安装不上的解决方案(windows下的操作)

1.问题描述

  • 打开stable diffusion webui时,提示缺少clip或clip安装不上

2.解决方案

  • 原因:stable diffusion webui环境中的clip其实是open_clip,不能用pip install clip安装
  • 解决方法是直接到github下载 open_clip 代码到本地,并进行本地安装
  • 因为stable diffusion会在其根目录创建虚拟python环境venv,因此安装方法与github有所不同。可参考以下方法:
    • 从github将open_clip的源文件下载到本地,这一步可以使用git clone也可以直接下载zip文件。下载后,解压(如果用git clone就不需要)到d:\\\\stable-diffusion-webui\\venv\\Scripts目录下(stable-diffusion-webui是你stable diffusion webui的根目录,这个地址只是我电脑中的,请根据自己放的位置调整)。
    • 打开cmd,cd到d:\\\\stable-diffusion-webui\\venv\\Scripts\\open_clip-main下。
    • 使用d:\\\\stable-diffusion-webui\\venv\\Scripts\\python.exe setup.py build install安装open_clip。
  • 安装完毕后,再打开stable diffusion根目录的webui-user.bat会发现不再报错。如果遇到其他github上的模块无法安装也可以用同样的方法。
  • gfpgan安装失败的解决方法:使用stable diffusion webui时,安装gfpgan失败的解决方案(windows下的操作)
  • 注意:
    • 安装open_clip等依赖包时,一定要将包安装到虚拟环境中。
    • 运行stable diffusion webui的时候,一定要确保用的是虚拟环境。
    • 虚拟环境就装在自己的stable-diffusion-webui根目录下的venv文件夹下

3.从评论区总结的一些容易出错的地方和解决方法

3.1 下载包时,网络超时,导致错误

  • 错误信息形式通常如下:
Downloading https://files.pythonhosted.org/packages/9a/ff/0db148510417e6aa9797d82c2bda271297035f69c30f5e188398ee16c131/timm-0.8.15.dev0-py3-none-any.whl#sha256=4e69077241bac6fc04e9b5f28b5290f153ebbd6f164a01884dabffafe505c2f1
error: The read operation timed out
  • 这种情况是安装一个python包时,要安装其他python依赖包,但因为网络原因连不上,因为下载这些python包的网站是国外的。解决方法是为python pip配置镜像源(具体方法可以百度,已经有很多现成的方法,只要照做就好),这样以后用pip安装东西就可以从国内的镜像网站下载。

3.2 成功安装open_clip之后,打开webui-user.bat他还是要installing clip依然报错

  • 先使用命令d:\\\\stable-diffusion-webui\\venv\\Scripts\\pip install clip,然后再打开webui-usr.bat。如果无法解决问题,再往下看。
  • stable diffusion webui是要使用虚拟环境(venv)运行的。要确保用的是venv运行。具体做法是点击webui-user.bat后,命令行第一行是不是类似这样的:“venv “G:\\AI作画\\stable-diffusion-webui\\venv\\Scripts\\Python.exe””。如果是的话,说明确实是在虚拟环境运行。
  • 另外也要确保安装open_clip等依赖包时,一定要将包安装到虚拟环境中
    • 可以使用命令d:\\\\stable-diffusion-webui\\venv\\Scripts\\pip.exe list查看包列表,看看你虚拟环境是否安装open_clip成功,里面能找到open-clip-torch或open-clip的字样就是安装成功了。
  • 以上都做好后,还是提示installing clip,可以使用d:\\\\stable-diffusion-webui\\venv\\Scripts\\python.exe d:\\\\stable-diffusion-webui\\launch.py看是否能运行。
    • 当然,也可以先试用d:\\\\stable-diffusion-webui\\venv\\Scripts\\activate命令激活虚拟环境,如果命令行每行开头有(venv)的字样说明激活成功。激活成功后,直接使用python d:\\\\stable-diffusion-webui\\launch.py即可运行。

3.3 windows下安装sentencepiece包出错

  • 显示以下信息:
Best match: sentencepiece 0.1.97
Processing sentencepiece-0.1.97.tar.gz
Writing C:\\Users\\a1885\\AppData\\Local\\Temp\\easy_install-8tm96bd5\\sentencepiece-0.1.97\\setup.cfg
Running sentencepiece-0.1.97\\setup.py -q bdist_egg --dist-dir C:\\Users\\a1885\\AppData\\Local\\Temp\\easy_install-8tm96bd5\\sentencepiece-0.1.97\\egg-dist-tmp-5jh8truc
warning: no files found matching 'VERSION.*'
cl: 命令行 warning D9025 :正在重写“/MD”(用“/MT”)
sentencepiece_wrap.cxx
src/sentencepiece/sentencepiece_wrap.cxx(2822): fatal error C1083: 无法打开包括文件: “sentencepiece_processor.h”: No such file or directory
error: Setup script exited with error: command 'D:\\\\Microsoft Visual Studio\\\\2019\\\\Community\\\\VC\\\\Tools\\\\MSVC\\\\14.29.30133\\\\bin\\\\HostX86\\\\x64\\\\cl.exe' failed with exit code 2
  • 原因是安装sentencepiece包的时候,需要使用sentencepiece_processor.h文件来编译c++库,但你的系统里找不到这个文件。这种情况下,你可以到github上(https://github.com/google/sentencepiece/releases)下载已经编译好的Python模块,就是里面后缀名为whl的文件。虚拟环境的python版本是3.10,使用64位的windows系统,intel的芯片,那你要下载sentencepiece-0.1.97-cp310-cp310-win_amd64.whl。下载后安装到虚拟环境可以用d:\\\\stable-diffusion-webui\\venv\\Scripts\\python.exe -m pip install whl文件的绝对路径安装whl包。前面虚拟环境的路径要根据你的情况调整

PS:如果还有其他问题,欢迎到评论区讨论。

以上是关于直接用中文写提示词的Stable Diffusion扩展:sd-prompt-translator发布的主要内容,如果未能解决你的问题,请参考以下文章

打开stable diffusion webui时,提示缺少clip或clip安装不上的解决方案(windows下的操作)

破解MyEclipse2015 stable3.0(亲测可用)

无界AI绘画基础教程,和Midjourney以及Stable Diffusion哪个更好用?

Stable Diffusion原理详解

AI绘画——使用stable-diffusion生成图片时提示RuntimeError: CUDA out of memory处理方法

jQuery toastr提示简单实现