当前位置:   article > 正文

【MomoTalk之Stable Diffusion】调用webui的文生图API_stable diffusion webui没有文生图接口

stable diffusion webui没有文生图接口

        上一篇博文里成功部署了webui,并且调配出了满意的文生图效果,那么接下来就是向未来的前端提供一个方法,允许随时通过webui生成图片。这就不得不用到webui的API了。

        根据webui官方仓库的Wiki,它已经提供了众多方法可供调用,其中就包括text2img文生图,且直接调用API可以充分设置各项参数,完美满足我们的需求。

带参数启动webui

        根据wiki的指引,我在终端输入了带API启动的命令:

webui-user.bat --api

接着打开http://127.0.0.1:7860/docs/,也即官方提供的API列表,然而却并没有找到上图的两个API。几经摸索,我在issue里找到了解法,编辑webui-user.bat文件,修改其中的启动参数行:

set COMMANDLINE_ARGS=--api

在这里加入“--api”这一参数,并正常启动webui-user.bat,这才终于见到了text2imgapi。

借助第三方开源库调用API

        官方在API文档里给出了许多可以直接调用的接口,但我选择采用第三方仓库sdwebuiapi来调用,这个库对官方的接口加以封装,使得调用起来更加简单粗暴了。这个库可以直接通过pip方便地安装,而Git仓库里也给出了使用的示例,用起来还是很轻松的。

        工具齐全了,那就该敲点代码实际应用了。下面的代码提供了一个简单的方法,预先写死生图的参数(因为没有改变的需求),传入从GLM处提取到的角色表情描述文本,将这几段文本提示词插入prompt当中,接着调用API进行生图,最后把图片存储到本地并返回文件位置,以供前端后续使用。

  1. import webuiapi
  2. def draw_expression(charactor_expression):
  3. # 本地部署的默认api
  4. api = webuiapi.WebUIApi(host = '127.0.0.1',
  5. port = 7860,
  6. sampler = 'Euler a',
  7. steps = 20)
  8. # 调用api提供的txt2img接口,在通用prompt中插入从GLM处获取的表情描述
  9. prompt = "(masterpiece, best quality:1), 1girl, solo, arisu, halo,"
  10. for e in charactor_expression:
  11. prompt += e + ','
  12. prompt += "white background <lora:BlueSD:1>, <lora:tendouAliceV1:1>"
  13. result1 = api.txt2img(prompt = prompt,
  14. negative_prompt = "noisy, blurry, grainy,text, graphite, abstract, glitch, deformed, mutated, ugly, disfigured, (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), low contrast",
  15. seed = -1,
  16. styles = ["animate"],
  17. cfg_scale = 8
  18. )
  19. # result1.image.show()
  20. # 存储输出的图片,并返回文件名
  21. if len(charactor_expression) == 0:
  22. save_file_name = './outputs/output_no_expression'
  23. else:
  24. save_file_name = './outputs/output'
  25. for i in charactor_expression:
  26. save_file_name += '_' + i.replace(" ", "_")
  27. save_file_name += '.png'
  28. result1.image.save(save_file_name)
  29. return save_file_name
  30. test_expression = ['Greet happily', 'Rub your hands']
  31. img_file_Location = draw_expression(charactor_expression = test_expression)
  32. print('output image saved to ' + img_file_Location)

        万事俱备,启动webui,运行代码,可见在项目文件夹的指定位置果然得到了所需的图片。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/646607
推荐阅读
相关标签
  

闽ICP备14008679号