各位知乎儿好,几个月前,笔者曾写过一篇关于vgg,resnet,inception以及inception_resnet等深度图像分类网络的结构详解。除这些网络外,后续还有许多在图像分类任务上表现优异的网络,如DenseNet, ResNext, Xception, PolyNet, DPN(Dual Path Network), SENet, MobileNet, ShuffleNet, SqueezeNet以及最近非常火爆的NASNet等。本文中将对前五个网络的结构特点进行简单介绍,有想要展开了解的同学可以查看每一节后附的连接。
1. DenseNet
纵观深度分类网络的发展史,前人的工作总致力于加深网络层数或拓宽网络宽度,DenseNet从特征的角度出发,通过紧密连接实现特征复用,既大幅度减少了参数量,也有效地缓解了梯度消失现象。
DenseNet的特色是紧密连接,将每一层的输出导入后面的所有层,与ResNet的相加不同的是,Dense Block中使用的是连接结构(concatenate)。这样的结构在减少网络参数的同时,又可以避免ResNet中存在的信息阻塞,某些层被选择性丢失等缺点。两者的区别可由下式表达:
参考文章:
DenseNet算法详解www.jianshu.com
2. ResNext
ResNext是何凯明团队发表的ResNet进阶版,结合了ResNet和VGG采用的堆叠策略和Inception采用的split-transform-merge,在增加准确率的同时基本不改变或降低模型的复杂度。该网络中最核心的结构为grouped convolutions,当cardinality=32时,原始ResNet结构与ResNext的结构差异如下:
3. Xception
如果说ResNext是ResNet的进阶版,那么Xception则可同样被认为是Inception系列的进阶版,它最主要的特点就是采用depthwise separable convolution来替换Inception v3中的卷积操作。下图从最普通的inception模块说起,逐步将inception模块整合为一个经过多分支3x3卷积后再统一进行1x1卷积的结构。
这种思想与MobileNet中使用到的depthwise separable convolution结构基本一样,只是再空间解耦合与通道解耦合的顺序不同,论文作者谈到这种模块再整体网络结构中都是相连的,顺序并没有太大影响。再结合残差结构,separable conv模块的相连,得到Xception网络如下:
4. PolyNet
顾名思义,PolyNet是所谓的多项式网络,该网络结合改进来Inception和ResNet的block,使用多项式来表征网络结构。经典的残差block可表达为:
其中,x是输入,I是单位映射,‘+’是单位加操作,表示在ResNet中F是两个连续的卷积操作。其中,如果F是Inception结构,则上式也可以表征Inception resnet结构。
如果用二阶表达式表示一个网络结构,即
,在这个形式中,网络有三个分支,左侧路径是一个直接映射,中间路径是一个Inception结构,右侧路径是两个连续的Inception,如下图右图所示。在这个网络中,所有Inception的参数是共享的,所以不会引入额外的参数。由于参数共享,我们可以推出它的的等价形式,如下图左图所示。因为
,而且这种形式的网络计算量少了1/3。
当二阶模块参数不共享时,可表达为
。而不共享参数双路残差模块则可以表达为
,分别对应于下图中左右图:
参考文章:
刘岩:PolyNet详解zhuanlan.zhihu.com
5. DPN(Dual Path Network)
ResNet把输入直接加到(element-wise-adding)卷积的输出上,DenseNet则把每一层的输出都拼接到(concatenate)到其后的每一层的输入上。DPN中,作者利high order rnn(HORNN)把DenseNet和ResNet结合到一起。具体的解释以下这篇博文写得非常详细和精彩,建议戳原文展开 。
参考文章:
解读Dual Path Networks(DPN,原创)www.jianshu.com
总结:
本文中,笔者简要介绍了五个基于resnet,inception,densenet进行改进得到的深度分类网络的特点。下篇中,笔者将介绍另外几个极具特色的分类网络,包括轻量级网络MobileNet、ShuffleNet以及脱离低级趣味的NasNet(Neural Architecture Search)等,有兴趣的朋友欢迎跟进~
最后的最后,本文的撰写基于笔者的浅显理解,有错误的地方还望大家指正,感激不尽!
——Eva 编辑