NovelAI模型各参数解析以及对应关系

NovelAI指南 2年前 (2023) liang
420 0

Prompt和Negative Prompt

这两个就是大家口中的tag和反tag,这两个参数的作用原理其实是这样的。

人工智能模型在训练时候神经网络会包含很多参数,简单理解就是把一张图分解为许多元素(例如一个人分解成头发,眼睛,嘴巴鼻子....当然,实际上AI分解的非常细,以至于和人学画画的时候差不多)。

每个元素出现的权重(也就是绘图时候画出来对应元素的概率)可以由Prompt进行正向的调节。

Prompt可以作为元素权重的关键词,让AI更倾向于在绘图中绘制和Prompt的内容相关的元素,至于倾向性有多强,这个则是由CFG Scale进行调节,当然,AI能生成什么东西,至少这样东西的元素在训练集中已经有了,也就是说目前的AI还无法生成训练集中没有的元素,举个例子,假如训练集中没有林肯,那么即便输入林肯的脸这样的Prompt,也是无法让AI绘制出林肯的脸的。

那么很理所当然,要是想让AI生成自己需要的图,Prompt越详细,就越贴合需求。

Prompt既可以使用非常详细的描述,也能使用比较大概的描述,例如既可以提供如:红色卷发这样比较详细的描述,也可以用红色头发这样的描述。

当然,前者生成红色卷发的概率就较高,后者也可以生成红色卷发,但是概率就较低。

Negative Prompt则是和Prompt相反,是一个反向加权的权重关系,也就是减低某些元素出现的频率,从而约束AI的行为,例如我们可能不希望AI画出林肯的脸但是训练集中包含了林肯,这时候在Negative Prompt中添加林肯,AI就会不倾向于画出和林肯相关的全部元素,当然,如果是训练集都没有的,例如没有花生,那么即便添加了花生这个Negative Prompt也是没有意义的。

Sampling method和Sampling Steps

Sampling method即采样方法

方法是很多,但是这些方法深究其原理意义不大,然而也没有绝对优秀的方法,即便是Euler加上一个a,或者其他方法加上一些例如fast,P,Karras什么的,也不过是指的以原方法为基础的改进方法,这些改进的方法往往对某方面特化了,更适合某方面的情景,这里我们提一下,没有一个完全通用于所有场景的最强最好最完美的算法,只有最合适的算法,这便是机器学习中那个没有免费午餐的说法,或者换句话说只要效果过得去,用哪个方法都一样。

所以采样方法本身并没有绝对意义上的优劣之分,只有是否合适这一说。

采样的目标是求解一个函数f(z)关于一个分布p(z)的期望,当然这个对于使用它并不重要,正如我们使用螺丝刀不需要去学习扭矩,力矩等等一样。

这里主要提一下以下几个方法:

欧拉方法:也就是Euler方法,是比较成熟的一种采样方法,效果比较稳定。

但是Novelai之所以有更好的效果并不是因为欧拉方法,而是因为DDIM即生成扩散模型,也就是stable diffusion主要采用的一种采样方法。

也就是说实际上DDIM在生成上具有优异的效果,当然,采样方法没有优劣之分,具有优异的效果并不意味着在任何时候用DDIM都可以取得最佳的效果,而且采样方法的选择对于结果的影响相对于接下来的参数较小,所以并不需要在这方面下太多功夫,随机选,如果不尽人意就换一个,如果能行就继续用,这样的态度就可以了。

这里可以提一下euler/a方法在风格转换上,特别是现实转图方面效果比较稳定。当然,还有几个方法效果同样稳定,反而是DDIM不怎么稳定。

LMS:这个是最小均方误差算法,这是一个自适应的滤波器。

Heun:这个是建立在欧拉方法基础上的一个在给定初始条件下求解常微分方程的方法。

DPM:这是一个深度学习的PDE(偏微分方程)增强方法。

对于纯生成任务,采用DDIM效果相对较好,对于转换任务,采用euler和其改进型euler a都会有相对不错的效果,当然,其他方法的karras改进型效果也可以,但是非改进型效果往往不尽人意。

Sampling Steps即采样步长

首先这个不是越大越好,同样也不是越小越好。

太小的话采样的随机性会很高,太大的话采样的效率会很低,拒绝概率高(可以理解为没有采样到,采样的结果被舍弃了)。

再通俗一点就是这个适当大一些的可以让画面内容更细致,小的话就没那么细致,但是太大也会和小的差不多,一般来说默认的20就不错了,想要追求更好的效果也可以适当大一些,例如30也可以。

图像长宽这个没什么好说的,但是可以提一下,这个大一些内容会更丰富,小的话例如64*64就只能画出半张脸或者一个眼睛。

当然,越大的就会越吃性能。

web页面包含的三种优化技术

Restore faces是优化面部的,原理是调用一个神经网络模型对面部进行修复,影响面部。

Tiling是一种老牌优化技术,即CUDA的矩阵乘法优化,影响出图速度和降低显存消耗,不过实际选上之后可能连正常的图都不出来了。

