AI画材质里采样算法的选择

我之前基本实现了使用AI生成MC风格的贴图,方块和物品都实现了,尽管模型可以在调参后优化,但那是之后的事,工作量很大。因此,最近我决定先研究一下生成时的参数。
其中一个参数是sampler,也就是具体使用哪种采样算法。说实话,我完全不知道这些算法都是啥,我只知道a代表非线性,可能步数多了之后反而变崩。
既然如此,那就全都试用一遍。所幸SD里的XYplot能很方便地实现这个功能,挂几个小时就能生成一张这样的网格图。第一题我们先来个简单的开卷考试:钻石块。训练集里是有钻石块的,因此按理说diamond block它不应该生成的很烂,至少不会毫无概念。那么,结果如下。

从上到下的算法是Euler a, Euler, LMS, Heun, DPM2, DPM2 a, DPM++ 2S a, DPM++ 2M, DPM++ SDE, DPM fast, DPM adaptive, LMS Karras, DPM2 Karras, DPM2 a Karras, DPM++ 2S a Karras, DPM++ 2M Karras, DPM++ SDE Karras, DDIM, PLMS, UniPC。
横轴是步数为2、4、6、8……40的结果。
可以看到,
第三行的LMS差得要命,根本生成不出能看的钻石块贴图。
倒数第二行的PLMS也是相当糟糕。中间的DPM adaptive非常稳定,自始至终毫无变化。
DPM Fast,开局先是一团乱麻,之后经过很长的一段转变才稳定。
DPM++ 2S a Karras和DPM++ SDE Karras则是在不到20步就进入了稳定态。
训练集就有钻石块,那么AI面对陌生的环境表现如何呢?我们让他来个闭卷考试,红宝石块(ruby, block)。


我试了几个不同的种子。DPM Fast有时候能成功生成,有时候则不行。
基本上,各个算法给出的最终答案都是具有十字纹路的块,虽然我也不知道是为什么。少部分算法在过程中生成了一些没有纹路的块,但之后就放弃了这个解。说实话,我觉得这个没有纹路的才应该是正解。LMS Karras是少数自始至终都维持了这个解的算法。

几轮测试下来,我认为在生成MC AI贴图的问题上,如果不想去在步数上反复调试,直接DPM Adaptive是最舒服的。它与步数无关,即使step设为2也没有问题,而且高度稳定,基本不会出现噪点。