AI修复老照片的原理:超分、上色与五官重建
把一张七十年代的黑白合影扫进电脑,丢给AI修复工具,十几秒后出来一张色彩饱满、五官清晰的照片。看着挺神奇,但很多人的反应是:”清楚是清楚了,怎么不太像我奶奶?”
这个疑问正好戳中了AI修图的要害:它做的不是”还原”,而是”合理推测”。而”合理”和”真实”之间,隔着一整套技术取舍。
第一步:先分清这是三个不同的任务
“老照片修复”这个说法把三件事混在了一起,它们的目标函数完全不同,出错的方式也不同:
- 超分辨率:把低分辨率图放大,补出缺失的细节;
- 划痕/噪点修复:填补破损区域的像素;
- 上色:从灰度图生成彩色图;
- 人脸重建:对人脸区域做专门的先验约束。
一键修复工具是把这四步串起来跑。问题是,串起来跑的时候你看不出哪一步出了偏差,而偏差往往就落在最后一步。
第二步:超分补的是”像真的”,不是”真的”
超分的原理不是插值放大——插值只会让画面变软。它用的是一个在大量图像上训练过的生成网络:给它一张低分辨率图,它根据学到的图像先验,”猜”出高频细节应该长什么样。
早期的 ESRGAN
用生成对抗网络来做这件事:一个生成器负责补细节,一个判别器负责判断”这看起来像不像真实照片”,两者对抗训练。结果是补出来的纹理非常逼真——毛孔、发丝、织物经纬都出来了。
但请注意用词:逼真,不等于真实。
这些纹理是从训练数据里学来的统计规律,不是你奶奶脸上原本的纹理。放大倍数越高,猜的成分越大:2
倍放大基本可信,4
倍以上就开始大量编造细节。所以专业流程里一般建议”分档放大”——连续做两次 2
倍,比一次 4 倍更稳。
第三步:上色为什么会”串肤色”
上色本质上是一个条件生成问题:输入灰度图,输出彩色图。模型学的是”这种灰度分布通常对应什么颜色”。
问题在于,颜色在灰度图上并不唯一——同一种灰度,可以是浅棕皮肤,也可以是灰色墙面。模型只能靠区域先验来判断:这块是脸,就按人脸的平均肤色上色;这块是衣服,就按衣物的常见颜色上色。
于是就有了两个典型偏差:一是训练数据的分布偏差,早期公开数据集里欧美面孔占比高,亚洲老照片容易被上成偏红偏白的肤色;二是同一张图多次上色结果不一致,因为生成过程带随机性,肤色、衣服颜色每次都会飘。
解决办法不是换工具,是接受”上色结果是参考值”这个前提,然后手工调:先让AI上一版,再在调色软件里对肤色、衣物做局部校正,把关键区域(人脸)锁定色相。
第四步:人脸重建是”像但不像”的根源
这是最关键的一环。当老照片里人脸只有几十个像素时,超分网络没有足够信息去恢复五官,于是多数工具会挂一个人脸先验模型(GFPGAN、CodeFormer
这一类):先检测人脸关键点,再用一个专门的人脸生成器把五官”拉回”到符合解剖结构的位置。
这个模型的训练目标是”生成一张正常的人脸”,不是”生成这一张脸”。所以它输出的五官是标准的、端正的、年轻的——也就容易变成”另一个人”。
这类工具通常有一个保真度权重参数(fidelity
weight)。规律是:
- 权重调高(0.7 以上):更贴原图,但细节偏软、噪点多;
- 权重调低(0.3 以下):非常清晰,但五官被”标准化”,容易失真;
- 人像修复的经验区间是
0.5–0.7,兼顾辨识度和清晰度。
如果这张照片要用在纪念册、家族档案这类”必须像本人”的场景,建议权重拉到
0.7
以上,宁可略糊也不要换脸;如果是做宣传物料、需要放大的场景,可以适当降低。
可操作的修复流程
按顺序做,比一键跑效果好得多:
- 先手工修破损:划痕、霉斑、缺角用修补工具处理掉,别指望AI补,它补出来的纹理跟周围对不上;
- 再超分,每档不超过 2 倍,多跑一轮;
- 然后上色,出两三个版本对比,选肤色最接近记忆的那版;
- 最后局部调色,锁定人脸色相,单独调背景;
- 保留原图,任何一步都存中间文件,方便回退。
用于印刷的话,最后还要按 300 dpi
复核实际尺寸,别只看屏幕上清不清楚——屏幕看的是像素,印刷看的是单位面积像素密度。
我们给客户做家族影像数字化、老素材翻新时,这套流程是固定的:AI负责
80% 的体力活,剩下 20% 的判断留给人。这也是
和”一键修图App”最本质的差别——前者交付的是可控的结果,后者交付的是一次随机生成。
如果你正在整理品牌历史素材,准备做一支周年片,
里这类”老素材活化”的环节,通常就是靠这套流程撑住的。