Disco Diffusion 快速入门

news2024/11/23 18:57:29

Disco Diffusion 快速入门

  • 简介
  • 快速开始
  • 进阶使用
    • 修改prompt
    • 给定指导图像
    • 修改基础参数
    • 运行参数设置
    • 运行建议
    • 模型设置
    • 参数详情

简介

Disco Diffusion(DD)是一个CLIP指导的AI图像生成技术,简单来说,Diffusion是一个对图像不断去噪的过程,而CLIP模型负责对图像的文本描述(CLIP是一个图文匹配模型)

DD liyongCLIP图像识别的能力,来不断指导diffusion算法迭代去噪的过程,来使图像不断接近我们的描述(prompt),CLIP在这个过程中,用于评估图像和文本之间的差距,并提供一个方向性的指导。

这里插播一段简要介绍一下CLIP模型的作用,我们知道,作为语义理解能力非常强的人类,我们可以轻松地根据图片来“看图写话”,亦可以轻松的根据文字描绘的场景在大脑中重建,然而对于计算机来说,理解人类说的“话”并非易事,要想把人类理解的“意思”转译为一个个二进制符号,实际上具有很大的挑战,好在深度学习技术和发展和硬件条件的飞速提升,计算机视觉和自然语音处理都实现了很多不可思议的功能,计算机视觉可以让计算机轻松的识别画面中的内容,但实际上计算机的输出只是一个个概率,而画面的“语义”仍然需要人们去赋予; 自然语言处理可以轻松的“理解”人们说了什么,甚至可以和你进行对话和聊天。可是,如果二者结合起来,让一堆风格内容各异,和对这些画面的描述语结合起来呢?于是CLIP应运而生,它可以做到在一堆乱七八糟的描述语中找到最适合当前这副化的,就像你给它一副放在框框中的苹果,它会找到最接近的描述如“苹果放在框中”而不会说这是一个香蕉在碗里。

那么,如果反过来呢,既然可以根据图片来匹配到文字描述,那么可以至给出文字描述来让AI画图么?这就是Disco Diffusion接下来要做的事情。

通俗地来说,Diffusion的起点,是一堆毫无意义的噪声,也就是你在使用模型训练时,一开始看到的是这样的:
在这里插入图片描述
好,现在你看到的是一副没有任何信息,杂乱无章的图像,但是我更愿意将他称为"在浓雾中的名画"。 几年前,计算机视觉的科学家就在想办法将被噪声污染的图像通过各种技术手段还原,包括去除成像设备固有缺陷带来的噪点、天气条件恶劣如大雾大雨造成的图像不清晰,而如今,图像去雾去雨技术已经让人眼难以分辨,那么,计算机能够凭借它的想象力将这幅画的“浓雾”褪去,解开它的真实面目么?

这就是Diffsion,它的任务其实就是去噪,换句话来说,我给了Diffusion一个最极端的任务,就是一副全部是噪声的图像,让他在一副全部是噪声的图像中“作画”,那既然这幅画我们自己都不知道是啥样子了,Diffusion怎么能给出来了,于是,Diffusion就不断的猜呀猜,就像一个作家在玩沙画一样,但一开始他也不知道该怎么画,所以沙子一开始是胡乱的摆放着的;

而CLIP它像个没学过画画的小孩,没有任何绘画技巧,但是这个小孩有着天马行空的脑袋,大人给他讲一个简单的故事,它脑海中就会有非常奇妙的画面,于是,我们吧故事(也就是prompt)将给CLIP听,CLIP看着Diffusion画画,告诉它要画哪些东西,画人还是画房子,房子是啥样的,天空是啥样子的,然后Duffusion用灵巧的双手不断的重排沙子的位置,渐渐的,它就把CLIP想要的画画出来了,于是,完成了AI创作。

快速开始

这里使用的平台是@矩池云
官方的平台放在了Google Colab,但是实际上考虑到科学上网的技术难度、网速、算力资源,一般用户使用起来还是比较困难的,但是矩池云已经搭建了完成的Disco镜像,可以直接使用,无需自己再搭建环境。
进入官网后租用GPU,找到Disco镜像,(一般在第2页就是,找不到也可快速搜索)
在这里插入图片描述
等待服务器启动完成后,点击连接进入Jupyter
在这里插入图片描述
进入后找到 disco-diffusion文件夹
在这里插入图片描述
点开后打开Jupyter notebook
在这里插入图片描述
点击全部运行,等待依次等待模型加载完成,就可看到图像根据prompt的生成和迭代了:
在这里插入图片描述

