在上一篇文章《AI 作画初体验》中给大家介绍了一款 AI 作画工具 DD (Disco Diffusion) 及其本地部署方法。初次尝试,感觉 DD 生成的画作效果还不错,就是每次运行的时间比较长,为此花了一些时间研究如何提高 DD 作画的效率。

注意本文并不是探讨如何优化算法或者优化 GPU 来提高效率,这里面的水太深,不是我等普通程序员能够驾驭得了的事情。这里探讨的是通过调整一些参数,在牺牲一些体验的基础上提高生成一幅画的时间。

DD 包含很多参数,用来调整图像的生成过程,参数可以在 Disco_Diffusion.ipynb 的 3. Settings 部分找到:

还有一部分运行控制参数位于 4. Diffuse! 部分:

如果是通过 Docker 部署,可以在 disco.py 文件中找到对应的参数。

关于 DD 详细的参数调整说明可以参考这篇文档:

https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/edit)

这里仅介绍几个常用的参数。

  • n_batches: (50|1-100)

    这个变量决定 DD 生成的静态图片的数量,默认值是 50,也就是说跑一次一下子给你作 50 张画。其实大部分时候我们并不需要这么多,如果把这个值改为 1 ,其它参数不变,在我的 RTX 2080 TI 的显卡上,创作一张画的时间大约为 7 分钟,这算是一个比较能让人接受的时长。在 Google Colab 上运行,时间大约为 12 分钟,无需购买 GPU 资源也能作画。

    那为何会设计这样一个参数呢?主要是因为 AI 作图,有时会创作出一些莫名其妙的作品,生成多张,可以从中挑选满意的一张。如果显卡性能强劲,可以考虑增加这个值,一般设置为 9 就足够了。

    需要注意的是,DD 还能生成视频,如果是生成视频,这个参数会被忽略。

  • width_height: ([1280,768])

    该变量决定最终生成的图像大小,以像素为单位,默认值是 1280x768。在手机摄像头动辄千万像素的年代,这个分辨率似乎有点低,但对于 AI 而言,[1024x768] 都是相当大的图像。如果这个尺寸设置过大,可能会导致 OOM(内存不足)错误,导致 DD 崩溃!可以从 [512x768] 开始尝试,如果运行没问题,再增大。比如在我的 2080 TI 显卡上,使用默认值运行起来完全无压力。

    AI 创作的图像可以是正方形、或宽或高,但每个边应设置为 64 像素的倍数。当然,如果设置的尺寸不是 64 像素的倍数,DD 将自动调整为 64 的倍数。

    如果你希望产生更高清的图像,可以借助于其它的 AI 图片放大工具。

  • steps: (250|50-10000)

    AI 生成图像有点类似负反馈系统,系统先生成一个图像,然后评估,引导图像生成的“方向”,再次生成图像,如此轮回。每一个轮回就是一个 step。增加步长将为 AI 提供更多调整图像的机会,并且每次调整幅度都会更小,从而产生更精确、更细腻的图像。

    当然,增加 steps 是意味着更长的渲染时间。这个值的选择取决与你希望生成图像的质量以及图像的复杂程度,没有一个固定值。一般而言,使用默认值就是一个比较好的选择。

    如果你只是验证提示词(prompts)和生成画作的相关度,可以先把这个值设置小一些,等提示词设计确定下来,再来增加这个参数值,以生成更精确的图像。

  • cutn_batches: (4|1-8)

    每次迭代,AI 将图像分割成小块,并将每个小块与提示(prompts)进行比较,以决定如何指导下一个生成步骤。更多的小块通常可以产生更好的图像,因为 DD 在每个时间步有更多的机会微调图像精度。

    小块划分得越多,内存消耗越大。

    在默认设置下,DD 每个步骤执行的切割数量为 cutn_batches x 16。如果 cutn_batches 为 4,DD 将分为 4 个连续批次,每批次切割 16 块,因为一次只评估 16 个小块,DD 只使用 16 个小块所需的内存,但提供 64 个小块的质量优势,但带来的不足之处是,渲染每个图像需要大约 4 倍的时间。

    所以,增加 cutn_batches 会增加渲染时间,因为工作是按顺序完成的。

  • skip_augs:(False)

    DD 使用了一些视觉效果增强技巧,在图像创建过程中引入随机图像缩放、透视和其他调整方法,以提高图像质量。这样产生的图像更加自然、边缘更加平滑。通过将 skip_augs 设置为 True,可以跳过这些增强,这样可以稍微加快渲染速度。

  • display_rate: (50|5-500)

    前面讲到,DD 是通过多次迭代生成最终图像,在运行期间,DD 提供一个机会让你监控正在创建的每个图像。如果 display_rate 设置为 50,DD 将每 50 步显示一次图像。

    将此值设置为较低的值,例如 5 或 10,可以仔细观察出图像是如何一步一步生成的。如果你对中间过程不敢兴趣,可以将 display_rate 设置为等于前面的 steps 参数值,这样可以稍稍提高在 Colab 中运行的速度,毕竟显示图像也会花费一点时间。

随后,我尝试了几种参数组合对图像生成速度的影响(本地部署,显卡 RTX 2080 TI )。

第一次,我只修改了 n_batches 参数值,将其设为 1,耗时 07:18,得到如下图像:

