一文精简介绍CNN基本结构

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文精简介绍CNN基本结构相关的知识,希望对你有一定的参考价值。

简 介: 这是love1005lin在CSDN上2021-11-19发布的一篇深度学习的卷积神经网,内容整理的精简,移动,现在将其进行转载,并发布在公众号“TSINGHUAZHUOQING”中。深度学习-卷积神经网络(CNN) : https://blog.csdn.net/love1005lin/article/details/121418206?utm_source=app&app_version=4.20.0

关键词 CNN

 

§01 本原理


  积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层等。

▲ 图1.1 CNN的基本结构

▲ 图1.2 CNN 的基本结构

一、卷积层

1、二维卷积

  给定二维的图像 I I I作为输入,二维卷积核 K K K,卷积运算可以表示为: S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) ⋅ K ( m , n ) S\\left( i,j \\right) = \\left( I * K \\right)\\left( i,j \\right) = \\sum\\limits_m^ \\sum\\limits_n^ I\\left( i - m,j - n \\right) \\cdot K\\left( m,n \\right) S(i,j)=(IK)(i,j)=mnI(im,jn)K(m,n)

  卷积运算中的卷积核需要进行上下翻转和左右翻转:

S ( i , j ) = [ I ( i − 2 , j − 2 ) I ( i − 2 , j − 1 ) I ( i − 2 , j ) I ( i − 1 , j − 2 ) I ( i − 1 , j − 1 ) I ( i − 1 , j ) I ( i , j − 2 ) I ( i , j − 1 ) I ( i , j ) ] . ∗ [ K ( 2 , 2 ) K ( 2 , 1 ) K ( 2 , 0 ) K ( 1 , 2 ) K ( 1 , 1 ) K ( 1 , 0 ) K ( 0 , 2 ) K ( 0 , 1 ) K ( 0 , 0 ) ] S\\left( i,j \\right) = \\beginbmatrix \\beginmatrix I\\left( i - 2,j - 2 \\right) & I\\left( i - 2,j - 1 \\right) & I\\left( i - 2,j \\right)\\\\I\\left( i - 1,j - 2 \\right) & I\\left( i - 1,j - 1 \\right) & I\\left( i - 1,j \\right)\\\\I\\left( i,j - 2 \\right) & I\\left( i,j - 1 \\right) & I\\left( i,j \\right)\\\\\\endmatrix \\endbmatrix.*\\beginbmatrix \\beginmatrix K\\left( 2,2 \\right) & K\\left( 2,1 \\right) & K\\left( 2,0 \\right)\\\\K\\left( 1,2 \\right) & K\\left( 1,1 \\right) & K\\left( 1,0 \\right)\\\\K\\left( 0,2 \\right) & K\\left( 0,1 \\right) & K\\left( 0,0 \\right)\\\\\\endmatrix \\endbmatrix S(i,j)=I(i2,j2)I(i1,j2)I(i,j2)I(i2,j1)I(i1,j1)I(i,j1)I(i2,j)I(i1,j)I(i,j).K(2,2)K(1,2)K(0,2)K(2,1)K(1,1)K(0,1)K(2,0)K(1,0)K(0,0)

  如果忽略卷积核的左右翻转,对于实数卷积实际上与互相换运算是一致的:

▲ 图1.1.1 二维卷积 运算示意图

2、卷积步长

  卷积步长,也就是每次卷积核移动的步长。

  下图显示了卷积步长分别为1,2两种情况下的输出结果。从中可以看到,当步长大于1之后,相当于从原来的的步长为1的情况下结果进行降采样。

▲ 图1.1.2 卷积步长分别为1,2两种情况下输出的结果

