我是靠谱客的博主 风趣抽屉,最近开发中收集的这篇文章主要介绍深度学习(三):卷积神经网络CNN(常用CNN网络介绍),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

深度系列主要为 我在国科大研一期间,在《深度学习》课程中所学知识概述,根据PPT制作思维导图。

----------------------------------------------------------------------------------------------------------------------------------------------

感受野:单个感觉神经元的感受野是感觉空间的特定区域(如体表或视野),在这个区域内,刺激会改变神经元的放电。

池化层:池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化和均值池化;池化层不包含需要训练学习的参数,仅需要指定池化操作的核大小、操作步幅以及池化类型。

池化的作用:①减少网络中参数的计算量,从而遏制过拟合;②增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微小扭曲不会改变池化输出——因为我们在局部领域已经取了最大值/平均值)

(1)LeNet-5

LeNet-5LeCun等人提出1998提出。主要进行手写数字识别和英文字母识别经典的卷积神经网络,LetNet虽小,各模块齐全,是学习CNN的基础。

(2)AlexNet:

首次成功应用ReLU作为CNN的激活函数。使用Dropout丢弃部分神元,避免了过拟合使用重叠MaxPooling(让池化层的步长小于池化核的大小),一定程度上提升了特征的丰富性。使用CUDA加速训练过程进行数据增强,原始图像大小为256×256的原始图像中重复截取224×224大小的区域,大幅增加了数据量,大大减轻了过拟合,提升了模型的泛化能力。

AlexNet最后2个全连接层中使用了Dropout,因为全连接层容易过拟合,而卷积层不容易过拟合。

①随机删除网络中的一些隐藏神经元,保持输入输出神经元不变;

②将输入通过修改后的网络进行前向传播,然后将误差通过修改后的网络进行反向传播;

③对于另外一批的训练样本,重复上述操作

原理:①相对于训练大量模型耗费大量时间,dropout在AlexNet中只需花费2倍的训练时间。②引入稀疏性。因为部分神经元被删除,原来有些特征可能会依赖于固定关系的隐含节点共同作用,通过Dropout的话,就有效组织了某些特征在其他特征下才有效果的情况。③类似模型集成。在Dropout训练过程中,网络因为随机删除节点,导致实际上存在多种网络结构,却共用一组参数。

(3)VGG-16

VGGNet剑桥大学和DeepMind公司提出。获得ImageNet LSVRC-2014亚军。比较常用的是VGG-16,结构规整,具有很强的拓展性。相较于AlexNetVGG-16网络模型中的卷积层均使用3*3的卷积核,且均为步长为1same卷积,池化层均使用2*2的池化核,步长为2

两个卷积核大小为3*3的卷积层串联后的感受野尺寸为5*5,相当于单个卷积核大小为5*5的卷积层。两者参数数量比值为(2*3*3)/(5*5)=72% ,前者参数量更少。此外,两个的卷积层串联可使用两次ReLU激活函数,而一个卷积层只使用一次。

(4)Inception Net

Google公司2014年提出。获得ImageNet LSVRC-2014冠军文章提出获得高质量模型最保险的做法就是增加模型的深度(层数)或者是其宽度(层核或者神经元数采用了22层网络。

深度层数更深,采用了22层,在不同深度处增加了两个loss来避免上述提到的梯度消失问题。

宽度Inception Module包含4个分支,卷积核3x35x5max pooling后分别加上了1x1的卷积核起到了降低特征图厚度的作用

(5)ResNet

ResNetResidual Neural Network),又叫做残差神经网络,是由微软研究院的何凯明等人2015提出。获得ImageNet ILSVRC 2015比赛冠军获得CVPR2016最佳论文奖。

随着卷积网络层数的增加,误差的逆传播过程中存在的梯度消失和梯度爆炸问题同样也会导致模型的训练难以进行。甚至会出现随着网络深度的加深,模型在训练集上的训练误差会出现先降低再升高的现象。残差网络的引入则有助于解决梯度消失和梯度爆炸问题。

ResNet的核心是叫做残差块Residual block)的小单元,残差块可以视作在标准神经网络基础上加入了跳跃连接Skip connection)。

(6)RCNN系列

R-CNN:Region-CNN的缩写,主要用于目标检测。来自2014CVPR论文“Rich feature hierarchies for accurate object detection and semantic segmentationPascal VOC 2012 的数据集上,能够将目标检测的验证指标 mAP 提升到 53.3%,这相对于之前最好的结果提升了整整 30%采用在 ImageNet 上已经训练好的模型,然后在 PASCAL VOC 数据集上进行 fine-tune

实现过程:①区域划分:给定一张输入图片,从图片中提取 2000 个类别独立的候选区域,R-CNN 采用的是 Selective Search 算法。②特征提取:对于每个区域利用 CNN 抽取一个固定长度的特征向量,R-CNN 使用的是 Alexnet。③目标分类:再对每个区域利用 SVM 进行目标分类。边框回归Bounding box RegressionBbox回归)进行边框坐标偏移优化和调整

【Selective Search 算法】
核心思想:图像中物体可能存在的区域应该有某些相似性或者连续性的,选择搜索基于上面这一想法采用子区域合并的方法提取bounding boxes候选边界框。首先,通过图像分割算法将输入图像分割成许多小的子区域。其次,根据这些子区域之间的相似性(主要考虑颜色、纹理、尺寸和空间交叠4个相似) 进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域的外切矩形就是通常所说的候选框。

【SPPnet:空间金字塔网络 (Kaiming He)】

