cs231n_lecture_4_CNN-卷积神经网络

本文回顾了深度学习的历史,从早期的感知器到现代的卷积神经网络(CNN),并详细介绍了CNN的结构,包括滤波器、池化层和全连接层。CNN在图像分类、检测、分割等多个领域有广泛应用,其设计灵感来源于生物视觉系统。
摘要由CSDN通过智能技术生成

前景提要:

1. linear score function

2.2-layer neural network

A bit of history

1957,Frank Rosenblatt:perceptron   权重靠自己手动调试,没有BP

1960,Widrow and Hoff:Adaline and Madaline  多层感知器网络,没有BP,就是说没有合适的训练方法

1986,Rumelhart: 第一次引入 BP,有了科学的训练方法

2006,Geoff Hinton and Ruslan Salakhutdinov: reinvigorated deep learning 训练了深层网络,但不是现在的迭代方法

2012,Geoff Hinton's lab: 在声音识别上取得strong results

2012,Alex Krizhevsky in Geoff Hinton'slabCNN,really strong results on ImageNet classification

从此深度学习爆发。

 

Back to 1950s、60s,Hubel and Wiesel,猫的视觉神经机理研究,意义重大:大脑皮层的细胞也交织着视觉感知的细胞;神经细胞之间存在级联的结构

1980,Fukushima :Neocognitron 新认知机 simple cells had modifiable parameters,complexcells

on top of these that performed a sort of pooling

1998,Yann LeCun:应用BP和基于梯度的学习训练CNN,在文本识别上表现良好(邮局的手写字体)

2012,Alex Krizhevsky:现代CNN,其实与杨乐昆的区别不大,不过加了scale,网络结构更大,更深。但是此时的数据丰富,可以利用GPU加速。

 

如今ConvNets的研究与应用:
1.分类、检索

2.检测、分割

3.自动驾驶(GPU加速)

4.人脸识别

5.姿势识别

5.游戏/影视/AR

6.医学图像分析与检测

7.image captioning/图像理解

8.艺术创作 

 

CNN

Convolution Layer

Image 32*32*3 --> 5*5*3的滤波器--> 从整个图像上遍历划过,即卷积(细节下面展开)

1.滤波器深度和图像深度相同

2.滤波器掩模一次出1个结果,也就是滤波输出是单层的

3. 5*5*3的滤波模板参数有5*5*3+1=76

 

使用不同权重的滤波器可以得到不同的输出:


对输出继续使用filters:

这样类似于hubelwiesel发现的神经细胞之间的级联关系:


下面展示滤波器工作的细节:

Stride=1

最终7*7的input得到5*5的output


Stride=2:

output3*3


Stride=3

7*7的输入实施不了3*3的滤波器!doesn't fit


可以推出输出尺寸和输入尺寸N(图像为方形)、滤波器尺寸F的关系:


可以看出,stride变大的时候,有一个下采样的效果。

这里也有一个问题,我们希望输出层的大小与输入有一种倍数的关系,所以我们需要pading--在边界处补0或者镜像

输入7*7Stride=1时,输出,7*7

实际上,CNN里,我们通常令stride=1zero-padding大小就是(F-1)/2。另外假如我们不做padding,那么当深度增加时,输出图像尺寸会迅速减小。

总结:


Torch / Caffe --API里定制以上参数


回到滤波的例子,与上节课学的加权整个图片不同,CNN加权局部,可以想象成一个神经元一次只接受5*5个像素。


但是同一副图像会有一组filters作用,activation map的深度是滤波器的个数。这组滤波器都会作用到图像的同一块区域,但是不同的滤波器在寻找这块图像不同的特征。

 

Polling layer

1.使得图像描述更小更易于管理

2.对于每一层activation map独立操作

Max pooling:

用最大的像素代替周围四个像素,polling时是没有重叠区域的,我们要的就是达到下采样的效果

Average polling

但是最大值也许更有意义,因为我们希望在图像的局部区域输入的激励下对于我们想要的特征产生一个大的响应。

此时我们可以发现,stridepolling的效果都是downsample,确实有人使用stride代替polling,这件事可能要根据你的研究而定,stridepolling有微妙的区别,多尝试,选择最佳的那个。


fully connected layer

上一节课学习的基本神经网络结构,神经元连接到所有输入,加权后得到score

例如输入1*3072 -->权重10*3072 --> 点乘后得到1*10的结果

CNN完整结构如下所示:

越往后的层在寻找图像越复杂的信息,类似于hubel和wiesel的研究,一个直观感受就是我们还能看清第一层activationmap代表什么,但是再往后就无法识别了。最后的score显示了某个复杂特征对FC层的激活程度。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值