UpSampling
上采样
BiLinear Interpolation
双线性插值,FCN中上采样所采用的方法
-
假设当前已知函数 f f f在 Q 11 Q_{11} Q11、 Q 12 Q_{12} Q12、 Q 21 Q_{21} Q21、 Q 22 Q_{22} Q22四个点处的值,我们想得到未知函数 f f f在点 P = ( x , y ) P = (x, y) P=(x,y)处的值
-
x方向线性插值:
f ( R 1 ) ≈ x 2 − x x 2 − x 1 f ( Q 11 ) + x − x 1 x 2 − x 1 f ( Q 21 ) f(R_1) \approx \frac{x_2 - x}{x_2 - x_1}f(Q_{11}) + \frac{x - x_1}{x_2 - x_1}f(Q_{21}) f(R1)≈x2−x1x2−xf(Q11)+x2−x1x−x1f(Q21)
f ( R 2 ) ≈ x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) f(R_2) \approx \frac{x_2 - x}{x_2 - x_1}f(Q_{12}) + \frac{x - x_1}{x_2 - x_1}f(Q_{22}) f(R2)≈x2−x1x2−xf(Q12)+x2−x1x−x1f(Q22) -
y方向线性插值:
f ( P ) ≈ y 2 − y y 2 − y 1 f ( R 1 ) + y − y 1 y 2 − y 1 f ( R 2 ) f(P) \approx \frac{y_2 - y}{y_2 - y_1}f(R_1) + \frac{y - y_1}{y_2 - y_1}f(R_2) f(P)≈y2−y1y2−yf(R1)+y2−y1y−y1f(R2) -
双线性插值其实就是分别在x、y方向做一次线性插值,本质上就是利用周围四个点的像素值来近似中间某点的像素值
-
实际运用中,如缩放图像中的双线性插值,是根据原图像与目标图像尺寸的比值以及目标图像的坐标来计算目标图像的某一像素对应于原图像中的哪一个像素点:
s r c X = d s t X ∗ s r c W i d t h d s t W i d t h srcX = dstX * \frac{srcWidth}{dstWidth} srcX=dstX∗dstWidthsrcWidth
s r c Y = d s t Y ∗ s r c H e i g h t d s t H e i g h t srcY = dstY * \frac{srcHeight}{dstHeight} srcY=dstY∗dstHeightsrcHeight
( s r c X , s r c Y ) (srcX, srcY) (srcX,srcY)算出来一般都是浮点数,这时就取离该坐标最近的四个整数像素点并应用双线性插值。(实际应用中还需几何中心对齐以及加速优化,详见链接)
Deconvolution(Transposed Convolution + Fractionally Strided Convolution)
反卷积(转置卷积 + 微步卷积)
- 普通卷积:
- 反卷积(左图为转置卷积,右图为微步卷积):
-
反卷积无法还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。其与普通卷积主要区别在于:反卷积输出图片的尺寸会大于输入图片的尺寸,通过增加Padding来实现这一操作(图中蓝色方块代表输入图片的Pixel,白色代表Padding)。
-
转置卷积和微步卷积在Padding方式上不同
-
应用:GAN生成对抗图像…
-
DeConv Output Shape:
N = ( W − 1 ) S − 2 P + F N = (W - 1)S - 2P + F N=(W−1)S−2P+F
其中, N N N为输出, W W W为输入, S S S为步长, P P P为填充, F F F为卷积核。反卷积的步长是通过间隔插值实现的
UnPooling & UnSampling
反池化 & 反采样
- 反池化:反池化记录了原来池化时取样的位置索引,在反池化时将输入的特征图的值按位置索引填充到原来记录的位置上,而其他位置则以0来填充
- 反采样:反采样直接将输入的特征图的值映射填充到输出上采样特征图的某块对应区域中,而且全都填充一样的值