Diffusers代码学习:中断Diffusion过程

在构建使用Diffuser的UI时,尽早停止扩散过程非常有用,因为它允许用户在对中间结果不满意时停止生成过程。可以通过回调将其合并到管道中。

此回调函数应采用以下参数:pipeline、i、t和callback_kwargs(必须返回)。将管道的_interrupt属性设置为True,以在一定数量的步骤后停止扩散过程。还可以在回调中自由地实现自己的自定义停止逻辑。

在该示例中,即使num_inference_steps被设置为50,扩散过程也在10个步骤之后停止。

from diffusers import StableDiffusionPipeline

pipeline = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipeline.enable_model_cpu_offload()
num_inference_steps = 50

def interrupt_callback(pipeline, i, t, callback_kwargs):
    stop_idx = 10
    if i == stop_idx:
        pipeline._interrupt = True

    return callback_kwargs

out = pipeline(
    "A photo of a cat",
    num_inference_steps=num_inference_steps,
    callback_on_step_end=interrupt_callback,
)

因为提前结束,所以没有输出图像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duhaining1976

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值