ResNeXt50、ResNest50、ResNet50、从EfficentNet到AutoML

ResNeXt50、ResNest50、ResNet50、EfficentNet对比

 

ResNet50和ResNeXt50

附一张ResNet的结构图:(图片后期再补充)

 

ResNeXt50思想,就在于将卷积中的基数,完成整个算横向层面卷积层的拓展。根据文章的结果显示,在imageNet-1K的数据集上,错误率在不断下降。

但根据论文提交的数据来看,相比大部分数据下降效果可能不明显。

两种模型的模型参数,进行对比 :

ResNeXt在模型的实现过程中,

第一层中(stage1 & conv1),

ResNeXt使用AdaptivePool2d(output_size(1,1))代替了ResNet中的ReLU(inplace=True) , 同时,将Maxpool2d(kenerl_size=3, stride=3, padding=0)中的stride由ResNet中的2改成了3。

第二层中(stage2 & Conv2),

在ResNet50中,前两次卷积和BN以及最后一次卷积和BN后都采用了ReLU()函数激活,但ResNeXT50的Bottleneck中完全舍弃了使用ReLU()函数来做激活。并且,在ResNet50中,shorcut卷积中步长设置为2,之后链接了一次BN加ReLU()函数激活 ; 但在ResNeXt50中,shorcut卷积中步长设置为1,加BN,同时又在后面,链接了一层stride=1,的Conv加BN,没有ReLU()函数做激活。

第三层中 (),

情况与第二次相似,也是未使用ReLU函数,且做了两侧stride=1的卷积加BN;ResNeXt50中每一个bottleneck中都没有Relu。

第四层中,

Resnet50先做了stride=2的Conv ,再做了stride=1的Conv;ResNeXt,则先做了stride=1的卷积,后做sride=2的Conv(这样的话,就将stride=2的conv组合了32次), 其它ResNextd的bottleneck中,就只有多32次组合和没有ReLU函数。

第五层,

差异基本与前几层一致。

ResNest50和ResNet50对比

ResNest模型架构的采用的基本的算法就是提出了Split-Attention模块。

首先,受VGGNet, HighWay network等模块的影响, ResNet模块介绍了一种确定性的跳跃链接模块,可以用来降低深度特征中的梯度消失的困境并允许网络学习更深层的特征。

同时,受SE-Net, SK-net的刺激,ResNest采用了在bottle block中采用了组卷积结构,这个结构可以将多路结构转接到一个独立的运算子上。

之后,又做了神经网络框架搜索,完成一个在速度和精度上都比较好的模型。

ResNet50和ResNest50对比,

核心区别

相比来说,区别(主要集中在Bottle block)来讲,ResNet中的卷积层被替换成Split-Attention模块,2给 group的横向拓展和2个两卷积操作的纵向拓展(卷积操作后,均含有ReLu及BN)。另外,每个ResNest的Botlte block后,会加一个rsoftmax()层激活。

另外,Resnest还在bottle block中采用了Kernel size3*3的 Average pooling操作, 来替代原Resnet中的通过步长卷积+padding降采样而造成的误差问题。

此外,Resnest网络模型,将原ResNet开始的7 x 7的卷积层,替换成了3个3 x 3的的卷积层,相比Resnet原始网络也能保证输出相同的感受野特征。 同时,在每次shortcut连接层之前,将之前的kernel szie = 1x1, stride=2的卷积层,修改一层kernelsize=1x1, stride=1的Average Pooling层加kernelsize=1x1,stride=1的卷积层。

 

在训练过程中,加入了标签平滑、数据增强、正则化等操作,将整个模型的效果,推到了最好。

作者将ResNest的架构运用到了目标检测、分割等任务中,显示效果比之前的都有所提升。

 

EfficentNet于ResNet相比

 

EfficentNet于ResNest模型框架的生成思路很相似。都有从deepth、width方向上对现有网络架构进行NAS(Neural Architectural Search)搜索以找出一种从速度和精度上都相对较其它网络架构优秀的网络 模型。

