调用带Roop扩展的Stable Diffusion API触发HTTPException的原因?
以下是可能导致HTTPException的几个核心原因:
模型路径错误
你指定的Roop模型路径/sd/stable-diffusion-webui/models/roop/inswapper_128.onnx可能不符合Runpod无服务器容器的实际目录结构。这类环境通常会将SD WebUI挂载在/workspace/stable-diffusion-webui下,建议修改路径为/workspace/stable-diffusion-webui/models/roop/inswapper_128.onnx,同时确认模型文件已正确上传到对应存储位置。Base64图片缺少格式前缀
Roop的API要求图片Base64编码需带有data:image/png;base64,前缀,你当前直接传递了编码后的内容,导致Roop无法识别图片格式。修改代码,在img_base64前拼接前缀:img_base64 = f"data:image/png;base64,{base64.b64encode(img_bytes.getvalue()).decode('utf-8')}"参数冲突
你同时设置了顶层的restore_faces: True和Roop脚本内的面部恢复参数,这两个设置可能触发冲突逻辑。建议移除顶层的restore_faces配置,仅保留Roop内的相关参数。参数类型/顺序不匹配
对照Roop的API参数定义,检查以下几点:- 面部编号
'0'是否应为整数类型0 - 确认
CodeFormer是否在当前Runpod环境中已安装(无服务器环境可能默认未预装该依赖) - 检查
upscaler参数设为None是否符合API要求,部分环境可能需要传递空字符串而非None
- 面部编号
资源依赖缺失
Roop运行依赖onnxruntime等库,Runpod无服务器端点可能未自动加载这些依赖。需要确认在构建端点时,已将Roop扩展的依赖安装命令加入启动脚本中。AlwaysOnScripts格式问题
部分SD WebUI版本要求alwayson_scripts需显式指定enabled字段,尝试修改为:"alwayson_scripts": {"roop": {"enabled": true, "args": args}}
内容的提问来源于stack exchange,提问作者xdobx

