模型回顾—关于Stable Diffusion手部生成的看法

SD指南2年前 (2023)发布 一起用AI
729 0 0

这个坑主要来说说做模型的一些问题的理解,但一定合适,还是想和大家多多讨论

背景

最近使用各种生成模型的同学都会发现Stable等衍生模型都存在一个相似问题,不会画手,或者手画残了。我今天就想说说自己的看法和猜测。

文章问题提出

DallE2原文[https://arxiv.org/pdf/2204.06125.pdf]中说的模型局限性. 虽然DallE不是我们现在使用stable diffusion油区别,但DallE2绝对算前辈。在Limitations 的描述主要是三个问题:

空间位置无法区分;前后、上下模型很容易误会;模型对于颜色的区分;模型对于模型之间大小比例分析的很好;对于生成的字符形式的问题;

另外一个,也是我使用stable diffusion过程中发现的,不区分个数,多个相同物体的时候容易出现的问题;

模型回顾---关于Stable Diffusion手部生成的看法

但其实从DallE给出的样例来看,模型手上的问题不多,paper里的案例:

模型回顾---关于Stable Diffusion手部生成的看法

其实看过源码,你就会发现DallE考虑更周全,像是一个深入研究,大部分模型结构都有自己理解和升级;而stablediffusion更像是着急抢时间发表的Paper,很多模型结构都是使用现成的直接调用。

问题分析—模型

说了上面遇到的问题,我们具体来看看这些问题出现可能和模型的关系。以下都是我根据自己读paper理解的问题,可能很片面,如果错误忘指出。

这类生成模型的主要核心分为Clip的文本-图像的多模态部分、生成图像的diffusion部分;

Clip部分

Clip的结构,其实用文章的的流程图我们就能理解,他其实是将一个描述信息与一张图做成正样本,与其他样本进行比较(对比学习)。这样方法好处就是模型可以学习更过,原来我们只做识别狗的模型,但是金毛还是藏獒我们其实不关心;但因为做对比学习,语料库里只要出现过金毛,他就可以对应学习,如果语料库足够,他深知可以学习物种间间的关系,比如藏獒属于狗;

模型回顾---关于Stable Diffusion手部生成的看法

这个模型之前我有介绍过,可以参考:

我当时的一个案例,不做微调,模型可以直接认识出奥特曼和它的棒子。

预测结果:

模型回顾---关于Stable Diffusion手部生成的看法

接下来说一我理解可能会出的问题:

CLip模型使用分析图像的结构油resnet50/100和ViT14/16/32的模型,一般都会选择后者,但作为transformer应用方法其实是将图像切块,然后丢给多头模型里;但切块其实对于图像上小区域及其不友好,特别是没有描述信息的;比如手、比图路牌上的信息。本身复杂、需要连贯性但图像都给切分开;数据本身描述的有用信息少,一般一张照片描述主题居多、细节部分描述有限,比如图片描述中很少牵扯是否有手,手在哪里这些信息;

其实总当时zero-shot模型的结果我们就能看出一些端倪,一般初学者的mnist数据库,Clip预测并不比一般模型有优势。

对于DTD纹理分类数据集,CLEVRCounts计数数据集,还有像PatchCamelyon,肿瘤这种,网络本上不多,而且没有先验概率的数据训练很难实现。但对于MNIST的结果,更大概率是图像数据中有,但文本中又不多;

Diffusion部分

其实这部分对于DALLE2和Stable给出的代码差异还是挺大的,但基本原理差不多。我们先引用stable论文中的结构说明一下:

主要两个问题:

第一个,图像导入后先进编码结构,其实这个结构回损失像素的,后期可以恢复,但对于loss函数还说还是有限,所以在这里小的细节就已经开始丢失了;

第二个问题就是Unet网络中做cross-attention部分其实对于文本编码信号要求很高,其实就是要求Clip部分提供的信号足够好,这个前面我们讨论过。这里说一下DallE2和Stable的一个区别,Dalle使用的是自己写的一个Unet方法、而stable是直接调用swim-conv-unet模型,但有一些加工,但整理模型结构还是相对简单一些。

modules.scunet_model_arch文件250多行;

但相对的DALLE2关于Unet的使用:

模型回顾---关于Stable Diffusion手部生成的看法

当然代码多不一定是好事,但其实能看到DALLE2在生成部分对于内容把控更多。

所以综上来看,模型对于小细节的手部学习不充分一方面是文本信息对应有限、另一部分是导入模型时候,信息丢失和后期处理的泛化性;

问题分析—数据

上面说完数据,我们来说一下数据。现在网上的模型主要是原始模型和做了很多few-shot的模型。

原始模型使用的是LAION 5B 数据集的一个子集训练的,其实这个模型生成的大部分还是更像真实世界的图。虽然手脚会出问题,但他画风景、食物真的很棒。

大家可以试试,不要盯着手绘图不放。

模型回顾---关于Stable Diffusion手部生成的看法
模型回顾---关于Stable Diffusion手部生成的看法
模型回顾---关于Stable Diffusion手部生成的看法

争论最大的也就是NovelAI使用的使用Danbooru的数据进行在二次训练的模型。

数据质量

这个数据库有50亿张图像还有tag标签,平均一张分三个tag;而且可以去看他的标签信息都很统一:

其实不算特别好的(不适合做多模态,描述信息太少,模型最终训练就是很极端)。

其实这个数据库做AI的很多人都在用,在学术圈也算公认的,很多gan模型都是在这里训练的。

比如swimgan,stylegan,biggan都用了这个数据集数据。特别是swim就是真人转二次元的模型。

针对性训练

其实现在针对首部针对性的提升也有很多工作,其中部分模型手部效果已经没有之前那么拉了

highres,extremely detailed CG kawaii,sexy 1girl,evil smile,huge brests,huge weapon,anti-materiel rifle,battle rifle,finger on trigger,trigger discipline,holding weapon,holding gun,bare shoulders,choker,cleavage cutout, military uniform, long hair, blue sky,

Negative prompt: head out of frame,pablo picasso, ((((mutated hands and fingers)))),((poorly_drawn_face)), ((poorly drawn hands)), ((poorly drawn feet)), (((long neck))), (big ears), ((((tiling)))), ((bad hands)), (bad art), (((text title signature)))

1girl loli ojousama, cowboy shot, long hair, fox ears, frilled hairband, green eyes, hair between eyes, fox tail, blonde hair, light brown hair

Negative prompt: layer breasts, long neck, long body, pablo picasso, bad anatomy, bad perspective, ugly, poorly drawn hands, disembodied limb, 2girls ,3girls

总结

很多问题是存在的,其中有一些通过特定数据强化是可以改变的、有一些其实需要底层模型进行提升。

论文里最后都会写一下展望工作,这个不失为一种。

© 版权声明

相关文章