转载请注明出处:https://blog.csdn.net/q_z_r_s/article/details/88315522
机器感知 一个专注于SLAM、三维重建、机器视觉等相关技术文章分享的公众号 ![]() |
深度学习经典网络模型总结
1. LeNet
xavier:神经网络初始化方法
LeNet第一层是32*32大小的图像,而caffe中mnist数据库为28*28,这样做的原因是希望潜在的明显特征,
如笔画断续、角点能够出现在高层特征监测子感受野的中心。
2. AlexNet
摘要:
网络模型包含 60 million 的参数,65000 neurons,五个卷积层,3个全连接层
最大池化,LRN(用在最大池化之前卷积的ReLU结果之后)
Dropout:用在前两个全连接层上,降低过拟合,提高准确率。
1. 简述需要更深的网络的原因,及AlexNet的基本贡献
2. 采用ImageNet数据集,因为AlexNet需要使用固定大小的图像作为输入,所以需要对
原始图像进行剪裁,剪裁成大小为256*256的尺寸
3. 网络架构:
5个卷积层:在两块GPU上进行
3个全连接层:softmax交叉熵优化
ReLU:训练速度更快
LRN:有助于模型的泛化
Overlapping Pooling:相比于非重叠池化,准确率更高,不容易过拟合
4. 降低过拟合
4.1 Data Augmentation
由上可知,剪裁出来的图像大小为256*256,而网络输入大小224*224
这是为了对原始图像进行随机提取patches操作而故意为之的!
第一种方法:平移和水平镜像
第二种方法:使用PCA对图像像素强度进行调整
4.2 Dropout
通过随机操作可以减少神经元之间的co-adaptations,因此单个神经元不能仅依赖其他
特定的一些神经元,而是被迫去学习更具有鲁棒性的特征来应对随机的神经元子集
5. Details of learning
使用SGD方法进行优化、使用零均值高斯分布初始化权重、根据训练情况手动调节学习率
7. Results
8. Discussion
网络深度很重要
3. GoogLeNet
摘要:
提出了新的卷积神经网络架构-Inception-,此架构的主要特点是提高网络内计算资源的利用率。
通过精心设计,我们增加了网络的深度和宽度,同时保持计算预算不变。GoogLeNet为22层深度网络。
1. 介绍设计新的网络架构的目的及意义。GoogLeNet参数比AlexNet少了12倍,GoogLeNet的准确率不是
因为深度够深,而是源于对深度卷积架构的创新。
2. 讲述GoogLeNet是如何构成的
3. 传统的提高精度的方法是使用更宽、更深的卷积层,而弊端是容易过拟合、训练难等问题!
因此需要设计新的卷积架构:Inception是如何设计的:用小的稠密组件近似大的稀疏卷积结构!
4. 首先是设计了初始的Inception版本,由于层越高越注重抽象的特征,而空间注意将减少,所以需要
用更大的卷积核来补偿,但如果照这个思路操作下去,那么不用几层,特征输出就无限大了,所以
提出了新版本的Inception,即在大卷积核前先使用1*1的卷积核进行降维,这样就可以了!
5. GoogLeNet使用224*224的零均值RGB图像作为输入,最后一层全连接层主要是用来使网络输出适配到不同的
标签集上,并不是希望提高分类精度!
Inception的引入允许使用更深的网络结构,而这带来的后果就是梯度传播能力够不够的问题,容易发生
梯度消失,所以再网络中间层设置了新的loss层,标准与主网络输出的loss层标准相同,但在使用该网络
进行预测推理的时候将中间层引入的loss层剔除掉不用!
6. 使用SGD方法训练,实验证明光度扭曲有助于应对过拟合问题
7. 训练时使用大尺寸的图像剪裁成224*224大小的图像,还包括将图像进行镜像操作等,这样一张图生成144张
图片用于训练。
8. 比赛结果强力的说明了,用稠密组件近似大的稀疏结构是可以行的方法。该结构的主要优点就是计算量小!
增加小的计算量就可以获得高质量的精度提高!
4. VGGNet
摘要:
主要贡献是验证了更深的卷积网络结构是可行的
1. 本文主要关注的问题是网络结构的深度,实验表明此网络结构可以给SVM直接进行分类使用
2. 结构:使用3*3小卷积核,偶尔使用1*1的卷积核,使用最大池化,softmax,交叉熵,ReLU,验证了LRN效果不佳
网络层数从11-19层,此网络的想法与GoogLeNet的想法相似,即用小的卷积核代替大的卷积核,但又与GoogLeNet
不完全相同,没有它那么复杂的结构!文中说明了GoogLeNet为了减少计算量在第一个卷积层舍弃了太多的特征图
因此导致空间分辨率不高!
3. 训练方法与AlexNet类似,使用交叉熵,使用最小批量梯度下降法
为了训练更深层的网络,本文采用了先训练浅层网络的的方法,然后用浅层网络的权值预初始化更深层的网络的
前四个卷积层和最后三个全连接层的权值
训练方法和测试方法有两种:固定尺度和非固定尺度
网络模型的实现是基于Caffe的,但是做了深度改造以适应多GPU训练
4. A模型和A-LRN模型的对比表明LRN的作用并不大,所以后续模型全部不采用
深度越深精度越高、1*1的非线性卷积核作用不怎么样
更深的小卷积核形成的网络比等效的浅层网络的大卷积核效果更好
结果对比表明:多尺度训练 > 固定尺度训练、多尺度测试 > 固定尺度测试
多个网络结果的融合可以提高整体预测精度
5. 证明了深度在视觉表示领域的重要性
5. Siamese
6. SqueezeNet
设计初衷:减少参数量
本文设计CNN架构的三个策略:
1.用1*1替换3*3
2.减少输入到3*3核的通道数,即降低参数
3.为了在卷积层有足够的激活映射,降采样放在网络后边执行:这样做的原因是保留足够多的映射激活,这样有助于提高分类精度
7. FCN
8. R-CNN
摘要:
VOC数据集目标检测领域的典范,本文提出了使用CNN进行目标检测的新模型,本文提出的模型有两个关键点:
1.可以将CNN应用于目标定位和分段上
2.在带标注训练数据匮乏时,可以通过有监督预训练辅助
1. 过去十来年的视觉识别任务并没有大的发展,2010-2012间发展很慢,小的进展也都是通过使用已经成功的方法建立组合系统
或进行小的改进获得的;LeCun通过BP展现了SGD可以训练CNN;CNN在90年代被广泛使用,但是SVM出来之后就消沉了;
2012 Alex再次点燃了CNN,他的成功源于在一个很大的有标签的数据集上训练了一个更大的CNN,同时使用了ReLU等技巧;
本文关注两个问题:
1.使用深度网络定位目标
与图像分类不同,检测需要定位图像中的物体。一种方法是把它看做回归问题,然而实践表明这种策略并不怎么好;
另一种方法就是建立滑窗检测器,本文考虑采用此方法。然而本文的网络有5个卷积层,感受野和步长都很大,所以精确定位是一个难题
最后,本文选择使用Selective Search方法:生成可能有物体的区域;对输入的图像生成将近2000的候选区域,并放缩到固定的尺寸
然后送入CNN网络产生固定维度的特征向量,然后用一组线性SVM(线性分类器只能二分类,所以这里是很多SVM)进行分类打分;
2.使用小的带标注的检测数据量训练一个大容量的模型
检测任务的另一个难题是带标注的数据太少了,现有的数据是不足以训练大型CNN的。方便的解决办法就是使用非监督预训练,然后微调
本文的第二个主要贡献是:
展示了在辅助数据集上的监督预训练,然后在有区域标注的数据上进行微调;简单地边框逻辑回归显著的降低了错定位问题
2. R-CNN包含三个模块:
1.生成类别独立的候选区域:Selective Search
为了简单,直接将候选框中的图像放缩到227*227的大小。一个细节:缩放操作之前,先在候选图像区域之外膨胀p个像素
2.从候选区域提取特征的大型CNN网络
使用基于Caffe实现的AlexNet提取4096维的特征向量;输入去均值的RGB图像,然后经过五个卷积层和两个全连接层生成
3.用于分类的一组SVMs,而不只是一个SVM这么简单
在测试(推理)的时候:将所有的候选区域送入CNN,然后生成特征向量,最后送入SVM评分,
根据区域评分,如果一个区域和一个比自己评分更高的区域重叠了一定的比例,则剔除该评分小的区域
训练:
先在没有边界框的ILSVRC2012数据上进行预训练,使用Caffe CNN库。作者认为他的CNN可以媲美AlexNet,虽然误差率比它大,那是因为我们训练简化了而已~
微调:
然后继续用SGD训练网络,只不过这次替换掉了最后一个全连接层,而是换成了自己的N+1的全连接层,+1是给背景一个类别,CNN的其他部分不变
在微调时,本文把与真值框重叠IoU>=0.5的认为是正确的,微调时使用了1/10的初始训练的学习率,为了防止破坏预初始化的权值
考虑到有的物体在图像中显示的并不全的问题,通过定义IoU阈值来制定低于阈值的就是错的,本文在验证集上设置的阈值为0.3,作者发现这个值很重要!!
3. 作者先分析了没有通过微调的模型,分析发现全连接层FC7没有FC6重要,移除FC6和FC7直接使用pool5反而效果还挺好了!!
说明没有微调前的全连接层没有那么重要,重要的还是在卷积层上
作者分析微调后的结果发现,微调对FC6和FC7的提升比pool5大,这说明pool5从ImageNet学到的是具有泛化的特征,大部分的提升都来源于全连接层对
具体领域非线性分类器的学习!
网络模型架构的选择也影响最后的结果,作者通过将VGG16应用到R-CNN中发现,效果显著改善了,不过速度变慢了
最后再加上Bounding-box regression后,想过更好了!这个逻辑回归的输入特征不是全连接层,而是pool5的输出的特征
然后逻辑回归真值框!
4. 首先提出目标检测这个问题,然后分成目标分类+预测边框
目标分类:使用CNN预训练的网络,然后在VOC上微调,识别VOC的类别,主要是用于产生固定维度的特征向量给SVM
预测边框:使用selective search方法提取将近2000的候选区域,然后缩放到CNN输入的固定大小,产生特征向量
为了让边框更精确,对最后的候选边框进行逻辑回归。