一、论文基本信息
论文题目:BlockDrop: Dynamic Inference Paths in Residual Networks
作者:Zuxuan Wu、Tushar Nagarajan、Abhishek Kumar、Steven Rennie、Larry S. Davis、Kristen Grauman、Rogerio Feris
发表信息:CVPR 2018
论文链接:CVF Open Access / arXiv
官方代码:Tushar-N/blockdrop
这篇论文提出BlockDrop,核心目标是让 ResNet 在推理阶段根据每张输入图片动态选择执行哪些 residual blocks,从而减少计算量。论文摘要中明确说明,BlockDrop 会在给定预训练 ResNet 的基础上训练一个 policy network,让它为每张输入图像选择需要执行的 residual blocks,并在保持预测精度的同时尽量减少 block 使用量。
官方代码仓库为Tushar-N/blockdrop,README 中说明该代码实现了一个 policy network,用于动态选择 ResNet 中哪些 blocks 执行;在 ResNet-101 / ImageNet 上,BlockDrop 平均加速 20%,部分图像可达 36%,同时保持 76.4% Top-1 accuracy。
二、论文要解决的问题
传统模型压缩方法通常得到一个固定结构的小模型。例如 filter pruning、channel pruning、quantization、low-rank decomposition 等方法,压缩后每张图像都经过同一个网络。
这种方式的问题是:所有输入样本都被分配相同计算量。
但现实中,不同图像的难度不同。有些图像目标清晰、背景简单,可能不需要完整深层网络;有些图像目标遮挡严重、背景复杂,才需要更多层提取高级特征。
所以 BlockDrop 要解决的问题是:
能不能让网络对简单样本少算,对困难样本多算?
换句话说,它不是问:
哪些 filters 应该被永久删除?
而是问:
对于当前这张输入图像,哪些 residual blocks 可以临时跳过?
这就是 BlockDrop 和传统静态剪枝方法的根本区别。
三、核心思想
BlockDrop 的核心思想可以概括为一句话:
给一个预训练 ResNet 配一个 policy network,让 policy network 根据输入图像一次性输出所有 residual blocks 的 keep / drop 决策。
对于一个包含 K 个 residual blocks 的 ResNet,BlockDrop 会预测一个二值向量:
其中:
:执行第 (k) 个 residual block。
:跳过第 (k) 个 residual block。
论文中明确写到,policy network 会输出一个 binary policy vector,表示每个 block 是 keep 还是 drop;然后 ResNet 只运行 policy vector 中被激活的 blocks。
所以,BlockDrop 的推理过程是:
- 输入图像进入 policy network。
- policy network 输出一个完整的 block 执行策略。
- ResNet 只执行被保留的 residual blocks。
- 最终输出分类结果。
这里最重要的是:
BlockDrop 的决策是 image-specific 的。
也就是说,不同图像会走不同推理路径。
image-specific 的。
也就是说,不同图像会走不同推理路径。
四、为什么 BlockDrop 适合 ResNet?
BlockDrop 选择 ResNet 作为基础网络,不是偶然的。
ResNet 的 residual block 一般可以写成:
如果跳过第 (k) 个 block,就变成:
也就是直接走 identity shortcut。
因此,ResNet 天然适合 block dropping,因为 residual connection 本来就提供了跳过 block 的路径。
论文也指出,ResNet 由于 skip connection 的存在,可以被看作很多不同深度路径的集合,因此删除某些 residual blocks 通常不会像普通顺序网络那样立刻导致结构断裂。
这点非常关键:
BlockDrop 利用的是 ResNet 的结构冗余和路径冗余。
如果换成 VGG 这种普通顺序网络,直接跳过中间层会更加困难,因为层与层之间没有天然 identity shortcut。
五、方法细节
5.1 Policy Network
BlockDrop 的 policy network 输入是一张图像,输出是一个长度为 K的概率向量:
其中:
x:输入图像。
:policy network。
W:policy network 参数。
(s_k):第 (k) 个 residual block 被 drop 或 keep 的概率。
论文将 block dropping 行为建模为一个 (K)-dimensional Bernoulli distribution。每个 block 的决策从 Bernoulli 分布中采样,最终形成一个二值 policy vector。
论文也强调,policy network 的计算成本要足够低,否则动态跳过 blocks 节省的计算会被 policy network 自身开销抵消。论文实验中,policy network 的计算量约为 CIFAR ResNet-110 总计算量的 4.8%,在 ImageNet ResNet-101 上约为 3.0%。(
所以,BlockDrop 的一个关键设计原则是:路由器必须足够轻量。
5.2 动态路径
对于每张图像,BlockDrop 都会产生一个不同的执行路径。例如,一张简单图像可能只执行较少 blocks;一张困难图像可能执行更多 blocks。论文 Figure 1 的说明中指出,BlockDrop 学到的路径不仅反映图像难度,简单样本会使用更少 blocks,而且不同 block pattern 还可能对应有意义的视觉模式。这说明 BlockDrop 学到的不是随机跳层,而是:输入相关的动态推理路径。
5.3 奖励函数
BlockDrop 使用强化学习训练 policy network。其目标是同时鼓励两件事:
预测正确。
使用尽可能少的 residual blocks。
论文定义的 reward 为:
如果预测正确,那么使用的 blocks 越少,reward 越大。
如果预测错误,则直接给负奖励。
论文明确说明,控制 efficiency 和 accuracy 的折中;较大的
会让策略更重视正确率,但计算节省会变少.
这个奖励函数的核心含义是:
只有在预测正确的前提下,少用 blocks 才有价值。
这点非常重要,因为单纯少算很容易,只要全部跳过即可;真正难的是在保持精度的同时少算。
5.4 强化学习目标
BlockDrop 希望最大化期望 reward:
其中是 policy network 定义的 block keep / drop 分布。
由于 keep / drop 是二值离散决策,不能直接用普通反向传播优化,因此论文使用 policy gradient 方法来训练 policy network。论文明确写到,它们利用 policy gradient 来最大化期望 reward.
这里的关键难点是:block dropping 是离散决策,所以需要强化学习或类似的离散优化方法。
六、训练策略
6.1 为什么不能直接训练?
BlockDrop 的搜索空间非常大。如果 ResNet 有 (K) 个 residual blocks,那么所有可能路径数量是:
每个 block 都有 keep 或 drop 两种选择,因此路径组合数量随 block 数指数增长。论文指出,直接从随机初始化的 policy 开始同时优化精度和 block usage 效果不好,因为搜索空间维度极大。所以,BlockDrop 不能简单粗暴地直接训练 policy network。
6.2 Curriculum Learning
为了解决训练困难,论文使用curriculum learning,课程学习。
课程学习的思想是:不要一开始就让 policy network 决定所有 blocks,而是逐渐增加它需要决策的 blocks 数量。
训练初期,让前面大部分 blocks 固定执行,只让 policy network 学习后面少量 blocks 的 drop / keep。随着训练进行,逐步开放更多 blocks 给 policy network 决策。论文写到,在第 (t) 个 epoch,如果,会保持前 (K-t) 个 blocks 打开,只学习剩余 blocks 的 policy。
这样做的好处是:把一个极大的路径搜索空间分阶段暴露给 policy network,降低训练难度。
6.3 Joint Finetuning
课程学习完成后,policy network 已经能为输入图像选择 blocks。但是,原始 ResNet 是在所有 blocks 都执行的情况下训练的。现在某些 blocks 被动态跳过,网络内部特征分布会发生变化。
因此,论文进一步进行joint finetuning。
也就是:policy network 和 base ResNet 一起微调,使 ResNet 适应动态 block dropping 行为。论文明确说明,移除 blocks 会带来训练和测试条件不匹配,因此需要把 ResNet 与 policy network 共同 fine-tune,让网络适应学到的 block dropping behavior。(
所以 BlockDrop 的完整训练流程是:
先训练 policy network。
再联合微调 policy network 和 ResNet。
这也是它和单纯静态剪枝不同的地方。
七、BlockDrop 与 SkipNet 的区别
BlockDrop 和 SkipNet 都是动态跳过 residual blocks 的方法,但二者并不完全一样。
BlockDrop 的 policy network 一次性输出所有 blocks 的 keep / drop 决策。
SkipNet 更强调在网络内部逐层做 gating 决策。
BlockDrop 论文特别指出,它的策略执行是 single-step 的:所有决策基于输入实例一次性产生,因此 policy execution 更轻量,也更适合扩展到很深的网络。(
所以二者可以这样区分:
SkipNet 更像是逐层动态路由。
BlockDrop 更像是整网路径一次性规划。
这也是 BlockDrop 的重要特点:它不是每经过一个 block 再决定下一个 block,而是先为整张图像生成完整推理路径。
八、实验设置
论文在三个主要数据集上验证:
CIFAR-10。
CIFAR-100。
ImageNet ILSVRC2012。
CIFAR-10 和 CIFAR-100 都有 50,000 张训练图像和 10,000 张测试图像;ImageNet 包含约 1.2M 训练图像和 50,000 张验证图像。论文在 CIFAR 上使用 ResNet-32 和 ResNet-110,在 ImageNet 上使用 ResNet-101。
官方代码中也提供了 CIFAR 和 ImageNet 的训练与测试流程,包括 curriculum learning、joint finetuning 和 testing/profiling。
九、实验结果解读
9.1 CIFAR-10:ResNet-110 上只用约 33% blocks 仍达到 93.6%
论文报告,在 CIFAR-10 的 ResNet-110 上,BlockDrop 只使用约 33% residual blocks 就能达到 93.6% accuracy;在 CIFAR-100 上,使用约 55% blocks 达到 73.7% accuracy。
这说明:
很多输入样本并不需要完整 ResNet-110 的所有 blocks。
对于相对简单的 CIFAR-10,BlockDrop 可以跳过大量 blocks,并保持甚至略高于原模型的精度。
9.2 CIFAR-10:相比完整 ResNet-110,平均 FLOPs 减少 65%
在 CIFAR-10 上,论文报告 BlockDrop 的最佳模型 accuracy 为 93.6%,相比原始 ResNet-110 的 93.2% 还高 0.4%;同时平均 FLOPs 从降到
,减少约 65%。
这说明:
动态跳层不仅能减少计算,还可能带来一定正则化效果。
论文也认为,fine-tuning 中的 block dropping 可能类似 stochastic depth,具有正则化作用。
9.3 ImageNet:ResNet-101 平均加速 20%,保持 76.4% Top-1
在 ImageNet 上,BlockDrop 基于 ResNet-101。
论文摘要和 GitHub README 都报告:BlockDrop 平均加速约 20%,部分图像可达 36%,同时保持 ResNet-101 的 76.4% Top-1 accuracy。
论文结果还显示,当稍微放宽时,BlockDrop 可以在保持完整 ResNet-101 相同 76.4% Top-1 accuracy 的同时,将 FLOPs 从
降到
。
这说明:在 ImageNet 这种复杂任务上,BlockDrop 不能像 CIFAR 那样跳过大部分 blocks,但仍然能获得有意义的动态计算节省。
9.4 单步 policy 比顺序 policy 更高效
论文比较了 single-step policy 和 sequential policy 的效率。
在 CIFAR-10 上,ResNet-110 的完整推理时间为 24.1ms,BlockDrop single-step policy 为 10.9ms,加速 52.3%;而 sequential policy 反而需要 29.1ms,比完整模型更慢。
这个结果非常关键:
动态推理不只是少算 blocks,还要保证路由决策本身足够便宜。
如果每个 block 前都做一次复杂决策,控制开销可能抵消计算收益。
这也是 BlockDrop 采用一次性 policy vector 的重要原因。
9.5 学到的路径具有视觉语义
论文还做了定性分析。
它发现 BlockDrop 学到的 dropping policies 与图像视觉模式有关。例如在 “orange” 类别中,一堆橙子的图片和橙子特写图片会走不同 inference paths;清晰可见目标的简单图像通常使用更少 blocks,而包含遮挡或复杂背景的困难图像会使用更多 blocks。
这说明:
BlockDrop 学到的不是随机省计算,而是和图像难度、视觉模式相关的动态路径选择。
十、方法优点
10.1 输入自适应
BlockDrop 最大优点是instance-specific inference。
它不是为所有图像提供同一个固定小模型,而是让每张图像拥有自己的推理路径。
这比静态剪枝更灵活。
10.2 保留完整 ResNet 表达能力
静态剪枝会永久删除 filters 或 blocks。
BlockDrop 不会永久删除 blocks,而是根据输入动态跳过。
因此,对于困难样本,它仍然可以执行更多 blocks。
这意味着:
BlockDrop 的计算量是动态的,而不是固定的。
10.3 与其他压缩方法互补
论文指出,BlockDrop 与传统模型压缩方法是互补的。保留下来的 residual blocks 仍然可以继续做 filter pruning、quantization 或低秩分解。
也就是说,可以先用 BlockDrop 动态减少 block 使用,再对每个 block 内部做静态压缩。
这对部署很有意义。
10.4 单步策略执行开销低
BlockDrop policy network 一次性输出所有 blocks 的决策,避免逐层 gating 带来的高控制开销。
论文也强调,single-step associative reinforcement learning 让 policy execution 更轻量,更适合很深的网络。
10.5 有助于理解 ResNet 的路径冗余
BlockDrop 的实验说明,ResNet 中不同 residual blocks 对不同图像的重要性不同。
这进一步支持一种观点:
ResNet 不只是一个单一路径网络,而是包含大量可选择路径的组合结构。
十一、方法局限
11.1 它不是静态剪枝
BlockDrop 不会生成一个固定的小模型。
它仍然保留原始 ResNet 和 policy network,只是在推理时动态跳过部分 blocks。
因此,它更适合归类为:
动态推理 / 条件计算方法。
而不是传统意义上的 filter pruning 或 channel pruning。
11.2 动态控制流对硬件不一定友好
虽然 BlockDrop 能减少 FLOPs,但真实加速依赖硬件和推理框架。
如果 batch 中每张图像执行路径不同,GPU 或 NPU 可能难以高效并行。
所以在部署时,需要验证真实 latency,而不能只看 FLOPs。
11.3 强化学习训练复杂
BlockDrop 需要 policy gradient、curriculum learning 和 joint finetuning。
相比 L1、FPGM、HRank、CHIP 这类排序式剪枝方法,训练流程更复杂。
11.4 搜索空间很大
如果 ResNet 有 (K) 个 residual blocks,那么路径空间是 (2^K)。
虽然 curriculum learning 缓解了这个问题,但这仍然说明:
动态路径学习本质上是一个大规模离散搜索问题。
11.5 依赖 ResNet 的 shortcut 结构
BlockDrop 适合 ResNet,是因为 residual blocks 可以被跳过。
如果换成没有 shortcut 的网络,直接跳层可能导致结构和语义不匹配。
因此,BlockDrop 的适用性比 DepGraph 这种通用结构化剪枝框架更窄。
十二、和前面论文的关系
Pruning Filters for Efficient ConvNets 关注静态 filter pruning。
ThiNet 和 Channel Pruning 关注重构误差驱动的通道剪枝。
Network Slimming 关注BN gamma 稀疏化。
FPGM、HRank、CHIP 关注不同冗余度量。
Importance Estimation 和 Gate Decorator 关注loss sensitivity / gate-based importance。
DepGraph 关注任意结构剪枝中的依赖关系。
SkipNet 关注逐层动态路由。
BlockDrop 关注整网动态路径选择。
所以,BlockDrop 的核心定位是:
从“永久剪掉结构”转向“按输入动态选择路径”。
它和 SkipNet 的共同点是都跳过 residual blocks。
区别是:
SkipNet 更强调逐层 gating。
BlockDrop 更强调一次性生成完整 block dropping policy。
十三、一句话总结
《BlockDrop: Dynamic Inference Paths in Residual Networks》提出用 policy network 为每张输入图像一次性生成 ResNet residual blocks 的 keep / drop 决策,并通过 curriculum learning、policy gradient 和 joint finetuning 学习动态推理路径;它的核心贡献不是静态删除通道或 filter,而是让 ResNet 根据输入难度自适应选择执行路径,在 ImageNet ResNet-101 上实现平均 20% 加速并保持 76.4% Top-1 accuracy。