草庐IT

你给文字描述,AI艺术作画,精美无比!附源码,快来试试!

ShowMeAI 2023-03-28 原文

? 作者:韩信子@ShowMeAI
? 深度学习实战系列https://www.showmeai.tech/tutorials/42
? TensorFlow 实战系列https://www.showmeai.tech/tutorials/43
? 本文地址https://www.showmeai.tech/article-detail/313
? 声明:版权所有,转载请联系平台与作者并注明出处
? 收藏ShowMeAI查看更多精彩内容

AI 在艺术界的覆盖越来越广,从最早的 GPT3 等模型文本生成和音乐创作,到最近非常让人惊艳的艺术画绘制,最近最流行的2个付费工具是 ?OpenAI 的 Dall-E2和 ?MidJourney

通过使用 AI 高级算法(各类 Diffusion 模型),它们可以根据人类的提示文本信息创作极其精美的艺术画品,从肖像到风景画,全部都能完成,创作的精美逼真程度有时甚至与人类艺术家不相上下,如下图就来自AI作画生成。

上面提到的商业工具 ?OpenAI 的 Dall-E2和 ?MidJourney都非常强大并且可以产生一流的图像(大家可以在它们的官方测试),但它们都有一些访问和使用限制。 Dall-E2 不可公开访问,MidJourney 的免费套餐仅提供 25 张图片。

但我们找到了开源的替代 AI 产品 Disco Diffusion,它是一款功能强大的文本到艺术画生成器,可与 MidJourney 相媲美,而且完全免费。

下面 ShowMeAI 带大家来体验Disco Diffusion,基于它的代码生成图像,你也快来试试!

? Disco Diffusion介绍

Disco Diffusion 是发布于 Google Colab 平台的一款利用人工智能深度学习进行数字艺术创作的工具,它是基于 MIT 许可协议的开源工具,可以在 Google Drive 直接运行,也可以部署到本地运行,目前最新的版本是 Disco Diffusion v5.6。

用白话讲 Disco Diffusion 的基本工作就是把你给出的 Prompts(提示/描述)由文字信息变成图像信息,把你用文字描述的画面『画』出来。实际操作也基本如此,很简单,下面是几张基于文本提示用 Disco Diffusion 生成的图片。

文本提示: A digital painting of cyberpunk city by beeple, mist, trending on artstation, V-Ray.

文本提示: Spaceship about to landing on a cornfield, steampunk, clouds in the sky, by Greg Rutkowski, concept art.

文本提示: A beautiful painting of captivating castles on hills and mountains, along plains and rivers, by Ismail Inceoglu.

? AI作画实践

我们下面准备在 ?Google Colab 中完成整个绘画过程,简单地说,大家只需要准备好浏览器(保证可以访问 Google),有 Google 账号的话会更方便。

? 步骤1. 打开Disco Diffusion Google Colab

准备好浏览器,并保证 Google 访问正常,然后点击 ?这里,大家会直接在浏览器进入 Google colab 的项目地址,如下图所示。

Colab项目中大家可以看到编号从 1-5 的对应步骤,我们只需按下运行代码的小播放按钮即可执行对应的代码。不过因为是定制作画,大家需要做一些设置和填入部分提示信息,如下步骤。

? 步骤2.添加文字提示prompt

展开设置 (3) 阶段的内容,可以看到更详细的子设置,我们。在『Prompts』(提示1)部分,修改文本提示,之后 Diffusion 模型就可以根据你的提示作画啦!

? 步骤3. 生成图像

接下来就可以运行代码作画啦!我们按从上到下的顺序运行各个阶段。 运行的方法非常简单,只需按下左侧代码块对应的小播放按钮,如下图所示。

接下来大家就可以等待AI作画啦!在 Colab 工具的免费版本中,完全渲染生成 1028x768 的图像大约需要 10 分钟。 大家在等待期间可以做其他事情。

生成的图像将自动保存在谷歌网盘/google drive中。

root\AI\Disco_Diffusion\images_out\TimeToDisco* 

