大家好,欢迎来到IT知识分享网。
CNN的三大核心思想:
局部连接:基于图像局部相关的原理,保留了图像局部结构,同时减少了网络的权值个数;
权值共享:也是基于图像局部相关的原理,同时减少网络的权值参数;
下采样:对平移和形变更加鲁棒,实现特征的不变性,同时起到了一定的降维的作用。
局部连接–感受野(receptive field)
感受野概念
局部连接会大大减少网络的参数。在处理图像这样的高维度输入时,让每个神经元都与前一层中的所有神经元进行全连接是不现实的,因为这会使参数量剧增,同时这也是传统人工神经网络全连接的缺点。而CNN让每个神经元只与输入数据的一个局部区域连接,该连接的空间大小叫做神经元的感受野,它的尺寸是一个超参数,其实就是滤波器的空间尺寸。
感受野常被定义为卷积神经网络特征所能看到输入图像的区域,换句话说特征输出受感受野区域内的像素点的影响,也可以理解为反卷积的过程。
感受野公式推导
反卷积公式:F(i)=(F(i+1)-1)*Stride + K_size
其中,F(i)代表第i层感受野,F(i+1)代表第i+1层感受野,Stride代表第i层步幅,K_size代表核尺寸
上图计算如下:
已知第三层感受野F(3)=1,则第二层感受野F(2)=(F(3)-1)*Stride + K_size=(1-1)*2+2=2;
由上述可知第二层感受野F(2)=2,则第一层感受野F(1)=(F(2)-1)*Stride + K_size=(2-1)*2+3=5;
由此可见,可以通过更深的卷积神经网络使特征图中单个元素的感受野变得更加广阔,从而捕捉输入上更大尺寸的特征。
局部连接的优势
举个栗子来演示一下局部连接的优势
对于一个1000 x 1000的输入图像而言,如果下一个隐藏层的神经元数目为 10^6个,采用全连接则有1000 x 1000 x 10^6=10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 x 10的局部图像相连接,那么此时的权值参数数量为 10 x 10 x 10^6=10^8,将直接减少4个数量级。
感受野的意义
通过卷积操作,把全连接变成局部连接 ,因为多层网络能够抽取高阶统计特性,即使网络为局部连接,由于格外的突触连接和额外的神经交互作用,也可以使网络在不十分严格的意义下获得一个全局关系。这也就是CNN使用局部连接之后还获得很好的效果的原因。
感受野的大小和滤波器大小(kernel size)和步长(stride)有关,而涉及到这两个参数的有卷积层和池化层(pooling),因此经过卷积层和池化层时,感受野的大小会变化,但是填充(Padding)参数不影响感受野大小。
感受野的值越大表示其能接触到的原始图像(指输入特征图)范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。
权值共享–卷积
上面讲的局部连接使网络参数量减少了几个数量级,但是参数量仍然很大,如果想要进一步减小参数量,则需要权值共享。
在卷积层中使用权值共享可以控制参数的数量。每个滤波器与上一层局部连接,同时每个滤波器的所有局部连接都使用同样的参数(卷积核),这样就可以大大减少网络的参数,同时也很适用于有重复特征的图像。
接着上面的例子,假设局部连接中隐藏层的每个神经元连接的都是10 x 10的局部图像,即每个神经元对应的卷积核大小为10 x 10,则有10*10=100个权值参数,将这100个权值参数共享给该层的其他神经元,即隐藏层中10^6个神经元的权值参数相同,那么对于该层来说只需要训练10*10个权值参数。
对于这一组参数,只能提取图像的一种特征,如果想要提取更加丰富的特征,则需要增加多个卷积核,不同的卷积核对应提取图像不同映射下的特征图。假设有100个卷积核,则参数也仅有100*100=10^4个。此外,对于同一个卷积核,偏置参数也是共享的。
当局部连接和权值共享后,隐层的参数个数就和隐层的神经元个数无关了,而是只和滤波器的大小和种类的多少有关。对于上图,假设步幅为10,则隐层神经元个数为(1000*1000)/(10*10)=100*100个神经元。
下采样–池化(pooling)
虽然经过局部连接和权值共享后的图像权值参数已经大大减少,但是对于计算量来说,还是非常巨大,需要消费很大的计算时间,于是为了进一步减少计算量,加入了subsampling这个概念,不仅使图像像素减少了, 同时也减少计算时间。
池化的优势
1. 保留了具有尺度不变性的特征,使模型更加关注是否存在某些特征而不是特征具体的位置。
2. 不容易过拟合,当参数过多的时候很容易造成过度拟合。
3. 能够降低特征的维度,缩小图像的规模,减少计算量,提升计算速度。
特征图(feature map)
我们将卷积层或者池化层的输入输出数据称为特征图(feature map),输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。
卷积输出特征图尺寸公式
Out_size= (In_size – K_size + padding + Stride )/Stride
卷积核的数量等于输出特征图(output feature map)的数量。
特征图(feature map) 是什么?
在每个卷积层,数据都以三维形式存在,可以看作多个二维图片叠在一起,其中每一个称为一个feature map。
在输入层,若为灰度图片,仅有一个feature map;若为彩色图片,一般是3个feature map(红绿蓝)。
层与层之间有若干个卷积核(kernel),上一层的每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map。
特征图越小,其感受野越大,即代表原图中的映射区域更大,即在目标检测中可以检测到图像中较大的目标,而更容易忽略输入图像中的小目标,即大的映射区域缺失细节使得小目标更不易被检测。
感受野和特征图的关系
做目标检测任务分为两个子任务:分类和边框回归。
根据CNN的结构特点,层数越深,对应的感受野越大,比如经典的分类网络,最后的输出神经元感受野达到了整张图像大小,需要有看到整张图像的能力才能做全局的分类。
在监督学习模式下,越深的层得到的特征越抽象(高级),越浅的层特征越细节(低级)。深层的特征由于平移不变性(translation invariance),已经丢掉了很多位置信息,而检测既需要分类也需要回归。分类要求特征有较多的高级信息,回归(定位)要求特征包含更多的细节信息,这两种要求在同一个特征图(feature map)上很难同时兼得。
因此,大的特征图由于感受野较小,同时特征包含位置信息丰富,适合检测小物体。而小的特征图由于感受野大,包含抽象信息,适合检测大物体。而FPN可以辅助感受野和物体scale的匹配关系,使得高级和低级特征有效融合来增强浅层特征的高级特征信息。
小卷积核的优势
假设输入大小都是h*w*c,并且都使用c个卷积核(得到c个特征图),我们来计算一下不同尺寸卷积核所需的参数:
一个7*7卷积核所需参数:C*(7*7*C)=49C^2
三个3*3卷积核所需参数:3*C*(3*3*C)=27C^2
很明显,同等条件下小卷积核所需的参数远小于大卷积核,而且卷积过程越多,提取的特征越丰富,加入的非线性变化也越多,因此实际应用中常使用小卷积核来提取特征。
总结
卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入与输出之间的映射能力。
CNN一个非常重要的特点就是头重脚轻(越往输入权值越小,越往输出权值越多),呈现出一个倒三角的形态,这就很好地避免了BP神经网络中反向传播的时候梯度损失得太快。
卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。
由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习。
由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。
卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
参考
https://zh.d2l.ai/chapter_convolutional-neural-networks/index.html
https://www.cnblogs.com/skyfsm/p/6790245.html
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/95746.html