ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

计算机视觉

2022-02-05 21:02:51  阅读:169  来源: 互联网

标签:2p 计算机 卷积 网络 times 参数 过滤器 视觉


课程:吴恩达深度学习

计算机视觉(p108-p150)

卷积网络

  • 补充:超参数
    • 机器学习模型中一般有两类参数:一类需要从数据中学习和估计得到,称为模型参数(Parameter)—即模型本身的参数。比如,线性回归直线的加权系数(斜率)及其偏差项(截距)都是模型参数。还有一类则是机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数λ,决策树模型中树的深度。
    • 参数和超参数的区别:模型参数是模型内部的配置变量,需要用数据估计模型参数的值;模型超参数是模型外部的配置,需要手动设置超参数的值。机器学习中一直说的“调参”,实际上不是调“参数”,而是调“超参数”。
    • 哪些属于超参数?
      梯度下降法中的学习速率α,迭代次数epoch,批量大小batch-size,k近邻法中的k(最相近的点的个数),决策树模型中树的深度,等等。
    • 超参数的优化:
      有四种主要的策略可用于搜索最佳配置:
      • 照看(babysitting,又叫试错)
      • 网格搜索
      • 随机搜索
      • 贝叶斯优化
  1. 边缘检测示例:
    • 注意所采用filter的样式,如垂直边缘检测一般采用的数字组合 [ 1 0 − 1 1 0 − 1 1 0 − 1 ] \begin{bmatrix} 1& 0& -1 \\1& 0& -1 \\1& 0& -1 \end{bmatrix} ⎣⎡​111​000​−1−1−1​⎦⎤​; Sobel过滤器 [ 1 0 − 1 2 0 − 2 1 0 − 1 ] \begin{bmatrix} 1& 0& -1 \\2& 0& -2 \\1& 0& -1 \end{bmatrix} ⎣⎡​121​000​−1−2−1​⎦⎤​,它的优点在于增加了中间一行元素的权重,这使得结果的鲁棒性会更高一些; Scharr过滤器 [ 3 0 − 3 10 0 − 10 3 0 − 3 ] \begin{bmatrix} 3& 0& -3 \\10& 0& -10 \\3& 0& -3 \end{bmatrix} ⎣⎡​3103​000​−3−10−3​⎦⎤​。
    • 一种思想:9个数字当成参数,使用反向传播去让神经网络学习这9个数字。
  1. 卷积操作——padding:
    • 如果我们有一个 n × n n \times n n×n的图像,用 f × f f \times f f×f 的过滤器做卷积,那么输出的维度就是 ( n − f + 1 ) × ( n − f + 1 ) ( n − f + 1 ) \times ( n − f + 1 ) (n−f+1)×(n−f+1)。
    • padding解决每一步输出缩小和图像边缘的大部分信息丢失问题
    • padding:卷积操作之前对图像进行像素值为p的填充,则输出为 ( n + 2 p − f + 1 ) × ( n + 2 p − f + 1 ) ( n + 2 p − f + 1 ) \times ( n + 2 p − f + 1 ) (n+2p−f+1)×(n+2p−f+1)。
    • 选择填充多少像素,通常有两个选择,分别叫做Valid卷积和Same卷积:Valid卷积意味着不填充,Same卷积意味着填充后,输出大小和输入大小相同。
  1. 卷积步长 (Strided Convolutions):
    • 再加入卷积步长s后,输出维度计算式为: ⌊ n + 2 p − f s + 1 ⌋ × ⌊ n + 2 p − f s + 1 ⌋ \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor \times \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor ⌊sn+2p−f​+1⌋×⌊sn+2p−f​+1⌋
    • 注意:关于互相关和卷积的技术上理解,取决于数学教材or信号处理教材数学教科书,数学教科书上卷积的定义是过滤器镜像翻转(沿矩阵右上斜线),再元素乘积求和;按照机器学习的惯例,通常不进行翻转操作。从技术上说,这个操作可能叫做互相关更合适,但在深度学习文献中,按照惯例,我们将这(不进行翻转操作)也叫做卷积操作。
  1. 三维卷积 (Convolutions Over Volumes):
    • 原图像: n × n × c h a n n e l s n \times n \times channels n×n×channels
    • filter: f × f × c h a n n e l s f \times f \times channels f×f×channels(这两个通道数完全一样)
    • output: ⌊ n + 2 p − f s + 1 ⌋ × ⌊ n + 2 p − f s + 1 ⌋ × 1 \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor \times \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor \times 1 ⌊sn+2p−f​+1⌋×⌊sn+2p−f​+1⌋×1
  1. 单层卷积网络 (One Layer of a Convolutional Network):
    • 原图像-> 多个不同的filter进行卷积得到多个输出-> 不同输出层增加各自的bias,再应用非线性激活函数得到输出结果-> (对应同一阶段的)输出层堆叠起来-> 最终得到 ⌊ n + 2 p − f s + 1 ⌋ × ⌊ n + 2 p − f s + 1 ⌋ × n f i l t e r \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor \times \left \lfloor\frac{n + 2p - f}{s} + 1\right \rfloor \times n_{filter} ⌊sn+2p−f​+1⌋×⌊sn+2p−f​+1⌋×nfilter​的矩阵
    • 过滤器用 W [ ? ] {W}^{[?]} W[?]表示,原始输入为 a [ 0 ] {a}^{[0]} a[0]。(表示法完全类似于之前logistic逻辑回归内容所讲)
    • 应用偏差和非线性函数之后,这一层的输出等于它的激活值 a [ l ] {a}^{[l]} a[l](即 n H [ l ] × n W [ l ] × n c [ l ] {n}_{H}^{[l]} \times {n}_{W}^{[l]} \times {n}_{c}^{[l]} nH[l]​×nW[l]​×nc[l]​)当你执行批量梯度下降或小批量梯度下降时,如果有 m 个例子,就是有 m 个激活值的集合,那么输出 A [ l ] = m × n H [ l ] × n W [ l ] × n c [ l ] {A}^{[l]} = m \times {n}_{H}^{[l]} \times {n}_{W}^{[l]} \times {n}_{c}^{[l]} A[l]=m×nH[l]​×nW[l]​×nc[l]​。
    • 参数W为所有过滤器的集合再乘以过滤器的总数量: f [ l ] × f [ l ] × n c [ l − 1 ] × n c [ l ] {f}^{[l]} \times {f}^{[l]} \times {n}_{c}^{[l - 1]} \times {n}_{c}^{[l]} f[l]×f[l]×nc[l−1]​×nc[l]​。
  1. 池化层 (Pooling Layers):除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性
    • max pooling
    • average pooling
  1. 使用卷积的优点:和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接
    • 参数共享:观察发现,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域
    • 稀疏连接:输出的某个像素值只取决于与filter相同大小的输入区域的像素值情况,其它像素值都不会对输出产生任影响。

