使用Stable Diffusion WebUI API执行img2img,图像尺寸无意中发生变化

问题描述 投票:0回答:1

我正在编写一个脚本来通过 API 生成 Controlnet Canny 地图图像。
我注意到从 API 返回的图像尺寸小于原始图像尺寸。

原图尺寸:

(719, 899)

响应的地图图像尺寸:
(712, 896)

但是,由于我用payload的“宽度”和“高度”设置了原始图像大小,所以我不明白为什么会出现这种结果。

我在这个问题上花了几天时间,没有任何好的结果。
有谁知道解决办法吗

这句话是机器翻译的,所以如果看起来不自然,我很抱歉。

image = Image.open(image_path)

with io.BytesIO() as img_bytes:
    image.save(img_bytes, format='PNG')
    img_b64 = base64.b64encode(img_bytes.getvalue()).decode()

payload = {
    "steps": 1,
    "sampler_name": "Euler a",
    "denoising_strength": 0,
    "restore_faces": False,
    "resize_mode": 0,
    "init_images": [img_b64],
    "width": image.width,
    "height": image.height,
    "alwayson_scripts": {"ControlNet": {"args": [
        {
            "control_mode": 0,
            "enabled": True,
            "guidance_end": 1,
            "guidance_start": 0,
            "pixel_perfect": False,
            "processor_res": 512,
            "resize_mode": 1,
            "threshold_a": 100,
            "threshold_b": 135,
            "weight": 1,
            "module": "canny",
            "model": "control_canny-fp16 [e3fe7712]",
        }
    ]}}
}

response = requests.post(url=f'{url}/sdapi/v1/img2img', json=payload)
r = response.json()

map_image = Image.open(io.BytesIO(base64.b64decode(r['images'][1].split(",", 1)[0])))
root, ext = os.path.splitext(image_path)
basename = os.path.basename(root)
save_path = os.path.join(
    tools_dir, "canny_dst", basename+ext)
map_image.save(save_path)

环境:
我正在使用 Forge 版本。
除内置扩展之外的扩展均被禁用。

"Platform": "Windows-10-10.0.19045-SP0",
"Python": "3.10.9",
"Version": "f0.0.17v1.8.0rc-latest-273-gb9705c58",
"Commit": "b9705c58f66c6fd2c4a0168b26c5cf1fa6c0dde3",
"Commandline": [
    "launch.py",
    "--port",
    "7861",
    "--always-gpu",
    "--api"
],

我还尝试了“resize_mode”的值1,2,3,但结果没有改变。
另外,即使我删除了 Controlnet 的“alwayson_scripts”部分,结果也没有改变。

python-3.x stable-diffusion
1个回答
0
投票

这是因为它必须这样做。 unet 使用 64x64,所以你的图像必须是 8 的倍数。如果不是,webui/forge 会自动为你裁剪它(很久以前它没有,你会收到一个错误代码)

© www.soinside.com 2019 - 2024. All rights reserved.