0%

CNN图像分类学习记录(一)——LeNet

《Gradient-based learning applied to document recognition》

之前的模式识别系统,分为两部分,第一部分是特征提取器,把输入变量变成低纬度的特征向量。这个过程需要很多人类知识,而且主要是针对特定任务。第二部分是分类器,分类器是比较通用的,也可以进行训练。

卷积网络组合了三个关于架构的想法:局部感知区域、共享参数、空间二次采样。小的卷积核可以提取出基本视觉元素,比如边缘,角点,终点。这些特征再被后续的层去提取更高维度的特征。一个卷积神经元输出一个feature map,完整的卷积层由多个卷积核组成。

池化层的作用是减少feature的精确位置,只关注特征之间的相对位置。

LeNet-5结构

1,C1,6个5*5的filter

2,S2,avg_pooling, 12个参数

3,C3,16个5*5的filter,但是不是完全卷积

4,S4,22的avg pooling , 162=32个参数

5,C5,120个5*5卷积filter,这一层又是完全卷积了,只有C3特殊

6,F6,是全连接层,有84的神经元,这一个层后用了tanh,作为激活函数

7,Output,F7层也不是普通的全连接层,而是用了所谓RBF函数,实际是把F6层输出84维向量,和10个分类的向量求欧式距离

8,Loss Func也不是现在常用的交叉熵,而是一个我看不懂的公式

原始LeNet和现在通用模式,还是有很多差别。比如C3层就不是对S2层的完全卷积操作,而是不同的卷积核对应不同的层,作者说是为了减少计算量,更重要是为了打破对称。而在卷积处理后,是现在avg_pool,并且还是乘上一个参数,再加一个bias,才得到采样以后的数值,这个数值还要进行sigmoid。早先的论文很多都是数学公式,不想现在更注重简化,方便工程实现。

可以看出LeNet的时候,还没有dropout, max_pool, relu等优化,但已经把CNN的大框架定下来了。

这篇文章还讲了很多图像分割,后处理等技术,实在看不懂,留到后续再学习吧,现在先把LeNet的结构搞懂就不错。

也就是说,在1998年人们就开始利用CNN自动选择特征,发展到2010s以后,就开始用GPU寻找feature vector,而且有了大量的标注数据。此后,人工寻找好的NN结构,用不同的超参做实验,俗称炼丹师,到2017年后,开始机器寻找好的网络结构(NAS, PNAS, ENAS)