对于人体姿态估计、语义分割等高分辨率的任务,许多网络设计中采用了encoder-decoder模式。在decoding部分,需要对特征图进行上采样,本文归纳了几种不同的上采样方法。
双线性插值
插值问题实际上是一种拟合问题。
所谓插值就是用 x’ 某个领域内的函数值按照一定规则拟合出一个函数,再在其中查找 f(x’) 的值。
双线性插值(bilinear upsampling)是其中一种非常简单的拟合方式。
对 srcImage 中某个邻域内进行插值,从而得到 dstImage 中某个像素值。
虽然插值计算速度快,但这种插值的“感受野”是local的,只能看见相邻的四个像素点,在上采样过程中不可避免地产生细节信息损失。且双线性插值没有参数可以学习。
转置卷积
deconvolution / transposed convolution / fractionally strided convolution(反卷积/转置卷积)。
卷积操作可以展开看作一个矩阵乘法,下面介绍一个简单的例子。
输入图片可以从左到右、由上至下展开为一个 16 × 1 16 \times 1 16×1 的向量 X X X,则kernel对应的卷积可以表达为一个 4 × 16 4 \times 16 4×16稀疏矩阵 C C C:
( w 0 , 0 w 0 , 1 w 0 , 2 0 w 1 , 0 w 1 , 1 w 1 , 2 0 w 2 , 0 w 2 , 1 w 2 , 2 0 0 0 0 0 0 w 0 , 0 w 0 , 1 w 0 , 2 0 w 1 , 0 w 1 , 1 w 1 , 2 0 w 2 , 0 w 2 , 1 w 2 , 2 0 0 0 0 0 0 0 0 w 0 , 0 w 0 , 1 w 0 , 2 0 w 1 , 0 w 1 , 1 w 1 , 2 0 w 2 , 0 w 2 , 1 w 2 , 2 0 0 0 0 0 0