当前位置:   article > 正文

stable_diffusion api调用sdxl1.0模型示例_stable diffusion xl 1.0 api

stable diffusion xl 1.0 api

如何使用sd1.0模型

在api使用sdxl1.0时我们会发现在步骤和内容上会和我们使用sd1.5存在不同,同时,sdxl1.0对显卡要求较高。xl1.0拥有出色的句子识别功能(这是对前文儿童故事绘图的一次尝试),强大的风格模块,堪比lora。

0.模型不同(废话):笔者采用sd_xl_base_1.0.safetensors,现阶段xl1.0微调模型有了一定发展,但在丰富度和数量上还是sd1.5占据优势

1.分辨率扩大:eg512*512 to 1024*1024(不需要放大模型)

2.在关键词上可以识别句子(英文),但也可以采用原有形式,不需要再输入质量画面(masterpice,best quality)等提示词也可以有很好的效果,负面提示词也可以做到少输入。

3.使用风格关键词(很重要):出现"style"参数,一些可选风格如下(webui中截图)

4.生成时要使用refiner:sd_xl_refiner_1.0.safetensors,refiner有模型选择,选择时机总步数的多少就开始切换,模型(20步,0.8,16步开始后使用refiner选择的模型)

代码实现

代码

  1. import requests
  2. import base64
  3. from PIL import Image
  4. import io
  5. def stablediffusionXl(file_path,prompt='',nep='',url='http://127.0.0.1:7860'):
  6. txt2imge_date={
  7. 'prompt':prompt,
  8. 'sampler_name':'Euler a',
  9. "style": "Fairy Tale",
  10. 'steps':20,
  11. 'batch_size':1,
  12. 'height':1024,
  13. 'width':1024,
  14. 'cfg_scale':7,
  15. "override_settings": {
  16. "sd_model_checkpoint": "xd1.0\sd_xl_base_1.0.safetensors [31e35c80fc]",
  17. "sd_vae":"sdxl_vae.safetensors"
  18. },
  19. #下方使用refiner
  20. "refiner": True,
  21. 'refiner_checkpoint':'xd1.0\sd_xl_refiner_1.0.safetensors [7440042bbd]',
  22. 'refiner_switch_at':0.8,
  23. #'negative_prompt':'(negative_hand-neg:1.2),(((bad-hands-5))),EasyNegative,FastNegativeV2,BadNegAnatomyV1-neg,EasyNegative,NSFW,logo,text,blurry,low quality,bad anatomy,sketches,lowres,normal quality,monochrome,grayscale,worstquality,signature,watermark,cropped,bad proportions,out of focus,username,bad face'+nep,
  24. }
  25. print('\n正在生成图片...')
  26. response=requests.post(url=f'{url}/sdapi/v1/txt2img',json=txt2imge_date)
  27. image=Image.open(io.BytesIO(base64.b64decode(response.json()['images'][0])))
  28. image.show()
  29. print('图片生成完成!')
  30. image.save(file_path)
  31. if __name__ == '__main__':
  32. stablediffusionXl('test.jpg','Two birds, live in the same tree. They are best friends and sing together all day long. However one day suddenly one bird is shot by an arrow from a hunter rendering it unable to fly. The other very worried decides to bring it into the human world for help. Characters: Bird A & Bird B Scenery: Under the tree Emotion: Worry Action: Bird B saves Bird A')

 问题:如何使用我们不知道的api参数


与先前的api模块相比,这里明显多了许多字段,我们在webui中的操作就是打勾选中,调整参数,但在api调用中我们找不到掉用方法怎么办?

只能求助源码AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (github.com)这一个是git上的源码,我们可以把它下载下来。这个文件也存在在我们安装的秋叶整合包,位置也是一样的,我们用vscode打开整个文件

便能找到其中stable-diffusion-webui-master\modules\api,这里就是整个说明书了。

找到api下的txt2image:

self.add_api_route("/sdapi/v1/txt2img", self.text2imgapi, methods=["POST"], response_model=models.TextToImageResponse)

选中self.text2imgaapi,右键点击后选择转到定义,便可找到它在哪了

