图像分类:常用分类网络结构(附论文下载)

2019 年 4 月 8 日 极市平台
图像分类:常用分类网络结构(附论文下载)

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击文末“阅读原文”立刻申请入群~


作者简介

TeddyZhang:上海大学研究生在读,研究方向是图像分类、目标检测以及人脸检测与识别


本文整理了一般常用的图像特征提取网络,下图是笔者整理的近年来图像分类网络的论文以及所在期刊,在极市平台公众号后台回复“图像分类”即可获取下载链接。



下面来介绍几种常用于分类问题的DNN,以及各自的特点,提取特征的新思路!对于以后做研究或者分类任务有很大的用处!本文篇幅较长,建议收藏阅读~


(一)VGG Net、ResNet、ResNeXt、DenseNET、SE-Net


VGG Net (ICLR2015)


在VGG Net中,作者探讨了7x7的卷积核和3x3的卷积核的区别?那么我们使用3x3的卷积核,得到了什么呢?第一,利用三个非线性的激活层来代替一个,可以增加网络的鉴别能力,第二,单个7x7卷积核的参数量为,而三个级联的3x3卷积核参数量为, 参数量减少了大约81%。Model C中的1x1的卷积核也是一种增加非线性而不改变感受野的方法,额外增加非线性的方法就是激活函数,由于VGG有16层和19层,已经属于深层神经网络了,所以其参数量很大,130多兆了!


ResNet (CVPR2016)



ResNet由何凯明等人提出,为了去构建更加深的网络而提出的。从历届ImageNet冠军看出,神经网络的层数是越来越多,那么更深的网络其性能就更好么?实验发现并不是这样,当网络层数过多后,会出现梯度消失的问题,从而网络会饱和导致精度下降。



所以作者提出了一种跳过连接的方式来解决这个问题,也就是我们把输入跨层连接到下一层,通过网络的训练让其更加关注网络之间的变化,即残差。



对于输入输出维度一致的,我们可以直接使用H(x)=f(x)+x来进行连接,如果维度不一致,也就是进行降采样的时候,会使用1x1的卷积核去调整维度以及feature map的大小!

最后的resnet的效果图,非常的漂亮!


ResNeXt (CVPR2017)


之前的ResNet关注的更多的是网络的深度,而同一时期的Inception系列关注更多的是网络的宽度,所以ResNeXt也开始在网络宽度上进行探索,并引入了一个cardinality的概念,主要利用的是分组卷积,什么是分组卷积呢?我们通过两张图片来感受一下:



我们可以明显的看出,经过分组卷积后,参数量减少了,举一个例子,假如一个卷积层输入通道为256,输出通道也为256,正常卷积的话,参数量为256x3x3x256。但是如果进行分组卷积且组数为8的话,那么每个组卷积的输入和输出通道均为32,共8组,那么参数量为8x32x3x3x32,参数量降低了8倍。然后将每个组的输出进行concate,这样可以增加卷积核之间的相关性,并防止过拟合。当然这个分组处理的方式还很多,不限于concate。



如上图,最后一种为分组卷积的方式,前面两种也是作者尝试的两种结构。一般我们设置cardinality C=32, d=4,那么参数量为:

  大约70k FLOPs


我们经常见的ResNeXt-101(32x4d)就是深度为101的上面的网络结构。



DenseNet(CVPR 2017)


本篇论文从图中可以看出,是对ResNet进行了改进,作者总结了一下近几年的文章,在提高网络性能方面要么网络越深,要么网络越宽,但作者使用了一个更为激进的特征重用策略,把ResNet的单层特征重用扩展到多层,但参数量更少。相比于ResNet,其有很多优点,比如多层直接连接加强了特征的传递,减轻了梯度消失的现象,减少了参数量!正是因为参数量的减少,其具有一定的防止过拟合的能力!


在ResNet中,一层的输出直接与其输入相加:

而,在DenseNet中,用concat的方式来替代相加的方式:

作者认为直接相加的方式会阻碍信息在网络的流动,所以很简单的实现就是将所有的feature map直接拼接。但这种直接的拼接方式会使得最后得到的featuremap通道数急剧增加,因此作者并没有将这种方式应用到整个网络,而是设计成Dense Block,整个网络方式如下图:



