【深度之眼cs231n第七期】笔记(十九)

AlexNet

卷积层输出大小参数量的计算:

输出大小:由于输入是227x227x3,且第一个卷积层使用了96个步长为4的11x11的卷积核。
所以,输出的宽(高)= 1+(227-11)/4 = 55,输出通道数=卷积核个数=96。
综上,第一个卷积层的输出为55x55x96

参数量:每个卷积核有11x11x3个参数,总共96个卷积核,所以第一个卷积层有11x11x3x96个参数。
在这里插入图片描述
池化层输出大小参数量计算:

输出大小:池化层输入是55x55x96,使用步长为2的3x3卷积核。
输出宽(高)= 1+(55-3)/2 = 27,输出通道 = 输入通道 = 96。
所以,输出大小为:27x27x96。

参数量:池化层不需要参数。
在这里插入图片描述
左边是AlexNet构架,右边是一些细节(超参数、优化器、激活函数等):
or_FFFFFF,t_70)
由于当时机器运算能力的限制,这个网络是分成两部分分别在两个GPU上训练的,相当于分为两组的组卷积。当然在某些层中(CONV3, FC6, FC7, FC8),组与组之间是有联系的。
在这里插入图片描述
AlexNet是ImageNet Large Scale Visual Recognition Challenge (ILSVRC)比赛中首个基于CNN的赢家(2012年)。
2013年的赢家ZFNet只是更改了AlexNet的一些超参数,比如卷积核的大小,卷积核的个数。
在这里插入图片描述

VGG

VGG的特点是使用小卷积核(只用步长为1,padding为1的3x3卷积核和步长为2的2x2最大池化卷积核)+更深的网络(AlexNet的8层->16或19层)

Q:为什么用小卷积核?
A:小卷积核堆叠起来和大卷积核有相同的感受视野,与此同时,神经网络的层数更深,拥有更多的非线性能力,而且相对于大卷积核参数也更少
在这里插入图片描述
VGG16的架构:
可以看到,内存主要花费在前面几个卷积层(保存数据用于反向传播),参数主要集中在后面的全连接层
在这里插入图片描述

GoogleNet

GoogleNet的特点:以有效的计算实现更深的网络

  • 网络总共有22层
  • 使用了Inception模块
  • 没有全连接层(事实上只是减少了两个全连接层)
  • 参数比AlexNet少12倍

在这里插入图片描述
inception结构的基本想法是对输入使用不同的卷积核(学习更多样的信息),然后把它们拼接起来。
在这里插入图片描述
但是这个结构有个问题:
计算量非常大,每一个inception结构有854M的操作(只算了乘法操作)。
而且通道数会不断增加:通过padding可以保持输出输出大小的宽和高,由于在输出的时候进行的是拼接,所以通道数肯定会增加(池化层会保持输出层通道数不变,再加上另外3个的通道数)。
这样,每经过一个inception结构通道数就会变得更多(宽和高不变),这就导致计算量进一步增加。
在这里插入图片描述
解决的办法是使用1x1的卷积,也就是bottleneck结构。
1x1的卷积能在维持宽和高的情况下减少(也可以增加)通道的维数。这样一来操作数就从845M减少到了358M。
在这里插入图片描述
GoogleNet的网络框架:
左边是输入,右边是输出,把中间大部分的卷积层换成了inception结构。
由于网络层数比较深,容易造成梯度消失(特别是在靠近输入层的地方),所以增加了两个额外的辅助输出,用于减缓底层的梯度消失。
在这里插入图片描述

ResNet

研究发现,单纯把卷积层堆叠起来时,更多的层数反而有更高的训练误差和测试误差,而且这不是过拟合导致的(过拟合的训练误差会比较低)。
何凯明他们提出了一个假设:这是由于较深的网络很难优化。
在这里插入图片描述
然后他们也提出了一个解决方案:
不直接学习输出H(x)了,转而学习F(x)=H(x)-x
在这里插入图片描述
ResNet的结构:

  • 把残差结构堆叠起来
  • 每个残差结构里有两个3x3的卷积层
  • 周期性地把卷积核的数量变成原来的两倍,并周期性地使用步长为2(/2)的卷积来进行下采样
  • 在开始添加额外的卷积层
  • 只有一个全连接层用于输出
  • 在全连接层前是全局平均池化
    在这里插入图片描述
  • 对于比较深的网络(50层以上),使用bottleneck增加计算效率
    在这里插入图片描述