3、卷积模式

  根据结果是否要求卷积核与原始图像完全重合,部分重合以及结果尺寸的要求,卷积模式包括有三种:

  • Full:允许卷积核部分与原始图像重合;所获得结果的尺寸等于原始图像尺寸加上卷积核的尺寸减1;
  • Same:允许卷积核部分与原始图像重合;但最终截取Full卷积结果中中心部分与原始图像尺寸相同的结果;
  • Validate:所有卷积核与原始图像完全重合下的卷积结果;结果的尺寸等于原始图像的尺寸减去卷积核尺寸加1;

  下面显示了三种卷积模式对应的情况。实际上可以通过对于原始图像补零(Padding)然后通过Validate模式获得前面的Full,Same两种模式的卷积结果。

▲ 图1.1.3 三种卷积模式示意图

4、数据填充

(1)边缘填充

  数据填充,也称为Padding。如果有一个尺寸为 n × n n \\times n n×n的图像,使用尺寸为 m × m m \\times m m×m卷积核进行卷积操作,在进行卷积之前对于原图像周围填充 p p p层数据,可以影响卷积输出结果尺寸。

  下面就是对于原始的图像周围进行1层的填充,可以将Validate模式卷积结果尺寸增加1。

▲ 图1.1.4 对于原始的图像周围进行1层的填充,可以将Validate模式卷积结果尺寸增加1

▲ 图1.1.5 边缘填充,步长为2的卷积

(2)膨胀填充

  对于数据的填充也可以使用数据上采样填充的方式。这种方式主要应用在转置卷积(反卷积中)。

▲ 图1.1.6 转置卷积对于数据膨胀填充

5、感受野

  感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输 入图片上映射的区域大小,即特征图上的一个点对应输入图上的区 域。

  下图反映了经过几层卷积之后,卷积结果所对应前几层的图像数据范围。

▲ 图1.1.7 经过几层卷积之后,卷积结果所对应前几层的图像数据范围

  计算感受野的大小,可以从后往前逐层计算:

  • i i i层的感受野大小和第 i − 1 i - 1 i1层的卷积核大小、卷积步长有关系,同时也与 i − 1 i - 1 i1层的感受野大小有关系;
  • 假设最后一层(卷积层或者池化层)输出的特征图感受也都大学(相对于其直接输入而言)等于卷积核的大小;

R F i = ( R F i + 1 − 1 ) × s i + K i RF_i = \\left( RF_i + 1 - 1 \\right) \\times s_i + K_i RFi=(RFi+11)×si+Ki

公式中:
Si:第i层步长,Stride
Ki:第i层卷积核大小,Kernel Size

  感受野的大小除了与卷积核的尺寸、卷积层数,还取决与卷积是否采用空洞卷积(Dilated Convolve)有关系:

▲ 图1.1.8 卷积核进行膨胀之后,进行空洞卷积可以扩大视野的范围

▲ 图1.1.9 空洞卷积尺寸放大两倍的情况

6、卷积深度

  卷积层的深度(卷积核个数):一个卷积层通常包含多个尺寸一致的卷积核。如果在CNN网络结构中,一层的卷积核的个数决定了后面结果的层数,也是结果的厚度

▲ 图1.1.10 多个卷积核形成输出结果的深度(厚度)

7、卷积核尺寸

  卷积核的大小一般为奇数奇数 1×1,3×3,5×5,7×7都是最常见的。这是为什么呢?为什么没有偶数偶数?

(1)更容易padding

  在卷积时,我们有时候需要卷积前后的尺寸不变。这时候我们就需要用到padding。假设图像的大小,也就是被卷积对象的大小为 n × n n \\times n n×n,卷积核大小为 k × k k \\times k k×k,padding的幅度设为 ( k − 1 ) / 2 \\left( k - 1 \\right)/2 (k一文看懂四种基本的神经网络架构

精简CNN模型系列之七:Xception

入门 一文简述循环神经网络

入门 | CNN也能用于NLP任务,一文简述文本分类任务的7个模型

CNN如何用于NLP任务?一文简述文本分类任务的7个模型

卷积神经网络(CNN)介绍