04.卷积神经网络 W2.深度卷积网络:实例探究

2021-02-19 15:06:31 浏览数 (1)

文章目录

    • 1. 为什么要进行实例探究
    • 2. 经典网络
    • 3. 残差网络 ResNets
    • 4. 残差网络为什么有用
    • 5. 网络中的网络 以及 1×1 卷积
    • 6. 谷歌 Inception 网络简介
    • 7. Inception 网络
    • 8. 使用开源的实现方案
    • 9. 迁移学习
    • 10. 数据增强 Data augmentation
    • 11. 计算机视觉现状
    • 作业

参考: 吴恩达视频课 深度学习笔记

1. 为什么要进行实例探究

学习大佬们的组建网络的方法,借鉴过来解决自己的问题

经典的网络模型:

  • LeNet-5
  • AlexNet
  • VGG

ResNet,残差网络,它有152层 Inception

2. 经典网络

3. 残差网络 ResNets

非常非常的神经网络是很难训练的,因为存在梯度消失梯度爆炸问题

  • 中间的激活能够到达网络的更深层
  • 这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能
  • ResNet 在训练深度网络方面非常有效

4. 残差网络为什么有用

残差网络起作用的主要原因:

  • 残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率

5. 网络中的网络 以及 1×1 卷积

我们知道,可以通过池化层压缩输入的高度和宽度,但是池化层不改变通道数

1×1卷积层 给神经网络添加了一个非线性函数,从而减少保持输入层中的通道数量不变,也可以增加通道数量

6. 谷歌 Inception 网络简介

构建卷积层时,你要决定过滤器的大小究竟是1×1,3×3 还是 5×5,要不要添加池化层。

Inception网络 的作用就是代替你来决定,虽然网络架构变得更加复杂,但网络表现却非常好

基本思想是:

  • Inception 网络不需要人为决定使用哪个过滤器或者是否需要池化
  • 而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合

通过使用1×1卷积来构建瓶颈层,从而大大降低计算成本

事实证明,只要合理构建瓶颈层,既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算

7. Inception 网络

Inception 模块:

Inception 网络:Inception 模块堆叠

8. 使用开源的实现方案

事实证明很多神经网络复杂细致,因而难以复制,因为一些参数调整的细节问题,例如学习率衰减等等,会影响性能

  • 选择一个你喜欢的神经网络框架
  • 接着寻找一个开源实现,从GitHub下载下来,以此基础开始构建 这样做的优点在于,这些网络通常都需要很长的时间来训练,而或许有人已经使用多个GPU,通过庞大的数据集预先训练了这些网络,你就可以使用这些网络进行迁移学习

9. 迁移学习

10. 数据增强 Data augmentation

数据扩充是经常使用的一种技巧来提高计算机视觉系统的表现

  • 垂直镜像对称(常用)
  • 随机裁剪(常用)
  • 旋转,剪切(局部扭曲)(不常用)
  • 色彩转换(给RGB通道按分布加上失真值),使得算法对照片的颜色更改更具鲁棒性

常用的实现数据扩充的方法:

  • 使用一个线程或者是多线程,用来加载数据,实现变形失真
  • 然后传给其他的线程或者其他进程,来训练,可以并行实现

数据扩充过程中也有一些超参数,比如,颜色变化,随机裁剪参数。 可以使用别人的开源实现,了解他们如何实现数据扩充。也可以自己去调整这些参数

11. 计算机视觉现状

为了提高性能表现:

  • 集成:使用多个神经网络,平均他们的输出,缺点,更多的时间,占用内存更大
  • Multi-crop 数据扩充,也是运行时间多,只有1个神经网络占用内存

附:

deep-learning-models/resnet50.py 开源实现 Deep Residual Learning for Image Recognition ResNets 论文

0 人点赞