第一个图中的growth rate也就是k,是指每个函数产生k个featuremap, 所以第 L 层就会有个feature map,所以相比于其他网络,DenseNet可以拥有很窄的层,也就是说k可以很小,如12或者32。虽然每个卷积层只产生k个feature map, 但是由于多支路的跳过连接,因此输入还是很多通道,如何解决呢?


1.  Bottleneck Layers, 把每个卷积层设计成效率更高的形式,也就是先使用1x1的卷积核进行降维到4k的feature map,然后再送进3x3的卷积中,即BN-ReLU-Conv1x1-BN-ReLU-Conv3x3的结构,注意这是在DenseBlock内进行参数缩减,称为DenseNet-B

2.  Compression,在每个DenseBlock相连接的地方,即transition layers,加入一个DenseBlock输出m个feature map,那么我们使用transition中的1x1卷积使其输出为, 论文中,称为DenseNet-C

3.  DenseNet-BC为两者操作均有的DenseNet



SE-Net (CVPR2018)


SE的全称为Sequeeze-and-Excitation,SE block并不是一个完整的网络结构,而是一个子模块,可以嵌入到其他的分类或者检测模型,其思想核心是通过网络根据loss函数去学习特征权重,使得有效的feature map权重大,而无效的小一些,从而使得模型精度更高。


那么SE block是怎么去衡量featuremap的权重呢?其主要包括Squeeze和Excitation两个部分,下面是其结构图:



1. 操作:这个在与其他网络结合时就是一个标准卷积操作而已,公式定义如下, 其中X为原张量,U为后的输出,表示第c个卷积核。这就是一个单纯的卷积操作!


2. 操作:为了解决利用信道依赖性的问题,我们考虑输出特征的每一个通道,每个通道都有各自的局部感受野,但这些信息的相关性并不能被利用,为了解决这个问题,作者使用了一个global average pooling来生成每个通道的统计信息,公式如下:



经过这个操作后,一个的张量就变成了


3.  操作:为了更好的利用上面操作产生的全局信息,我们必须遵守两个标准,第一,他必须灵活,即在通道之间增加非线性。第二,要保证通道间的互斥关系,卷积核不可以重复了,因此进行两次激活函数。




4. 操作:经过上一个操作后张量尺度为1x1xC,但原图的尺寸为HxWxC,所以我们需要一个变换尺度的操作,作者的操作也很简单,如下:


可以看到,SE block还是十分强力的,厉害~~

下图为SE-resnet的结构示意图:


(二)轻量级网络

MobileNet (2017)

本篇文章是关于网络加速的问题,如何在保持精度的同时,使网络的速度大大提升,从而可以达到速度和精度的tradeoff,其论文主要提出了一个深度可分离卷积的方式(Depthwise Separable Convolutions),可以大大降低参数量!



假设我们使用的卷积核,输入为的图片,且输出为,那么对于传统卷积来说,其参数量为


而对于可分离卷积来说,首先进行一个depthwise conv(逐通道)的操作,即分别对输入图像的每一个通道进行卷积,每个卷积核的输出也是单通道,所以需要 M个 的卷积核,接着使用一个pointwise conv(逐像素)的操作,进行M通道的特征融合,并将通道数从M变为N,这个过程就需要N的卷积核,其参数量为



这样的话,其参数量由原来的相乘变为相加,即降低参数量百分比为


depthwise操作其实质就是一种G=输入通道数的特殊分组卷积!!!


对比传统卷积,其网络结构的变化为:


MobileNet的网络框架为:


MobileNet V2 (CVPR2018)

通过上面的讲解,我们都知道了使用深度可分离卷积可以使得参数量大大降低,加入Kernel的大小为3x3,那么相比传统卷积可以降低8到9倍的参数量! 



但是MobileNetV1的结构设计过于简单,后续的很多网络证明了复用特征的有效性,如ResNet和DenseNet, 所以在网络结构上面有很大的改进性!1. 因此作者重新设计了一个Inverted Residual block并加入了跳过连接的方式。2. 使用了Linear Bottlenecks,作者在实验中发现非线性激活层在低维空间容易改变输入的数据结构,但Depthwise的操作正是低维空间,所以要去掉最后的非线性激活层,并在Depthwise前加入一个线性结构,保持模型的表达能力。


下图为ReLU函数在不同维度下的输入,可以看到dim=2或3时变形很厉害。



总的来说:如果manifold of interest经过ReLU激活后仍然非零,那么这就相当于一个线性操作,ReLU也是有能力保留全部的输入空间的信息,但仅仅是输入空间的低维子空间。