经典网络

  1. 几个经典的神经网络结构:
      详见:https://blog.csdn.net/weixin_36815313/article/details/105778993
    • LeNet-5:valid卷积-平均池化-valid卷积-平均池化-全连接层-全连接层-softmax输出
      (此中使用的是sigmod函数和tanh函数,这种网络结构的特别之处在于各网络层之间有关联)
    • AlexNet:valid卷积-最大池化-same卷积-最大池化-再连续三次same卷积-最大池化-连续两个全连接层-softmax输出
      (AlexNet比LeNet表现更为出色的另一个原因是它使用了ReLu激活函数)
    • VGGNet:
      (VGG-16的这个数字16,就是指在这个网络中包含16个卷积层和全连接层。确实是个很大的网络,总共包含约1.38亿个参数,即便以现在的标准来看都算是非常大的网络。但VGG-16的结构并不复杂,而且这种网络结构很规整,都是几个卷积层后面跟着可以压缩图像大小的池化层,池化层缩小图像的高度和宽度。同时,卷积层的过滤器数量变化存在一定的规律,由64翻倍变成128,再到256和512。作者可能认为512已经足够大了,所以后面的层就不再翻倍了。无论如何,每一步都进行翻倍,或者说在每一组卷积层进行过滤器翻倍操作,正是设计此种网络结构的另一个简单原则。这种相对一致的网络结构对研究者很有吸引力,而它的主要缺点是需要训练的特征数量非常巨大。)
  1. 残差网络 (Residual Networks (ResNets)):
    • 非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。跳跃连接(Skip connection)可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。可以利用跳跃连接构建能够训练深度网络的ResNets。
      如果我们使用标准优化算法训练一个普通网络,比如说梯度下降法,或者其它热门的优化算法。如果没有残差,没有这些捷径或者跳跃连接,凭经验你会发现随着网络深度的加深,训练错误会先减少,然后增多。而理论上,随着网络深度的加深,应该训练得越来越好才对。但实际上,如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练,随着网络深度的加深,训练错误会越来越多。
      但有了ResNets就不一样了,即使网络再深,训练的表现却不错,比如说训练误差减少。这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。也许从另外一个角度来看,随着网络越来深,网络连接会变得臃肿,但是ResNet确实在训练深度网络方面非常有效。
    • 残差块(Residual block)
    • 残差块插入的时机是在线性激活之后,ReLU激活之前。
    • “跳跃连接”,就是指 a [ l ] {a}^{[l]} a[l]跳过一层或者好几层,从而将信息传递到神经网络的更深层(之所以能实现跳跃连接是因为same卷积保留了维度)。
    • 不太理解resnets不影响网络表现的原因:https://blog.csdn.net/weixin_36815313/article/details/105779620
    • 残差网络起作用的主要原因是这些残差块学习恒等函数非常容易
    • 普通网络和ResNets网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积层-池化层……依此重复。直到最后,有一个通过softmax进行预测的全连接层。
  1. 网络中的卷积及1x1卷积 (Network in Network and 1x1 Convolutions):
    • 1×1卷积可以压缩通道数量(当然也可保持或增加)并减少计算
  1. 谷歌 Inception 网络简介 (Google Inception Network Motivation):
    • Inception模块:使输出与输入长宽维度相同的,多种不同的过滤器( 1 ∗ 1 , 3 ∗ 3 , 5 ∗ 5 1*1,3*3,5*5 1∗1,3∗3,5∗5,max pooling)进行计算后,将各自的输出堆叠起来形成该模块。
    • Inception网络不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。
    • 如果你在构建神经网络层的时候,不想决定池化层是使用1×1,3×3还是5×5的过滤器,那么Inception模块就是最好的选择。我们可以应用各种类型的过滤器,只需要把输出连接起来。
    • 计算成本问题:通过使用1×1卷积来构建瓶颈层,从而大大降低计算成本(先利用1*1卷积缩小网络,再用其它filter扩大网络,只要合理构建瓶颈层,既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算)。
    • 以上内容结合构建inception网络详见:https://blog.csdn.net/weixin_36815313/article/details/105780151
    • Inception网络的一个细节,它确保了即便是隐藏单元和中间层也参与了特征计算,它们也能预测图片的分类,在Inception网络中,起到一种调整的效果,并且能防止网络发生过拟合。

标签:2p,计算机,卷积,网络,times,参数,过滤器,视觉
来源: https://blog.csdn.net/weixin_54144634/article/details/122793135

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有