草庐IT

一键式AI绘画,让你也能体验当画师的魅力(附原理分析)

生如昭诩 2023-05-27 原文

文章目录

讲在前面

大概在今年10月初期,AI作画的热潮突然被掀起,这股潮流瞬间激起了人们对于AI的思考和恐惧,一方面来说,随着AI绘画的不断完善,似乎我们每个人都能创作出满足一定要求的画作;而从另一方面来说,虽然现在的AI绘画可能还没有那么成熟,但是已经足够让人类感受到足够大的挑战,究竟还有什么职业能够抵抗得了AI的冲击,让我们从应用到原理,具体来了解一下,AI绘画是如何掀起这波热浪的。


一、Novel AI

1. 网站介绍

  • Novel AI:一个使用AI技术进行一系列人类所谓“想象力”创造的网站,从绘画到作文,从画出一幅满足要求的画,再到讲好一个引人入胜的故事,这里引用一句原网站的话

Driven by AI , painlessly construct unique stories , thrilling tales, seductive romances , or just fool around . Anything goes ! , 什么意思呢? 在人工智能的驱动下,不痛不痒地构建独特的故事,惊心动魄的故事,诱人的浪漫,或者只是胡闹。一切皆有可能!

其实人类对于AI恐惧的关键不在于AI能够进行绘画和写作,令人心惊的是, Tweak the AI’s output the way you like it,AI可以做到你想要的,无论how you like,当然,说了这么多,最重要的还是亲自上手,这里要感谢某站up主的呕心沥血,只需下载运行脚本,直接使用完整版AI绘画程序,原视频地址奉上,希望大家能够多多支持,秋枼akiiii


2. AI作画

  • 第二步:解压zip文件

  • 第三步:在文件中找到点击生成启动脚本的文件,打开即可自动安装对应依赖
  • 第四步:在文件中找到启动脚本,打开即可自动运行

  • 第五步:在脚本运行完成后,会出现对应的本地端口,复制在浏览器打开即可

到这里,就能在浏览器中看到一个拥有良好界面的网站,自行选择文本生成或图生图等方式即可,这里用文本生成做一个简单演示,在正面和负面标签输入一些自己想要的单词或短语即可:


在这里分享一下自己使用该功能完成的作品:


二、AI绘画的内在原理

1. Diffusion Model的基本过程

  • 什么是Diffusion Model:深度学习中的一种生成模型,与GAN、VAE、Flow-based等类似;


不同生成模型之间的对比:Diffusion model和其他模型最大的区别是它的latent code(z)和原图是同尺寸大小的。一句话概括diffusion model,即存在一系列高斯噪声,将输入图片变为纯高斯噪声。而我们的模型则负责将噪声处理后的图片复原回图片

  • Diffusion Model的过程:

\qquad 1. 前向过程:

往图片上加噪声的过程,给定真实图片后, diffusion前向过程通过多次累计对其添加高斯噪声;这里需要给定一系列的高斯分布方差的超参数,前向过程由于每个时刻t只与t-1时刻有关,所以也可以看做马尔科夫过程:这个过程中,随着t的增大, 越来越接近纯噪声

\qquad 2. 逆向过程:

即Diffusion的去噪推断过程,如果我们能够逐步得到逆转后的分布,就可以从完全的标准高斯分布还原出原图分布,我们使用深度学习模型(参数为θ,目前主流是U-Net+attention的结构)去预测这样的一个逆向的分布,通过贝叶斯公式等得到高斯噪声的参数,最终通过模型特性实现逆向;


\qquad 3. 最终通过对真实数据分布下,最大化模型预测分布的对数似然过程(上述基于DDPM)

2. 扩散模型的兴起

  • 相比于GAN的优势:
  1. GAN模型训练过程有个难点,就是众多损失函数的鞍点(saddle-point)的最优权重如何确定,在实际训练过程中需通过多次反馈,直至模型收敛,但是可怕的是在实际操作中发现,损失函数往往不能可靠地收敛到鞍点,导致模型稳定性较差;与GAN不同,DALL·E使用Diffusion Model,不用在鞍点问题上纠结,只需要去最小化一个标准的凸交叉熵损失(convex cross-entropy loss),这样就大大简化了模型训练过程中,数据处理的难度
  2. GAN模型在训练过程中,除了需要“生成器”,将采样的高斯噪声映射到数据分布;还需要额外训练判别器,Diffusion Model只需要训练“生成器”,训练目标函数简单,而且不需要训练别的网络(判别器、后验分布等)
  • 领域跨越:目前的训练技术让Diffusion Model直接跨越了GAN领域调模型的阶段,而是直接可以用来做下游任务

