深度学习核心技术与实践之计算机视觉篇

发布时间:2023年12月31日

非书中全部内容,只是写了些自认为有收获的部分

计算机视觉背景

(1)视觉皮层的神经元是一列一列组织起来的,每一列神经元只喜欢某一种特定的形状或者某些简单的线条组合,而不是鱼、老鼠、鲜花

(2)视觉的前期,并不是对鱼或老鼠进行整体识别,而是对简单的形状结构进行处理,这种简单的形状结构就是边缘

(3)视觉是分层的

(4)简单的3D摄像机就是用两个镜头,然后把图片叠加实现的。同样,对干语音问题,自然界的语音是重叠的,解决办法是用两只耳朵,在技术上就可以采用多个麦克风

(5)对人来说,很多遮挡并不是问题,比如看到部分虎纹就知道是老虎,这说明对视觉来说特征可能是最重要的。尺度不变特征变换算法认为只需要看到部分即可进行识别。而且就算整体上有些形变,具体特征也会保持不变

图像分类模型

LeNet-5

(1)对输入像素归一化:白色背景取值-0.1,黑色前景取值1.175,这样使得在MNIST数据集上像素点取值均值近似为0,方差近似为1

(2)每个C3层的特征图只与部分S2层的特征图进行连接。这样做有两个原因:
? ? ? ? 1.部分不完全的连接关系能将连接数控制在一个比较合理的范围内
? ? ? ? 2.更重要的是,它强制地打破了网络的对称性,不同的特征图由干输入不同而能够表达出不同的特征

(3)输出层由每个类别对应一个欧几里得RBF单元构成,每个RBF单元计算的是输入向量和参数向量w之间的欧式距离,输入向量与参数向量之间的距离越远,RBF单元的输出越大

AlexNet

(1)AlexNet模型中间层分为两路,明确显示了两块GPU之间的职责划分——一块GPU运行图中顶部模型部分,而另一块GPU则运行图中底部模型部分。GPU之间仅在某些层互相通信。

(2)创新之处:

? ? ? ? 1.ReLU

? ? ? ? 2.多GPU训练:第三层卷积需要以第二层产生的所有特征图作为输入,而第四层卷积则只需要以第三层的特征图中处在同一块GPU的部分作为输入。选择层间特征图的连接关系是一个交叉验证问题,但这使得我们能够将通信量精准地调整到一个可接受的范围内

? ? ? ? 3.局部相应归一化:

? ? ? ? 4.重叠池化:有重叠的池化层相比传统池化层出现过拟合现象的问题也略有缓解

? ? ? ? 5.整体网络结构:第二、四、五个卷积层只连接到前一个卷积层中也位于同一块GPU上的那些特征图,第三个卷积层则连接着第二个卷积层中的所有特征图,全连接层中的神经元连接前一层所有的神经元。在第一和第二个卷积层后面各接了一个局部响应归一化层。在局部响应归一化层和第五个卷积层之后接的最大池化层采用了前文介绍的重叠池化方式。所有卷积层和全连接层都采用ReLU作为非线性激活函数

? ? ? ? 6.降低过拟合:

????????????????运用两种数据增强:裁剪和水平翻转、改变训练数据中RGB通道的强度(对整个ImageNet训练数据的RGB像素值做主成分分析)。后一种变换能够使网络近似地学习到自然物体识别中一个很重要的属性,即物体识别应该对光照强度和颜色保持不变性

? ? ? ? ? ? ? ? 使用Dropout。测试时将所有神经元输出x0.5来近似

VGGNet

(1)VGGNet采用的卷积核感受野很小: 3x3;在其中一组配置中,VGGNet甚至采用了1x1的卷积核,这时卷积退化成为对输入的线性变换 (后面跟一个非线性单元)

(2)小卷积核代替大卷积核的好处:

? ? ? ? 1.用整合了的三个非线性激活层替代单一非线性激活层,增加了判别能力。

? ? ? ? 2.减少了网络参数。假设三个3x3的卷积层的输入输出都是C个通道,那么小结构中参数个数为3x(3C)2?=27C2。类似地,一个7x7的卷积层则需要 72C2?=49C2个参数,多出了81%。也可以看作对7x7的卷积网络施加了某种正则化,使其能够分解成三个3x3的卷积层