同样我们找到这里到底应用的了什么

 展示一部分这里的代码,这里按照这样的格式:字段:类型=初始值

  1. class StableDiffusionProcessingTxt2Img(StableDiffusionProcessing):
  2. enable_hr: bool = False
  3. denoising_strength: float = 0.75
  4. firstphase_width: int = 0
  5. firstphase_height: int = 0
  6. hr_scale: float = 2.0
  7. hr_upscaler: str = None
  8. hr_second_pass_steps: int = 0
  9. hr_resize_x: int = 0
  10. hr_resize_y: int = 0
  11. hr_checkpoint_name: str = None
  12. hr_sampler_name: str = None
  13. hr_prompt: str = ''
  14. hr_negative_prompt: str = ''
  15. force_task_id: str = None
  16. cached_hr_uc = [None, None]
  17. cached_hr_c = [None, None]
  18. hr_checkpoint_info: dict = field(default=None, init=False)
  19. hr_upscale_to_x: int = field(default=0, init=False)
  20. hr_upscale_to_y: int = field(default=0, init=False)
  21. truncate_x: int = field(default=0, init=False)
  22. truncate_y: int = field(default=0, init=False)
  23. applied_old_hires_behavior_to: tuple = field(default=None, init=False)
  24. latent_scale_mode: dict = field(default=None, init=False)
  25. hr_c: tuple | None = field(default=None, init=False)
  26. hr_uc: tuple | None = field(default=None, init=False)
  27. all_hr_prompts: list = field(default=None, init=False)
  28. all_hr_negative_prompts: list = field(default=None, init=False)
  29. hr_prompts: list = field(default=None, init=False)
  30. hr_negative_prompts: list = field(default=None, init=False)
  31. hr_extra_network_data: list = field(default=None, init=False)

 我们找到了StableDiffusionProcessingTxt2Img,下面就是一些特有的参数,但上面还有一层StableDiffusionProcessing我们往下,找到最源头的类代码

  1. class StableDiffusionProcessing:
  2. sd_model: object = None
  3. outpath_samples: str = None
  4. outpath_grids: str = None
  5. prompt: str = ""
  6. prompt_for_display: str = None
  7. negative_prompt: str = ""
  8. styles: list[str] = None
  9. seed: int = -1
  10. subseed: int = -1
  11. subseed_strength: float = 0
  12. seed_resize_from_h: int = -1
  13. seed_resize_from_w: int = -1
  14. seed_enable_extras: bool = True
  15. sampler_name: str = None
  16. batch_size: int = 1
  17. n_iter: int = 1
  18. steps: int = 50
  19. cfg_scale: float = 7.0
  20. width: int = 512
  21. height: int = 512
  22. restore_faces: bool = None
  23. tiling: bool = None
  24. do_not_save_samples: bool = False
  25. do_not_save_grid: bool = False
  26. extra_generation_params: dict[str, Any] = None
  27. overlay_images: list = None
  28. eta: float = None
  29. do_not_reload_embeddings: bool = False
  30. denoising_strength: float = None
  31. ddim_discretize: str = None
  32. s_min_uncond: float = None
  33. s_churn: float = None
  34. s_tmax: float = None
  35. s_tmin: float = None
  36. s_noise: float = None
  37. override_settings: dict[str, Any] = None
  38. override_settings_restore_afterwards: bool = True
  39. sampler_index: int = None
  40. refiner_checkpoint: str = None
  41. refiner_switch_at: float = None
  42. token_merging_ratio = 0
  43. token_merging_ratio_hr = 0
  44. disable_extra_networks: bool = False
  45. firstpass_image: Image = None
  46. scripts_value: scripts.ScriptRunner = field(default=None, init=False)
  47. script_args_value: list = field(default=None, init=False)
  48. scripts_setup_complete: bool = field(default=False, init=False)
  49. cached_uc = [None, None]
  50. cached_c = [None, None]
  51. comments: dict = None
  52. sampler: sd_samplers_common.Sampler | None = field(default=None, init=False)
  53. is_using_inpainting_conditioning: bool = field(default=False, init=False)
  54. paste_to: tuple | None = field(default=None, init=False)
  55. is_hr_pass: bool = field(default=False, init=False)
  56. c: tuple = field(default=None, init=False)
  57. uc: tuple = field(default=None, init=False)
  58. rng: rng.ImageRNG | None = field(default=None, init=False)
  59. step_multiplier: int = field(default=1, init=False)
  60. color_corrections: list = field(default=None, init=False)
  61. all_prompts: list = field(default=None, init=False)
  62. all_negative_prompts: list = field(default=None, init=False)
  63. all_seeds: list = field(default=None, init=False)
  64. all_subseeds: list = field(default=None, init=False)
  65. iteration: int = field(default=0, init=False)
  66. main_prompt: str = field(default=None, init=False)
  67. main_negative_prompt: str = field(default=None, init=False)
  68. prompts: list = field(default=None, init=False)
  69. negative_prompts: list = field(default=None, init=False)
  70. seeds: list = field(default=None, init=False)
  71. subseeds: list = field(default=None, init=False)
  72. extra_network_data: dict = field(default=None, init=False)
  73. user: str = field(default=None, init=False)
  74. sd_model_name: str = field(default=None, init=False)
  75. sd_model_hash: str = field(default=None, init=False)
  76. sd_vae_name: str = field(default=None, init=False)
  77. sd_vae_hash: str = field(default=None, init=False)
  78. is_api: bool = field(default=False, init=False)

refiner_checkpoint: str = None
    refiner_switch_at: float = None

我们找到了refiner字段,明白了如何使用refiner,调用时的各种参数设置。明白如何查资料,便可以调用源代码作者的各种方法模型了

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

闽ICP备14008679号