进阶使用

修改prompt

在jupyter中找到下面这样的代码,或者Ctrl+F查找text_prompts关键词快速跳转
在这里插入图片描述
红框中的就是描述语了,我们只需呀该0后面的语句,不需要动100后面的语句。描述语句可以参考网站:bilibili
整个画作的描述词可拆解为五个维度理解:

  • 画种描述: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(全球最专业的CG艺术家社区,又称A站);
  • 颜色描述:yellow color scheme。

给定指导图像

事实上Disco Diffusion不仅仅可以根据文本描述,还可以添加参考图像来创作,Disco Diffusion在你给定的参考图像基础上,结合文本描述进一步“艺术化”
在Jupyter中找到init_image ,填写参考图像的路径即可。
在这里插入图片描述

修改基础参数

  • batch_name : batch保存的文件夹名,最终的图像/视频输出将会保存在.\Disco_Diffusion\images_out\ batch_name
  • width_height: 希望的最终图像尺寸,单位是像素,默认1280×768,尺寸越大占用显存越多。你可以有一个正方形、宽或高的图像,但每个边缘的长度应设置为64的倍数,在默认情况下,最小为512 px。官方建议[512x768]是你开始使用的时候很好的设置, [1024x768]其实有点过大了,也有可能会导致显存不够的现象。
  • steps: 迭代次数,默认250,可选值范围是50-10000,在创建一个图像时,去噪过程被细分为处理的步骤。 每个步骤(或迭代)都涉及到AI查看被称为 "切割 "的图像子集并计算出 “方向"来引导图像朝着prompt的方向生成。然后,它在diffusion去噪的过程对图像进行调整并进入下一个步骤。 增加steps将为AI提供更多的机会来调整图像,而且每次调整都会比较小,因此会产生更多的精细的图像。增加steps的代价就是延长渲染时间。另外,虽然增加步数通常会提高画面质量,但一般来说超过250-500步的时候,实际上的改善就不是特别明显了。然而,一些复杂的图像可能需要1000、2000、甚至更多的步骤,这都取决于你。
  • skip_steps: 必须可以整除steps,默认值10,。由于一开始图像变化会非常快,AI需要从完全的噪声图像快速的形成画面的大致轮廓,但随着diffusion步骤的进行,AI开始对画面的调整也愈来愈精细。因此去噪的前几个步骤往往是非常戏剧性的,有些步骤 (可能占总数的10-15%) 可以被跳过而不而不影响最终的图像。因此,可以通过跳过这些步骤来缩短渲染时间。但与此同时,这项值过大意味着跳过了太多的步骤,剩下的噪声可能不够产生新的内容,因此可能没有 "剩余时间 "来完成一幅满意的图像。实际上,设置一定的skip_steps是必要的,因为它也可以方式CLIP模型过拟合的可能,比如颜色饱和度过高、出现纯白或者纯黑的区域,最后,如果有init_image,则需要跳过大约50%的steps来保证和init_image的相似。
  • clip_guidance_scale: 默认5000,可选范围1500-100000,用于指示最终图像和描述文本(prompt)的相似度,是非常重要的参数之一。一般来说越高越好,但如果太大的话,它也会过度接近目标并扭曲图像,所以该参数的选择也需要结合自己的经验吧。 值得注意的一点,这个参数,它会随着图像的尺寸变化而变化,如果一开始你选择了一个合适的参数比如总尺寸增加了50%,那么这个参数值也应该增加50%
  • tv_scale: 总噪声方差,默认为0,可选参数,范围为0-1000,设置为0即可关闭。控制最终输出的 “平滑度”。如果使用,tv_scale将尝试平滑你的最终图像,以减少整体噪声。
  • range_scale: 默认150,可选参数,范围0-1000,0即关闭。用于调整颜色的对比度。较低的range_scale会增加对比度。非常低的值会产生更多鲜艳的或类似海报的图像。较高的range_scale会降低对比度,使图像更加柔和。
  • sat_scale: 过饱和调整,可选参数,设置为零即可关闭。如果使用, sat_scale将有助于减轻过饱和度,如果你的图像过于饱和,可以增加 sat_scale来降低饱和度。
  • init_image: 可选参数,作为AI生成图像的参考图像,也是起点图像,如果保持默认值(None),那么生成的结果就是一开始我们看到的噪声图像。
  • init_scale: 默认值1000,可选范围10-20000, 这控制了CLIP在多大程度上会试图匹配提供的init_image。这与上面的 clip_guidance_scale相互平衡。较大的值时,图像就不会在扩散过程中变化很大。而太多的clip_guidance_scale,初始图像可能会被丢失。
  • cutn_batches: 切割批次,默认值4,取值范围1-8,每一次迭代,AI都会将图像切割成更小的片段,称为"切割",并将每个切割与提示进行比较以决定如何指导下一个diffusion步骤。更多的切割通常会有更好的图像,因为DD有更多的机会在每个step中微调图像的精度。然而,当切割数目过多的时候也需要大量的内存,如果DD试图一次评估太多的切割,它可能会耗尽内存。你可以使用cutn_batches 来增加切割的次数,而不增加内存的使用。在默认设置下,DD被安排在每个时间段做16次切割。如果 cutn_batches被设置为1,则每个时间段确实只有16次切割。如果设置,则总共切割64次,并分成4批切割 。在同一时间,计算机只会处理1批的切割,因此 切割总次数/16 = cutn_batches (切割批次)
  • skip_augs: 算法中使用 "torchvision"进行了图像增强,即在图像创建过程中引入了随机的图像缩放、透视和其他选择性的 在图像创建过程中进行随机调整。这些增强的目的是为了帮助提高图像质量,但可能会对边缘产生 不被希望的"平滑 "效果。通过设置skip_augs为True就可以跳过这些增强步骤,并略微加快渲染速度。可以尝试对比打开前后的差异,来获取你想要的结果。