根据上面的原因,作者建议通过插入Linear Block到卷积层,从而保留非线性的同时避免丢失太多的信息。因此MobileNet V2中的Block在卷积层中加入了Linear Block,然后还有跳过连接的方式。接着作者又探讨了上图C和D两种结构的优劣性,也就是Linear Block放在那里的问题!下图为实验结果:



实验证明,加入Linear Block的有效性,并且C图的结构形式优于D图的结构形式,即



ShuffleNet (2017)

在讲解这篇文章之前,我们首先回顾一下group convolution,它最早由AlexNet提出,当时是由于计算能力不足,然后在ResNeXt中,作者也使用了分组卷积的方式来降低参数量,并增加网络的宽度,效果也很不错!接着我们在说下depthwise convolution, 其在MoblileNet中得到了使用,作者想讲这两种操作相结合,以达到更低参数量的同时精度也能保持的目的。


作者分析了下ResNeXt网络,发现其GP Conv只用在了3x3的layer中,这样就导致了一个残差模块中93.4%的计算量都在pointwise convolution, 对于一个比较小的网络,为了降低这种操作的运算量,只能减少通道数,但有可能会导致精度下降,因此,作者提出:


把GP Conv也应用到pointwise convolution, 也就是分组后的卷积核为单通道的卷积核!


但这是就会出现一个问题,就是通道之间某个通道输出仅从一小部分输入通道中导出,我们都知道MobileNet中的Pointwise就是为了融合通道间的信息的,如下图所示,这样的属性降低了通道组之间的信息流通,降低了信息表示能力。所以作者又设计了一个channel shuffle的结构,用于交换通道组之间的信息!



channel shuffle具体实现:假设有gxn个通道,首先将其reshape成(g, n),然后再转置为(n, g), 进行flatten操作,再分为g组作为下一层的输入!


但是有个问题,就是GP Conv的pointwise的操作是无法改变通道数的,那shufflenet的通道数在不同的Stage是如何增加的呢? 很简单,Concat~~




我们可以看到,ShuffleNet在每个Block也都是用了LinearBlock,即最后的输出没有ReLU, 然后利用了分组卷积,在Stride=2时,使用Concat操作将通道数增加为原来的2倍!


网络结构:


模型参数量和精度比较:


ShuffleNet V2(2018)

这篇论文十分的精彩,基本上没有任何的理论推导和解释,而是通过大量实验进而总结得到的结论,都是立足于实际,用实验结果来说话!


最终得到了设计轻量化网络结构的四个准则:


G1 : 当输入、输出channels数目相同时,conv计算所需的MAC(memory access cost)最为节省


下面公式为MAC和FLOPS,也就是B之间的公式关系,其中



从而其联系为


G2 : 过多的分组卷积会增加MAC


对于1x1的分组卷积,其MAC和FLOPS的关系为:



G3 : 网络结构整体的碎片化会减少其可并行计算时间,但在ARM中效果并没有那么好


可以看出碎片化对GPU下的提升还是较为明显的,而CPU并没有明显的提升


G4 : Element-wise操作会消耗较多的时间, 也就是逐元素操作


从表中第一行数据看出,当移除了ReLU和short-cut,大约提升了20%的速度!


我们来回顾下ShuffleNet V1:


在第一版中,应用了两种技术:pointwise group convolution和bottlenect-like,接着使用了一个channel shuffle的模块用来增加通道之间的交流性同时提高精度。那么根据我们上面提出的四个CNN高效化设计的准则,第一版有什么不足呢?


首先它使用了bottleneck 1x1 group conv与module最后的1x1 group conv pointwise模块,使得input channels数目与output channels数目差别较大,违反了G1和G2。其次由于它整体网络结构中过多的group conv操作的使用从而违反了G3。最后类似于Residual模块中的大量Element-wise sum的使用则进而违反了G4。因此作者在ShuffleNet V2中避免了这种操作!



上图就是ShuffleNet V1和V2的比较,前面两个为第一版的结构图,可以看出,第二版为了效率舍弃了原来的pointwise的分组卷积形式,改成普通卷积。为了避免BasicBlock中最后element-wise sum的操作,引入了channel split首先将通道分成两半,进入两个支路,最后使用Concat操作来代替原来的sum操作,既保持了通道数量的不变性又避免了element-wise的操作!太厉害了!进行Concat操作后,接着跟着一个channel shuffle的模块,用于通道间的信息交流!


