CV Method:经典CNN Backbone总结

文章目录


前言

Backbone作为一切深度学习任务的基础,不论是理论还是实际应用都有重要的意义,本文针对经典Backbone进行总结,这些Backbone也是面试常见的问题,卷积网络主要以ResNet和其各种变体为主。

一、ResNet

paper:Deep Residual Learning for Image Recognition

网络结构

Tips

  1. 针对问题:残差神经网络针对网络退化现象(随着网络加深,准确率降低,引入的激活越来越多,到后来学习恒等变换都很难)提出解决方法,在线性和非线性寻找平衡。

2)残差的作用:缓解梯度消失。梯度能无损的回传到网络的各个层,有效抑制梯度消失的现象
梯度不衰减的传递回去,避免梯度消失(常规网络是梯度累乘)

二、ResNeXt

paper:Aggregated Residual Transformations for Deep Neural Networks

相比ResNet对残差块进行了改进,将中间卷积改成了分组卷积 ,通道数改变了,基本结构和Inceptionv4类似,不过Inceptionv4的并行分支是通道连接然后进行1x1conv。ResNetXt是每个分支末尾进行1x1卷积通道相同,然后相加,在残差相加。另外ResNeXt使用了一种等效合并的方式(将多分支合并为一个分组卷积)

网络结构

Tips典型的并行卷积获取多角度特征,网络也更轻量了一些

三、Res2Net

paper:Res2Net: A New Multi-scale Backbone Architecture

网络结构

将残差块1x1输出特征拆分4个部分(其实也是分组),分4个分支,1分支直连,2分支经过3x3卷积然后一个直连,一个给融合下一条分支,达到一个多尺度融合的目的。

Tips在单个残差块内构造具有等级制的类似残差连接。Res2Net在粒度级别表示多尺度特征,并增加了每个网络层的感受野。

四、SeNet

paper:Squeeze-and-Excitation Networks

网络结构

SENet虽然不算是一个经典的backbone,但是其思想影响了后续很多backbone的设计。SENet首次**将通道注意力概念引入深度网络,让卷积网络有了全局信息的感知能力。通过挤压操作提取网络中的空间信息,激励操作则根据这些信息调整网络中的通道权重。**这种网络结构能够有效地提高网络的表现,尤其是在处理图像分类等任务时。挤压和激励网络可以与现有的最先进的CNN结合使用,以实现更高的性能提升。

目前先进的卷积网络中的模块都基于这个思想,如经典的CBAM模块

Tips:在transformer使用之前让CNN免除了局部感受野的限制,能够捕获一定全局信息,并根据这些信息对特征作出调整。

五、ResNeSt

paper:ResNeSt : Split-Attention Networks

网络结构

将输入分成K个cardinal,每个cardinal分成R个组,故特征共被分成了K*R个组。每个cardinal执行split attention。split attention是分开的SE模块,每小组(split)特征会根据大组(cardinal)特征生成一个对应的向量,乘上原来的特征,然后再相加。

实际情况,网络同样采样类似ResNeSt的情况进行模块合并(分组卷积+SE+残差)。

其设计类似ResNeXt,只不过加了一个SE模块

六、DenseNet

paper: Densely Connected Convolutional Networks

网络结构

DenseNet是在ResNet后的又一个基础backbone,其连接架构类似ResNet,但把残差结构的相加换成了cat,继续传播。并且它的连接是前面所有层的连接,第3层的输入是原特征和第1层 第2层的输出。

上图是一个DenseBlock,另外还有一个Transition模块,用于降维

简单说下DenseNet的反向传播------

TipsDenseNet的出发点在于通过不断的连接前面的层来恢复崩溃信息。

七、CSPNet

paper:CSPNet: A New Backbone that can Enhance Learning Capability of CNN

网络结构

了解yolo的同学们相信对CSPNet都不陌生,CSP的设计主要针对DenseNet。其围绕的中心思想是网络优化中的重复梯度信息,以此来优化之前网络中所需要的大量推理计算问题。

传统的DenseNet如上图(a)所示,CSPDenseNet如上图(b)所示。简单来看,CSPDenseNet就是将输入的feature map按照channel分成了两个部分,其中一个部分正常进行Dense Block的操作,另一个部分直接进行Concat操作。由于每个Dense Block操作的输入通道都变少了(第一个直接减少,后面Concat的通道数变少),所以能减少计算量。

进行Concat的方式,有上图几种。图(c)的方式,会让大量的梯度信息被重复利用,有利于学习;下图(d)的方式,梯度流被阻断,不能复用梯度信息。但由于Transition层的输入通道比 (c)要少,因此能大大减少计算复杂度。本文采用的( b )就是结合了(c)和(d)的优点。

Tips

1)避免梯度信息复用,更丰富的梯度组合强化了CNN的学习能力;

2)降低计算成本,减少内存占用;

Pytorch Model Code

目前我将这些模型的基本架构整理了一下,大部分是从原作者的架构中拆出和从其它作者中找到的(感谢各路大神),经过测试均没有问题,后续将会整理更多模型架构,一起进步!!!
githubhttps://github.com/sirius541/pytorch_model_collection

总结

本文主要介绍这些年比较经典的backbone的一些优势和特点,目前主流的backbone都以transformer为框架进行迭代,不过CNN的backbone是基础中的基础,能很好的帮助初学者理解相关理论和设计理念,也是必须要掌握的技术。

相关推荐
Tianyanxiao37 分钟前
如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
大数据·人工智能·科技·数据分析·深度优先·零售
撞南墙者44 分钟前
OpenCV自学系列(1)——简介和GUI特征操作
人工智能·opencv·计算机视觉
OCR_wintone4211 小时前
易泊车牌识别相机,助力智慧工地建设
人工智能·数码相机·ocr
王哈哈^_^1 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
一者仁心1 小时前
【AI技术】PaddleSpeech
人工智能
写代码的小阿帆1 小时前
pytorch实现深度神经网络DNN与卷积神经网络CNN
pytorch·cnn·dnn
是瑶瑶子啦1 小时前
【深度学习】论文笔记:空间变换网络(Spatial Transformer Networks)
论文阅读·人工智能·深度学习·视觉检测·空间变换
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
柳鲲鹏2 小时前
OpenCV视频防抖源码及编译脚本
人工智能·opencv·计算机视觉
西柚小萌新2 小时前
8.机器学习--决策树
人工智能·决策树·机器学习