CNN for Visual Recognition 学习笔记

之前是跟着博客学习CNN的基础知识,有点杂乱。现在跟着斯坦福的笔记教程 http://cs231n.github.io/convolutional-networks/
系统性的回顾了一下CNN的知识,现在记录下学习笔记。

说到CNN,最经典的结构当属LeNet5,现在就以下图为例来分析CNN的结构

这里写图片描述

LeNet5的网络结构如下所示:
Input–>Conv1–>Pool1–>Conv2–>Pool2–>FC–>Output
由输入层,两个卷积层,两个池化层,3个全连接层和输出层构成。
输入层
(Input)是32*32的灰度图片,由于是灰度图片,因此输入层只有32*32个像素点。

卷积层1
(Conv1)是由6个28*28的特征图组成,卷积神经网络之中的“卷积”二字正是取决于卷积层。而卷积层也是跟传统的神经网络最为不同的地方,下面具体说说卷积层是怎么得到的。
按照《CNN for Visual Recognition》中的表述,CNN中的每一层由3个维度构成:宽度(width),高度(height),深度(depth)。那么输入层的维度就是32*32*1,卷积层1的维度就是28*28*6。卷积层不同于一般神经网络的地方在于两点:局部感受野(local receptive field),权值共享(Parameter sharing)。
局部感受野这个词听着比较玄乎,实际上就是这样一个意思:卷积层1每个节点的激活值不再是取决于输入层的所有节点,而是取决于输入层中的一部分节点
局部感受野示意图
在LeNet5中,卷积层1的每个节点的激活值取决于输入层中的5*5个小块(一共25个节点)的加权求和值,换句话说,32*32的输入层中每个5*5的小块都可以对应卷积层1中的一个节点。那么问题就来了,输入层中有多少个5*5的小块?每个这样的小块都会对应到卷积层1中的一个节点吗?
这就要取决于步长了。在LetNet5中,步长是1,因此每个5*5的小块都会对应到卷积层1中的一个节点。所以一共有28*28个5*5小块,也就是28*28个conv1的节点。这里(32-5+1)/1=28。
那么权值共享是什么意思?权值共享的意思也很简单,就是在计算卷积层的节点激活值的时候,输入层的28*28个5*5的小块共享同一组权值参数,这样可以减少参数的数目。
接下来的问题就是6是怎么来的?6的意思是网络采用了6种不同的filter,可以认为每种filter会学习一类特征,如filter1学习竖直边缘,filter2学习水平边缘等等,这些涉及到网络的可视化,这是后话。由于权值共享,每个filter分别都会与28*28个5*5的小块进行点乘,所以最后会得到28*28*6个feature map。讲义里面说权值共享是一种合理的假定,因为图像具有转换不变性,一种filter可以视为一种特征检测器,它在图像的一个位置比较重要,那么也应该在其他位置同样起作用。

池化层1
池化层比较简单,这里就不细说,详见http://cs231n.github.io/convolutional-networks/

卷积层2
池化层1的结构是14*14*6,卷积层2的结构是16*10*10。由池化层1到卷积层2的过程同样是用到了局部感受野和权值共享。这里需要注意的地方在于S2层到C3层的权值参数的数目和每个10*10的feature-map的来源。
从Input->conv1,是从32*32*1到28*28*6.而现在pool1是14*14*6,其深度不再是1而是6.如果只采用一个filter,那么最简单的想法是对于每一个深度(1-6)的14*14小块,都用这个filter去处理,得到6个10*10的map,然后把它们加起来得到一个10*10的feature map。再采用16个filter,那么自然可以得到16个10*10的feature map。但是实际上,一个filter只会去处理上一层部分的feature map。如下图所示:
这里写图片描述
拿filter1为例,filter1只会处理0,1,2这样三个池化层1的feature map。

之后的下采样层,全连接层就没什么特别要说的,理解了前面的结构之后,也就很好理解了。

教程中还给出了CNN网络架构设计的一些建议。如使用一些较小的filter比一些较大的filter要好等等。

教程最后还分析了CNN可视化的一些方法,并且列出了一些paper。这个后续还需要再好好研读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值