stable diffusion controlnet前处理中的图像resize

在SD controlnet应用中,一般都要先安装controlnet_aux,并在项目代码中import相关前处理模块,如下所示。

在对control image进行前处理(比如找边缘,人体特征点)之前,往往会图像进行resize,这个resize函数定义在controlnet_autx中util.py中,无论是scribble,还是openpse或其它功能,都会调用这段resize代码。同时如果调用pipe接口时没有显示指定图像生成的宽和高,那么生成的图像size将会基于control image前处理后的宽高值。 所以这里重点讨论下controlnet前处理中的resize函数。

先上代码:

def resize_image(input_image, resolution):
    H, W, C = input_image.shape
    H = float(H)
    W = float(W)
    k = float(resolution) / min(H, W)
    H *= k
    W *= k
    H = int(np.round(H / 64.0)) * 64
    W = int(np.round(W / 64.0)) * 64
    img = cv2.resize(input_image, (W, H), interpolation=cv2.INTER_LANCZOS4 if k > 1 else cv2.INTER_AREA)
    return img

在前处理接口会有一个参数detect_resolution,其缺省值为512。它会传给上面resize函数的resolution。它会将宽或高的较小值设成512,然后对应的高或宽按原始图像等比例缩放。 此外,还要对等比例缩放后的宽、高值进行微调确保能被64整除。 所以即使原始control image的尺寸是一些比较随意的值,但是经过前处理后的size都会被整归成能被64整除的值。前面说过,如果pipe接口没有显示指定生成图像的宽和高,那么该规整值就是最终图像的生成尺寸。

相关推荐
AI极客菌15 小时前
Stable Diffusion绘画 | 生成高清多细节图片的各个要素
人工智能·ai·ai作画·stable diffusion·aigc·midjourney·人工智能作画
灵魂画师向阳21 小时前
AI绘画Stable Diffusion 自制素材工具: layerdiffusion插件—你的透明背景图片生成工具
ai作画·stable diffusion·ai绘画·抠图·ai绘画教程·透明背景·sd教程
洋葱蚯蚓1 天前
构建自己的文生图工具:Python + Stable Diffusion + CUDA
开发语言·python·stable diffusion
Everglowwwwww2 天前
【bug】通过lora方式微调sdxl inpainting踩坑
学习·计算机视觉·ai作画·stable diffusion·bug
AI绘画咪酱2 天前
Stable Diffusion上手绘图必须知道的几个关键点,快收藏起来!
人工智能·ai作画·stable diffusion·aigc·ai绘画
蜡笔新小2 天前
Stable diffusion 学习过程
人工智能·学习·stable diffusion
SharpCJ3 天前
ComfyUI 基础教程(五) —— 应用 IP-Adapter 实现图像风格迁移
stable diffusion·aigc·comfyui
清图5 天前
智能营销才是营销的未来
人工智能·chatgpt·ai作画·stable diffusion·aigc·dall·e 2·ai-native
python零基础入门小白7 天前
Stable Diffusion4.9(Ai绘画)安装教程(永久许可)
stable diffusion·aigc
雪碧有白泡泡7 天前
Stable Diffusion AI算法,实现一键式后期处理与图像修复魔法
人工智能·算法·stable diffusion