在最近新上线的controlnet模型中,除了我们之前测试过的一众适配sdxl的模型以外,还增加了一款名为Recolor的新模型,它的作用是可以将黑白的图片进行重新上色。
看到这个功能,我首先想到的就是可以用它来修复那些已经年代久远的老照片。毕竟在以前那个年代,没有现在这种可以永远保存的数码拍照技术,很多洗出来的照片也都随着岁月的流逝而褪去了色彩。如果能用AI技术恢复这些往日的时光,也许能唤醒我们心底的一些温暖。
于是,我联系爸妈帮我找来了一些他们珍存的照片。他们也很热心于这件事情,立马给我发来了一大堆照片,其中有很多我也没见过的他们年轻的时候的样子,还包括我爷爷奶奶外公外婆那一辈的回忆。虽然很多照片都是黑白的,但是仍然能感受到那个时候的阳光和清风。
这是我的奶奶,她离开已经有十几年了,年轻时候留下的照片不多,这一张算是保存得很好的了,那个年代的人物照片总能让人感受到一种独特的气质。
既然是人物照片的还原,我这里就选择了realisian的写实大模型。提示词直接描述颜色和对应的内容。比如黑色的头发、黄色的皮肤、深蓝色的衣服、浅蓝色的背景。因为黑白照片,颜色无从判断,所以有些只能靠猜测了。
ControlNet这里选择Recolor,预处理器有两个,经过我的测试,选择“recolor_luminance”的效果会更好一些。
但是仅仅这样是不够的,从渲染的结果上我发现,颜色并不是精准地出现在我们想要的位置上的,提示词之间会出现相互的污染。而且由于照片上斑驳的痕迹,即使是背景也不能够做到完全统一,看来事情并没有我想象的那么简单。
为了做到颜色与内容的统一,我启用了之前讲到过的一款cutoff插件来进行控制,依次按顺序设置好颜色提示词,
终于得到了一张配色正确的照片,但是还没有完,由于以前的照片像素比较低,接下来我准备将它变得更高清一点。
将照片放入到后期处理中,使用GFPGAN算法将人脸变清晰
这个步骤,可以将我们的五官进行重绘,但是却没有办法将照片中的头发、衣服等其他元素变清晰。
所以,接下来我将图片再发送到图生图当中,打开stableSR脚本,放大两倍。这个放大插件是所有插件中对原图还原最精准的,也是重绘效果最好的,
切换到sd2.1的模型进行修复,vae选择vqgan,提示词可以什么都不写,以免对原图产生干扰。
启用MutiDiffusion插件,不开放大倍数,仅使用分块渲染的功能,能帮助我们在显存不够的情况下,将图片放大到足够的倍数。
对比一下看看,之前的黑白照片和经过上色高清化完成之后效果。
同样的步骤,又还原了一张我妈妈的照片。在问到她当时穿的什么颜色衣服的时候,她记得可清楚了,想都没想就告诉我说是绿色的。
比如这一张,是我外公外婆带着我妈和我舅舅。外公走得更早,我甚至都没见过一面,只有这些照片还记录着他存在的痕迹。而这张照片也有些年头了,一直被外婆好好保存着。人物多、场景复杂,像素非常的低,使得这张照片处理起来难度很大。
我首先在ps里面进行了一下角度的调整和照片的裁切,然后使用刚才的步骤进行上色,但是直接上色的结果有点像是加了一层黄色滤镜,有颜色但是年代感还是太强了。
而太具体的颜色指定,又容易让画面污染严重,因为内容实在太多了,光是指定衣服就得十来个颜色提示词,AI能分辨得清才怪。
所以我决定放弃人物服装的颜色指定,只给一个场景方向,剩下的交给AI去自行决定。于是,我从网上找到了一张仙人洞的照片,让AI去帮我匹配色调。
加入第二个controlnet来控制颜色,使用的是t2ia_color的模型。
关键词只给了:蓝天、绿树、灰石砖这么简单的几个词。
颜色终于正常了,最后经过脸部的修复和放大,得到了最终的效果。
对比一下前后的效果,那个流逝的时光仿佛又回来了,外婆看到后也非常高兴,在微信上连连夸赞。
同样难度的还有这张照片,是外婆带着我妈和舅舅拍的合影,应该是在影棚里拍的,背景是张画。这张照片的难点主要还是内容太多了,无法一一指定颜色,所以我只能逐个上色,再用ps进行融合。
看着这些老照片一张一张的翻新,思绪也会沉浸在某段时光里。也许不曾去过,但又总觉得似曾相识;也许相隔遥远,但又觉得触手可及。
扫一扫,关注作者公众号
stable diffusion、Blender等学习心得分享