在这里面3x3 Depthwise操作相当于线性操作,没有加ReLU,这不同于MobileNet V2,其是1x1的pointwise操作中没有ReLU,充当线性层!


网络结构


在大模型上面的对比:



以上为笔者整理的常用分类网络结构,也欢迎大家留言补充,一起学习交流~~




*延伸阅读



点击左下角阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~



觉得有用麻烦给个好看啦~  

登录查看更多
13

相关内容

在数学(特别是功能分析)中,卷积是对两个函数(f和g)的数学运算,产生三个函数,表示第一个函数的形状如何被另一个函数修改。 卷积一词既指结果函数,又指计算结果的过程。 它定义为两个函数的乘积在一个函数反转和移位后的积分。 并针对所有shift值评估积分,从而生成卷积函数。

【导读】由于深度神经网络具有强大的学习不同层次视觉特征的能力,因此被广泛应用于目标检测,语义分割,图像描述等计算机视觉应用当中。从ImageNet这样的大型图像数据集中训练得到的模型被广泛地用作其他任务的预训练模型,主要有两个原因:(1)从大规模数据集中学习得到的参数能够为其他模型提供一个良好的训练起点,在其他任务上模型网络可以更快地收敛。(2)在大规模数据集上训练的网络已经学习到了层次特征,这有助于减少其他任务训练过程中的过拟合问题,特别是当其他任务的数据集较小或标注数据不足的情况。

介绍

为了在计算机视觉应用中学习得到更好的图像和视频特征,通常需要大规模的标记数据来训练深度神经网络。为了避免收集和标注大量的数据所需的巨大开销,作为无监督学习方法的一个子方法——自监督学习方法,可以在不使用任何人类标注的标签的情况下,从大规模无标记数据中学习图像和视频的一般性特征。本文对基于深度学习的自监督一般性视觉特征学习方法做了综述。首先,描述了该领域的动机和一些专业性术语。在此基础上,总结了常用的用于自监督学习的深度神经网络体系结构。接下来,回顾了自监督学习方法的模式和评价指标,并介绍了常用的图像和视频数据集以及现有的自监督视觉特征学习方法。最后,总结和讨论了基于标准数据集的性能比较方法在图像和视频特征学习中的应用。

用于图像特征学习的架构

1.AlexNet:与以往的方法相比,AlexNet极大的提高了在ImageNet数据集上的图像分类性能。AlexNet架构总共有8层,其中的5层是卷积层,3层是全连接层。ReLU激活函数被运用在每一个卷积层后面。

2.VGG:该模型赢得了ILSVRC2013挑战赛的第一名。其中的VGG-16由于模型尺寸适中,性能优越,被广泛使用。

3.ResNet:该网络阐述了网络越深越能够获得良好的性能。但是由于梯度消失和梯度爆炸,深度神经网络很难训练。ResNet使用跳跃连接把前一层的特征直接传递到下一个卷积块来克服梯度消失和梯度爆炸的问题。

4.GoogleNet:22层的深度网络,以93.3%的准确率赢得了ILSVRC-2014挑战赛。和之前的网络相比,它拥有更深的网络。GoogleNet的基础模块inception块由4个平行的卷积层组成,这4个卷积层的卷积核尺寸不同,每层后面都有一个1x1的卷积操作来降低维度。

5.DenseNet:大多数网络包括AlexNet, VGG和ResNet都遵循层次结构。图像被输入到网络中,由不同的层提取特征。浅层提取低级的一般性特征,而深层提取特定于任务的高级特征。然而,当一个网络变得越来越深的时候,更深的网络层可能会记住完成任务所需的底层特征。为了避免这一问题,DenseNet通过稠密连接将一个卷积块之前的所有特征作为输入输送到神经网络中的下一个卷积块。

视频特征学习架构

Spatiotemporal Convolutional Neural Network

三维卷积运算最早是在3DNet中提出的,用于人类行为识别。与2DConvNets分别提取每一帧的空间信息,然后将它们融合为视频特征相比,3DConvNets能够同时从多个帧中同时提取空间和时间特征。

随着三维卷积在视频分析任务中的成功应用,出现了3DConvNet的各种变体。比如Hara等人提出了3DResNet,将ResNet中所有的2D卷积层替换为3D卷积层。实验表明,在多个数据集上,3D卷积层的性能更为优异。

Recurrent Neural Network(RNN)