运行参数设置

  • n_batches: 默认值50,可选范围0-100,这个变量设置你希望DD创建的静止图像的数量。如果你使用的是动画模式,DD将忽略n_batches,并根据动画设置创建一套单一的动画帧,并根据动画设置创建一组动画。
  • display_rate: 默认值50,可选范围5-500, 控制预览刷新频率。默认的50表示每50步刷新一次预览效果,把它设置为一个较低的值,如5或10,是一个很好的方法来获得一个早期的监视你的图像的走向的方法。
  • resume_run: 如果你的批处理运行被打断了(无论是因为你停止了或因为断线,)你可以用这个复选框在你离开的地方恢复你的批处理运行,但前提是必须不改变之前的参数设置,不然可能就不能恢复。因此,如果你已经中断了一次运行并调整了设置,就不应该使用这个参数 ,而应该重新运行。

运行建议

一个常见的DD工作流程是,改变描述(prompt)或参数设置,做一个短的运行。评估图像,然后调整设置,再做一次。在DD的表现上有很多的变化,而且图像需要时间来渲染,所以反馈也需要时间。因此,最好是有条不紊地去做并记下你所做的改变和它们的影响。当你在尝试使用文字的描述时,最好是把总的步骤数调低。这样你就能很快看到描述后的效果。一旦你确定了你喜欢的文字描述,那么你就可以调高步数和调整设置,以使你的最后的图像效果和图像质量更好。

模型设置

这些设置涉及对渲染模型的更改,属于更“高级”的设置,初学玩家可以先不考虑。

  • diffusion_model: 所选择的diffusion模型
  • use_secondary_model: 默认值为True, 可以选择使用一个辅助的diffusion模型来清理临时diffusion图像,用于CLIP 评估。如果这个选项被关闭,DD将使用常规的 (大)扩散模型。使用辅助模型更快,渲染速度几乎可以提高50%。但可能会降低图像质量和细节。.
  • sampling_mode: 两种去噪算法,默认值ddim,可选值(ddim or plms) 两种。ddim出现的时间较长,而且更加成熟和经过测试。plms是一种新增加的方法,承诺以较少的步骤获得良好的扩散结果,但没有经过充分的测试,可能有不稳定的情况。这种新的plms模式也正在积极被研究中。
  • timestep_respacing: 保持默认,内部变量,可以不用管他
  • diffusion_steps: 保持默认,内部变量,可以不用管他
  • use_checkpoint: 默认值为True, 这个选项有助于在生成图像时节省显存生成图像。如果你使用的是一台非常强大的机器(如A100),你可以会把这个选项关掉,以加快速度,然而你也可能立即遇到CUDA OOM错误,所以要谨慎使用。

