这是卷积神经网络学习路线的第一篇文章,这篇文章主要为大家介绍卷积神经网络的组件以及直观的为大家解释一下卷积层是如何在图像中发挥作用的。
从AlexNet在2012年ImageNet图像分类识别比赛中以碾压性的精度夺冠开始,卷积神经网络就一直流行到了现在。现在,卷积神经网络已经被广泛的应用在了图像识别,自然语言处理,语音识别等领域,尤其在图像识别中取得了巨大的成功。本系列就开始带大家一起揭开卷积神经网络的神秘面纱,尝试窥探它背后的原理。卷积神经网络的组件有输入层,卷积层,激活层,池化层,全连接层。
输入层(Input Layer)是将原始数据或者其他算法预处理后的数据输入到卷积神经网络,数据没有明确定义,可以是数字图像,可以是音频识别领域经过傅里叶变换的二维波形数据,也可以是自然语言处理中一维表示的句子向量。输入层的作用是将输入数据送入卷积神经网络进行特征提取,然后获得我们想要的结果。同时根据计算能力差异,机器存储能力差异和模型参数多少可以控制输入不同数量的数据。也就是我们常说的。
卷积层(Convolution Layer)是卷积神经网络的核心组件,它的作用通常是对输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性进行抽象。原始的二维卷积算子的公式如下:
其中,表示卷积核,表示输入到卷积层的特征图。和原始的二维卷积算子不同,卷积神经网络首先是维度升至三维、四维卷积,跟二维卷积相比多了一个“通道”(channel),每个通道还是按照二维卷积方式计算,而多个通道与多个卷积核分别进行二维卷积,得到多通道输出,需要“合并”为一个通道;其次是卷积核在卷积计算时没有“翻转”,而是与输入图片做滑动窗口“相关”计算。用公式重新表达如下:
这里假定卷积神经网络有个输入通道和个输出通道,所以一共需要个卷积核来实现通道数目的变换。从左到右看,表示第个输出通道的二维特征图,表示第个输入通道的二维特征图,表示第个卷积核的第个通道。设卷积核大小是,每个输出通道的特征图大小是,则该层每个样本做一次前向传播时卷积层的计算量(Calculations)是。而卷积核的学习参数(Params)为。定义卷积层的计算量核参数量比值为。从这里可以看出,卷积层的输出特征图分辨率越大,CPR越高,也即是说参数利用率越高。总结一下,卷积层的优点在于局部连接(有助于减少参数量)和权值共享。我们分别来举例说明一下:
激活层(Activation Layer)负责对卷积层抽取的特诊进行激活,由于卷积操作是把输入图像和卷积核进行相应的线性变换,需要引入激活层(非线性函数)对其进行非线性映射。激活层由非线性函数组成,常见的如,,。最常用的激活函数是,又叫线性整流器。公式表达为:
所谓池化层(Pooling)就是将特征图下采用,作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化,也即是MaxPooling。根据相关研究,特征提取的误差主要来自于两点:
一般来说,平均池化可以减少第一种误差,更多的保留图像的背景信息,而最大池化可以降低第二种误差,更多的保留图像的纹理信息。总结一下,池化层优点有:
说了这么多池化的优点,那么它有什么缺点吗?
南大的一维物理学硕士在知乎上发表了一篇文章,题为CNN真的需要下采样(上采样)吗?大家可以看看,文章地址是:https://zhuanlan.zhihu.com/p/94477174。
全连接层(Full Connected Layer)就是一个线性特征映射的过程,将多维的特征输入映射为二维的特征输出,高维表示样本批次(),低位常常对应任务目标(例如分类就对应每一个类别的概率)。
首先说,这一部分基本看下面这篇论文就足够了。地址为:https://arxiv.org/abs/1311.2901 。想了解每个卷积层学到了什么,一个常见的想法就是把特征图可视化出来。那么怎么可视化呢?介绍一下论文的方法。
首先下面表示尺寸为原图经过一个卷积层再经过ReLU处理,最后再经过一个步长为的池化层变成了维度为的特征图。
现在我们的目标是要可视化这个的特征图,一个直观的想法是将的特征图选定个特征图保留,其他个都置0,然后原路反操作回Input,再将像素反normalize到0-255范围,我们观察这个图像就可以了。这个过程可以用下图表示:
所以整个问题的关键就在于如何反卷积,反池化,以及反ReLU。反ReLU比较简单,就不说了。对于反Conv,论文用转置卷积代替了。由于后面的专栏会专门将转置卷积这里就不多说了。Unpooling要创意在于Pooling过程中,需要记录下Pooling后的每个数据的来源位置,在Unpooling过程中,按位置,将数据还原,其他补零。
有了上诉操作,我们就可以获得每个feature map对应的原图了。下图给出了ZFNet的第三个卷积层随机挑选的12个feature map,在校验集上top9的激活值的可视化,右边是对应的原始输入图片。
明显的一个feature map学习到的特征比较相似。而且都学习到了主要特征。其他细节请看论文。这里还有一个视频讲解这个论文的可视化过程和论文的一些细节,例如反卷积,池化,ReLU是分别如何实现的,但我上传不了,可以到我的公众号后台回复"视频"获取。
本节是卷积神经网络学习路线(一),主要讲了卷积神经网络的组件以及卷积层是如何在图像中起作用的?希望对大家有帮助。
https://zhuanlan.zhihu.com/p/82850456 https://blog.csdn.net/lc013/article/details/80237632
欢迎关注我的微信公众号GiantPandaCV,期待和你一起交流机器学习,深度学习,图像算法,优化技术,比赛及日常生活等。