Stable Diffusion插件ADetailer API图生图参数异常及编写规范咨询
ADetailer API图生图参数问题排查与正确写法
问题排查
你的代码存在两个核心问题导致ADetailer未生效:
- 去噪强度参数类型错误:
denoising_strength是包含4个值的数组,但Stable Diffusion图生图接口和ADetailer的ad_denoising_strength都要求单个数值,数组会导致参数解析失败,直接跳过ADetailer执行。 - ADetailer参数结构不符合规范:ADetailer的
args数组需要以布尔值(表示是否启用插件)开头,后续才是检测器配置对象的数组,你的写法缺少启用标识,且配置对象的层级错误。
修正后的参数代码
// 从数组中选取单个去噪强度值,可根据需求选择对应索引 const selectedDenoisingStrength = denoisingStrength[0]; const params = { ...sdParameters, init_images: [image.toString("base64")], denoising_strength: selectedDenoisingStrength, // 使用单个数值 width: adjustWidth, height: adjustHeight, alwayson_scripts: { ADetailer: { args: [ true, // 必须添加的启用标识 [ { ad_model: "face_yolov8n.pt", ad_mask_max_ratio: 0.03, ad_denoising_strength: selectedDenoisingStrength, // 同样使用单个数值 // 可按需添加ad_prompt、ad_negative_prompt等精细化参数 } ] ] } } };
ADetailer参数正确编写指南
- 基础结构要求:
alwayson_scripts.ADetailer.args必须遵循[启用状态, 检测器配置数组]格式:- 第一个元素是布尔值
true(启用)或false(禁用) - 第二个元素是数组,每个元素对应一个检测器的配置对象
- 第一个元素是布尔值
- 核心参数说明:
ad_model:指定使用的检测器模型,比如face_yolov8n.pt、hand_yolov8n.pt等,需与WebUI中ADetailer目录下的模型名完全一致ad_denoising_strength:检测区域的去噪强度,取值0-1,建议与全局去噪强度保持一致或略低ad_mask_max_ratio:最大蒙版比例,超过该比例的检测目标会被忽略,取值0-1ad_prompt/ad_negative_prompt:针对检测区域的正负提示词,用于精细化修正目标细节
- 注意事项:
- 所有数值类型参数必须是单个数字,不能传入数组
- 确保ADetailer插件已在Stable Diffusion WebUI中正确安装并启用
内容的提问来源于stack exchange,提问作者Daiki Masaoka
相关产品推荐
相关产品推荐