ResNet的一些细节
在这里插入图片描述
ResNet解决了优化问题,所以层数可以增加到152层。
它是所有(5个)2015年ILSVRC和COCO挑战的冠军,也是首个在图像分类方面表现的比人类更好的网络。
在这里插入图片描述
2016年的赢家使用了集成网络,集成了inception、inception-ResNet、ResNet、wide ResNet等模型
在这里插入图片描述
2017年是赢家是SENet

  • 添加“特征校准”模块,自适应地调整特征的权重
  • 输入(维度CxHxW)->全局平均池化(维度Cx1x1)->FC(维度C/16x1x1)->FC(维度Cx1x1),最后的Cx1x1是权重,乘以输入CxHxW,得到最终输出
    在这里插入图片描述

其他网络

改进ResNet

Identity Mappings in Deep ResNet

  • 为整个网络的信息传播提供更直接的路径(把激活层放到残差映射的路径中)
    r_FFFFFF,t_70)

wide ResNet

  • 认为残差网络比网络的深度更有效
  • 使用F*k个卷积核代替F个卷积核
  • 50层的wide ResNet比152层的ResNet效果更好
  • 增加卷积核宽度比增加网络层深度更有效(可以进行并行计算)
    !r_FFFFFF,t_70)

ResNetXT

  • 通过多个并行路径增加网络的宽度
  • 并行路径上使用类似于inception的结构(也就是使用了1x1卷积)
    lor_FFFFFF,t_70)

其他想法

DenseNet

  • 每一层以前馈方式连接到其他层的密集块
  • 缓解梯度消失,加强特征传播,鼓励特征重用
  • 50层的网络比152层的ResNet效果更好
    or_FFFFFF,t_70)

轻量级神经网络

MobileNet

  • 使用深度可分离卷积代替正常卷积
  • 在维持准确率的情况下,网络更有效
  • 后续工作:MobileNetv2、MobileNetv3、shuffleNet
    在这里插入图片描述

神经网络结构搜索

NAS

  • 控制器网络学习设计一个好的网络架构(输出设计网络的对应字符)
  • 迭代
    1. 从搜索空间中采样一个网络架构
    2. 训练该架构获得奖励R(和准确率有关)
    3. 计算采样概率的梯度,用R来控制参数更新的尺度(增加好架构的采样概率,降低坏架构的采样概率)

在这里插入图片描述

  • 将NAS应用到ImageNet这样大的数据集是很耗费计算量的
  • 设计一个可灵活堆叠的模块作为搜索空间
  • NASNet:使用NAS在较小的数据集CIFAR-10上找到最好的模块结构,然后迁移到ImageNet
  • 后续工作: AmoebaNet 、ENAS
    在这里插入图片描述
    EfficientNet
  • 通过扩展宽度、深度和分辨率来增加网络容量,同时平衡准确性和效率
  • 在给定计算能力(内存限制、FLOPS)的情况下寻找最优的复合比例因子集
  • 使用智能启发式规则进行扩展
    在这里插入图片描述

小结

要点:

  • AlexNet证明可以使用CNN训练计算机视觉模型

  • ZFNet、VGG证明大型网络效果更好

  • GoogleNet注重于使用更有效的1x1卷积和全局平均池化代替全连接层

  • ResNet展示了如何训练非常深的网络

    • 仅受GPU和内存的限制
    • 证明网络层数更多并不一定有更好的结果
  • ResNet之后CNN的效果已经超过人类,目标转向更有效的网络:MobileNet、ShuffleNet

  • NAS可以自动设计网络
    在这里插入图片描述

  • 在model zoo里有很多流行的模型可以直接使用

  • 目前默认使用ResNet和SENet

  • 网络变得越来越深了

  • 网络架构的其他方面也在不断的进行研究和改进
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值