ResNeXt学习与实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongqianli/article/details/86659430

摘要

《Aggregated Residual Transformations for Deep Neural Networks》提出了高度模块化的网络架构用于图像分类,网络是通过重复使用集成了一系列具有相同拓扑的模块来构建的,是一个同类的多分支的架构。
引入了一个概念,cardinality(集合的势),transformations集合的大小。
通过增加cardinality来增加模型容量比增加网络深度或宽度更有效。

引言

ResNeXt采用了VGG/ResNet堆叠模块的思想,同时利用了Inception网络的split-transform-merge策略。所有需要集合的transfromation具有相同的拓扑。见下图的右图。
在这里插入图片描述

模块的三种形式(形式(c)更简洁更快速,论文作者选择的方式):
形式(b)与Inception-ResNet模块相似,不同之处是所有的路径采用了相同的拓扑。
形式(c)的3x3卷积采用了group convolution
在这里插入图片描述

ResNeXt在ImageNet分类数据集上超越了ResNet-101/152,ResNet-200, Inception-v3和Inception-ResNet-v2。特别地,一个101层的ResNeXt可以比ResNet-200实现更高的精度,但只有后者50%的复杂度。它在ILSVRC 2016分类任务中,赢得第二名。

Method

Template

这些blocks有相同的拓扑,遵循两条受VGG/ResNets启发的规则:
(1)如果产生的空间map有相同的尺寸,这些blocks共享相同的超参数(宽度和滤波器尺寸)
(2)每次空间map以因子2下采样时,blocks的宽度乘以因子2。(这条规则保证了所有blocks的计算复杂度是大致相同的)
下图的网络就是遵循这两条规则创建的:
在这里插入图片描述

重温简单的神经元

神经元的运算也可以认为是splitting、transforming、aggregating的合并。
i = 1 D w i x i \sum_{i=1}^D w_ix_i
在这里插入图片描述

Aggregated Transformations

F ( x ) = i = 1 C T i ( x ) F(x) = \sum_{i=1}^C T_i(x)
其中 T i ( x ) T_i(x) 可以是任意方程。

F ( x ) F(x) 充当残差方程:
y = x + i = 1 C T i ( x ) y = x + \sum_{i=1}^C T_i(x)
其中 y y 是输出。

splitting本质上可以用grouped convolutional layer实现。

blocks的深度应该不小于3,当blocks的深度为2时,模块变成了一个普通的宽的稠密的模块。

精度对比

在这里插入图片描述

扫描二维码关注公众号,回复: 5179202 查看本文章

实现

论文原始实现-pytorch实现
https://github.com/facebookresearch/ResNeXt

caffes实现
https://github.com/soeaver/caffe-model/tree/master/cls/resnext

猜你喜欢

转载自blog.csdn.net/zhongqianli/article/details/86659430
今日推荐