前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用扩散模型从文本生成图像

使用扩散模型从文本生成图像

作者头像
数据派THU
发布2022-09-20 18:42:36
1.1K0
发布2022-09-20 18:42:36
举报
文章被收录于专栏:数据派THU
代码语言:javascript
复制
来源:DeepHub IMBA本文约1400字,建议阅读5分钟本文将展示如何使用抱脸的扩散包通过文本生成图像。

在这篇文章中,将展示如何使用抱脸的扩散包通过文本生成图像,还有就一个一个不好的消息,因为这个模型的出现google的colab可能又要增加一些限制了。

从 DALLE 到Stable Diffusion

我们前面的文章也介绍过 OpenAI 的 DALLE-2 模型还有他的开源实现,它可以让我们从文本中创建高质量的图像。

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

使用diffusers 从文本生成图像

首先,使用扩散器包从文本生成图像我们首先要有一个GPU,这里就是用google 的colab,但是可能colab以后会对这样的应用进行限制了,这个我们在最后加以说明。

有了gpu下面就是要安装包:

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

所以我们只要用下面命令安装就可以了:

代码语言:javascript
复制
 !pip install diffusers==0.2.4 !pip install transformers scipy ftfy !pip install "ipywidgets>=7,<8"

我们安装ipywidgets的目的是在 Google Colab 上启用外部的小部件

代码语言:javascript
复制
 # enabling widgets (to be able to login to hugging face) from google.colab import output output.enable_custom_widget_manager()

然后需要用token登录Hugging Face

代码语言:javascript
复制
 from huggingface_hub import notebook_login notebook_login()

如果执行成功会出现一个小部件,在其中输入来自 Hugging Face 的token后会看到如下内容:

代码语言:javascript
复制
 Login successful Your token has been saved to /root/.huggingface/token Authenticated through git-credential store but this isn't the helper defined on your machine. You might have to re-authenticate when pushing to the Hugging Face Hub. Run the following command in your terminal in case you want to set this credential helper as the default git config --global credential.helper store
代码语言:javascript
复制
这就说明我们的环境已经准备完毕了,下面开始创建我们的流程:
代码语言:javascript
复制
 import torchfrom diffusers import StableDiffusionPipeline  pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token=True)

在这里我们使用的是 v1-4 模型,然后将其放入GPU中(还有很多其他模型,可以随意使用)

代码语言:javascript
复制
 pipe = pipe.to("cuda")

使用 Pytorch 的 autocast 运行推理

代码语言:javascript
复制
 from torch import autocast prompt = "photo of a panda surfing" with autocast("cuda"):  image = pipe(prompt)["sample"][0]  image.save(f"panda_surfer.png") image

结果如下:

结果非常不错。我们也可以调整一些参数,例如 guide_scale、step和设置随机种子(用于确定性输出),来控制我们的模型输出,具体的更详细的使用方式请看:

https://huggingface.co/blog/stable_diffusion

Google Colab 的 GPU 资源可能要撑不住了

最后说下我们上面提到的问题,Colab 有 Pro 和 Pro Plus 服务,如果你付费,那么获得 GPU 资源更有保障,可以使用更大的显存,占用资源时间可以更长。拿 Pro 来说,每一个月只需要缴纳10美元,你就可以随便使,保障随时都有 GPU 可以用。

但是最近,Google 修改了服务条款。即便你每月付费使用 Pro 和 Pro + 服务,却也依然要受到明确的计算资源限制了

Google Colab 从来就禁止挖矿,这个是我们早就知道的,但是Stable Diffusion的出现,可以让我们用 Google Colab 的 GPU 资源当成后台,然后提供自家的人工智能绘图服务,这个就很离谱了。虽然Google Colab 会对长期不操作的项目进行自动关闭,所以每次提供的时长不稳定。但是毕竟可以使用脚本自动重启啊。

OPEN AI的报价是大概0.15美元一张图片,而Colab只需要10美元就可以随便用,利用 Gradio 等开放框架提供 Web APP 界面进行服务,那你的成本几乎是0. 于是你可以把单次服务价格压到足够低,然后依然赚钱。所以google只能紧急修改协议,确保没有人可以用这种看似合法的手段没完没了「薅羊毛」。

并且有的用户已经收到了取消pro服务的邮件,并进行了退款。

我们先不论好与坏,但是这件事情可以说是人工智能真的抓住了实际痛点,当大家发现人工智能绘图的效果真的可以达到甚至是部分达到我们期望的时候,这样的潜在的需求就爆发出来了,因为我们的创造模型的目的是解决我们实际问题,而不是去创造了一个人工智障并且还要吹x替代人类。

在这件事上我看到了人工智能应用融入到了我们的生活。而且理由还十分的合理,Google 找不到禁止使用它的理由,只能转而采用资源配给制来缓解压力,我觉得这才是人工智能发展的最终目标。最后还是希望google能找到一个更好的解决办法,毕竟Colab真的很好用。

编辑:于腾凯

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从 DALLE 到Stable Diffusion
  • 使用diffusers 从文本生成图像
  • 首先,使用扩散器包从文本生成图像我们首先要有一个GPU,这里就是用google 的colab,但是可能colab以后会对这样的应用进行限制了,这个我们在最后加以说明。
  • Google Colab 的 GPU 资源可能要撑不住了
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档