Diffusion Model的成功在于训练的模型只需要“模仿”一个简单的前向过程对应的逆向过程,而不需要像其它模型那样“黑盒”地搜索模型,并且,这个逆向过程的每一小步都非常简单,只需要用一个简单的高斯分布来拟合

  • 扩散模型的拓展:原始扩散模型拥有三个缺点,采样速度慢,最大化似然差、数据泛化能力弱,它的采样速度慢,通常需要数千个评估步骤才能抽取一个样本;它的最大似然估计无法和基于似然的模型相比;它泛化到各种数据类型的能力较差。如今很多研究已经从实际应用的角度解决上述限制做出了许多努力,或从理论角度对模型能力进行了分析。



  • 参考文献:

[1] Sohl-Dickstein J, Weiss E, Maheswaranathan N, et al. Deep unsupervised learning using nonequilibrium thermodynamics[C]//International Conference on Machine Learning. PMLR, 2015: 2256-2265.
[2] Ho J, Jain A, Abbeel P. Denoising diffusion probabilistic models[J]. Advances in Neural Information Processing Systems, 2020, 33: 6840-6851.
[3] Song Y, Sohl-Dickstein J, Kingma D P, et al. Score-based generative modeling through stochastic differential equations[J]. arXiv preprint arXiv:2011.13456, 2020.
[4] Yang L, Zhang Z, Song Y, et al. Diffusion models: A comprehensive survey of methods and applications[J]. arXiv preprint arXiv:2209.00796, 2022.

有关一键式AI绘画,让你也能体验当画师的魅力(附原理分析)的更多相关文章

  1. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  2. 西安华为OD面试体验 - 2

    西安华为OD面试体验开始投简历技术面试进展工作进展开始投简历去年一整年一直在考研和工作之间纠结,感觉自己的状态好像当时的疫情一样差劲。之前刚毕业的时候投了个大厂的简历,结果一面写算法的时候太拉跨了,虽然知道时dfs但是代码熟练度不够,放在平时给足时间自己可以调试通过,但是熟练度不够那面试当时就写不出来被刷了。说真的算法学到后期我感觉最重要的是熟练度和背板子(对于我这种普通玩家来说),面试题如果一上来短时间内想不出思路就完蛋了。然后由于当时找的工作不是很理想就又想考研了。但是考研是有风险的,我自我感觉自己可能冲不上那个学校,而找工作一个没成可以继续找嘛。本着抱着试试看的态度在boss上投了简历,

  3. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  4. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  5. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  6. ruby-on-rails - 如何使用 ruby​​-prof 和 JMeter 分析 Rails - 2

    我想使用ruby​​-prof和JMeter分析Rails应用程序。我对分析特定Controller/操作/或模型方法的建议方法不感兴趣,我想分析完整堆栈,从上到下。所以我运行这样的东西:RAILS_ENV=productionruby-prof-fprof.outscript/server>/dev/null然后我在上面运行我的JMeter测试计划。然而,问题是使用CTRL+C或SIGKILL中断它也会在ruby​​-prof可以写入任何输出之前杀死它。如何在不中断ruby​​-prof的情况下停止mongrel服务器? 最佳答案

  7. 【Unity游戏破解】外挂原理分析 - 2

    文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cppdumper例子2-森林whoishe后记认识unity打包目录结构dll一般很大,因为里面是所有的游戏功能编译成的二进制码游戏逆向流程开发人员代码被编译打包到GameAssembly.dll中使用il2ppDumper工具,并借助游戏名_Data\il2cpp_data\Metadata\global-metadata.dat

  8. 驱动开发:内核无痕隐藏自身分析 - 2

    在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的进程隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。MiProcessLoaderEntry(pDriverObject->DriverSection,1)添加MiProcessLoaderEntry(pDriverObject->DriverSection,

  9. 「想体验ChatGPT中文聊天?」那快进来,你用不上算我输 - 2

    ♥️作者:白日参商🤵‍♂️个人主页:白日参商主页♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!「想体验ChatGPT中文聊天?」那快进来,你用不上算我输项目场景:项目条件一、那就开始吧1、安装ChatGPT-Desktop2、OpenAPI设置二、使用实例恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!项目场景:近几个月可以说ChatGPT是火得一

  10. 好的代码风格,如同书法,让你的代码更加漂亮 - 2

    很多初学者的代码其实都不够“漂亮”,那是因为没有养成好的编码习惯。本篇博客以C语言为例,总结一些好习惯。其实,很多习惯都是肌肉记忆,举个例子:请你写一个程序,输入2个整数并输出它们的和。有些朋友可能写出来是这个样子。#includeintmain(){ inta=0; intb=0; intsum=0; scanf("%d%d",&a,&b); sum=a+b; printf("%d\n",sum); return0;}我写这段代码,是在模仿有些朋友在初学的时候容易写成的样子。更有甚者,写成这个样子:#includeintmain(){inta=0;intb=0;intsum=0;scanf(

随机推荐