Diffusers代码学习-自动管道输出

今天的分享将从一段简单的代码开始。对于不了解代码的小伙伴来说,可能觉得有点压力。其实不用担心,今天分享的重点在于穿过各种神秘的AIGC工具表面,窥伺一下底层的基本逻辑,非常有助于理解实际应用AIGC工具时发现的很多问题。

我会对代码的主要功能进行解释。具体代码所能实现的功能,如果有兴趣是可以猜出来。

#以下代码为程序运行进行设置

 

import os

from diffusers import AutoPipelineForText2Image

import torch

#以下代码加载模型


pipe_txt2img = AutoPipelineForText2Image.from_pretrained(

"digiplay/majicMIX_realistic_v7",

torch_dtype=torch.float16, use_safetensors=True

).to("cuda")

#以下代码加载并处理提示词

prompt = ("cinematic photo of Godzilla eating sushi with a cat in a izakaya, 35mm photograph, film, professional, 4k, highly detailed")

generator = torch.Generator(device="cpu").manual_seed(47)

#以下代码由提示词生成图片

image = pipe_txt2img(prompt, generator=generator).images[0]
image.show()

代码很简单吧。而且我们知道了,如果通过提示词生成图片,只需要提示词和一个模型文件就够了。作为参考,我们使用最容易上手的Easy Diffusion时,还需要提前准备多个文件,看起来哪些文件也不都是必须的啊。AIGC工具神秘的面纱已经被我们轻轻地揭开了一点点。

运行这段程序,代码会自动下载模型文件,并生成图片。

图片

代码里使用了Pipeline(管道)这个词,后续会反复出现。之所以用这个词,我的理解是使用的Diffusers代码生成图像等过程像管道一样,数据像流水通过这些管道,最后生成结果。Diffusers代码不仅可以生成图像、而且为视频、音频和修复等基本任务提供了许多管道。除此之外,还有用于适配器和升级、超分辨率等功能的专用管道。有这么多不同的管道,要知道使用哪个管道类可能会让人不知所措。

代码中使用的是AutoPipeline类旨在简化需要使用的管道的种类。它是一个通用的任务优先管道,可让用户专注于生成图像等任务本身,而无需先去考虑选择特定的管道。AutoPipeline类会自动检测要使用的正确管道。我会以此为基础,逐渐展开介绍其它的管道,帮助大家了解AIGC工具背后更多的逻辑。

修改一下程序的这行代码

prompt = "cinematic photo of Godzilla eating sushi with a cat in a izakaya, 35mm photograph, film, professional, 4k, highly detailed"

换个提示词(1girl,hair with bangs,black long dress,pink background),也就是改成

prompt = "1girl,hair with bangs,black long dress,pink background"

再运行一下程序。

图片

哈哈,是不是你也会写程序了。

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

duhaining1976

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

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

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

打赏作者

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

抵扣说明:

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

余额充值