大家好,我是你的好朋友思创斯。今天说一说hugging face发布diffuser模型ai绘画库初尝鲜!,希望您对编程的造诣更进一步.
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情
- 💡 作者:韩信子@showmeai
- 📘 深度学习实战系列:www.showmeai.tech/tutorials/4…
- 📘 tensorflow 实战系列:www.showmeai.tech/tutorials/4…
- 📘 本文地址:www.showmeai.tech/article-det…
- 📢 声明:凯发k8官方旗舰厅的版权所有,转载请联系平台与作者并注明出处
- 📢 收藏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]
多次运行这些提示后,我们发现当前这个小模型下,总是在主体之间切换但很难将两者融合在一起。
我们把同样的内容"a dramatic shot of a giant squirrel destroying a modern city"
灌给 dall-e 2 ,让它从提示做图,得到的结果如下:
果然在更庞大的ai模型下,生成的结果更自然,也能把不同的细节关联起来。
这就是 hugging face 新库的初尝鲜!尽管目前开源的小模型上,还有一系列的问题,但是这类模型就像一把钥匙,解锁一些令人敬畏的人工智能类人的艺术创造水平。
短期看,这个小小的预训练模型当然无法取代 dall-e 2、imagen 或 midjourney,但随着开源社区的强大,它会表现越来越好。
- 📘 你给文字描述,ai艺术作画,精美无比!附源码,快来试试!:www.showmeai.tech/article-det…
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/116644.html