最近想嘗試在本地程式呼叫stablediffusion webui的api來產生圖片,但我發現文檔跟相關文章實在很少,使用自帶的doc範例也跑不動,搞了好一陣,才終於成功~
不知道是大家理解能力太好,還是我理解能力不足,真的覺得那個範例文檔超級陽春的... 這邊來分享一下我是如何使用API生圖的。(僅基本文生圖,更進階的以後有用到再說)
步驟一.開啟SD WebUI API
一定要確認 webui-user.bat 內是否有 --api 參數,要是沒有的話,只能使用基礎的查詢info之類的API,是看不到txt2img這個的
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --listen --api --enable-insecure-extension-access
call webui.bat
使用文字編輯器打開webui-user.bat,確認 set COMMANDLINE_ARGS 內有 --api。確認無誤後,在運行SD WebUI
步驟二. 呼叫API
可以使用POSTMAN來呼叫,或用你正在編寫的程式呼叫(例如:nodejs 的 axios)
模式:[POST]
Endpoint:http://127.0.0.1:7860/sdapi/v1/txt2img (本地默認是這樣)
假如是用POSTMAN,則在Body 選 Raw模式的JSON格式 (等於是application/json)
參數的部分
{ "prompt": "", //提示詞 "negative_prompt": "", //反向提示詞 "styles": [ "" ], "seed": -1, //種子 "subseed": -1, "sd_vae":"sdxl_vae.safetensors", //使用的VAE(這個參數要自己加,官方的doc範例沒寫) "subseed_strength": 0, "seed_resize_from_h": -1, "seed_resize_from_w": -1, "sampler_name": "DPM++ 2M", //使用的採樣器 "scheduler": "Karras", //採樣類型 "batch_size": 1, //批次 "n_iter": 1, "steps": 20, //步數 "cfg_scale": 7, //CFG Scale "width": 512, //寬 "height": 512, //高 "restore_faces": false, //沒特別需求的話,改成false (不然會生出亂圖) "tiling": false, //沒特別需求的話,改成false (不然會生出亂圖) "do_not_save_samples": false, "do_not_save_grid": false, "eta": 0, "denoising_strength": 0, "s_min_uncond": 0, "s_churn": 0, "s_tmax": 0, "s_tmin": 0, "s_noise": 0, "override_settings": {}, "override_settings_restore_afterwards": true, "refiner_checkpoint": "XL-NEW-REAL\\juggernautXL_juggernautX.safetensors", //使用的模型(對應你要用的模型) "refiner_switch_at": 0, "disable_extra_networks": false, "firstpass_image": "string", "comments": {}, "enable_hr": false, "firstphase_width": 512, "firstphase_height": 512, "hr_scale": 1, "hr_upscaler": "string", "hr_second_pass_steps": 0, "hr_resize_x": 0, "hr_resize_y": 0, "hr_checkpoint_name": "string", "hr_sampler_name": "string", "hr_scheduler": "string", "hr_prompt": "", "hr_negative_prompt": "", "force_task_id": "string", "sampler_index": "", //沒用到的話,改成空(官方doc範例默認帶入String,會報錯) "script_name": "", //沒用到的話,改成空(官方doc範例默認帶入String,會報錯) "script_args": [], "send_images": true,//會直接回傳圖片的base64 "save_images": true, //會保存圖片SD(但不會回傳圖片的路徑,用API的話,這個似乎用處不大,除非想留個副本) "alwayson_scripts": {}, "infotext": "string" }
對照了用UI介面的產生圖片的參數,跟用API產生的參數,比對了好久,總算能基礎用API生圖了
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/stablediffusion-webui-api
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記