zoukankan      html  css  js  c++  java
  • 【Stochastic Downsampling】2018-CVPR-Stochastic Downsampling for Cost-Adjustable Inference and Improved Regularization in Convolutional Networks-论文阅读

    Stochastic Downsampling

    2018-CVPR-Stochastic Downsampling for Cost-Adjustable Inference and Improved Regularization in Convolutional Networks

    来源:ChenBong 博客园

    Introduction

    在预先定义的 downsample 结构的基础上,在额外插入一个 downsample,来实现推理时的计算开销自适应;

    训练方式:每个batch随机采样额外 downsample 插入的位置 p 和下采样比例 r:

    image-20210223143905418

    Cost-adjustable Inference

    计算量自适应:

    • “intermediate” classifiers+early exit:通过加入多个中间分类器+提前退出,来实现推理自适应(subnet)
    • parallel subnetworks or “paths”:同时训练不同规模的子网(subnet)
    • input scale:使用不同的输入分辨率(fullnet)

    样本自适应:

    • harder vs easier

    Motivation

    现有的推理自适应的工作大多都是使用全部权重的一部分子集(选择部分层/部分宽度,subnet)来实现推理量的自适应,没有充分利用全部网络参数

    现有的经典网络结构中,downsample(pool / strid conv)都是由网络结构本身预先定义好的,如果不限制 downsample 的位置,允许网络在任意位置进行 downsample,可以实现使用同一套网络参数来实现不同的推理开销,且充分利用了全部网络参数

    Contribution

    Method

    在预先定义的 downsample 基础上,在额外插入一个 downsample,插入的位置 (p∈mathbb Z),比例 (r in mathbb R) 在每个batch训练之前随机选择

    (P = {0, 1, 2, ...,N-1,N})

    (R = {0.5, 0.75})

    p 越小(插入位置越靠前),r 越小(下采样比例越高),那么网络的开销就节省的多,反之节省得少;

    如果 p=0,可以有2种含义,1. 相当于 input scale;2. 相当于不插入额外的 downsample 相当于cost=1.0;本文用的是第2种(感觉其实用第1种更合理,cost=1.0 只要r=1.0即可)

    细节

    downsample operation

    其中 downsample 的操作记为 D(·),D(·)可以是:pooling(avg/max),stride conv。& stride conv 会引入额外参数和计算量

    我们选择 avg pool 而不是 stride conv 和 max pool,因为:

    • stride conv 虽然用来downsample的效果较好,但引入了额外的参数和计算量,我们想排除额外的计算开销的影响。
    • 且 stride conv 不能使用任意的下采样率 r
    • max pool 的非线性更强(更多地保留正值),导致:1. 对 baseline 不公平,2. &&使梯度消失问题更严重

    对于非整数的 avg pool,使用一种叫 Spatial Pyramid Pooling 的方法

    shortcut

    对于有残差连接的网络,插入位置在不同 residual block 之间,且 D(·) 作用在 residual add 之后

    (p, r) 随机采样频率

    每个batch 随机采样一组(p,r)进行训练

    downsample 数量

    可以插入多个额外的 downsample,但组合情况过多,因此我们只插入1个额外的downsample

    ratio r

    • r 是从离散的集合R中均匀采样
    • r 不能太小,会影响收敛性
    • (|R|) 不能太大,太大会导致组合太多

    综上,我们取 (R = {0.5, 0.75})

    BN

    每组 (p, r) 独立计算BN

    Experiments

    CIFAR-10/100

    image-20210223164759525

    其他cost-adjustable方法,BN

    Early-Exits (EE)

    按照论文 BranchyNet 的方法设计多个中间分类器,允许提前退出

    图2可以看出EE的效果都比较差,原因:

    • 没有利用完整的网络参数
    • Early-Exit 迫使CNN在浅层就具备分类能力(学习高级特征),导致深层无法有效学习
    Multiscale Training (MS)

    对 input 做 scale

    Uniform Batch Normalization (UBN)

    使用统一的BN

    CIFAR-10/100 SOTA

    SDPoint取的是所有 instance 中最好的一个:

    image-20210223165752171

    SDPoint在没有引入额外参数/计算开销的情况下,实现了sota,且在cifar10中基本上都节省了计算量,可能是对于cifar10数据集无需长期保持较高的分辨率,可以提前downsample,揭示了CNN 中 “one-size-fits-all” 的缺点

    ImageNet

    2个baseline:ResNeXt-d101-c32 和 PreResNet-d101:

    image-20210223170452394 image-20210223170459604

    Ablation Study

    • alternate:插入点减半(间隔插入)
    • 075: (R = {0.75})

    随机性降低,效果变差

    ImageNet SOTA

    image-20210223171456545

    没有引入新的参数/计算量就达到了sota,在之前是需要2倍的计算量才能达到

    SACT是跳过部分block,从而节省参数的一种方法

    可视化

    image-20210223171925540

    Conclusion

    Summary

    • 本文在预先定义的 downsamp 基础上再随机添加1个downsamle,研究的是插入位置,还可以研究固定位置,r可变(有点像 ShapeAdaptor 做的)

    To Read

    Reference

  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/chenbong/p/14438033.html
Copyright © 2011-2022 走看看