在深度学习中,CNN经常要调整特征图的大小,本文对一些常用的方法进行介绍。
一,利用卷积核的步进(stride)调整大小
下采样:在padding='same’时,卷积后的特征图大小变为原图/strides,特征图变小,称之为下采样。
Conv2D(filters, kernel_size,
strides=strides,
padding='same'
)(x)
上采样:卷积后的特征图大小变为原图*size,特征图变大,称之为上采样。Caffe和Kera里叫Deconvolution,而tensorflow里叫conv_transpose。
UpSampling2D(size=(2, 2))(x)
二,利用池化操作调整大小
下采样:在padding='same’时,池化后的特征图大小变为原图/strides,特征图变小。
MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)
上采样:Unpooling ,Pooling 会产生降采样的效果,导致一些细节丢失。这些信息对于语义分割很重要。为了解决这个问题,我们在反卷积网络中使用 unpooling layers。