Highres. fix这个也是和上面的一样,都是一种优化技术,其原理是先在内部出低分辩率的图,再放大添加细节之后再输出出来,影响出图的结果,可以在低采样步长的情况下达到高采样步长的效果,但是如果采样步长过低(例如小于12)或者过高(例如高于100)以及长宽太小(例如小于128)效果则不尽人意,这个也有一个Denoising strength,只不过这个Denoising strength影响的只是内部的那个低分辨图,如果只是初次生成一张图这个可以不管,不过如果预设种子和参数一致的话这个就会对生成的图造成影响,也就是图会发生变化而不是原图更为精细。

Batch count和Batch size

batch count和Batch size这个是出图的数量。只不过是顺序还是同时的区别。

关于seed以及extra的额外2个参数的作用

seed即为种子,-1的话是生成一个随机数,这个随机数影响画面的内容,如果seed以及Negative Prompt和Prompt都相同,生成几乎完全一致的图片的概率就很高,实际上这玩意是一个神经网络在当前情况下求得的一个最优解,设置了seed就相当于手动初始了神经网络的权重参数,在配合其他相同参数的情况下能得到一个极其类似的结果,当然,只设置seed而不设置其他的参数,还是无法得到类似的结果的。

Variation seed和Variation strength这两个则是种子的变异,在原有权重参数初始极值的基础上再求解一次,简单可以理解成再原有种子的构图要素上发生一些改变,那么Variation seed如何设置的和原有种子一致,那么出图也是极其类似,Variation strength这个在Variation seed和原有种子完全一致的情况下不起作用。在不一致的情况下则会影响和原图的相似程度,如果Variation strength为0,这时候反而是Variation seed不起作用。

但是这里我们要注意Resize seed from width和Resize seed from hight,这两个在和原图长宽一致时或者为0时都不会对原图种子构成影响,但是若是不一致则会对原图产生极大的影响,至于影响有多大?相当于Variation seed为-1和Variation strength直接调成1的情况差不多,毕竟直接从不同长宽调整了种子。

CFG Scale和Denoising strength

CFG Scale这个可以简单理解为AI对描述参数的倾向程度。

Denoising strength则是可以简单理解成原图片的保留程度,其实是因为加的噪声少,原图片部分多,加的噪声多,原图片部分少,从而影响了AI的创作,越大就越不贴合原本的图片,越小就越贴合,大小的极值则对应完全保留和完全不保留两个极端。

0-1可以看成百分比。

当然,可能有人有疑问,作者你说这个CFG Scale是对参数的倾向程度,如果这个很高,例如我想生成一个花生,但是原图却是一只猫,同时噪声又比较小,例如CFG Scale是20,但是Denoising strength只有0.2,这个时候AI会画出个什么东西?实际上AI的确会无从下笔,于是生成的结果很不尽人意,这两个参数之间就产生了矛盾。

这两个参数内含一种对应关系,一般来说,想要保留更多的原图片,Denoising strength小一些的时候,CFG Scale就要相对的小一些。

例如:

Denoising strength:0.1-0.2

CFG Scale:6-8

当然CFG Scale还可以更低,但是如果太低,例如1,那Prompt就完全没用了。

想要部分保留原图片的话,Denoising strength高一些,同时CFG Scale也可以高一些。

例如:

Denoising strength:0.2-0.5

CFG Scale:8-20

当然,如果原图片只想取几个风格,其他都无所谓的话,例如只想要原图片的色彩和人物的位置,那么Denoising strength就可以更高,同时CFG Scale也可以更高。

例如:

Denoising strength:0.5-0.75

CFG Scale:20-25

最后如果原图片就只是想要个色彩什么的,那么Denoising strength就可以高于0.75,同时CFG也可以更高

Denoising strength越接近1,CFG Scale就越成为决定出图是否符合需求的关键参数,当然,如果Denoising strength很大,但是CFG Scale却很小,那么AI生成的就越接近随机生成。

当然,举例的CFG Scale可以比例子更灵活,这个要看个人的需求了。

最后还不得不提一下,在选项卡中有txt2img,img2img,Extras,PNG Info,Checkpoint Merger,Textual inversion,Settings

前两个都知道,文本转图像,图像转图像,而Extras则是自带的图像放大,下面的各个模型则是图像放大的模型,Resize则是放大的倍率,PNG Info则是输出图像的参数信息,Checkpoint Merger这个是整合训练的模型的,Textual inversion则是可以针对某种风格训练模型,最后一个就没啥好说了,所以完全可以不借助其他工具对图像高清放大。

结:

最近这个绘图AI非常火,也带来许多的争议,但是我们始终应该要知道,AI作为一个工具,不具备人的感情,只是一种提高生产力的机器而已。

也就是说是提高劳动生产率的机器,那么抵制这个机器本身,和抵制这个机器的非盈利使用者,实际上是没有任何意义的,机器会导致什么结果,关键在于机器的应用方式,真正需要抵制的实际上是机器这种以盈利为目的的应用方式,当然这个究竟指的是什么想必不用多说,所以只是抵制机器本身,其结果无非就和19世纪的英国劳动的人一样,即便砸了机器,又能怎么样呢?

就是这个意思了,当然机器这种提高劳动生产率的东西,在以盈利为目的的应用方式下,就必然造成对劳动的替代,诚然其也会产生新的行业,例如AI调参师,但是现在一个调参师可以相当于之前10-50个画手,那么被替代的画手怎么办?那就只有天知道了。

最后推荐大家看看那本著名的论,会对这些事有更深刻的理解。

相关文章