【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构

VGGNet

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第1张图片
为何要将2个3 * 3卷积核叠到一起?

因为2个叠到一起的3 * 3卷积核,感受野(Receptive Field)是7 * 7,大致可以替代7 * 7卷积核的作用。但这样做可以使参数更少 ,参数比例大致为18:49

用小卷积核代替大卷积核(可视野),以减少参数(但是增大了训练时间)

GoogLeNet

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第2张图片

(1)22层
(2)inception 结构,用一些1 * 1, 3 * 3和5 * 5的小卷积核用固定方式组合到一起,来代替大的卷积核。达到增加感受野和减少参数的目的。
(3)500万参数,比ALEXNET小了12倍。
(4)ILSVRC’14 测试冠军(6.7% TOP 5 ERROR)

最初的Inception结构
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第3张图片
改进的Inception结构
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第4张图片
改进的Inception结构作为基础单元,叠加起来形成整个网络结构。
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第5张图片

ResNet

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第6张图片

(1)152层
(2)ILSVRC’15冠军,(3.57 TOP 5 ERROR)
(3)加入了前向输入机制,将前面层获得的特征图作为监督项输入到后面层。用这样的方法使深层网络训练能够收敛。
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第7张图片

(1)作者首先发现了,训练一个浅层的网络,无论在训练集还是在测试集上,都比深层网络表现好,而且是在训练各个阶段持续的表现好。
(2)在这个例子中,既然20层的网络表现比56层的好,那么大不了另外36层什么事情也不做,于是产生了将浅层网络的输出直接加到后面层的想法。
(虽然网络变浅了,导致网络结构复杂度降低(空间复杂度、时间复杂度降低)的同时loss没有显著减小)
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第8张图片
将浅层的输出直接加入到后面层去,促使深层网络能够表现更好。
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第9张图片

训练技巧:
– Batch Normalization
– Xavier initialization
– SGD + Momentum (0.9)
– Learning Rate:0.1
– Batch size 256
– Weight decay 1e-5
– No dropout

基于ResNet的人脸验证

人脸验证的关键是将人脸图像映射到一个特征空间,在这个空间中同一个人的距离更近,不同人的距离更远。这里我们采用分类监督来学习这样一个特征空间。
用Caffe实现人脸验证,先训练一个人脸分类网络,接着把网络倒数第二个全连接层作为特征层(512维)。
(一)网络结构
首先定义一个28层的ResNet。

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第10张图片
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第11张图片
(二)优化目标
设计我们的目标函数。参照文献,我们把目标函数确定为最小化下式:

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第12张图片

第一项是softmax loss;第二项是center loss。

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第13张图片

训练的Solver文件,该文件指定了训练的网络以及必要的参数

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第14张图片
运行训练脚本开始训练。训练的时候可以随时终止,手动调整学习率再恢复训练。这样子我们就基本完成了用Caffe训练一个卷积神经网络的过程。

修改Caffe,添加新的layer
有时候需要一些特殊的层或者目标函数。这时候我们需要自己实现。Caffe利用各种库
使其自身代码非常简洁,修改起来也很容易。
(三)训练集和预处理
采用Webface作为训练集,包含一万个不同的人。图像的预处理包括人脸检测、人脸关键点检测和对齐裁剪。在检测到人脸关键点之后,我们找到一个相似变换矩阵将人脸与预定义的标准形状对齐。
最终结果如图:
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第15张图片

最后,从处理完的训练集中划分出一部分作为验证集。

  1. 网络结构:改进的RESNET (train_val.prototxt)
  2. 采用SGD训练,每隔一定的步数降低学习率。在训练的时候caffe会把loss记录到log文件中,通过解析log文件画出loss下降图:

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第16张图片

(五)实验结果
测试集是LFW数据集,评测规则是给定两张图片,判断这两张图是否是同一个人。
我们根据特征之间的余弦距离判断两张人脸是否属于同一个人。在这个数据库上的10折交叉验证准确率最终是:99.18%。

【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第17张图片

部署到硬件上
【ZJU-Machine Learning】卷积神经网络-最近流行的网络结构_第18张图片

迁移学习

有以下两种应用方式:
1、对不同的数据库,用待识别的数据库(可能很少量)对已训练的模型做微调(跨度可大可小)
2、在已训练好的模型后面,以输出的参数作为输入参数,再接一个神经网络进行训练

你可能感兴趣的:(【ZJU】机器学习)