Hugging Face发布diffuser模型AI绘画库初尝鲜!
作者:韩信子@ShowMeAI
深度学习实战系列:https://www.showmeai.tech/tutorials/42
TensorFlow 实战系列:https://www.showmeai.tech/tutorials/43
本文地址:https://www.showmeai.tech/article-detail/312
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容
工具库 transformers 的开源方 Hugging Face 刚刚发布了一个用于构建 diffuser 模型的全新库。如果您不知道diffuser模型是什么,你可以查看 ShowMeAI 的另外一篇文章介绍 你给文字描述, AI 艺术作画,精美无比!附源码,快来试试!。
随着 AI 技术的发展,我们现在在互联网上看到的那些美丽、富有创意、极具艺术美感的绘画与视频,很多是来自 AI 之手!典型的AI艺术创作例如 OpenAI 的 DALL-E2、谷歌的 Imagen 和 Midjourney 的产品,所有这些产品服务都使用 diffuser 模型,下图为一些创作结果。
Hugging Face 发布了一个专注于 diffuser 模型的开源库,我们可以基于它,仅仅通过几行代码就开始生成自己的艺术作画。不过这个 diffuser 库是一个基础实现版本,训练和学习的数据也没有上面提到的几个大厂商业产品多,在本篇文章中,ShowMeAI 就带大家来探索新库,并生成一些我们自己的艺术画作,也对比一下相同文本提示下的大厂商业产品生成的结果。
快速尝鲜
我们先在命令行通过 pip install diffusers 安装本次使用到的工具库,然后导入我们需要用到的模块和功能(在这里我们调用整个扩散模型流水线 DiffusionPipeline),并且我们导入一个小型预训练模型ldm-text2im-large-256:
from diffusers import DiffusionPipeline
model_id = "CompVis/ldm-text2im-large-256"
# 预训练模型
ldm = DiffusionPipeline.from_pretrained(model_id)
接着我们就可以基于这个预训练模型作画啦,我们唯一需要做的事情就是给模型一句文本提示(在 diffuser 模型里叫 prompt 提示)。下面我们尝试生成一幅『松鼠吃香蕉』的画作。
# 给定文本提示和作画
prompt = "A painting of a squirrel eating a banana"
images = ldm([prompt], num_inference_steps=50, eta=.3, guidance_scale=6)
images[0]
上面就是模型最终生成的图像,当然受限于我们的计算资源和预训练模型大小,我们生成的图像不像 DALL-E 2 那样令人惊艳,但是我们仅仅用 5 行代码也生成了一副和提示文本匹配的图像,还是很让人感觉神奇。
下面是『松鼠吃香蕉』的另一幅画:
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
文本提示
高分辨率
自三大扩散模型(DALL-E 2、Imagen 和 Midjourney)发布以来,大家都开始发挥想象力,尝试各种各样的文本提示,让模型生成艺术图。例如,许多人发现添加『4K画质』或『在Unity中渲染』可以增强三巨头生成的图像的真实感(尽管它们都没有以 4K 分辨率生成)。
如果我们对 Hugging Face 的 diffuser 模型进行同样的尝试,会发生什么?
prompt = "a photorealistic image of a squirrel eating a banana"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
很显然它还不能生成高清的 4K 图,但是图像中的一些细节有丰富一些。
场景与逻辑
我们把场景做得复杂一点点,比如给到的文本提示中,有不同的物体和位置关系,我们看看会生成什么样的结果,提示文字为an italian person eating pizza on top of the colosseum in rome。
prompt = "an italian person eating pizza on top of the colosseum in rome"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
看得出来,这个简单的 diffuser 模型在很努力地复现我们文本中提到的人、斗兽场、披萨,但是对于更细节的位置关系,似乎它还没有做得非常好,这里的人并没有坐在罗马斗兽场顶部,而且斗兽场的拱门颜色和天空颜色也不完全匹配。
更抽象的情况
回到松鼠,尝试生成更抽象的图像,例如 a giant squirrel destroying a city『一只巨大的松鼠摧毁一座城市』,我们随机采样了一些结果如下,好坏参半:
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.3,
guidance_scale=6
)
images['sample'][0]
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=2
)
images['sample'][0]
我们似乎观察到,目前这个小模型似乎很难融合两个通常相关度没那么高的概念,即『(巨型)松鼠』和『城市』。我们从一些生成的效果不是特别好的图片可以观察出这一点,下面的结果中,要么对城市与天际线做了很好的描述却忽略了松鼠,要么对松鼠和自然环境做了很好的描述,却没有特别强的城市背景:
prompt = "a landscape image showing a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.8,
guidance_scale=2
)
images['sample'][0]
prompt = "a landscape image showing a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.8,
guidance_scale=2
)
images['sample'][0]
多次运行这些提示后,我们发现当前这个小模型下,总是在主体之间切换但很难将两者融合在一起。
DALL-E 2的结果
我们把同样的内容"a dramatic shot of a giant squirrel destroying a modern city"灌给 DALL-E 2 ,让它从提示做图,得到的结果如下:
果然在更庞大的AI模型下,生成的结果更自然,也能把不同的细节关联起来。
总结
这就是 Hugging Face 新库的初尝鲜!尽管目前开源的小模型上,还有一系列的问题,但是这类模型就像一把钥匙,解锁一些令人敬畏的人工智能类人的艺术创造水平。
短期看,这个小小的预训练模型当然无法取代 DALL-E 2、Imagen 或 Midjourney,但随着开源社区的强大,它会表现越来越好。
参考资料
- 你给文字描述,AI艺术作画,精美无比!附源码,快来试试!:https://www.showmeai.tech/article-detail/313
Hugging Face发布diffuser模型AI绘画库初尝鲜!的更多相关文章
- RabbitMQ入门_08_所谓的点对点与发布订阅模型
A. JMS 模型 JMS 中定义了点对点和发布订阅两种消息模型,原来以为 AMQP 协议中 direct Exchange 对应点对点模型,topic Exchange 对应发布订阅模型,fanou ...
- 3,ActiveMQ-入门(基于JMS发布订阅模型)
一.Pub/Sub-发布/订阅消息传递模型 在发布/订阅消息模型中,发布者发布一个消息,该消息通过topic传递给所有的客户端.在这种模型中,发布者和订阅者彼此不知道对方,是匿名的且可以动态发布和订阅 ...
- cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线
Newbe.Claptrap 0.4.4 发布,模型验证器上线. 更新内容 完全基于表达式树的模型验证器 本版本,我们带来了基于表达式树实现的模型验证器.并实现了很多内置的验证方法. 我们罗列了与 F ...
- 尝鲜刚发布的 SpringFox 3.0.0,以前造的轮子可以不用了...
最近 SpringFox 3.0.0 发布了,距离上一次大版本2.9.2足足有2年多时间了.可能看到这个名字,很多读者会有点陌生.但是,只要给大家看一下这两个依赖,你就知道了! <depende ...
- 尝鲜一试,Azure静态网站应用服务(Azure Static Web Apps) 免费预览,协同Github自动发布静态SPA
背景 最近在浏览微软的文档的时候发现,微软喜欢用Hugo这个文档框架,有些技术产品的文档页面就用Hugo来做的,同时搭配Github + Azure Static Web Apps Service这个 ...
- 利用Hugging Face中的模型进行句子相似性实践
Hugging Face是什么?它作为一个GitHub史上增长最快的AI项目,创始人将它的成功归功于弥补了科学与生产之间的鸿沟.什么意思呢?因为现在很多AI研究者写了大量的论文和开源了大量的代码, ...
- 阿里第一颗芯片问世,平头哥发布最强AI芯片含光800
阿里巴巴第一颗自研芯片正式问世.9月25日的杭州云栖大会上,达摩院院长张建锋现场展示了这款全球最强的AI芯片——含光800.在业界标准的ResNet-50测试中,含光800推理性能达到78563 IP ...
- 斯坦福发布2019全球AI报告:中国论文数量超美国,自动驾驶汽车领域获投资最多
近日,斯坦福联合MIT.哈佛.OpenAI等院校和机构发布了一份291页的<2019年度AI指数报告>. 这份长达291页的报告从AI的研究&发展.会议.技术性能.经济.教育.自动 ...
随机推荐
- 字符编码和python中的文件处理
字符编码与python文件处理 ---------------- 字符编码 1.常见的编码 ASCII: 美国人发明的,只编码英文字母和符号,1个字节. GB2312: 中国人发明的,增加了中文汉字和 ...
- SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用
一.前言 我们在开发中会经常遇到一些可能会变的值,比如数据库的密码,一些关键链接的配置等等. 都需要我们写在配置文件中,这样可以把这些配置文件放到nacos上进行管理,修改nacos的配置,咱们发布的 ...
- 妙啊!纯 CSS 实现拼图游戏
本文,将向大家介绍一种将多个 CSS 技巧运用到极致的技巧,利用纯 CSS 实现拼图游戏. 本技巧源自于 Temani Afif 的 CodePen CSS Only Puzzle game.一款完全 ...
- 一文了解.Net的CLR、GC内存管理
一文了解.Net的CLR.GC内存管理 微软官方文档对内存管理和CLR的概述 什么是托管代码? 托管代码就是执行过程交由运行时管理的代码. 在这种情况下,相关的运行时称为公共语言运行时 (CLR),不 ...
- HDU4372 Count the Buildings (+题解:斯特林数)
题面 (笔者翻译) There are N buildings standing in a straight line in the City, numbered from 1 to N. The h ...
- 在 C# CLR 中学习 C++ 之了解 extern
一:背景 在 CLR 源码中有很多的 extern 和 extern "C" 这样的关键词,比如下面这些代码: extern size_t gc_global_mechanisms ...
- 基于 iframe 的微前端框架 —— 擎天
vivo 互联网前端团队- Jiang Zuohan 一.背景 VAPD是一款专为团队协作办公场景设计的项目管理工具,实践敏捷开发与持续交付,以「项目」为核心,融合需求.任务.缺陷等应用,使用敏捷迭代 ...
- Windows 2019通过网页修改域用户密码
对于域用户来说,定期修改密码是必须的.对于没有Exchange的组织,而且经常出差在外的人员,能及时修改密码就变得很重要了. 在Windows 2003的时候有iisadmpwd可以修改.但是这个页面 ...
- 基于.NET6的简单三层管理系统
前言 笔者前段时间搬砖的时候,有了一个偷懒的想法:如果开发的时候,简单的CURD可以由代码生成器完成,相应的实体.服务都不需要再做额外的注册,这样开发人员可以省了很多事. 于是就开了这个项目,期望实现 ...
- AVL tree 高度上下界推导
1. 最大高度对应 Node 数量 \(N_{h}\) 的递归公式 设有一棵 AVL tree 的高度为 \(h\), 对于该树, 构成该树的最少 node 数量为 \(N_{h}\) . 有: 最坏 ...