关于人工智能:Hugging-Face发布diffuser模型AI绘画库初尝鲜

55次阅读

共计 3347 个字符,预计需要花费 9 分钟才能阅读完成。

💡 作者:韩信子 @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

正文完
 0