在图像生成、语义分割上采样以及超分辨率重建任务里,转置卷积是最常用的放大手段。但它经常会在输出结果中留下类似国际象棋棋盘的规整斑块,严重损害视觉质量。理解这种伪影的成因并掌握对应的消除方法,是提升生成模型观感的关键一步。

转置卷积棋盘格伪影的成因
转置卷积常被通俗地称为反卷积,但它并不是数学上卷积的逆操作,而是一种重新排列输入并补零后再做普通卷积的上采样方式。当卷积核大小不能被步长整除时,不同输出位置所依赖的输入像素数量会出现周期性波动。一部分像素被反复使用,另一部分则很少被用到,导致某些区域响应过强、某些区域过弱,在空域上就表现为均匀间隔的棋盘状明暗条纹。
举例来说,若使用核大小为3、步长为2的转置卷积,由于3不能被2整除,输出特征图上相邻两个像素所对应的输入支持域会发生错位重叠。经过多层堆叠之后,这种错位不会被抵消,反而会在最终图像中固化为肉眼可见的网格。很多初学者尝试减小学习率或增加训练轮数,却发现伪影依旧,原因就在于这是结构性的覆盖不均,而非优化不充分。
插值卷积的工作机制
插值卷积的核心思想是先把上采样和点位计算拆开。它首先用最近邻、双线性或双三次等插值方法将低分辨率特征图放大到目标尺寸,此时每个新像素都是旧像素的平滑过渡,不存在补零造成的覆盖空洞;随后再接一个普通的步长为1的卷积层,对放大后的特征进行组合与细节修复。由于第二步是标准卷积,所有输出像素都平等地接受局部邻域信息,从根本上避免了转置卷积的不均匀重叠。
这种方案在实现上非常简洁。以 PyTorch 为例,可以用 torch.nn.Upsample 配合 torch.nn.Conv2d 来替代 torch.nn.ConvTranspose2d。在超分辨率网络如 ESPCN 的变体中,也常先通过亚像素卷积重组通道,再接常规卷积,思路与插值卷积一脉相承。实验表明,在相同参数量下,插值卷积输出的边缘更干净,尤其在纹理丰富的区域不会出现转置卷积那种块状断裂。
重叠策略的设计要点
如果仍希望保留转置卷积的可学习上采样能力,就可以通过重叠策略来抑制伪影。基本原则是让卷积核尺寸明显大于步长,使得相邻感受野充分交叠。例如采用核大小4、步长2,或核大小8、步长4,这样每个输出点都会被多个输入权重共同决定,单次计算内的覆盖不均被邻域平滑稀释。同时,合理设置输入填充,保证边界区域的重叠比例与内部一致,也能防止图像四周出现更明显的格纹。
除了核与步长的匹配,权重初始化也影响伪影强度。若转置卷积的卷积核初始值呈各向异性,会放大棋盘效应;使用双线性插值的权重作为转置卷积初始化,能让初始输出就接近平滑放大,训练后期只需微调细节。下表列出了常见配置下的重叠程度与伪影风险:
| 核大小 | 步长 | 重叠倍数 | 棋盘格风险 |
|---|---|---|---|
| 3 | 2 | 1.5 | 高 |
| 4 | 2 | 2.0 | 低 |
| 5 | 2 | 2.5 | 很低 |
| 8 | 4 | 2.0 | 低 |
方法对比与选用建议
插值卷积和重叠策略并不是互斥的。插值卷积胜在稳定、实现简单,几乎不会引入棋盘伪影,适合对视觉清洁度要求高的生成任务,如人脸合成、医学图像重建。它的缺点是上采样本身不可学习,全部修正压力给到后续卷积。重叠策略保留了转置卷积的可学习放大,模型容量更灵活,适合需要网络自己决定放大模式的场景,但必须仔细设计核步长比与初始化。
在实际工程中,一个稳妥的做法是:先以插值加卷积作为基线,确认 pipeline 其他部分无误;若发现放大层需要更强表达能力,再切换到核大小为步长两倍的转置卷积,并加载双线性初始化。无论选哪条路,都应在训练早期就可视化中间层上采样结果,而不是等到生成图出来再排查。提早观测能节省大量调参时间。
总结
棋盘格伪影源于转置卷积在步长不能整除核大小时造成的覆盖不均。插值卷积通过解耦上采样与特征学习来规避该问题,重叠策略则依靠增大核相对步长的比例来平滑重叠。理解二者原理后,便可根据任务对画质与灵活性的偏好做出合理选择,让上采样输出告别难看的网格。