与ResNest稍有区别的是,EffientNet还从图片像素大小(resolution)的角度这一维度对网络的效果进行了搜索。

【efficentNet网络的目标也在于想要系统的可解释的搞清楚多大的图像尺寸是网络能接受的最好的尺寸】

最终的结果显示,EfficentNet网络在模型参数和精度上都比其它(它论文中列出来的网络)优秀一大截。

【但EfficentNet论文结果比对中没有于ResNest的对比,ResNest论文中有对EfficentNet-B4,B5,B7的对比。根据ArVix显示,ResNest(2020.4)论文挂载于EfficentNet(2020.9)之前】

Efficientnet-B3 和 ResNest50的数据对比

从bottleneck block上看:

【以下数据出自ResNest和EfficentNet论文】

Resnset 采用 Split-Attention block。未使用升读可分离卷积。EfficenNet采用MBConv block。使用深度可分离卷积。SE模块为两者共有。

ResNest50参数量25.6M,精度81.13%, EffficentNet-B3参数量12M,精度81.6%

ResNest50使用block数量16【出自ResNext论文】,EfficentNet-B3使用block数量为25。

ResNest激活函数ReLU, EfficentNet 激活函数使用SiLu(Swich-1)。

ResNest遵循之前Resnet系列进行手工设计,EfficentNet采用标准模块进行NAS搜索。

 

EfficentNet的一些思想

EfficentNet的做法是将将H,W,C作为3个参数,将模型在这三个参数的作用下的精度作为优化变量,把问题转换成在约束条件下,求解精度最优解的优化问题。

具体公式见论文。

 

论文给出了在不同维度下拓展的结论:

  1. Depth。 在网络的深度上拓展,并没有预期的好。尽管使用了跳连接、BN等技术来淡化训练难题,但网络精度表现却是随着网络深度被轻视程度而取得增加。比如,ResNet1000和ResNet101的效果相似。论文数据显示,并预测,对非常深的网络而言精度优势会不断消散。

    2 .Width。 在网络宽度上拓展。论文中参照其它文章提出,修改网络的深度是一种对小规模网络进行修改的一种常用的方法。有其它论文指出,更宽的网络会使网络更容易训练并获取到更详细的特征(fine-grained features)。但浅层的宽网络对模型获取更好的特征于事无补。论文中的数据图表显示了,作者的实验结果,当网络变得越来越宽的时候,精度也会迅速达到饱和,无法增加。

    1. Resolution. 论文和其它参考文献,都显示了图像像素越大,越能获取图片的详细特征,相应的精度就会越来越高。

  2. 观察总结:修改网络的任一维度(宽度、深度以及图像大小)都提升了一定的精度。但对于更大模型而言,这种精度提升的效果就会消散的越来越弱。

方法

在这片文章中,作者提出一种基于α、β以及γ的可以被指定为常数的小规模的网格化搜索。并可以用户指定的去控制模型修改的可获取参数数目。

需要注意的地方是,规则化的卷积操作的FLOPS和参数depth、width^2、resolution^2这积分参数大小成比例。当网络深度双倍增加的时候,FLOPS也会倍增,但当网络的宽度或输入像素大小倍增的时候,网络的FLOPS会四倍的增加。

由于卷积操作通常意义上决定了卷积网络的额的计算量,使用论文提出的网络修改方法对网络进行调整的时候,也免不了可能会增加整体的FLOPS。

为了减少大网络的α、β以及γ参数的搜索成本,该论文使用了要给较小的网格化网络搜索,在MBConv上【该模块参照MobileNet V2】,得出Effiecentnet-B0,并在其它网络模型上使用了一套相同的轻量级的变换参数,得到了B1到B7。

