【AIGC】手把手使用扩散模型从文本生成图像

本文介绍了如何利用HuggingFace的diffusers包和StableDiffusionPipeline,通过文本提示生成图像。在DALLE免费额度受限的情况下,转向使用StableDiffusion,并在GPU环境下,遵循一定的安装步骤和代码实现,创建并运行模型,产生高质量的图像。此外,还提到了参数调整以优化模型输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这篇文章中,我们将手把手展示如何使用Hugging Face的diffusers包通过文本生成图像。

从 DALLE 到Stable Diffusion

DALLE2是收费的,用户只有一些免费的额度,如果免费额度使用完毕就需要付费了,所以必须寻找替代方案,并发现了Hugging Face,他们发布了一个扩散模型的包diffusers ,可以让我们直接使用。
AIGC

使用diffusers package从文本prompt生成图像

首先,使用diffusers包从文本生成图像,我们要有一个GPU,可以使用google的colab,但是常规的colab由于RAM有限制,可能会存在中断的情况,或者也可以购买Pro版本。这里我们使用自己的GPU服务器。

然后,要安装如下package:

  • diffusers==0.2.4 — 这是我们主要使用的包
  • transformers — 这个是Hugging Face的成名基础包
  • scipy — 科学计算的
  • ftfy — 处理一些文本编码问题
  • ipywidgets>=7,<8 — notebook的一个小组件的基础包
  • torch —这个就不用说了
  • pillow — 处理图片的

安装命令:

!pip install diffusers==0.2.4
!pip install transformers scipy ftfy
!pip install "ipywidgets>=7,<8"

导入依赖包:

import torch
from diffusers import StableDiffusionPipeline

下载StableDiffusionPipeline,并使用GPU加载:

model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"


pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to(device)

此时报出一个Warning:
Warning
安装accelerate:pip install accelerate

然后,使用PyTorch的autocast运行推理:
Autocast
最后,查看结果:
image
结果非常不错。我们也可以调整一些参数,例如guide_scalestep和设置随机种子(用于确定性输出),来控制我们的模型输出,具体的更详细的使用方式请看:

参考资料

  1. CompVis/stable-diffusion-v1-4
  2. Stable Diffusion with 🧨 Diffusers
### 安装和使用 Hugging Face 库在 Linux 环境下的指南 安装 Hugging Face 的 `transformers` 和其他相关库通常可以通过 Python 的包管理工具完成。以下是关于如何在 Linux 下正确安装并配置 Hugging Face 工具链的方法。 #### 1. 准备环境 为了确保能够成功运行 Hugging Face 提供的模型和服务,首先需要确认已安装必要的依赖项以及开发工具。对于基于 Debian 或 Ubuntu 的系统,可以执行以下命令来安装 Python 开发所需的共享库: ```bash sudo apt update && sudo apt install python3-dev -y ``` 此操作会安装 Python 的开发头文件和其他必要组件[^1]。 #### 2. 创建虚拟环境 (推荐) 为了避免与其他项目发生冲突,建议创建一个新的虚拟环境用于隔离依赖关系。通过以下命令设置虚拟环境: ```bash python3 -m venv hf_env source hf_env/bin/activate ``` 激活虚拟环境后,所有的后续安装都会在这个独立环境中进行。 #### 3. 安装 Hugging Face 及其依赖项 一旦准备就绪,在终端中输入如下指令即可安装核心库及其扩展功能模块: ```bash pip install transformers datasets torch sentencepiece ``` 这些软件包分别提供了自然语言处理的基础架构支持、数据集加载器接口、PyTorch 深度学习框架以及针对特定任务优化的语言解析能力。 如果计划利用 GPU 加速计算,则需进一步调整 PyTorch 版本以匹配本地硬件驱动情况;具体方法可参照官方文档说明页面获取最新指导信息。 #### 4. 使用预训练模型实例化对象 访问赫尔辛基大学 NLP 小组维护于 Hugging Face 平台上的开源资源集合链接地址 [https://huggingface.co/Helsinki-NLP](https://huggingface.co/Helsinki-NLP)[^2] ,从中挑选适合目标应用场景的具体型号名称作为参数传入初始化函数调用过程之中。 下面展示了一个简单的例子程序片段用来演示加载指定类型的翻译模型并生成预测结果的过程: ```python from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM model_name = "Helsinki-NLP/opus-mt-en-de" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) translator = pipeline('translation', model=model, tokenizer=tokenizer) result = translator("Hello world!", max_length=40) print(result) ``` 上述脚本定义了一条英语到德语之间的自动转换流水线,并打印最终输出字符串表示形式的结果列表。 --- ### 注意事项 - 如果遇到网络连接超时错误或者下载速度过慢的情况,尝试更换镜像源站点重新拉取远程仓库内容。 - 对于某些特殊场景可能还需要额外安装诸如 SentencePiece 这样的第三方插件才能正常使用全部特性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

镰刀韭菜

看在我不断努力的份上,支持我吧

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

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

打赏作者

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

抵扣说明:

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

余额充值