CNN结构可视化的神器
没错,看到这个网站了吗。有了这个网站,我们可以把CNN的结构很好的可视化。 基本上可以解释你对CNN的 feature map和卷积核filter的所有疑惑。
https://www.cs.ryerson.ca/~aharley/vis/conv/ 不多说了,上面就是这个可视化工具的网址。这个可视化工具的CNN框架是LeNet-5。 来,我们看一下LeNet-5的网络结构。正好啊,这个网络的输入是单通道灰度图为例的。
2 CNN的一些专用名词
feature map、卷积核、卷积核个数、filter、channel的概念解释 channel RGB图像有三个channel,灰度图有一个channel
2.1 卷积核的理解
卷积核在有的文档里也称为过滤器(filter)。 关于卷积核,大家最关系的就是卷积核的尺寸。一般来讲,卷积核的33D或者55D等,前面的33或者55就是卷积核的尺寸,这个是随便大家设计的,甚至11的卷积核都可以。设置11的卷积核主要作用是为扩大下一层feature map的数量。 大家更关注的是卷积核的第三个参数D,一般来讲我们定意思D为卷积核的深度。在一些博客中,大家都会这么理解:如果输入图像是三通道的RGB图像,那么第一批卷积核的深度D就是3.。如果输入图像是灰度图,第一批卷积核的深度就是1.。 除此之外,大家更关注的就是卷积核的数量问题了,因为卷积核的数量直接影响下一层feature map的数量。即卷积核的数量=下一层feature map的数量。 以LeNet-5的第一层为例,它的第一批卷积核有6个,所以处理的feature map的数量就是6.。如下图所示:
到这里,大家也就可以理解卷积核数量是如何使用了。换句话说就是,你在下一层想有多少featuer map,那么你只需要使用多少个卷积核就可以了。 好了,我们继续讨论卷积核的深度,因为这个很重要。 其实卷积核的深度也是随便大家如何设置的。即使是在输入层的第一层输入的是RGB图像,大家也可以设置深度为1的卷积核。为了可以这样设计呢?首先,大家把RGB图像的三个通道的图像层看成是三个featuer map就可以了。这个时候,有时候我们目标的一些颜色信息。比如我们曾经写的一个关于零样本识别的论文。我们通过提取目标的语义信息判断目标的名称。比如身上五颜六色的鸟,我们需要提取他们的颜色,因此,我们在每个通道逐个使用 卷积核提取特征。 还有一点就是,在其它层的卷积核,以LeNet-5为例,在第二个卷积层时,作者想同时提取多个feature map的特征。因此他们设置卷积核的深度为4,图下图所示“ 所以,说到这里。对卷积核的设置基本是可以根据大家的需求随意设置。
2.2 feature map
所谓的feature map,就是经过卷积核或者说是filtr处理后的图像。 feather map 是怎么生成的? 输入层:在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。 其它层:层与层之间会有若干个卷积核(kernel)(也称为过滤器),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,下层就会产生N个feather map。
3 LeNet-5的网络结构
大家可以根据下面的文字介绍,逐层或者逐个神经元的去看那个网页。
3.1 C1层是一个卷积层
输入图片:32*32
卷积核大小:5*5
卷积核种类:6
输出featuremap大小:28*28 (32-5+1)
神经元数量:28286
可训练参数:(5*5+1)6(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器)
连接数:(55+1)62828
3.2 S2层是一个下采样层
输入:28*28
采样区域:2*2
采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
采样种类:6
输出featureMap大小:14*14(28/2)
神经元数量:14146
可训练参数:2*6(和的权+偏置)
连接数:(22+1)61414
S2中每个特征图的大小是C1中特征图大小的1/4
3.3 C3层也是一个卷积层
输入:S2中所有6个或者几个特征map组合
卷积核大小:5*5
卷积核种类:16
输出featureMap大小:10*10
C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合
存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。
则:可训练参数:6*(325+1)+6(425+1)+3(425+1)+(256+1)=1516
连接数:10101516=151600
3.4 S4层是一个下采样层
输入:10*10
采样区域:2*2
采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
采样种类:16
输出featureMap大小:5*5(10/2)
神经元数量:5516=400
可训练参数:2*16=32(和的权+偏置)
连接数:16*(2*2+1)55=2000
S4中每个特征图的大小是C3中特征图大小的1/4�
3.5 C5层是一个卷积层
输入:S4层的全部16个单元特征map(与s4全相连)
卷积核大小:5*5
卷积核种类:120
输出featureMap大小:1*1(5-5+1)
可训练参数/连接:120*(1655+1)=48120
3.6. F6层全连接层
输入:c5 120维向量
计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数
可训练参数:84*(120+1)=10164
|