第二次,我修改的参数 n_batches=1 cutn_batches=1,结果耗时 04:55,得到如下图像:

第三次,我修改的参数 n_batches=1 cutn_batches=1 skip_augs=True steps=150,耗时降低到 02:45,得到如下图像:

通过这些尝试,发现适当降低画作的质量,时间就能显著降低。在家用级显卡上,不到三分钟就能渲染出一幅还算不错的作品,这也给了大众参与创作的机会。而且通过参数调整,我们也可以借助于 Colab 创作,无需购买谷歌的 GPU 运算资源。

后续我会研究一下 提示语(prompts)对创作的影响,尝试创作一些古风山水画。

让AI 作画更快一点相关推荐

  1. 让 Spring Boot 启动更快一点

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 "Spring有多快?" 这是 2018 Sp ...

  2. 快做这 15点,让 SpringBoot 启动更快一点!

    "Spring有多快?" 这是 2018 Spring One Platform 中的一场会议.看完会议视频,我自己动手试了一下.下面是我做出的测试结果. 还没有观看视频的朋友推荐 ...

  3. 如何让mysql索引更快一点

    后端开发,公众号内容包括但不限于 python.mysql.数据结构和算法.网络协议.Linux.技术人怎能只有技术和代码,如果你对投资理财.保险,英语学习.读书写作有兴趣,都欢迎来公众号[谭某人]与 ...

  4. 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战

    最近HTTP-over-QUIC 协议被正式命名为 HTTP/3,协议带来的最大改变是协议底层将采用UDP协议,而不再是TCP协议,这样的好处吗,就是更低时延,更好的拥塞控制,更精确的RTT时间,更高 ...

  5. 公文排版插件for Word/WPS【公文助手——让公文排版更快一点】

    公文助手是一款Office VSTO插件,安装后可在WORD或WPS菜单栏找到公文助手菜单.本插件可根据<党政机关公文格式国家标准>(GB/T 9704-2012)的格式要求,快速设置页面 ...

  6. 公文排版插件for Word/WPS【审计公文助手——让公文排版更快一点】

    审计公文助手是一款Office VSTO插件,安装后可在WORD菜单栏找到.可根据<党政机关公文格式国家标准>(GB/T 9704-2012)的格式要求,快速设置页面版式.快速设置常用文字 ...

  7. 新生儿黄疸怎么做消退的更快一点?

    随着怀胎十月,宝宝出生了同样也伴随着新生儿黄疸的出现,大多由于孕母内藴湿热,传入胎儿所致,所以在怀孕前母亲一定要先调理好体质显得非常重要.既然宝宝出现了黄疸,我们看下有哪些方法可以快速解决呢? 不能乱 ...

  8. MySQL 怎么变快_如何让mysql索引更快一点

    在 InnoDB 中,从二级索引回到主键索引查询数据,这个过程称作回表过程,而且这个回表过程是可以被优化的,这个优化就是利用覆盖索引. 先说结论,如果一个索引的字段包含了所有要查询的字段,这个索引就称 ...

  9. eclipse快捷键大全,让敲代码更快一点

    MyEclipse 快捷键1(CTRL)Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Q 定位到最后编辑的地方 Ctrl+L 定位在某行 Ctrl+O 快速显示 OutLine Ctr ...

最新文章

  1. 建校百年,哈工大计算机学部成立!NLP专家刘挺挑大梁
  2. 清华学霸震撼演讲:拼尽所有力气,只为给梦想一个机会!
  3. python学习笔记之迭代器
  4. vmware 指定的网络名不可用
  5. Android L(5.0)源码之图形与图像处理之动画——Frame、Tween、属性动画、SurfaceView...
  6. 【HDU - 4784】Dinner Coming Soon(记忆化搜索bfs,dp)
  7. 跟我学Telerik公司的RadControls控件(四)
  8. 数据库系统概论——事务
  9. 第一届BMZCTF公开赛-WEB-Writeup
  10. unity将指定UI图片置为灰色
  11. “TOP面对面” 技术AMA系列第一期:揭开TOP技术团队的神秘面纱
  12. TS中的泛型是什么,适合什么应用场景
  13. 经常失眠怎么办?这些方法和好物可以帮到你
  14. 极客大挑战2020wp
  15. 一个强悍的web性能测试工具--WebPageTest
  16. php fflush失败,php fflush 函数_PHP教程
  17. GAN(生成对抗网络)入门
  18. 华为Harmony鸿蒙开发笔记十:剪切板
  19. Oracle Distilled网站下的TimesTen相关帖子
  20. 计算机设备维护登记表,各种设备维护保养记录表格

热门文章

  1. 如何在 UE4 中设置光线追踪功能
  2. ZYNQ petalinux系统启动文件固化到FLASH
  3. MySQL最新驱动com.mysql.cj.jdbc.Driver及配置方式
  4. 获取苏宁易购商品的评论图片
  5. 浏览器插件配合高速多线程下载器
  6. 交互式推荐在外卖场景的探索与应用
  7. SOLIDWORKS 无法设置中文语言的解决办法
  8. Windows 10 使用WSL2下载和编译安卓10源码
  9. 基于javaweb+SpringBoot+MyBatis在线购物商城shop系统(仅前台购物)
  10. 〖Python 数据库开发实战 - MongoDB篇③〗- Windows环境下的MongoDB数据库安装