关于图像放大的经验之谈
  AI生图的初始尺寸都不太大,想要得到分辨率高的图片基本都要进行放大操作,目前UP主Nuulll整合包中共自带了3种图像放大的方案,经过我的多次测试,大致体验如下:
  1、文生图的二次处理(Second pass)
  在文生图中固定种子进行二次处理,对于大多数设备建议尺寸放大到512的2到3倍即可,过大占资源且效果并不理想,缺乏细节补充。
  2、图生图中SD upscale脚本
  图生图中沿用包括种子在内的参数不变,用SD upscale进行放大,过程采用分块的方式分步进行重绘,对资源有一定的节约,但不易保持原图的内容(可采用controlnet 的tile模型进行固定,但是我这边设备上controlnet貌似不太稳定)
  3、图生图中Ultimate SD upscale脚本
  看名称貌似是SDupscale的升级版,相较前述脚本设置选项更多,可进行线性或交叉分步重绘,还有接缝修复功能。测试中发现即使没开controlnet,也可保持原图大致内容不变,生成过程中内存与显存占用相对较少(4K图内存在9G左右,显存大部分时间在6G,最后合成图时会提高1~2G),4K图大致时间在5分半。
  除了上述方案,目前效果较为出色的是“multidiffusion-upscaler-for-automatic1111”即Tiled Diffusion插件。该插件原理和上述脚本差不多,都采用了分块的方式重绘,不过听说算法更为先进,插件设置较为复杂,大致可以参照群友“馒头办炊事员”的方法进行。其中较大的坑为放大倍数的设置,流程如下(借用馒头办炊事员的截图进行说明)
  
  采样方法可以按模型和个人习惯设置,缩放模式一定要点选“Resize fixed”,重绘尺寸既可以手输也可以修改重绘尺寸的倍数。
  
  点选启用Tiled Diffusion,不选保持输入图像大小,方案选择MultiDiffusion(一定要选);潜空间宽度和高度一致、重叠尺寸为分块尺寸的一半,默认参数大多数情况下可以用,从群主那儿了解到数值为分块尺寸的1/8,即如果分块尺寸512*512,那么潜空间分块为64*64(推荐使用这个数值);分块单批数量在1到2即可,根据生成的图大小设置;放大算法影响生成的速度和效果,推荐大家去网上看看教程,目前我没有比较好的方案,只测试了ESRGAN 4x GAN(需要下模型)和RealESRGAN 4x+ Anime6B(较为通用);放大倍数填1,经我多次踩坑,这个插件原本保持输入大小不变再此处选择放大倍数的方案和本方案理论上是效果一致的(N卡的SDwebui中),但是在英特尔显卡的SD.next中,前者方案将占用大量资源且生成速度极慢(4K图可能占满,一张图大概8分半,并且16G内存设备有几率爆内存)
  
  点选启用Tiled VAE,保持默认即可,图颜色有问题再点上颜色修复。
  经测试Tiled Diffusion插件1.5K放大到4K在5分钟左右,模型热身后,能跑到4分钟以内(其实还可以快,时间不够,没有测试调整参数)。
  该插件的优点是生成速度相对较快,放大画面和谐细腻;
  缺点多数估计是该插件与SD.next或英特尔显卡的兼容性问题:主要是占用资源大,一般显存在11G左右,插件上的显存释放功能基本无法使用,切换模型释放模型的方法在显存占用超过12G(总16G)的情况下极大概率爆显存或者内存,提示爆内存时,一定要关掉控制台,否则后续界面内操作立即蓝屏。
  综上所述,目前没有完美的放大方案,设备配置好的推荐Tiled Diffusion插件,通用的是Ultimate SD upscale脚本。想要保持原内容:①固定随机种子;②放大重绘幅度(降噪)建议不超过0.35,过大的幅度容易画风突变;③尺寸等比例放大;④掌握controlnet各模型的使用技巧,tile、openpose、lineart等等,网上有很多教程。想要更多细节,一次往往不容易成功,需要多次反复抽卡+局部重绘配合。
  最后补充:当然啦,以上都是从我的设备(5年前老机子,16G内存,A77016G,锐龙2代2400G:体验差的罪魁祸首)上测试的结果,因大家设备配置不尽相同,再加上测试时间不长,结果可能会有所误差(我在后续跑图中有新的发现,再对上述内容进行补充修改),大家可以作为对比参考,有错误的地方,请各位大佬及时提出。
  附上Tiled Diffusion生成的4K放大图,需要继续优化参数。后面也会尝试6K及更高分辨率的图
 
  这是原图
 
 
  这是放大的4K图
 
  这个是放大的6K图
 
 
2023-11-27
浏览822
登录后评论
5
3