CNN模型合集-Mengcius专栏
【CNN常见模型0——储备知识】深度神经网络(DNN)模型,前向传播算法和反向传播算法(BP)
【CNN常见模型0】卷积神经网络(CNN)模型结构
【CNN常见模型1】CNN基础知识和经典CNN模型汇总
【CNN常见模型2】经典CNN模型汇总
【CNN常见模型3】经典CNN模型汇总
【深度学习】卷积神经网络CNN结构发展整理(图像分类)
卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入和输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式。
CNN模型由输入层、卷积层(Relu激活函数)、池化层、全连接层(也就是DNN+softmax)、输出层组成。
BP神经网络:分为信号前向传播和误差反向传播两个阶段。
VGGNet-2014年
5(2~4)+ 3
减小过滤器。层次更深。
PyTorch实现VGG亲身实践
VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。但是VGG模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。
2014年被牛津大学的Karen Simonyan 和Andrew Zisserman提出,主要特点是 “简洁,深度”。 深, 是因为VGG最深有19层,远远超过了它的前辈; 而简洁,则是在于它的结构上,一律采用stride为1的3×3filter,以及stride为2的2×2MaxPooling。它是第一个在各个卷积层使用更小的 3×3 过滤器(filter),并把它们组合作为一个卷积序列进行处理的网络。
VGGNet是继承了AlexNet的思路,以AlexNet为基础,尝试建立一个层次更多,深度更深的网络。其网络结构一样可以由8个层次所构成,也是5组卷积层,3层全连接层。最主要的区别在于,VGGNet的每个卷积层并不是只做一次卷积操作,而是连续卷积2~4次。
VGGNet拥有5段卷积,每一段内有2~3个卷积层,同时每段尾部会连接一个最大池化层用来缩小图片尺寸。每段内的卷积核数量一样,越靠后的段的卷积核数量越多:64 – 128 – 256 – 512 – 512。
VggNet一共有六种不同的网络结构,但是每种结构都有含有5组卷积,每组卷积都使用3x3的卷积核,每组卷积后进行一个2x2最大池化,接下来是三个全连接层.在训练高级别的网络时,可以先训练低级别的网络,用前者获得的权重初始化高级别的网络,可以加速网络的收敛。
在训练中,VGGNet还使用了Multi-Scale的方法做数据增强,将原始图像缩放到不同尺寸S,然后再随机裁切224´224的图片,这样能增加很多数据量,对于防止模型过拟合有很不错的效果。
在预测时,VGG采用Multi-Scale的方法,将图像scale到一个尺寸Q,并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测,将不同窗口的分类结果平均,再将不同尺寸Q的结果平均得到最后结果,这样可提高图片数据的利用率并提升预测准确率。
关于VGGNet有如下要点:
1、仅使用3x3尺寸的filter与AlexNet的第一层11x11 filter 和ZF Net的7x7 filter 完全不同。作者的推理是两个3x3 conv层的组合具有5x5的有效感受野。这又可以模拟更大的 filter,同时保持较小filter尺寸的优势。其中一个好处是减少了参数的数量。此外,使用两个转换层,我们可以使用两个ReLU层而不是一个。
2、3个背对背的conv层具有7x7的有效感受区域。
3、随着每层输入卷的空间大小减小(转换层和池层的结果),当您沿着网络向下时,由于filter数量的增加,卷的深度会增加。
4、有趣的是注意到每个maxpool层之后过滤器的数量翻倍。这加强了缩小空间尺寸的想法,但增加了深度。
5、在图像分类和本地化任务方面都做得很好。作者使用一种本地化形式作为回归。
6、使用Caffe工具箱构建模型。
7、在训练期间使用scale jittering比例抖动作为一种数据增强技术。
8、在每个转换层之后使用ReLU层并使用批量梯度下降进行训练。
9、在4个Nvidia Titan Black GPU上训练了两到三周。
10、LRN层作用不大(VGGNet不使用局部响应标准化(LRN),这种标准化并不能在ILSVRC数据集上提升性能,却导致更多的内存消耗和计算时间。
GoogleNet(Inception V1)-2014年
9个Inception,通过增加了多种核1x1,3x3,5x5,还有直接max pooling,增加了宽度,而且在不同深度处增加了两个loss来保证梯度回传消失的现象。
虽然VGG的网络的层数更多,深度更深,但模型越复杂,参数越多,越容易过拟合,梯度消失、计算量大。正是围绕着这两个思路,Google的大神们启动了Inception项目,其通过构建密集的块结构——Inception(如下图)来近似最优的稀疏结构,从而达到提高性能而又不大量增加计算量的目的,GoogleNet就是它的第一个版本(目前共有4个版本)。
GoogleNet对输入做了4个分支,分别用不同尺寸的filter进行卷积或池化,最后再在特征维度上拼接到一起。inception结构相当于把相关性强的特征汇聚在一起,起到加速收敛的作用。
GoogleNet跳出直线加深网络层数的思路,通过增加“宽度”的方式增加网络复杂度,避免陷入卷积核选择的陷阱,让程序自己学习如何选择卷积核。具体来说中,是在每一个卷积层,并行使用11卷积核,33卷积核,55卷积核和池化,同时提取不同尺度的特征,然后通过11的卷积核对每一个分支进行降维后,最后将结果合并拼接在一起。
谷歌Inception网络中的Inception-V3到Inception-V4具体作了哪些优化?
从Inception v1到Inception-ResNet,一文概览Inception家族的「奋斗史」
PyTorch实现GoogleNet亲身实践
在inception模块中有一个分支使用了max pooling,作者认为pooling也能起到提取特征的作用,所以也加入模块中。注意这个pooling的stride=1,pooling后没有减少数据的尺寸。
GoogLeNet网络结构中有3个LOSS单元,这样的网络设计是为了帮助网络的收敛。在中间层加入辅助计算的LOSS单元,目的是计算损失时让低层的特征也有很好的区分能力,从而让网络更好地被训练。在论文中,这两个辅助LOSS单元的计算被乘以0.3,然后和最后的LOSS相加作为最终的损失函数来训练网络。
GoogLeNet还有一个闪光点值得一提,那就是将后面的全连接层全部替换为简单的全局平均pooling,在最后参数会变的更少。
关于GoogLeNet有如下要点:
1、在整个架构中使用了9个Inception模块,总共超过100层!现在这很深…
2、没有使用完全连接的层!他们使用平均水池,从7x7x1024 volume到1x1x1024 volume。这节省了大量参数。
3、使用的参数比AlexNet少12倍。
4、在测试过程中,创建了相同图像的多个作物,并将其输入网络,并对softmax概率进行平均,以便为我们提供最终解决方案。
5、利用R-CNN的概念来检测它们的检测模型。
6、Inception模块有更新版本(版本6和7)。
7、接受“一周内几个高端GPU”的训练。
Inception-v4
Inception- v4是Inception-v3的改进。主要区别在于Stem组和Inception-C模块中的一些小变化。作者还为每个网格尺寸的Inception块做出了统一的选择。他们还提到残差连接可以显着提高训练速度。
与Inception-v3相比改进了什么?
ResNet-2015年
ResNet,于2015年由微软亚洲研究院的学者们何凯明团队提出。为了解决网络加深出现的梯度弥散,导致网络退化的问题。
ResNet将浅层的输入值直接连接到端部位置,这样避免了层层映射过程中,由于权重小于1而导致的梯度消失。
ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。
PyTorch实现ResNet亲身实践
假设某段神经网络的输入是x,期望输出是H(x),如果直接把x传递到输出端,那么我们要学习的目标是F(x)=H(x)-x。此时目标相当于发生变更,称之为残差。
残差网络可以设计18、34、50、101、152层,用的都是1x1和3x3的小卷积核。
InceptionResNet-2016年
谷歌于2016年提出了InceptionResNetV1和InceptionResNetV2。二者都是将Inception同ResNet相融合,加上了shortcut的分支。Inception提出的目的是使得模型更宽,ResNet提出的目的是使得模型更深,将二者结合可以使得模型又宽又深。
从Inception v1到Inception-ResNet,一文概览Inception家族的「奋斗史」
CNN模型合集 | 12 Inception(-v4,-ResNet-v1,-ResNet-v2)
基于PyTorch实现Inception-v4, Inception-ResNet亲身实践
InceptionResNet框架主要分stem-block、Inception-resnet-A、B、C block四部分。
Inception ResNet 有两个子版本:v1 和 v2。这两个子版本之间有微小差异。
ResNeXt-2017年
Facebook何恺明团队。
Inception(split-transform-merge策略,即提高宽度来提高网络性能)那边把ResNet拿来搞了Inception-ResNet,这头ResNet也把Inception拿来搞了一个ResNeXt,主要就是单路卷积变成多个支路的多路卷积,不过分组很多,结构一致,进行分组卷积。
ResNext不需要人工设计复杂的Inception结构细节,而是每一个分支都采用相同的拓扑结构。ResNeXt的本质是分组卷积(Group Convolution),通过变量基数(Cardinality)来控制组的数量,基数C对于结果的影响比宽度和深度更加重要。
深度学习——分类之ResNeXt
薰风读论文:ResNeXt 深入解读与模型实现
PyTorch实现ResNeXt亲身实践
如下图,左边是ResNet的基本结构,右边是ResNeXt的基本结构:
左边是Inception,右边是ResNext
ResNeXt本质上是在简化Inception中添加一条short-cut。
ResNeXt的思想是源自Inception,不同于Inception的需要人工设计每个分支,ResNeXt的每个分支的拓扑结构是相同的。最后再结合残差网络,得到的便是最终的ResNeXt。
得益于精心设计的复杂的网络结构,ResNet-Inception v2可能效果会更好一点,但是ResNeXt的网络结构更简单,可以防止对于特定数据集的过拟合。
a是ResNeXt基本单元,如果把输出那里的1x1合并到一起,得到等价网络b拥有和Inception-ResNet相似的结构,而进一步把输入的1x1也合并到一起,得到等价网络c则和通道分组卷积的网络有相似的结构。
作者相当于在说,Inception-ResNet和通道分组卷积网络,都只是ResNeXt这一范式的特殊形式而已,进一步说明了split-transform-merge的普遍性和有效性,以及抽象程度更高,更本质一点。
DenseNet-2017年
DenseNet的核心思想就是在每一层上都加上一个单独的shortcut,使得任意两层都能直接连通。
DenseNet建立的是前面所有层与后面层的密集连接(dense connection),另一大特色是通过特征在channel上的连接来实现特征重用(feature reuse)。这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能,DenseNet也因此斩获CVPR 2017的最佳论文奖。
DenseNet:比ResNet更优的CNN模型
PyTorch实现DenseNet亲身实践
图1 ResNet网络的短路连接机制(其中+代表的是元素级相加操作)
图2 DenseNet网络的密集连接机制(其中c代表的是channel级连接操作)
图3 DenseNet的前向过程
DenseNet的网络结构主要由DenseBlock和Transition组成,其中DenseBlock是包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式。而Transition模块是连接两个相邻的DenseBlock,并且通过Pooling使特征图大小降低。图4给出了DenseNet的网路结构,它共包含4个DenseBlock,各个DenseBlock之间通过Transition连接在一起。
图4 使用DenseBlock+Transition的DenseNet网络
图6 DenseNet的网络结构
由于后面层的输入会非常大,DenseBlock内部可以采用bottleneck层来减少计算量,主要是原有的BN+ReLU+3x3 Conv结构中增加1x1 Conv,如图7所示,即BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv,称为DenseNet-B结构。其中1x1 Conv得到 [公式] 个特征图它起到的作用是降低特征数量,从而提升计算效率。
图7 使用bottleneck层的DenseBlock结构
对于Transition层,它主要是连接两个相邻的DenseBlock,并且降低特征图大小。Transition层包括一个1x1的卷积和2x2的AvgPooling,结构为BN+ReLU+1x1 Conv+2x2 AvgPooling。另外,Transition层可以起到压缩模型的作用。
基于该block结构构件的DenseNet具有以下的优点:
DPN-2017年
2017年ILSVRC物体检测的冠军。
作者用High Order RNN结构(HORNN)把DenseNet和ResNet联系到了一起,证明了DenseNet能从靠前的层级中提取到新的特征,而ResNet本质上是对之前层级中已提取特征的复用。通过把这两种结构的优点结合到一起,就有了最新结构Dual Path Networks(DPN)。
ResNet提取的特征中冗余度比较低,DenseNet提取的特征冗余度高。一个有高复用率,但冗余度低;一个能创造新特征,但冗余度高,如果把这两种结构结合起来,就能发挥更大的威力,这就有了DPN。
通过High Order RNN(HORNN)高阶循环卷积网络,将ResNet和DenseNet进行了融合,所谓的dual path,即一条path是ResNet,另一条path是DenseNet。论文的Motivation是通过对ResNet和DenseNet的分解,证明了ResNet更侧重于特征的复用,而DenseNet则更侧重于特征的生成,通过分析两个模型的优劣,将两个模型有针对性的组合起来,提出了DPN。
解读Dual Path Networks(DPN,原创)
DPN详解(Dual Path Networks)
PyTorch实现DPN亲身实践
DPN结构
MobileNet V1-2017年
2017年4月,谷歌提出MobileNetV1,这一专注于在移动设备上的轻量级神经网络。MobileNet可谓是轻量级网络中的Inception,经历了一代又一代的更新。成为了学习轻量级网络的必经之路。
MobileNetV1就是把VGG中的标准卷积层换成深度可分离卷积就可以了。
深度可分离卷积就是将普通卷积拆分成为一个深度卷积和一个逐点卷积。
MobileNetV1将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核),即Depthwise和Pointwise。Depthwise将每个卷积核应用到每一个通道,体现在代码中的group,而Pointwise中1 × 1卷积则用来组合通道卷积的输出。而后,通过一个流线型的架构(堆叠式),都是由深度可分离的卷积模块堆叠的,构成最后的模型。
轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3
Pytorch:图像分类经典网络_MobileNet(V1、V2、V3)
将卷积核拆分成为但单通道形式,在不改变输入特征图像的深度的情况下,对每一通道进行卷积操作,这样就得到了和输入特征图通道数一致的输出特征图。如上图:输入12×12×3的特征图,经过5×5×1×3的深度卷积之后,得到了8×8×3的输出特征图。
标准卷积与深度可分离卷积的过程对比如下:
对于通常的3×3的卷积核,使用深度可分离卷积,参数数量和乘加操作的运算量是标准卷积的九分之一到八分之一。
MobileNet的网络结构如上图所示。首先是一个3x3的标准卷积,s2进行下采样。然后就是堆积深度可分离卷积,并且其中的部分深度卷积会利用s2进行下采样。然后采用平均池化层将feature变成1x1,根据预测类别大小加上全连接层,最后是一个softmax层。整个网络有28层,其中深度卷积层有13层。
ShuffleNet-2017年
2017年旷视科技的Xiangyu Zhang,Jian Sun发表,参考MobileNet和ResNeXt,提出了Channel Shuffle来增强分组卷积的全局信息流通。ShuffleNetV1是专门为计算能力有限的移动平台设计。采用两个新操作——逐渐群卷积(pointwise group convolution)和通道混洗(channel shuffle)在保障精确率损失不大的同时大大减少了计算成本。
目前移动端CNN模型主要设计思路主要是两个方面:模型结构设计和模型压缩。ShuffleNet和MobileNet一样属于前者,都是通过设计更高效的网络结构来实现模型变小和变快,而不是对一个训练好的大模型做压缩或者迁移。
Group convolution是将输入层的不同特征图进行分组,然后采用不同的卷积核再对各个组进行卷积,这样会降低卷积的计算量。group convolution之后对channels进行shuffle,但并不是随机的,其实是“均匀地打乱”。
逐点组卷积,就是带分组的卷积核为1×1的卷积,也就是说逐点组卷积是卷积核为1×1的分组卷积。
原因:
1。逐点卷积占了很大的计算量————> pointwise group convolution 逐点分组卷积
2。不同组之间特征通信问题 ————> channel shuffle
轻量级神经网络“巡礼”(一)—— ShuffleNetV2
CNN模型之ShuffleNet
使用channel shuffle后的group convolution
SqueezeNet-2017年
SqueezeNet创新点在于提出了fire module,包括两个部分,squeeze和expand。
SqueezeNet是由若干个Fire模块结合卷积网络中卷积层,降采样层,全连接等层组成的。一个Fire模块由Squeeze部分和Expand部分组成。Squeeze部分是一组连续的卷积组成,Expand部分则是由一组连续的卷积和一组连续的卷积cancatnate组成。
SqueezeNet的设计理念主要有三:
下图是SqueezeNet的几个实现,左侧是不加short-cut的SqueezeNet,中间是加了short-cut的,右侧是short-cut跨有不同Feature Map个数的卷积的。
SqueezeNet:小小的模型,多多的快乐! || 5分钟看懂CV顶刊论文
SqueezeNet详解
上图最左的是原生SqueezeNet的结构,而中间和右边都使用了ResNet里的跳层连接,二者不同之处在于右边的模型在跳层连接的两个feature maps尺寸不同时,使用 [公式] 的卷积层使之相同。
SENet-2017年
SENet的全称是Squeeze and Excitation Networks,顾名思义,就是在网络中加入了Squeeze和Excitation操作。
Squeeze通过空间维度压缩特征,在空间上做全局平均池化,每个通道的二维特征变成了一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的通道数相匹配。而Excitation的作用是用两个全连接层和Sigmoid函数得到各通道的权值,第一个全连接层会压缩通道数,减少计算量。该权值与Fscale得到的feature map结合得到最后的结果。
CNN模型合集 | 19 SENet
【论文解读】SENet网络
总流程:X经过一系列传统卷积得到U,对U先做一个Global Average Pooling(Fsq),输出的1x1xC数据再经过两级全连接(Fex),最后用sigmoid限制到[0, 1]的范围,把这个值作为scale乘到U的C个通道上,输入到下级。
MobileNet V2-2018年
轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3
Mobile V1的深度卷积的卷积核有不少是空,原因是对低维度做ReLU运算,很容易造成信息的丢失。而在高维度进行ReLU运算的话,信息的丢失则会很少。因此将最后一个ReLU6换成线性激活函数。
这个部分称之为linear bottleneck。
深度卷积本身没有改变通道的能力,来的是多少通道输出就是多少通道。如果来的通道很少的话,DW深度卷积只能在低维度上工作,这样效果并不会很好,所以我们要“扩张”通道。既然我们已经知道PW逐点卷积也就是1×1卷积可以用来升维和降维,那就可以在DW深度卷积之前使用PW卷积进行升维(升维倍数为t,t=6),再在一个更高维的空间中进行卷积操作来提取特征。
相比于Mobile V1改进点:
ShffleNet V2 -2018年
轻量级神经网络“巡礼”(一)—— ShuffleNetV2
ShuffleNetV2:轻量级CNN网络中的桂冠
PyTorch实现ShuffleNet-v2亲身实践
为了改善v1的缺陷,v2版本引入了一种新的运算:channel split。具体来说,在开始时先将输入特征图在通道维度分成两个分支 。左边分支做同等映射,右边的分支包含3个连续的卷积,并且输入和输出通道相同。而且两个1x1卷积不再是组卷积,另外两个分支相当于已经分成两组。两个分支的输出不再是Add元素,而是concat在一起,紧接着是对两个分支concat结果进行channle shuffle,以保证两个分支信息交流。其实concat和channel shuffle可以和下一个模块单元的channel split合成一个元素级运算。
对于下采样模块,不再有channel split,而是每个分支都是直接copy一份输入,每个分支都有stride=2的下采样,最后concat在一起后,特征图空间大小减半,但是通道数翻倍。
从一定程度上说,ShuffleNetv2借鉴了DenseNet网络,把shortcut结构从Add换成了Concat,这实现了特征重用。但是不同于DenseNet,v2并不是密集地concat,而且concat之后有channel shuffle以混合特征,这或许是v2即快又好的一个重要原因。
MobileNet V3 - 2019年
轻量级骨架首选:MobileNetV3完全解析
轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3
MobileNetV3 参数是由NAS(network architecture search)搜索获取的,又继承的V1和V2的一些实用成果,并引人SE通道注意力机制,可谓集大成者。
EfficientNet-2019年
CNN模型合集 | 25 EfficientNet
谷歌大脑:EfficientNet–阅读笔记
细品EfficientNet
后ResNet时代的顶流EfficientNet
谷歌作者系统的研究了网络深度(Depth)、宽度(Width)和分辨率(resolution)对网络性能的影响,然后提出了一个新的缩放方法–使用简单但高效的复合系数均匀地缩放深度/宽度/分辨率的所有尺寸,在MobileNets 和 ResNet上证明了有效性。同时,使用神经架构搜索来设计新的baseline并进行扩展以获得一系列模型,称EfficientNets,比之前的ConvNets更accuracy和更efficiency。
复合模型扩展:
(a)为基线网络;(b)为增大宽度w的方式扩展网络;©为增大网络深度d;(d)为增大分辨率r;(e)为综合3个维度的复合模型扩展。
核心思想:
GhostNet-2019年
华为为了去除特征图中的冗余,减少计算成本,提出Ghost Module。将原始卷积层分为两部分,首先使用较少的卷积核来生成原始特征图,然后,进一步使用cheap operations以高效生产更多ghost feature map。
GhostNet由以Ghost modules为基础的Ghost Bottlenecks构成。
超越谷歌MobileNet!华为提出端侧神经网络架构GhostNet|已开源
GhostNet 解读及代码实验(附代码、超参、日志和预训练模型)
Ghost Module则分为两步操作来获得与普通卷积一样数量的特征图。
第一步:少量卷积(比如正常用32个卷积核,这里就用16个,从而减少一半的计算量)
第二步:cheap operations,如图中的Φ表示,从问题3中可知,Φ是诸如3*3的卷积,并且是逐个特征图的进行卷积(Depth-wise convolutional)。
Ghost Module是一个即插即用模块,可以无缝衔接现有的CNN中。
采用Ghost Module组成的Ghost bottlenecks,设计出Ghost Net。
结构与ResNet的是类似的,并且与mobilenet-v2一样在第二个module之后不采用ReLU激活函数。
左边是stride=1的Ghost Bottlenecks,右边是stride=2的Ghost Bottlenecks,目的是为了缩减特征图大小。
Ghost Net结构:
Ghost Net结构与MobileNet-V3类似,并且用了SE结构。
CSPNet-2019年
Cross Stage Partial Network(CSPNet)就是从网络结构设计的角度来解决以往工作在推理过程中需要很大计算量的问题。作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的,也就是冗余梯度信息。
CSPNet全称是Cross Stage Partial Network跨阶段局部网络,主要概念是通过分割梯度流使梯度流通过不同的网络路径传播,具体实现是通过将基本层的特征图分成两部分,然后通过一个跨阶段的层次结构合并它们来实现的。作者也设计了两种特征融合的策略,Fustion First,Fusion Last。
CSPNet是一种处理的思想,可以和ResNet、ResNeXt和DenseNet结合。
CSPNet 论文笔记
增强CNN学习能力的Backbone:CSPNet
CSPNet——PyTorch实现CSPDenseNet和CSPResNeXt
上图是DenseNet的示意图以及CSPDenseNet的改进,改进点在于CSPNet将浅层特征映射为两个部分,一部分经过Dense模块(图中的Partial Dense Block),另一部分直接与Partial Dense Block输出进行concate。
Fustion First的方式是对两个分支的feature map先进行concatenation操作,这样梯度信息可以被重用。
Fusion Last的方式是对Dense Block所在分支先进性transition操作,然后再进行concatenation, 梯度信息将被截断,因此不会重复使用梯度信息 。
CSPDarkNet53-2020年
CSP-DarkNet,沿用网络的滤波器尺寸和整体结构,在每组Residual block加上一个Cross Stage Partial结构。并且,CSP-DarkNet中也取消了Bottleneck的结构,减少了参数使其更容易训练。激活函数采用mish。
YOLOv4特征提取网络——CSPDarkNet结构解析及PyTorch实现
上图为Mish的曲线。首先其和ReLU一样,都是无正向边界的,可以避免梯度饱和;其次Mish函数是处处光滑的,并且在绝对值较小的负值区域允许一些负值。
RepVGG-2021年
RepVGG:极简架构,SOTA性能,让VGG式模型再次伟大(CVPR-2021)
RepVGG:VGG,永远的神! | CVPR 2021
RepVGG 对比 Mobilenet、shufflenet等网络的优势有哪些?
图解RepVGG
RepVGG在训练时使用高精度的多分支网络学习权值,在推理时使用低延迟的单分支网络,然后通过结构重参数化将多分支网络的权值转移到单分支网络。训练时采用多分支网络,而推理时仍然使用单分支网络,通过新颖的结构性重参数化(structural re-parameterization)将多分支网络的权值转移到简单网络中。
单路极简直筒型架构,一路3x3卷积接ReLU。
RepVGG模型的基本架构:将20多层3x3卷积堆起来,分成5个stage,每个stage的第一层是stride=2的降采样,每个卷积层用ReLU作为激活函数。