背景
最近在研究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的扩展:
https://github.com/studyzy/sd-prompt-translator
本扩展基于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,然后输入本扩展的地址:
https://github.com/studyzy/sd-prompt-translator
然后点击“安装”Install按钮。
如果访问不了https://github.com/studyzy/sd-prompt-translator,直接把插件zip包下载好,拷贝到/mnt/stable-diffusion/stable-diffusion-webui/extensions下面也可以的。
2.安装成功后切换到“已安装”Installed,确保“sd-prompt-translator”被启用,并点击“应用并重启应用界面”Apply and restart UI按钮。
重启WebUI后我们切换到文生图界面,可以看到我们的扩展出现在左下方:
3.本插件在安装并启用成功后就可以直接使用中文输入提示词框进行AIGC创作了。默认是没有开启负面提示词的翻译的,所以如果想在负面提示词中也使用中文,需要打开WebUI界面中的“提示词翻译器”框中的“翻译负面提示词”选项。
4.在提示词输入框中输入中文,点击生成按钮,系统如果是第一次使用,会自动从网上下载翻译用的语言模型,该模型较大,可能会耗费很长时间,Stable Diffusion的命令行下可以看到下载进度。模型下载只是第一次运行才需要,后续再使用就都是本地模型进行翻译。至此,我们就可以愉快的使用中文编写提示词了!
如果想知道系统执行的时候翻译出来的英文提示词是什么,在命令行模式下,或者在出图的右下角会显示英文提示词的内容。
三、如何安装Tips
插件启用时,会从 hugggingface.co下载transformers库对应的模型,但是因为 hugggingface.co网站在国内已经被墙,会出现下面的错误信息:
'HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /THUDM/chatglm-6b/resolve/main/tokenizer_config.json (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f94adf1daf0>, 'Connection to huggingface.co timed out. (connect timeout=10)'))' thrown while requesting HEAD https://huggingface.co/THUDM/chatglm-6b/resolve/main/tokenizer_config.json
解决方法是,可以设置下环境变量到hugggingface.co的镜像站,再启动,就可以从https://hf-mirror.com正常下载模型文件了。
# 设置下环境变量到hugggingface.co的镜像站https://hf-mirror.com export HF_ENDPOINT=https://hf-mirror.com cd /mnt/stable-diffusion/stable-diffusion-webui/ bash webui.sh -f --api --skip-torch-cuda-test --no-half --precision full --use-cpu all --listen --enable-insecure-extension-access