论文在在其提出的方法上,对现有的大部分网络(MobileNet, Resnet等)进行了复合化搜索,结果显示,其结果,比单一结果上效果好很多,并以此做出推论,设定所有网络在经过搜索后,网络的效果都将好于之前的情况。

 

论文的结果显示,在Imagenet数据集上,EfficentNet系列模型的表现上来看。与其它的相关的卷积网络相比,在网络的top-1/top-5精度上可以与目前最好的卷积网络系列进行对比,但网络的参数量计算量产生了大量的降低。

 

EfficentNet-B3网络结构和Resnest50对比:

根据ResNest论文中被给出的数据,显示efficentNet-B3的检测精度要比Resnest50d的高(大约)0.5%。

根据质检数据集训练结果显示,EffiicentNet-B4 99.5, Resnest50 98.5.

对比一下网络结构的却别:

  1. EfficentNet-B0 EfficientNet-B0解读 - 知乎 (zhihu.com)

    在代码中(torch),出现了两个函数被,Conv2dStaticsSamePadding(nn.Conv2d)和 Conv2dDynamicSamePadding(nn.Conv2d)。

    这个Conv2dStaticsSamePadding(nn.Conv2d)函数的作用有两步,第一步,如果输入数据(一般来讲就是feature)需要做padding,就使用0填充(nn.ZeroPad2d())对图像进行填充,如果不需要填充,就把原始数据传给下一个操作即可。第二步,按照设定好的参数执行卷积运算。

    Conv2dDynamicSamePadding(nn.Conv2d)函数的作用是,第一步,如果输入数据需要进行填充,就按照输入的数据进行填充即可;第二步,按照指定参数对输入数据进行卷积操作。

    深度可分离卷积目的在于,将输出通道和卷积核kernel size(实际上就是也可以表示成输出特征图的尺寸)之间的乘积关系干开,转换成相加。

    nn.Conv2d 的weight参数,按设定顺序以list方式保存神经网络中的参数。

    nn.Conv2d的dilation参数,nn.Conv1d\nn.Conv2d以及groups\dilation参数的理解_jokerxsy的博客-CSDN博客

     

 

一些MBConv的细节:

  1. 前期降采样未出现pooling层,而换成了stride等于2的Conv。

    [对于小模型来说,前期的底层特征提取更重要]

  2. 不规则的channel数。与EfficentNet中的DropConnect机制有关,它不是对隐藏点的输出进行随机丢弃,而是对隐藏点的输入进行随机丢弃。

  3. EfficientNet调参工作因该非常复杂。其间使用了AutoAugment、SiLu(Swich-1)激活,在训练的各种Epoch中线性增加Dropout等方法。

 

MnasNet相关

MBConv模块

MBConv 在MnasNet中是一种可以转换的易变的Bottleneck 卷积网络模块。

SepConv在MnasNet中,就指的是升读可分离卷积。

MnasNet使用模型在移动端设备上执行推理的潜在因素,并测量目标潜在因素与推理得出的潜在因素之间的差值,作为网络搜索的多目标优化方法约束,并设置优化方程。

使用一个循环神经网络作为控制器,一个获取模型精度的训练器,和一个移动端收集作为收集潜在信息的推理引擎。

强化学习的奖励函数,由优化函数2给出。期望奖励公式,由公式4给出。

之后,使用 采样 - 评估 - 更新的循环方法,实现控制器的训练。

在上述思想下,论文作者将网络分成不同的Block,并对每个block设定可搜索的参数,包括,卷积,深度卷积、深度可分离卷积、残差链接、卷积核大小以及单个Block中所包含的网络层数。

 

 

AutoKeras:

https://blog.csdn.net/jinzhuojun/article/details/88934040?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160765501319195271680844%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160765501319195271680844&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-12-88934040.first_rank_v2_pc_rank_v29&utm_term=%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E6%90%9C%E7%B4%A2%20%E5%AE%9E%E7%8E%B0&spm=1018.2118.3001.4449

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值