? 作者:韩信子@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 是发布于 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.
我们下面准备在 ?Google Colab 中完成整个绘画过程,简单地说,大家只需要准备好浏览器(保证可以访问 Google),有 Google 账号的话会更方便。
准备好浏览器,并保证 Google 访问正常,然后点击 ?这里,大家会直接在浏览器进入 Google colab 的项目地址,如下图所示。
Colab项目中大家可以看到编号从 1-5 的对应步骤,我们只需按下运行代码的小播放按钮即可执行对应的代码。不过因为是定制作画,大家需要做一些设置和填入部分提示信息,如下步骤。
展开设置 (3) 阶段的内容,可以看到更详细的子设置,我们。在『Prompts』(提示1)部分,修改文本提示,之后 Diffusion 模型就可以根据你的提示作画啦!
接下来就可以运行代码作画啦!我们按从上到下的顺序运行各个阶段。 运行的方法非常简单,只需按下左侧代码块对应的小播放按钮,如下图所示。
接下来大家就可以等待AI作画啦!在 Colab 工具的免费版本中,完全渲染生成 1028x768 的图像大约需要 10 分钟。 大家在等待期间可以做其他事情。
生成的图像将自动保存在谷歌网盘/google drive中。
root\AI\Disco_Diffusion\images_out\TimeToDisco*
我们来对比一下,同样的提示文本语句下,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 AI 生成的图片如下:
MidJourney AI 生成的图片如下:
OpenAI Dall-E2 生成的图像如下:
大家觉得这段文字描述,生成的图片中,3个平台哪个结果最好看?你也动手修改描述,一键生成自己的艺术画吧!!
我有一大串格式化数据(例如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以想要的样式转储标量?解
对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一
一、引擎主循环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
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
这段代码似乎创建了一个范围从a到z的数组,但我不明白*的作用。有人可以解释一下吗?[*"a".."z"] 最佳答案 它叫做splatoperator.SplattinganLvalueAmaximumofonelvaluemaybesplattedinwhichcaseitisassignedanArrayconsistingoftheremainingrvaluesthatlackcorrespondinglvalues.Iftherightmostlvalueissplattedthenitconsumesallrvaluesw
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
问题总结我想尝试使用Ruby来完成我在Python中所做的事情。在Python中它有r"""syntaxtosupportrawstrings,这很好,因为它允许将原始字符串与代码内联,并以更自然的方式连接它们,而无需特殊缩进。在Ruby中,当使用原始字符串时,必须使用其次是EOT在单独的行中,这会破坏代码布局。你可能会问,为什么不使用Ruby的%q{}?嗯,因为%q{}与Python的r"""相比有局限性因为它不会转义多个\\\并且只处理单个\.我正在动态生成Latex代码并写入一个文件,该文件稍后用pdflatex编译。Latex代码包含类似\\\的内容在许多地方。如果我使用Rub
这些解析和执行良好:"=".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
我知道当我们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问题一:当父进