这是一篇关于CNN入门知识的博客,基本手法是抄、删、改、查,就算是本身的一个笔记吧,之后忘了多看看。
1.边界检测示例
假如你有一张以下的图像,你想让计算机搞清楚图像上有什么物体,你能够作的事情是检测图像的垂直边缘和水平边缘。
卷积计算能够获得图像的边缘,下图0表示图像暗色区域,10为图像比较亮的区域,一样用一个3*3过滤器,对图像进行卷积,获得的图像中间亮,两边暗,亮色区域就对应图像边缘。
经过如下的水平过滤器和垂直过滤器,能够实现图像水平和垂直边缘检测:
在卷积神经网络中把这些过滤器当成咱们要学习的参数,卷积神经网络训练的目标就是去理解过滤器的参数。 经常使用的过滤器:
2. padding
在上部分中,经过一个3*3的过滤器来对6*6的图像进行卷积,获得了一幅4*4的图像,假设输出图像大小为n*n与过滤器大小为f*f,输出图像大小则为(n−f+1)∗(n−f+1)
这样作卷积运算的缺点是,卷积图像的大小会不断缩小,另外图像的左上角的元素只被一个输出所使用,因此在图像边缘的像素在输出中采用较少,也就意味着你丢掉了不少图像边缘的信息,为了解决这两个问题,就引入了padding操做,也就是在图像卷积操做以前,沿着图像边缘用0进行图像填充。
对于3*3的过滤器,咱们填充宽度为1时(加了一圈),就能够保证输出图像和输入图像同样大。6+1+1-3+1=6:
same padding 在平面外部补0 若且步长是1的话图片大小与原来相同。
valid padding不会超出平面外部。因此比原来图片要小
池化层是在卷积层以后的,会降维,减小特征数
3.卷积步长
卷积步长是指过滤器在图像上滑动的距离,上两部分步长都默认为1,若是卷积步长为2,卷积运算过程为:
4.彩色图像的卷积
以上讲述的卷积都是灰度图像的,若是想要在RGB图像上进行卷积,过滤器的大小不在是3*3而是有3*3*3,最后的3对应为通道数(channels),卷积生成图像中每一个像素值为3*3*3过滤器对应位置和图像对应位置相乘累加,过滤器依次在RGB图像上滑动,最终生成图像大小为4*4。
另一个问题是,若是咱们在不只仅在图像总检测一种类型的特征,而是要同时检测垂直边缘、水平边缘、45度边缘等等,也就是多个过滤器的问题。若是有两个过滤器,最终生成图像为4*4*2的立方体,这里的2来源于咱们采用了两个过滤器。若是有10个过滤器那么输出图像就是4*4*10的立方体。
5.单层卷积网络
经过上一节的讲述,图像经过两个过滤器获得了两个4*4的矩阵,在两个矩阵上分别加入误差b1和b2,而后对加入误差的矩阵作非线性的Relu变换,获得一个新的4*4矩阵,这就是单层卷积网络的完整计算过程。用公式表示:
若是有10个过滤器参数个数有多少个呢?
--每一个过滤器都有3*3*3+1=28个参数,3*3*3为过滤器大小,1是误差系数,10个过滤器参数个数就是28*10=280个。不论输入图像大小参数个数是不会发生改变的
第L-1层:输入图形通道数=输入图像的层数=过滤器层数
第L层:输出图像通道数=过滤器个数=第L+1层输入图像层数...(无论输入和过滤层多少层,图像输入与每一个过滤器卷积事后都是一层矩阵,影响输出层数的只有过滤器的个数)
6.简单卷积网络示例
卷积神经网络层的类型:
⦁ 卷积层(convolution,conv)
⦁ 池化层(pooling,pool)
⦁ 全链接层(Fully connected,FC)
7.池化层
最大池化(Max pooling)
最大池化思想很简单,如下图为例,把4*4的图像分割成4个不一样的区域,而后输出每一个区域的最大值,这就是最大池化所作的事情。其实这里咱们选择了2*2的过滤器,步长为2。在一幅真正的图像中提取最大值可能意味着提取了某些特定特征,好比垂直边缘、一只眼睛等等
如下是一个过滤器大小为3*3,步长为1的池化过程,具体计算和上面相同,最大池化中输出图像的大小计算方式和卷积网络中计算方法一致,若是有多个通道须要作池化操做,那么就分通道计算池化操做。
平均池化和最大池化惟一的不一样是,它计算的是区域内的平均值而最大池化计算的是最大值。在平常应用使用最多的仍是最大池化。
池化的超参数:步长、过滤器大小、池化类型最大池化or平均池化
8.卷积神经网络示例
如下是一个完整的卷积神经网络,用于手写字识别,这并非一个LeNet-5网络,可是设计令该来自于LeNet-5。
网络各层参数个数表:
博文借鉴:https://blog.csdn.net/ice_actor/article/details/78648780