由于RNN能够对一个时间序列数据进行动态建模,所以RNN通常被应用于视频的有序帧序列当中。和标准的RNN相比,LSTM使用内存单元来存储,修改和访问内部状态,从而更好的对视频帧之间的长时间序列进行建模。基于LSTM的优势,Donahue提出了long-term recurrent convolutional networks (LRCN)用于人类行为识别。

数据集介绍

1.图像数据集

2.视频数据集

YFCC100M:该数据集是从Flicker上收集的多媒体数据集,由1亿条多媒体数据组成,其中的99200000条数据是图片,剩余的800000条数据是视频。

SceneNet RGB-D:该数据集是一个大型的室内视频合成数据集。

Moment in Time:该数据集是一个用于视频内容理解的数据集,内容多样且分布均衡。

Kinetics:该数据集规模大,质量高,用于人类行为识别。

AudioSet:该数据集由来自YouTube的2084320条人工标记10秒的声音剪辑组成,这些视频涵盖了632个音频事件。

KITTI:该数据集是在驾驶汽车时收集的,收集数据时的装备有各种传感器,包括高分辨率RGB相机、灰度立体声相机、3D激光扫描仪和高精度GPS测量。

UCF101:该数据集被广泛使用于人类动作识别。

HMDB51:相比于前面的数据集,该数据集是一个小规模的视频数据集,用于人流动作识别。

成为VIP会员查看完整内容
0
50
小贴士
相关资讯
过参数化、剪枝和网络结构搜索
极市平台
9+阅读 · 2019年11月24日
CNN网络结构的发展(最全整理)
极市平台
47+阅读 · 2019年11月2日
CVPR2019通用目标检测
极市平台
8+阅读 · 2019年8月6日
目标检测论文阅读:DetNet
极市平台
9+阅读 · 2019年1月28日
干货!关于目标检测你需要看的9篇论文
人工智能前沿讲习班
8+阅读 · 2018年12月18日
综述:DenseNet—Dense卷积网络(图像分类)
专知
60+阅读 · 2018年11月26日
论文分类
统计学习与视觉计算组
5+阅读 · 2018年3月13日
Tensorflow卷积神经网络
全球人工智能
13+阅读 · 2017年10月14日
相关VIP内容
专知会员服务
88+阅读 · 2020年7月9日
专知会员服务
46+阅读 · 2020年5月21日
专知会员服务
42+阅读 · 2020年3月5日
专知会员服务
81+阅读 · 2020年2月8日
专知会员服务
209+阅读 · 2020年1月1日
零样本图像分类综述 : 十年进展
专知会员服务
87+阅读 · 2019年11月16日
相关论文
Rama Kumar Pasumarthi,Sebastian Bruch,Xuanhui Wang,Cheng Li,Michael Bendersky,Marc Najork,Jan Pfeifer,Nadav Golbandi,Rohan Anil,Stephan Wolf
4+阅读 · 2019年5月17日
SlowFast Networks for Video Recognition
Christoph Feichtenhofer,Haoqi Fan,Jitendra Malik,Kaiming He
4+阅读 · 2019年4月18日
Yulun Zhang,Kunpeng Li,Kai Li,Bineng Zhong,Yun Fu
8+阅读 · 2019年3月24日
Simplifying Graph Convolutional Networks
Felix Wu,Tianyi Zhang,Amauri Holanda de Souza Jr.,Christopher Fifty,Tao Yu,Kilian Q. Weinberger
11+阅读 · 2019年2月19日
Panoptic Feature Pyramid Networks
Alexander Kirillov,Ross Girshick,Kaiming He,Piotr Dollár
3+阅读 · 2019年1月8日
Craig Macartney,Tillman Weyde
7+阅读 · 2018年11月27日
Global-and-local attention networks for visual recognition
Drew Linsley,Dan Shiebler,Sven Eberhardt,Thomas Serre
5+阅读 · 2018年9月6日
Receptive Field Block Net for Accurate and Fast Object Detection
Songtao Liu,Di Huang,Yunhong Wang
3+阅读 · 2018年7月26日
Han Zhu,Xiang Li,Pengye Zhang,Guozheng Li,Jie He,Han Li,Kun Gai
8+阅读 · 2018年5月21日
Zeming Li,Chao Peng,Gang Yu,Xiangyu Zhang,Yangdong Deng,Jian Sun
4+阅读 · 2018年4月17日
Top