前Vit时代CV模型大串烧

AlexNet

        首次应用cpu

        relu替代sigmoid和tanhi

        LRN局部响应归一化

        dropout

VGG

        堆叠多个3*3的卷积代替大尺度卷积核

        提出感受野

GoogLeNet

        引入inception结构(融合不同尺度的特征信息)

        1*1的卷积核进行降维以及映射

        两个辅助分类器帮助训练

        丢弃全连接层,使用平均池化

ResNet

        增加深度

        residual模块

        使用BN加速训练(使用BN卷积就不用bias)

ResNext

        组卷积

MobileNet

        V1:

        DW,PW cnov

        增加超参数alpha(控制卷积层卷积核个数的超参),beta(输入图像大小的超参)

        深度可分离卷积:DW+PW。DW会失去通道之间的关联,通过PW将通道打通

         但是DW conv部分卷积核大部分参数等于0,没有起到作用

        V2:

        倒残差结构(先升维,再降维)

        relu6激活函数

        Linear Bottlenecks:倒残差结构最后一个1*1的卷积层使用了线性激活函数。解释:relu激活函数在高维损失小,但对低维特征信息会造成大量损失,而这里采用了两头细中间粗的倒残差结构,所以替换为了线性激活函数。

        模型特点:只有stride=1并且输入输出特征矩阵shape相同时才会有残差结构

        V3

        bneck:1、加入SE(通道注意力):对每个channel进行全局平均池化处理,得到一个维度为channel的一维向量。再经过两个全连接层得到输出。对网络认为重要的channel赋予更大的权重。

2、更新了激活函数: swishx = x * sigmoid(x)计算,求导复杂,对量化不友好。于是提出h-swichx =x * relu6(x+3)/6 

        使用NAS搜索参数(Neural Architecture Search),详见

神经网络结构搜索 (1/3): 基本概念和随机搜索 Neural Architecture Search: Basics & Random Search_哔哩哔哩_bilibili

        重新设计耗时层结构:1、减少第一个卷积层卷积核的个数。2、精简Last Stage。

ShuffleNet

        v1

        提出channel shuffle:虽然组卷积可以减少复杂度,但不同组之间没有交流。

于是 

每个组的第n份放在一起

        

        使用PW Gconv积,用3*3全局平均池化代替1*1卷积的映射:原因:1*1卷积占计算量百分之九十。

        

        V2

        计算量不能看FLOPs,比如内存访问时间(MAC),并行等级

        提出四条设计高效网络准则:

                1、卷积层输入输出通道数相同时MAC最小(保持FLOPs不变时)

                2、Gconv的groups增大时(保持FLOPs不变),MAC也会增大

                3、网络设计碎片化程度越高,速度越慢(分支程度)

                4、Element-wise操作带来的影响不可忽视。包括激活,相加,偏置bias,它们的FLOPs很小但MAC很大 。

        channel split:按channel划分为两半,一半处理一半不处理最后拼接而不是加和。

EfficientNet

        V1

        同时探讨输入分辨率,网络深度和宽度对准确率的影响。

        增加深度能够得到更加丰富,复杂的特征并能很好的应用在其他任务中,但深度过深会面临梯度消失,训练困难问题。

        增加宽度能获得更高细粒度的特征并且也更容易训练,但宽度很大深度较浅的网络往往很难学到更深层次特征。

        增加输入网络的图像分辨率能够潜在的获得更高细粒度的特征模版,但对于非常高的输入分辨率,准确率的增益也会减小,并且大分辨率图形会增加计算量。

        具体d,w,resolution与准确度之间的关系见EfficientNet网络详解_太阳花的小绿豆的博客-CSDN博客

        存在问题:图形尺寸很大时训练速度很慢,网络浅层使用DW conv速度很慢(无法利用一些现有的加速器),同等的放大每个stage是次优的。

        V2

        引入Fused-MBConv模块

        引入渐进式学习策略:根据训练图像尺寸动态调节正则方法(提升训练速度,准确率)

        对V1问题的解决:        

                限制图像尺寸;

                引入Fused-MBConv模块(3*3的卷积代替1*1卷积+3*3DW Conv,又转回去了。。。),但不是无脑的换成fused,而只在浅层中替换。

        引入渐进式学习策略:根据训练图像尺寸动态调节正则方法(提升训练速度,准确率)。在早期时采用较小的训练尺寸以及较弱的正则方法,这样网络可以快速地学到一些简单的表达能力。接着逐渐提升图像尺寸,同时增强正则方法(dropout,randaugment,mixup)。

RepVGG

        结构重参数化:训练时多分支,推理时单路。

                1、结果:更快,更省内存,更加灵活。

                2、3*3与BN融合,1*1先转化成3*3再与BN融合,identity进行恒等映射得到3*3卷积层再与BN融合。

        原理:

                1、卷积与BN融合:相当于在原来卷积核乘一个常数,再加上一个bias

                2、1*1变3*3:只用padding上一圈0

                3、identity变3*3:通过如下所示直接进行恒等映射。

                4、融合:利用结合律。

        


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部