这次测试了一个平常很少用到的功能:放大算法。
说是很少用到,其实也是经常用的,高清修复中肯定是要用的嘛,但是放大后就重绘了实际上也看不出各放大算法的区别。由于配置原因没办法用高清修复,或者想不改变原图的情况下获得高清图片,这种情况下应该怎么办呢,放大功能就上场了。
这次测试测试了stable diffusion不同放大算法的对图像放大效果。照例叠个甲,本测试结果仅针对相同条件下的测试,对其他不同参数的测试仅供参考,得出结论仅基于测试结果,不代表实际结果。
这次使用了5种模型进行测试,测试对象则是可爱的王小姐。在测试表中测试了2倍放大和4倍放大的效果,举例说明时仅使用四倍放大的例图。
在说结论之前,先来说说什么叫放大算法。
我们知道,一张图想要缩小,把原图的像素去掉一部分即可(当然实际算法更加复杂),但是一张图想要放大,从1MB变成4MB,这额外的3MB信息该去哪找呢,总不能无中生有吧。
于是放大算法就出现了,放大算法的核心都是从原图的1MB上提取信息,通过计算得出额外的3MB信息填充到原图上,就相当于把原图放大了。而具体是怎么计算的,就是不同放大算法的区别了。
几乎所有人都能想到的,最简单的放大算法就是,我把原图像素复制粘贴一份,不就等于放大了吗?这就是最简单的邻近值(nearest)放大。具体思路就是将原图的像素按放大比例复制,然后填充到原像素周围。具体效果如下图:
左图为原图,右图为4倍放大图。
什么?你说看不出区别?那我们放大了看。
什么?你还说看不出区别?
那就对了,邻近值放大的特点就是,它其实根本没放大。
虽然看起来好像两张图一模一样,但事实上,右图的每一个像素点都是左图的16倍大小。也就是说,右图的你以为的1个像素点,其实是由16个相同颜色的像素点组成的。四倍放大,就是将原图的像素点在长宽上各复制了4倍,形成了放大后的图。
邻近值放大确实把图片放大了,但也只是把图片放大了。如果想得到一张高清图,邻近值放大可以说毫无用处,该糊还是糊,该马赛克还是马赛克,除了更占空间外一无是处(其实保存成png后和原图差不多大,毕竟本质没有放大)。
一般绘画软件中也不会用到邻近值放大,画像素画的时候或许会用到,在常用绘画软件里,更常用到的算法是Lanczos,与他类似的还有ScuNET以及ScuNET PSNR。
我们先来看一下放大效果:
可以感受到的是,放大后的图像马赛克确实消失了,但是仍然很糊。
Lanczos放大的核心思路是权重插值,具体的权重还可以分为二次线性,二次立方等等。什么是权重插值?即计算像素点周围一定范围内的像素并赋予不同的权重,大概是近的权重越高,远的权重越低,然后根据权重计算出该像素的颜色再进行插入。
ScuNET效果与Lanczos,但在Lanczos的基础上添加了去噪点的效果,测试用图由于没有噪点基本看不出来,可以用于修复老照片之类的。
很明显,Lanczos算法有效地去除掉了马赛克,并根据权值做了较为顺滑的过度。但是……
还是好糊啊!!!!!
这时候,第三类放大算法就闪亮登场!!!
对比之下很容易看出,右图的放大完美的解决了马赛克和模糊问题,真正达到了“高清放大”的效果。
这就是包括BSRGAN,ESRGAN_4X,SwinIR_4x等在内的第三类放大算法。
这类放大算法的核心比较复杂,简单来说就是建立一个对抗网络,让这个网络去判断图像放大的好坏,最终得出成功放大的图像。
不同的对抗网络有不同的参数和逻辑,这导致生成的图也会有细微差别:
五个算法中,只有ESRGAN_4X去不了噪点,因此,使用ESRGAN_4X放大的图像也会比其他算法具有更多的纹理,其他四个则大同小异,SwinIR_4x相对会稍稍有点糊。
虽然对抗网络放大算法很优秀,但是并不适合用于放大AI图像,原因是由于AI生成图像只可远观,不可亵玩,不可细看,AI图像往往细节毫无逻辑,若再用对抗网络放大,则会使这些细节更加进一步地被表现出来,反而影响画面整体观感。在眼睛,饰品这些方面尤为明显。
最后再提一嘴LDSR,当我使用这个放大算法时,总是出现莫名报错,网上有说显存吃不消的,有说证书未授权的,因此这里就没有测试。
放大算法本质上更偏向于清除老照片噪点这种特殊用途,对于AI绘画其实帮助不大,真有高清图片需求其实还是建议高清修复,除非想要保证原图画面或是配置不够高清修复,但即使是采用了对抗网络放大算法,出来的图片依然差强人意,有条件还是建议细修。
本期测试表,测试用图,图包:
链接:https://pan.baidu.com/s/1d057UIZtU0w0-FzXp6BCWQ?pwd=gjll
提取码:gjll
解压码:suye
Q:为啥Excal里的图片看不出区别?
A:Excal中的图片都是被压缩了的,建议根据测试表的位置去文件夹找原图。
最后按惯例放几张图: