池化(下采样)是什么?图像池化与卷积的区别

什么是池化

池化层也称下采样层,会压缩输入的特征图,一方面减少了特征,导致了参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。

池化操作主要有两种,一种是平均池化(Average Pooling),即对邻域内的特征点求平均;另一种是最大池化(Max Pooling),即对邻域内的特征点取最大。

池化方法特征提取误差主要来自两个部分:一是,邻域大小受限造成了估计值方差增大;二是,卷积层参数误差造成了估计均值的偏移。一般来说,在图像研究领域,对图像进行平均池化操作能减少第一种误差,同时更多地保留图像的背景信息;而另一方面,最大池化能减小第二种误差,更多地保留纹理信息。因此在进行卷积神经网络结构设计时,这两种池化方式往往交替使用。

简而言之,池化就是去除杂余信息,保留关键信息

图像卷积与池化的区别

什么是卷积?

首先,介绍一下什么是卷积神经网络。

它是使用卷积层(Convolutional layers)的神经网络,基于卷积的数学运算。

卷积层由一组滤波器组成,滤波器可以视为二维数字矩阵。这是一个示例3x3滤波器:
在这里插入图片描述
我们可以将滤波器与输入图像进行卷积来产生输出图像,那么什么是卷积操作呢?具体的步骤如下:
1、在图像的某个位置上覆盖滤波器;
2、将滤波器中的值与图像中的对应像素的值相乘;
3、把上面的乘积加起来,得到的和是输出图像中目标像素的值;
4、对图像的所有位置重复此操作。
这个4步描述有点抽象,所以让我们举个例子吧。看下面的4x4灰度图像和3x3滤波器:
在这里插入图片描述
图像中的数字表示像素亮度,0是黑色,255是白色。我们将对输入图像和滤波器进行卷积,生成2x2输出图像。

首先,让我们将滤镜覆盖在图片的左上角:

在这里插入图片描述
接下来,我们在重叠的图像和滤波器元素之间逐个进行乘法运算,按照从左向右、从上到下的顺序。
在这里插入图片描述
把最右列的乘积结果全部相加,得到:
在这里插入图片描述
由于滤波器覆盖在输入图像的左上角,因此目标像素是输出图像的左上角像素:
在这里插入图片描述
用同样的方式处理图像剩下的区域:
在这里插入图片描述

求卷积有何用?

看完了基本概念,你可能会有疑问,对图像求卷积有什么用吗?

我们在前文中使用的那个3x3滤波器,通常称为垂直索伯滤波器(Sobel filter):

在这里插入图片描述
看看用它来处理知名的Lena照片会得到什么:
在这里插入图片描述
看出来了吗?其实,索伯滤波器是是边缘检测器。

现在可以解释卷积操作的用处了:用输出图像中更亮的像素表示原始图像中存在的边缘。

你能看出为什么边缘检测图像可能比原始图像更有用吗?

回想一下MNIST手写数字分类问题。在MNIST上训练的CNN可以找到某个特定的数字。比如发现数字1,可以通过使用边缘检测发现图像上两个突出的垂直边缘。

通常,卷积有助于我们找到特定的局部图像特征(如边缘),用在后面的网络中。

填充

在上面的处理过程中,我们用3x3滤波器对4x4输入图像执行卷积,输出了一个2x2图像。

通常,我们希望输出图像与输入图像的大小相同。因此需要在图像周围添加零,让我们可以在更多位置叠加过滤器。3x3滤波器需要在边缘多填充1个像素。

在这里插入图片描述
这种方法称之为“相同”填充,因为输入和输出具有相同的大小。而不使用任何填充称为“有效”填充。

池化

图像中的相邻像素倾向于具有相似的值,因此通常卷积层相邻的输出像素也具有相似的值。这意味着,卷积层输出中包含的大部分信息都是冗余的。

如果我们使用边缘检测滤波器并在某个位置找到强边缘,那么我们也可能会在距离这个像素1个偏移的位置找到相对较强的边缘。但是它们都一样是边缘,我们并没有找到任何新东西。

池化层解决了这个问题。这个网络层所做的就是通过减小输入的大小降低输出值的数量。

池化一般通过简单的最大值、最小值或平均值操作完成。以下是池大小为2的最大池层的示例:
在这里插入图片描述

参考文章1:池化是什么意思? - 王晗的回答 - 知乎

参考文章2:如何理解卷积神经网络(CNN)中的卷积和池化? - 量子位的回答 - 知乎

发布了781 篇原创文章 · 获赞 37 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Dontla/article/details/104119887