? AI绘画产品结果对比

我们来对比一下,同样的提示文本语句下,Dall-E2、MidJourney 和我们使用 DIsco Diffusion 生成的图片。

我用类似的提示输入了所有三个工具。

A beautiful painting of a singular lighthouse, shining its light across a tumultuous sea of blood by greg rutkowski and thomas kinkade, Trending on artstation.", "yellow color scheme"

翻译成中文就是:一幅美丽的奇异灯塔画作,将光芒照耀在汹涌的红色海洋中。 greg rutkowski 和 thomas kinkade 的黄色配色方案,artstation网站上的流行趋势。

? Disco Diffusion

Disco Diffusion AI 生成的图片如下:

? MidJourney

MidJourney AI 生成的图片如下:

? Dall-E2

OpenAI Dall-E2 生成的图像如下:

大家觉得这段文字描述,生成的图片中,3个平台哪个结果最好看?你也动手修改描述,一键生成自己的艺术画吧!!

参考资料

有关你给文字描述,AI艺术作画,精美无比!附源码,快来试试!的更多相关文章

  1. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

  2. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  3. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  4. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  5. ruby - 字符串文字前面的 * 在 ruby​​ 中有什么作用? - 2

    这段代码似乎创建了一个范围从a到z的数组,但我不明白*的作用。有人可以解释一下吗?[*"a".."z"] 最佳答案 它叫做splatoperator.SplattinganLvalueAmaximumofonelvaluemaybesplattedinwhichcaseitisassignedanArrayconsistingoftheremainingrvaluesthatlackcorrespondinglvalues.Iftherightmostlvalueissplattedthenitconsumesallrvaluesw

  6. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  7. (附源码)vue3.0+.NET6实现聊天室(实时聊天SignalR) - 2

    参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍  介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。  内容有:    ①:Hub模型的方法介绍    ②:服务器端代码介绍    ③:前端vue3安装并调用后端方法    ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke()  去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on

  8. ruby - 如何在不使用 HERE-DOCUMENT 语法的情况下在 Ruby 中制作多行字符串文字? - 2

    问题总结我想尝试使用Ruby来完成我在Python中所做的事情。在Python中它有r"""syntaxtosupportrawstrings,这很好,因为它允许将原始字符串与代码内联,并以更自然的方式连接它们,而无需特殊缩进。在Ruby中,当使用原始字符串时,必须使用其次是EOT在单独的行中,这会破坏代码布局。你可能会问,为什么不使用Ruby的%q{}?嗯,因为%q{}与Python的r"""相比有局限性因为它不会转义多个\\\并且只处理单个\.我正在动态生成Latex代码并写入一个文件,该文件稍后用pdflatex编译。Latex代码包含类似\\\的内容在许多地方。如果我使用Rub

  9. Ruby:为什么等号在文字正则表达式中会导致解析错误? - 2

    这些解析和执行良好:"=".scan(/=/)"=".scan(/=/)这会导致“未终止的正则表达式遇到文件结尾”:"=".scan/=/如果我在=之前插入一些内容,错误就会消失:"=".scan/^=/这是怎么回事? 最佳答案 我猜你正在点击thisintheparser:case'/':if(IS_BEG()){lex_strterm=NEW_STRTERM(str_regexp,'/',0);returntREGEXP_BEG;}if((c=nextc())=='='){set_yylval_id('/');lex_state

  10. ruby-on-rails - Fork、Ruby、ActiveRecord 和 Fork 上的文件描述符 - 2

    我知道当我们fork一个进程时,子进程会继承父进程的打开文件描述符和偏移量的副本。根据手册页,这指的是父级使用的相同文件描述符。基于以下程序中的理论puts"Process#{Process.pid}"file=File.open('sample','w')forked_pid=forkdosleep(10)puts"Writingtofilenow..."file.puts("HelloWorld.#{Time.now}")endfile.puts("Welcometowinterofmydiscontent#{Time.now}")file.closefile=nil问题一:当父进

随机推荐