? ? ? ? 3.使用尺寸为1x1的卷积层能够在不影响感受野的情况下,增加网络非线性判别能力。尽管在VGGNet中 1x1卷积实质上是在相同维度空间(输入输出通道数一致) 上的线性投影,但激活函数还是引入了额外的非线性能力

GoogLeNet

(1)在 AlexNet 和 VGGNet 中全连接层占据 90%的参数量,而且容易引起过拟合;而GoogLeNet用全局平均池化层取代全连接层

(2)在传统的CNN中卷积层实质上是一种广义的线性模型,其表达和抽象能力不足;相比普通的卷积网络,MLP网络能够更好地拟合局部特征,也就是增强了输入局部的表达能力

(3)两个卷积层级联,如果统一增加卷积核数量,那么计算量的增大将与卷积核数的增加成平方关系

(4)如果用一个大型、稀疏的深度神经网络表示某数据集的概率分布,那么最优的网络拓扑可以通过逐层分析与之前神经元的统计相关,并将高相关性的神经元进行聚类得到。

Inception

(1)Inception模块将稀疏矩阵聚成相对稠密的子矩阵能带来客观的性能提升

(2)Inception结构的主要思想是用便捷可得的密集原件去近以卷积视觉网络的最优局部稀疏结构。接下来需要做的就是找到一种最优的局部结构,重复这结构把它们拼接在一起组成网络

(3)Arora等人提出一种层与层的结构,在结构的最后一层进行相关性统计,将相关性高的单元聚集到一起。这些簇构成下一层的单元,与上一层的单元连接

(4)假设前面层的每个单元对应于输入图像的某些区域,这些单元被滤波器进行分组。低层(接近输入层)的单元集中在某些局部区域,这意味着最终会得到在单个区域的大量群,它们能在下一层通过 1x1卷积覆盖;然而,也可以通过一个簇覆盖更大的空间来减少的数量。为了避免patch-alignment问题,将滤波器大小限制在1x1、3x3 和 5x5(主要是为了方便,非必要)。在池化层添加一个备用的池化路径可以提高效率

(5)得益于Embedding技术的成功,即使低维度的Embedding也能包含相对大的图像区域中的丰富信息。然而,Embedding将信息表达为调密压缩的模式,处理起来更困难。我们期望的是在大部分地方保持稀疏,只在需要放大的位置产生稠密信号。于是,1x1卷积放置在计算昂贵的3x3和5x5卷积层前,用于减少计算量。1x1卷积不仅用来降维,还用来修正线性特征

后续版本改进

(1) Inception-v2在之前的版本中主要加入了Batch Normalization;另外也借鉴了VGGNet的思想,用两个3x3的卷积代替了5x5的卷积,不仅降低了训练参数,而且提升了速度。
(2) Inception-v3在v2的基础上进一步分解大的卷积,比如把nxn的卷积拆分成两个一维的卷积1xn,nx1。例如7x7的卷积可以被拆分为1x7和7x1两个卷积。
(3) Inception-v4借鉴了ResNet可以构建更深层网络的相关思想,设计了一个更深、更优化的模型。

ResNet

(1)放弃直接拟合某个函数y=H(x)的传统思路,转而拟合残差F(x) =H(x) - x,原始映射就变成H(x)=F(x)+x

(2)在实际情况中,单位映射不太可能是最优的情况,但是改写为残差能帮助预处理整个问题。当一个最优的函数接近于单位映射而不是零时,找到一个参照单位映射的扰动比学习一个新的函数要更容易

(3)如果特征图数量减半,那么卷积核数量就翻倍,保持每一层的时间复杂度

(4)ResNet直接将卷积层步长设为2来实现降采样

(5)当维度增加时,考虑两种选择:1.仍然使用恒等快捷连接,增加的维度直接补0,这种方式不会引入新的参数;2.将维度较少的低层输出映射到与高层相同的维度上(通过1x1卷积实现)。无论怎么选择,当快捷连接跨过两层特征图时,步长设为2

DenseNet

(1)DenseNet具有更多的跨层快捷连接,从输入层开始,每层都作为后面各层的输入

(2)最终的DenseNet由Dense Block以及转换层 (Transition Layer)组成,转换层一般由一个Batch Normalizatin层、卷积核大小为1x1的卷积层和池化层组成,其中1x1的卷积主要用于瘦身,即降低通道数量

目标检测

文章来源:https://blog.csdn.net/m0_73202283/article/details/135318386
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。