参数详情

基本可调的参数都如下表:

变量名称描述默认值
text_prompts对你希望机器生成的内容进行描述。N/A
image_prompts可以设置一些参考图片,以对其内容的更多描述(可选)N/A
clip_guidance_scale控制图像与描述语的相似程度。1000
tv_scale控制最终输出的平滑度150
range_scale控制RGB值允许超出的范围有多大150
sat_scale画面饱和度控制0
cutn控制要从图像中提取多少个裁剪16
cutn_batches积累batch裁切的CLIP梯度2
init_image初始化的图片,机器在一张图片的基础上做渲染,可以是照片、涂鸦等,也可以保持缺失让机器自己发挥None
init_scale初始图像对最终结果影响的程度,建议值是10000
skip_steps控制控制diffusion时间段的起始点0
perlin_init是否选择以随机的perlin噪声开始FALSE
perlin_modeperlin噪声模式—(‘gray’, ‘color’)mixed’
skip_augs是否跳过torchvision的图像增强功能FALSE
randomize_classimagenet类是否在每次迭代中随机改变Ture
clip_denoisedCLIP是否能分辨出有噪音的或去噪的图像FALSE
clamp_grad实验性的:在cond_fn中是否使用自适应clip梯度Ture
seed选择一个随机的种子,并在运行结束时打印出来供复制。random_seed
fuzzy_prompt是否向描述损失添加多个随机的干扰描述FALSE
rand_mag控制随机的干扰描述的大小0.1
etaDDIM超参数0.5
use_vertical_symmetry是否是水平对称的FALSE
use_horizontal_symmetry是否是垂直对称的FALSE
transformation_steps控制对称性强度(以百分比的形式)0.01
video_init_flow_warp是否启动Flow_warpTure
video_init_flow_blend0–你得到的是原始输入,1–你得到的是被warp的前一帧0.999
video_init_check_consistencyTBD检查前向-后向flow的一致性(除非有太多的扭曲假象,否则不检查)FALSE
timestep_respacing修改这个值可以减少迭代次数ddim100
diffusion_steps迭代次数1000
clip_models要加载的CLIP的模型。通常情况下,越多越好,但它们都有很高的显存成本。ViT-B/32, ViT-B/16, RN50x4
display_rate控制预览刷新频率。默认的50表示每50步刷新一次预览效果50
n_batches同一词组关键词,生成多少张图。默认的50表示AI绘制完成50张图后停止绘画50
steps越大画面越精细,渲染也越慢,但超过500其实提升不显著240
width_height生成的图像大小(分辨率),必须是64的倍数,[1270,768]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路径规划 | 图解RRT-Connect算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 RRT-Connect基本原理2 RRT-Connect vs. RRT3 ROS C算法实现4 Python算法实现5 Matlab算法实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等)…

chatgpt赋能python:Python实现奇数位偶数位互换的方法

Python实现奇数位偶数位互换的方法 Python是一种高级的、面向对象的编程语言,在当今的编程领域中具有广泛的应用。它被用于数据分析、机器学习、Web开发等众多领域,其简洁的语法和强大的库被开发者们广泛使用。本文将介绍Python中奇数位偶数位互换的方法…

驱动开发:内核实现SSDT挂钩与摘钩

在前面的文章《驱动开发:内核解析PE结构导出表》中我们封装了两个函数KernelMapFile()函数可用来读取内核文件,GetAddressFromFunction()函数可用来在导出表中寻找指定函数的导出地址,本章将以此为基础实现对特定SSDT函数的Hook挂钩操作&…

【Django 网页Web开发】07. 快捷的表单生成 Form与MoudleForm(保姆级图文)

目录 注意 正规写法是 ModelForm,下面文章我多实现效果url.py新建3个html文件数据库连接model.py 数据表1. 原始方法view.pytestOrgion.html 2. Form方法view.pytestForm.html 3. MoudleForm方法给字段设置样式面向对象的思路,批量添加样式错误信息的显示…

ASIC-WORLD Verilog(10)编写测试脚本Testbench的艺术

写在前面 在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。 这是网站原文&…

