首页 > 其他分享 >经典 backbone 总结

经典 backbone 总结

时间:2023-01-07 10:06:59浏览次数:67  
标签:总结 VGG ResNeXt 卷积 backbone ResNet 经典 所示 GPU


经典 backbone 总结_DenseNet

ResNet 模型比 VGG 网络具有更少的滤波器数量和更低的复杂性。 比如 Resnet34 的 FLOPs 为 3.6G,仅为 VGG-19 19.6G 的 18%。

目录

  • ​​VGG​​
  • ​​ResNet​​
  • ​​Inceptionv3​​
  • ​​Resnetv2​​
  • ​​ResNeXt​​
  • ​​Darknet53​​
  • ​​DenseNet​​
  • ​​CSPNet​​
  • ​​VoVNet​​
  • ​​一些结论​​
  • ​​参考资料​​

VGG

​VGG​​网络结构参数表如下图所示。

经典 backbone 总结_resnetv2_02

ResNet

​ResNet​​​ 模型比 ​​VGG​​​ 网络具有更少的滤波器数量和更低的复杂性。 比如 ​​Resnet34​​​ 的 ​​FLOPs​​​ 为 ​​3.6G​​​,仅为 ​​VGG-19​​​ ​​19.6G​​​ 的 ​​18%​​。

注意,论文中算的 ​​FLOPs​​​,把乘加当作 ​​1​​ 次计算。

​ResNet​​​ 和 ​​VGG​​ 的网络结构连接对比图,如下图所示。

经典 backbone 总结_DenseNet_03

不同层数的 ​​Resnet​​ 网络参数表如下图所示。

经典 backbone 总结_DenseNet_04

看了后续的 ​​ResNeXt​​​、​​ResNetv2​​​、​​Densenet​​​、​​CSPNet​​​、​​VOVNet​​​ 等论文,越发觉得 ​​ResNet​​​ 真的算是 ​​Backone​​ 领域划时代的工作了,因为它让深层神经网络可以训练,基本解决了深层神经网络训练过程中的梯度消失问题,并给出了系统性的解决方案(两种残差结构),即系统性的让网络变得更“深”了。而让网络变得更“宽”的工作,至今也没有一个公认的最佳方案(​​Inception​​​、​​ResNeXt​​ 等后续没有广泛应用),难道是因为网络变得“宽”不如“深”更重要,亦或是我们还没有找到一个更有效的方案。

Inceptionv3

常见的一种 ​​Inception Modules​​ 结构如下:

经典 backbone 总结_CSPNet_05

Resnetv2

作者总结出恒等映射形式的快捷连接和预激活对于信号在网络中的顺畅传播至关重要的结论。

ResNeXt

​ResNeXt​​​ 的卷积block 和 ​​Resnet​​ 对比图如下所示。

经典 backbone 总结_resnetv2_06

ResNeXt 和 Resnet 的模型结构参数对比图如下图所示。

经典 backbone 总结_VoVNet 网络_07

Darknet53

​Darknet53​​ 模型结构连接图,如下图所示。

经典 backbone 总结_VoVNet 网络_08

DenseNet

作者 ​​Gao Huang​​​ 于 ​​2018​​​ 年发表的论文 ​​Densely Connected Convolutional Networks​​。

在密集块(DenseBlock)结构中,每一层都会将前面所有层 ​concate​ 后作为输入。​​DenseBlock​​​(类似于残差块的密集块结构)结构的 ​​3​​ 画法图如下所示:

经典 backbone 总结_VoVNet 网络_09

可以看出 ​​DenseNet​​​ 论文更侧重的是 ​​DenseBlock​​​ 内各个卷积层之间的密集连接(​​dense connection​​)关系,另外两个则是强调每层的输入是前面所有层 feature map 的叠加,反映了 feature map 数量的变化。

CSPNet

