Paper Link: https://arxiv.org/abs/2003.10401
GitHub (PyTorch): https://github.com/yanwei-li/DynamicRouting
Introduction
- 如何有效应对输入图像中目标尺度的差异与多样性,是语义分割面临的一个难题;
- 传统的解法主要是设计良好的静态网络结构:
- FCN, U-Net, PSPNet, Conv-Deconv, SegNet等;
- 针对特定场景与目标硬件,也可以通过NAS自动搜索有效的网络结构:
- Auto-DeepLab等;
- 然而,单一、静态的网络结构,缺乏对真实世界中多样化尺度分布的良好适应能力;
- 本文提出了动态路由方法 (dynamic routing):
- 在推理时能够生成数据依赖路径,即网络结构会随着输入的变化而变化,以适应不同的目标尺度分布情况,从而在获得良好语义表征的同时、确保较高的执行效率;
- 类似于SuperNet、DARTS的结合与延伸,Dynamic Routing将超网络作为主体,根据实时输入数据生成网络结构参数,用于在线、动态地选择网络结构;
- 具体例子如下:
Dynamic Routing结构
- Dynamic Routing的总体结构如上图所示,具体描述为:
- Stem Block:包含三个网络层(SepConv3x3),负责1/4降采样;
- Routing Space:
- 包含L个网络层,每层包含若干个cell,支持skip connection与multi-path routes;
- 相邻cell之间,降采样率或上采样率=2;
- 相比于输入,降采样率最高可达32,因此每个layer的cell数最多为4;
- 每个cell的输出,存在三条尺度变换路径,即:
- up-sampling:conv1x1+bilinear interpolation;
- down-sampling:conv1x1 with stride=2;
- keeping resolution;
- 在cell内部,会执行特征变换/聚合(feature aggregation)、与尺度变换路径选择操作;
- Routing Process:
- 输入特征相加:将cell的多尺度输入特征予以相加:
- Cell操作与特征聚合:
- 基本的操作路径包括SepConv、与identity mapping,其中每条SepConv路径由若干SepConv3x3堆叠而成 (实验表示两个SepConv3x3堆叠,效果最好);
- 将不同操作路径的输出予以相加或聚合,获得Hidden state:
- Soft Conditional Gate:
- 每条尺度路径的选择概率,由Gate function生成;Gate function是轻量的、可微分的卷积操作模块:
- 归一化的选择概率、或激活因子,由生成,即;其中B表示batch size,数字3表示三条尺度变换路径都有各自的激活因子;
- 针对第j 条尺度变换路径 (),其输出特征可表示为: 其中表示尺度变换操作 (up-sampling、keeping resolution或down-sampling);
- 综上所述,Routing Process可表示为: 根据data-dependent激活因子的实际取值,能够支持cell drop、multi-path routes等dynamic routing,从而在线生成能够有效应对多样化尺度分布的动态网络结构。而一些经典的分割网络模型,其静态网络结构亦可从routing space抽取表示:
- 资源预算约束与训练loss:
- 考虑到每个操作的计算成本 (比如FLOPS),基于资源约束的loss function定义如下,其中C表示整个routing space的实际资源开销,表示衰减因子:
- 则训练时,结合资源约束的联合loss表示为:
Experiments
- 数据集包括Cityscapes、PASCAL VOC;
- 不同网络结构的对比:
- 经典静态网络:FCN-32s, U-Net, DeepLabV3, HRNetV2, and Auto-DeepLab;
- 从routing space采样的静态网络:
- Dynamic routing,Dynamic-A、B、C的资源约束 (FLOPS)分别为45G、55G、65G;
- 对比结果:
- Cell操作对比:对比了BottleNeck、MBConv与SepConv,实验结果表明堆叠两个SepConv3x3作为特征变换,效果最好;
- 激活因子生成函数:实验表明效果最好;
- 在Cityscapes、PASCAL VOC上的实验结果: