
160、超分中的损失函数进化:从L1/L2到感知损失、GAN损失与对比学习去年帮一个医疗影像团队调超分模型,他们用L2损失训了三天,PSNR飙到38dB,但医生一看重建结果就摇头——血管边缘模糊得像水彩画,纹理细节全没了。这就是典型的“指标好看、视觉翻车”。从那以后我意识到,超分任务里损失函数的选择,比网络结构本身更能决定最终效果。L1/L2:最朴素的像素级对齐先说最基础的。L2损失(MSE)在超分里用了快十年,它的数学形式简单到令人发指:逐像素计算重建图像和真实高分辨率图像的差值平方。但这里有个坑——L2对异常值极度敏感。你训练时如果某个batch里混入了几张噪声大的图,梯度会瞬间爆炸,模型直接学歪。我习惯在L2前加个clamp操作,把像素值限制在合理范围,别问我怎么知道的。L1损失(MAE)相对温和些,它对离群点的惩罚是线性的,不会像L2那样平方放大。实际调试中发现,L1训出来的模型边缘更锐利,但整体亮度会偏暗。有个取巧的办法:先用L1训50个epoch,再切到L2微调10个epoch,PSNR能涨0.3-0.5dB。这招在EDSR和RCAN上屡试不爽。但像素级损失有个致命缺陷:它假设像素之间是独立的。真实图像里相邻像素的关联性极强,L1/L2根本感知不到纹理、边缘这些高层语义。你让模型去拟合像素值,它只会学出一个“平均脸”——所有细节都被平滑掉了。感知损失:让VGG当裁判2016年Johnson那篇论文出来时,我第一反应是“这也能行?”——用预训练VG