CSPDenseNet 的一个阶段是由局部密集块和局部过渡层组成(​a partial dense block and a partial transition layer​

经典 backbone 总结_resnetv2_10

​CSP​​​ 方法可以减少模型计算量和提高运行速度的同时,还不降低模型的精度,是一种更高效的网络设计方法,同时还能和 ​​Resnet​​​、​​Densenet​​​、​​Darknet​​​ 等 ​​backbone​​ 结合在一起。

VoVNet

One-Shot Aggregation(只聚集一次)是指 OSA 模块的 concat 操作只进行一次,即只有最后一层(\(1\times 1\)。​​OSA​​ 模块的结构图如图 1(b) 所示。

经典 backbone 总结_DenseNet_11

在 ​​OSA module​​​ 中,每一层产生两种连接,一种是通过 ​​conv​​​ 和下一层连接,产生 ​​receptive field​​​ 更大的 ​​feature map​​​,另一种是和最后的输出层相连,以聚合足够好的特征。通过使用 ​​OSA module​​​,​​5​​​ 层 ​​43​​​ ​​channels​​​ 的 ​​DenseNet-40​​​ 的 ​​MAC​​​ 可以被减少 ​​30%​​​(​​3.7M -> 2.5M​​)。

基于 OSA 模块构建的各种 ​​VoVNet​​ 结构参数表如下。

经典 backbone 总结_CSPNet_12

作者认为 ​​DenseNet​​​ 用更少的参数与 ​​Flops​​​ 而性能却比 ​​ResNet​​​ 更好,主要是因为​​concat​​​ 比 ​​add​​​ 能保留更多的信息。但是,实际上 ​​DenseNet​​​ 却比 ​​ResNet​​要慢且消耗更多资源。

​GPU​​ 的计算效率:

  • ​GPU​​​ 特性是擅长 ​​parallel computation​​​,​​tensor​​​ 越大,​​GPU​​ 使用效率越高。
  • 把大的卷积操作拆分成碎片的小操作将不利于 ​​GPU​​ 计算。
  • 设计 ​​layer​​ 数量少的网络是更好的选择。
  • 1x1 卷积可以减少计算量,但不利于 GPU 计算。

在 CenterMask 论文提出了 VoVNetv2,其卷积模块结构图如下:

经典 backbone 总结_DenseNet_13

一些结论

  • 当卷积层的输入输出通道数相等时,内存访问代价(​​MAC​​)最小。
  • 影响 CNN 功耗的主要因素在于内存访问代价 MAC,而不是计算量 FLOPs。
  • GPU 擅长并行计算,Tensor 越大,GPU 使用效率越高,把大的卷积操作拆分成碎片的小操作不利于 GPU 计算。
  • 1x1 卷积可以减少计算量,但不利于 GPU 计算。

参考资料

  • ​VGG/ResNet/Inception/ResNeXt/CSPNet​​ 论文
  • ​​深度学习论文: An Energy and GPU-Computation Efficient Backbone Network for Object Detection及其PyTorch​​



标签:总结,VGG,ResNeXt,卷积,backbone,ResNet,经典,所示,GPU
From: https://blog.51cto.com/armcvai/5995377

相关文章

  • Allure11-总结
    allure特性非动态特性@allure.epic、@allure.feature、@allure.story、@[email protected]、@[email protected][email protected]......
  • NDK 减少 so 库体积方法总结
    .使用strip使用NDKtoolchain可以把调试的C++符号表(SymbolTable)中数据删除,我们一般我们打成APK会自动帮我们做这个工作,当然也可以手动设置:手动的在链接选项中......
  • 2022年工作总结,迟到比没到好
    虽已步入2023,做2022年总结已迟到,但总比旷工好2022年太难,出行难、工作难、生活也难不想多说,用图汇成一年的总结尝试围绕降本、增效、赋能、管控几个维度做总结 202......
  • MSIC总结取证分析——日志分析
    MSIC总结取证分析一、日志分析:1.常见日志分析类型:2.常见一些考点:(1)还原特定IP攻击手段(SQL注入、暴力破解、命令执行等),或还原最初攻击时间;(2)寻找flag或者特定文件解密需要......
  • 总结一下目前遇到的环境问题
    用pytorch检测cuda环境#判断是否安装了cudaimporttorchprint(torch.cuda.is_available())#返回True则说明已经安装了cuda#判断是否安装了cuDNNfromtorch.backend......
  • 冷门性质总结
    对于一个竞赛图,将其顶点按出度从小到大排序,则存在\(k<n\)使得前\(k\)个顶点的出度之和等于\(\binom{k}{2}\)是该竞赛图非强连通的充要条件。兰道定理:记每个点......
  • 关于接口测试自动化的总结与思考
    作者:云原生序近期,阿里云性能测试PTS接口测试已上线发布一段时间,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一......
  • 关于接口测试自动化的总结与思考
    作者:云原生序近期,阿里云性能测试PTS接口测试已上线发布一段时间,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家......
  • 释放资源的几种方法总结
    1、BitmapData对象中的dispose()方法.2、ByteArray对象中的clear()方法。3、Loader对象中的unloadAndStop()方法。4、System对象中的gc()和​​disposeXML()方法​​。......
  • 代码不要冗余之道-方法论总结
    提问代码整洁的方法论回答示例https://gitee.com/galacode/parking-lot......