深度学习第五周培训

目录

一、论文阅读与视频学习

1.ShuffleNet V1

2.ShuffleNet V2

3.EfficientNet V3 

4.Transformer中Self-Attention

二、代码练习

1.使用VGG模型进行猫狗大战:

2.使用迁移学习思路完成研习社 AI艺术鉴赏挑战赛题


一、论文阅读与视频学习

1.ShuffleNet V1

  •  DepthWise卷积就是 group 卷积,连续的 group 卷积会产生边界效应,即某个输出channel仅仅来自输入channel的一小部分,这样提取到的特征会非常局限。
  • 因此提出了channel shuffle来解决这个问题如图所示,在第二个 group 之前,将一个组内分成不同的子组,然后让子组分别与各组进行卷积。这样每次组卷积对应的channel就不再局限了。

  • shuffleNet v1中的shuffle unit类似于ResNet中的bottleneck unit,将1x1的GConv后加入channel shuffle,其中利用channel shuffle操作来让通道间信息能够通过点组卷积进行有效编码再进行depthwise convolution,最后再进行一次GConv。
  • 在第二个GConv后,不添加ReLu层,而是在Add之后才添加,这样做是为了防止信息损失过量。
  • (c)中为步长为2的shuffle unit,可用于降采样。 通过使用depthwise convolution以及GConv,shuffleNet可以在一定计算资源有限的情况下,提高准确率。

可根据上图中的shuffleNet v1结构进行网络搭建。

2.ShuffleNet V2

  • 模型执行效率的准则不能完全取决于FLOPs,FLOPs差不多的两个模型的运算速度却不一样,因为FLOPs仅仅反映了模型的乘加次数。
  • 影响模型运行速度的另一个指标也很重要,那就是MAC(memory access cost)内存访问成本。shuffleNetv2充分考虑了不同结构的MAC,从而设计了更加高效的网络模shuffleNetV2。
  • 作者根据四条Guidelines,设计了一个有效的网络模型。

两个具有代表性的网络在GPU和ARM上运行时的分解构造。

  • G1:输入输出具有相同channel的时候,内存消耗是最小的。
  • G2:过多的使用组卷积,会增加MAC。
  • G3:网络分支数量虽然增加了模型的模型的性能,但对模型速度的有影响,网络的分支减少了并行度,模型的分支数量越少,模型的速度越快。
  • G4:Element-wise 操作对模型速度的影响,element-wise所带来的时间消耗远比FLOPs上体现的数值要多,因此需要尽可能的减少element-wise操作。

  • 卷积操作时,输入输出采用相同通道数可以降低MAC。
  • 以1*1的卷积操作为例,hw为输入特征图,c1和c2为输入输出通道数,B为FLOPs 。
  • 通过均值不等式可以得出,当且仅当 c1 == c2的时候MAC取得最小值,所以使用卷积要尽可能的平衡(c1 == c2),才会更高效。

  • 过多的组,会导致MAC增加。通过公式转换可以得出:当FLOPs、通道数、特征图不变时,组数g的增加,会增加MAC。 
  •  分支数量过少,模型速度越快。

  • element-wise操作导致速度的消耗,远比FLOPs上体现的多。 

  • (a)(b)为shuffleNet V1中的结构,(c)(d)中为shuffleNet V2中的结构。
  • Channel split是将channel 分成了一半,根据 G3 ,让其中一个分支保持不变,另一个分支有相同的channel的输入和输出(G1),而且其中的1x1卷积不再是GC Conv了(G2),因为Channel Split 已经分成了两个组。
  • 然后将两个结果concat,然后再利用 “channel shuffle” 来让两个分支的通道信息进行融合。
  • 根据(G4)之前shuffleNet之后的Add操作去掉了,可以被看做是一种特征复用。
  • 与shuffleNet V1不同的是在global pooling的前面增加了Conv5(1*1的卷积层),来进行特征的融合。

  • 对于stage2的第一个block,它的两个分支中输出的channel并不等于输入的channel,而是直接设置为指定输出channel的一半
  • 3.EfficientNet V3 

在本篇论文中会同时增加网络的width、网络的深度以及输入网络的分辨率来提升网络的性能如图(e)所示。

  • 增加网络的width能够获得更高细粒度的特征并且也更容易训练,但对于width很大而深度较浅的网络往往很难学习到更深层次的特征。
  • 根据以往的经验,增加网络的深度depth能够得到更加丰富、复杂的特征并且能够很好的应用到其它任务中。但网络的深度过深会面临梯度消失,训练困难的问题。
  • 增加输入网络的图像分辨率能够潜在得获得更高细粒度的特征模板,但对于非常高的输入分辨率,准确率的增益也会减小。并且大分辨率图像会增加计算量。 

我们先看下论文中通过 NAS(Neural Architecture Search) 技术搜索得到的EfficientNetB0的结构,如上图所示,整个网络框架总共分成了9个Stage。

 如图所示,MBConv结构主要由一个1x1的普通卷积(升维作用,包含BN和Swish),一个kxk的Depthwise Conv卷积(包含BN和Swish)k的具体值可看EfficientNet-B0的网络框架主要有3x3和5x5两种情况,一个SE模块,一个1x1的普通卷积(降维作用,包含BN),一个Droupout层构成。

通过上面的内容,我们是可以搭建出EfficientNetB0网络,其他版本的详细参数可见上表。

4.Transformer中Self-Attention

该论文模型的整体结构如上图,由编码器和解码器组成,在编码器的一个网络块中,由一个多头attention子层和一个前馈神经网络子层组成,整个编码器栈式搭建了N个块。类似于编码器,只是解码器的一个网络块中多了一个多头attention层。

 

假设输入的序列长度为2,输入就两个节点x 1 , x 2 ,然后通过Input Embedding也就是图中的f(x)将输入映射到a 1 , a 2,紧接着分别将a 1 , a 2 分别通过三个变换矩阵W q , W k , W v 得到对应的q i , k i , v i 。

首先还是和Self-Attention模块一样将ai分别通过Wq Wk,Wv得到对应的qi,ki,vi,然后再根据使用的head的数目h进一步把得到的qi,ki,vi均分成h份。

通过上述方法就能得到每个head i 对应的Q i , K i , V i 参数,接下来针对每个head使用和Self-Attention中相同的方法即可得到对应的结果。

接着将每个head得到的结果进行concat拼接。

接着将拼接后的结果通过W°进行融合,如上图所示,融合后得到最终的结果b1,b2。

对于Encoder部分来说,整个的Encoder结构里包含6层,每一层里面有两层。分别是一层self-attention层和一层全连接层。需要注意的是,这里的self-attention并不是只有一层。模型中使用的是multi-head-Attention。

二、代码练习

1.使用VGG模型进行猫狗大战:

 

2.使用迁移学习思路完成研习社 AI艺术鉴赏挑战赛题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值