今天没有整活,全是干货。来讲一讲如何用少量的图片训练出你想要的画风,还请一键三连支持我一下。
孩子快交不起电费了。首先你需要秋叶的训练包啊,你去翻秋叶的视频也好,去get hold上面找找也好。这个训练包是免费的,完全开源的。
我把get get hope的链接放在下面吧,然后你需要一个至少三十二张图片的训练集。这个训练集我已经和人家画师打过招呼了啊,不存在任何道德或者法律上的问题。当然三十二张是将将摸到门槛,我自己训练的话可能会准备六十到五百张左右。
不过就算你准备了一千甚至五千张图片,这些相比于几万几十万几百万的训练集来说,都属于是小训练集。小训练集有小训练集的处理方法。接下来我会讲一下训练集的基本要求。
我们来看到这个p v c的训练集,这个p v c的训练集典型的例子非常多,所以我们拿它来当一个教案。首先是这种拥有透明背景的图片,这种拥有透明背景的图片是绝对绝对绝对不可以。很多人都有一个误区啊,a i会把透明背景识别成白色或者是黑色,不是这个样子的。
所以大家也不要特意去做什么裁图之类的事情。这种图片可能对于拥有庞大训练集的模型来说没有什么感觉,但是。对于我们这种小训练集来说,这种图片是非常影响质量的。
我特意从我以前的炉渣里面挑出来了一个极端案例。生成这些图片的模型的训练集是完全没有背景的,所有的图片都是透明背景。就算你的训练集没有那么极端,但是由于我们的炫技比较小的缘故,你这些图片混在训练集里是一定会影响最终模型的出图质量的。
所以不要去使用拥有透明背景的图片,然后就是像这样拥有边框的图片和拥有logo的图片。这些图片可以作为训练素材,但是你需要注意一下它的打标。也就是说你需要告诉ai这是一张拥有边框的图片,或者是这是一张拥有logo的图片。
然后你用这些图片渲染出来的。ai生成图片的时候,只要不特意的去写边框或者logo,它就不会出现优秀的打标,除了之前透明背景的问题以外,基本上所有的问题都可以解决。当然如果你不想花心思在打标上的话,你就需要把你不想要的图片处理掉。
p s也好,删掉也好。接下来是我们这个训练流派的一个重点,大家注意听,干货要来了。为了让你的模型能够在学习到画风的同时,不对某一张图片上面的人物过拟合,你的等效bites也就是a i同时训练的图片的数量一定要足够大,也就是这两个参数相乘。
大到什么程度?大到你的等效base是你的模型训练集的图片的一半。最终在训练的时候一个一破是只有两步。啊,为什么是二不是一呢?啊,我也不知道。
也就是说如果我们有五百张图片的话,我们的批量大小乘以梯度的一个步数应当是二百五十。现在我们只有三十二张图片,所以我们的批量大小乘以梯度累加步数等于十六。其中批量大小是和你训练的时候的占用显存有关系的。
在显存允许的情况下,你的批量大小应该尽可能的大好了,你已经学会了这个流派百分之五十的重点了,剩下的重点在bucket里面。在通常的训练中,我们所有的图片都是相同的分辨率。不开启bucket的情况下,你所有不是这个分辨率比例的图片都会被裁剪成这个分辨率比例。
比如说我现在填写的是一零二四乘以一零二四,那么我所有的图片都会被裁剪成正方形。但是如果你图片的分辨率是五幺二乘以五幺二,或者二零四八乘以二零四八,那么这张图片是不会被裁剪的,它会被完完整整的训练。我这么说应该能听得懂吧。
啊,你任何脚本的训练,它的裁剪都是非常不智能的。当然你你也可以自己去,但是无论如何,训练集的整体质量势必是要下降的。嗯,所以我们一定要开启这个bucket,允许非固定宽高比的图片。
他会先将相似分辨率的比例分组,然后再进行训练。像这样。但是这样又会带出来一个问题,如果我们的某一个bucket里面的图片的数量。
不是我们的这个batch size,也就是批量大小的倍数的话,里面的某一些图片就会被反复的训练。比如说你的批量大小填的是八,但是你的八case里面只只有一张图片,那么这张图就会被训练八遍,这在小训练集里面一定是会过拟合的。我们这个参数在理想情况下,不管你是五百张也好,一千张也好,一个已破是只有两步。
但是如果不对图片的分辨率进行处理的话,像刚刚那个训练集,它的一个一步或是就变成了六步。因为它被分成了十一个bucket,它的梯度累加步数是二二。那么如何解决这个问题呢?还是得裁图,但是这个方法能让你裁的图片更少。
尤其是当你的训练集拥有两三百甚至是一千张图片的时候,你只需要裁剪其中的几张或者几十张就可以了。这会大大的增加你训练集的质量。高等效批量大小对于小训练集来说是必要的,所以这是必不可少的步骤。
啊,我这里有个脚本和你的nio给我的他可以提前将图片按照bucket分成不同的文件夹。方便我们裁剪。啊,脚本就百度云盘了,链接放评论区。
那么所有需要你去动手修改的参数,以及如何去配置训练集都已经讲完了。其他的参数呢你就按照你自己的理解,该怎么样就怎么样就行了啊,毕竟你所热爱的就是你的参数,接下来我会贴上我的训练参数给大家参考一下。我个人使用的参数有很多反常识的地方,大家如果有自己的见解,或者是对我的参数有什么地方有疑问,可以自由的在评论区讨论。