R-CNN的缺点:通过Selective Search提取2000个候选框,对每个框进行CNN提取特征,计算量大导致RCNN的检测速度很慢。

解决思路:由于提取到2000个候选框都在一张图片中,对图像进行一次CNN提取特征,将候选框在图像中的位置映射到卷积层的特征图上。但每个候选框的尺寸不一样,而全连接层的输入要求必须固定尺度。

空间金字塔池化SPP(Spatial Pyramid Pooling) :对任意尺寸的图片都能够得到固定长度的输出。

SPPnet 方法前,解决输入图像尺寸不一的方法为:①Crop(剪切) : 不能包括完整的图像,会丢失一部分信息。②Warp(变形,R-CNN采用):图像发生几何形变。

CNN包含卷积层和全连接层。卷积层的输入不需要固定图片大小且可以输出任何大小的图像;而全连接层的输入数据需要固定大小。卷积层全连接层之间加入SPP,使得卷积层的输出特征经过这种结构之后转换成固定长度的特征。

SPPnet 网络特点:①结合SPP实现CNN的多尺度输入.②对原图提取一次卷积特征。然后在特征图上找到每个候选框的映射patch,将此patch作为每个候选框的卷积特征输入SPP layer和之后的层,完成特征提取。

SPP层具体的操作步骤:①对于不同的图像要想得到相同大小的池化结果,就需要根据图像的大小动态地计算池化层窗口的大小和步长②如果金字塔有l-level,那么就实行池化操作l下一层的全连接层则连接这l个输出作为输入。

【Fast-RCNN】

R-CNN的基础上采纳了SPP Net方法,最后一个卷积层后加了一个ROI pooling layer,实际上是SPP-NET的一个精简版。
损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中训练

 

 

联合学习(joint training SVMBbox回归和CNN阶段一起训练,最后一层的Softmax换成两个:一个是对区域的分类Softmax,另一个是对Bounding box的微调。训练时所有的特征不再存到硬盘上,提升了速度。ROI Pooling层:实现了单尺度的区域特征图的Pooling

ROI Pooling层:将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。

Fast-RCNN具体过程:① 在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)②对整张图片输进CNN,得到feature map ③找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层 ⑤ ④对候选框中提取出的特征,使用分类器判别是否属于一个特定类 ⑤对于属于某一类别的候选框,用回归器进一步调整其位置。

针对R-CNN的改进:①测试时速度慢:FAST-RCNN将整张图像归一化后直接送入CNN,在最后的卷积层输出的feature map上,加入建议框信息,使得在此之前的CNN运算得以共享.②训练时速度慢FAST-RCNN在训练时,只需要将一张图像送入网络,每张图像一次性地提取CNN特征和建议区域,训练数据在GPU内存里直接进Loss层,这样候选区域的前几层特征不需要再重复计算且不再需要把大量数据存储在硬盘上.③训练所需空间大:FAST-RCNN把类别判断和位置回归统一用深度网络实现,不再需要额外存储

【Faster-R-CNN】

RPNRegion Proposal Network使用全卷积神经网络来生成区域建议(Region proposal,替代之前的Selective search

1)卷积层(conv layers):用于提取图片的特征,输入为整张图片,输出为提取出的特征称为feature maps。2)RPN网络(Region Proposal Network):用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片(因为这里RPN网络和Fast R-CNN共用同一个CNN,所以这里输入也可以认为是featrue maps),输出为多个候选区域。3)RoI pooling:和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Faste R-CNN中RoI pooling一样。4)分类和回归:这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。

RPN(Region Proposal Networks):

1)Conv Layers中最后的conv5层对应生成256张特征图(feature maps)

2)在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息),同时256-d不变

3)假设在conv5 feature map中每个点上有k个anchor(原文如上k=9),而每个anhcor要分foreground和background,所以每个点由256d feature转化为cls=2k scores;而每个anchor都有[x, y, w, h]对应4个偏移量,所以reg=4k coordinates(scores和coordinates为RPN的最终输出)

4)补充一点,全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练

Anchor 选取方法:对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积三种比例。这些候选窗口称为anchors。分类层输出每一个位置上,9anchor属于前景和背景的概率;窗口回归层输出每一个位置上,9anchor对应窗口应该平移缩放的参数。

(7)YOLO系列You Look Only Once

YLON:将目标检测作为回归问题,整张图作为网络的输入,将物体检测与分类合到一起,整张图作为输入,输出为回归bounding box的位置信息和其所属的类别。

与R-CNN系列最大的区别是用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率,实现了End2End训练。速度非常快,实时性好可以学到物体的全局信息,背景误检率比R-CNN降低一半,泛化能力强。准确率还不如R-CNN高,小物体检测效果较差。

基本思路:(1)将图片分为S*S的区域,此处不是RCNN那样对每个区域进行分类,而是经过CNN后,得到S*S个像素点的特征图。(2)每个网格单元负责检测目标中心落在此处的目标,网格单元预测Bbbox回归信息和置信度分数回归信息有4个值,xybbox相对于网格的偏移量,whbbox相对于整张图的尺寸比例。confidence代表了所预测的bbox中含有object的置信度和这个box预测的有多准两重信息)。(3)最后特征图是 S*S, 每个像素点有B5坐标Bbox位置信息和1个类别信息,S*S*B*5+C)4:S*S*B*(5+C).每个bbox都是自己的分类结果

 

 

最后

以上就是风趣抽屉为你收集整理的深度学习(三):卷积神经网络CNN(常用CNN网络介绍)的全部内容,希望文章能够帮你解决深度学习(三):卷积神经网络CNN(常用CNN网络介绍)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部