0、前言
- 在学习图像处理与机器学习的过程中发现,许多文章对于卷积神经网络中的卷积为何能够提取图像的特征的概念介绍总是比较模糊,本文谈一下我在学习过程中从系统的角度对卷积在图像上的应用的理解。
1、全连接神经网络到卷积神经网络(CNN)
-
对于全连接神经网络而言,分析数字图像一来参数较多,二来没有很好地考虑到像素与像素之间的位置关系,并且由于梯度传递的限制导致网络的层数难以增加。因而人们更多的是采用卷积神经网络(CNN)来对图像进行分析与处理。
-
CNN采用不断卷积池化的结构来搭建网络,其中卷积代替了全连接层的特征提取的作用,利用卷积能够利用局部信息的特性来提高在图像上的处理性能 ,将全连接网络中成千上万个权重参数减少为多个卷积层中卷积核里的参数,为了更多地减少参数个数,卷积核很多情况下会选择 size(3,3)的大小,但 size(3,3)的卷积核比更大的卷积核而言更多地缺少对局部信息的采集与利用,利用池化来将降低分辨率,同时能让卷积核能够在保持较小的情况下提取到更多的局部信息,这是CNN的网络结构。
2.但是为什么卷积就能够提取图像上的特征
-
从信号与系统的角度看,卷积很多时候出现在一个系统的单位脉冲响应与输入信号上,用于求出系统在一定输入下所对应的输出。
-
神经网络的多层结构从一开始的设想是模仿生物的神经元的一层一层传递的结构,从一开始的神经元判断角和边等等到大的局部特征最终得到所看到的目标是否是与神经元中记忆的某一个模式所匹配来进行目标的判断,这一点从反卷积出的图像可以看出。
在卷积神经网络中,每一个卷积核所对应的卷积层实际上就是一个系统,一个用于判断图像中某一个特征的系统,但是我们需要的对于判断的某一个特征的系统的具体运算法则并不清楚,所以我们需要通过误差反向传播的方式不断地调整卷积核中的参数使得在训练后调整参数的卷积核能够能够完成当前卷积层(即当前系统)能够判断某一个图像特征的工作。当所有的单个卷积层(单个特征判断系统)都能有效地完成特征判断的任务时,由这些数量众多卷积层所组成的复杂系统CNN就能够完成人类所需要的给予卷积神经网络的复杂任务。
3、结论
- 卷积神经网络CNN实际上是通过带有label的训练数据来train由一个个特征判断系统中的运算法则,对于图像特征提取而言,系统的运算法则可能比较复杂,通过卷积的方式将复杂判断系统的运算法则变为一个个易于计算的卷积核,从而更方便地提取图像特征,完成对图像的分析与处理。
- 既然谈到卷积,很自然地应该会运用到FFT之类的加速技巧,但是简单查一下好像并没有博客专门提到这一点,可能是没有查找的方式不对,一个小疑问。
- 但从附近学习神经网络的看来其实就算只知道卷积能够提取特征这一点就对应用cnn没什么太大的障碍了。
参考文献:
[1]https://blog.csdn.net/bitcarmanlee/article/details/54729807
[2]https://blog.csdn.net/panglinzhuo/article/details/75207855
[3]https://blog.csdn.net/kekong0713/article/details/68941498
[4]https://www.zhihu.com/question/22298352/answer/228543288
[5]https://blog.csdn.net/lemianli/article/details/53171951
(侵权删)