干货!来自北大、KAUST、斯坦福、达摩院的大模型前沿动态:表格推理、代码生成、MiniGPT-4、生成式推理...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! ChatGPT的发布使得国内外众多的研究机构掀起了一股AI热潮,而这也进一步推动了人们对大语言模型的深入研究。2023年4月26日,AI TIME举办的大模型专场四活动邀请了阿里巴巴达摩院NLP研究员…

在 IDEA 中配置 JavaFX 11

因为从 Java8/openjdk 之后,javafx 从 jdk 中移除,如果进行 JavaFX 开发需要在 module 中添加 lib,并对 IDE 进行配置,确保 jdk 可以与 javafx 正常调用。 javafx 下载路径,主页网址:https://openjfx.io/ …

开发实践|程序员是如何刷抖音、玩快手、看头条进行赚米的?

欢迎关注「全栈工程师修炼指南」公众号 点击 👇 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! “ 花开堪折直须折,莫待无花空折枝。 ” 作者主页:[ https://www.weiyigeek.top ] 博客&…

【计算机组成原理与体系结构】数据的表示与运算

目录 一、进位计数制 二、信息编码 三、定点数数据表示 四、校验码 五、定点数补码加减运算 六、标志位的生成 七、定点数的移位运算 八、定点数的乘除运算 九、浮点数的表示 十、浮点数的运算 一、进位计数制 整数部分: 二进制、八进制、十六进制 --…

穿越认知峡谷

十年前,2013 年的这个时候,“互联网思维”在国内大火。我没有认真研究过这件事的来龙去脉,不过印象里 2012 年底《罗辑思维》视频栏目的开播,以及差不多同时小米手机的爆发,对“互联网思维”的大流行应该是起了重要的推…

【ABAP】数据类型(一)「数据类型概要及分类」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…

Nginx正则表达式、location、rewrite

目录 一、常用的Nginx正则表达式 二:localtion 1、location 分类 2、 location 常用的匹配规则 3、location 优先级 4、 location 示例 5、优先级总结 6、实际网站使用中,至少有三个匹配规则定义 (1)第一个必选规则 &…

深入理解设计原则之接口隔离原则(ISP)【软件架构设计】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C并发线程编程 LSP:接口隔离原则 系列文章目录1、接口隔离原则的定义和解读2、案例解读3、如何判断一个接口是否符合接口隔离原则?小结 1、接口隔离原则的定义和…

CVPR 2023 医学图像分割论文大盘点

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【医学图像分割】微信交流群 被催了很久,CVer 正式开启 CVPR 2023 论文大盘点系列!Amusi 一共搜集了13篇医学图像分割论文,这应该是目前各…

HTML 5中的文件处理之FileAPI

在众多HTML5规范中,有一部分规范是跟文件处理有关的,在早期的浏览器技术中,处理小量字符串是js最擅 长的处理之一。但文件处理,尤其是二进制文件处理,一直是个空白。在一些情况下,我们不得不通过Flash/Acti…

GPT国内的一些产品真的比国外的差吗?(篇幅较长,请收藏)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 本次讨论的话题仅限于计算机视觉研究院个人观点,若有说的不对的地方勿喷,有…

k8s之docker-扩展知识(八)

一.Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 二.Docker 的优点 Docker 是一个用于开发&#…

【ChatGPT】Mr. Ranedeer:可定制个性化学习体验的 GPT-4 AI 导师提示

Mr. Ranedeer AI Tutor是一个可定制的提示,为具有不同需求和兴趣的用户提供个性化的学习体验。它使用GPT-4来释放AI的潜力,并允许您调整知识深度以匹配您的学习需求,自定义学习风格,沟通类型,语气和推理框架 。 当您使…

ISO21434 组织网络安全管理(二)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 4.1 网络安全治理 4.2 网络安全文化 4.3 信息共享 4.4 管理系统 4.5 工具管理 4.6 信息安全管理 4.7 组织网络安全审计 五、输出 一、概述 为了实现网络安全工程,该…

自动驾驶TPM技术杂谈 ———— 车辆分类

文章目录 机动车规格机动车结构机动车使用性质机动车和挂车分类接近角定义离去角定义纵向通过角定义离地间隙定义前后轴之间的离地间隙轴下离地间隙 机动车规格 机动车规格分类 分类 说明 汽车 载客汽车 大型 车长大于或等于 6000mm 或者乘坐人数大于或等于20 人的载客汽车。 …