Glance and Focus: 通用、高效的神经网络自适应推理框架( 二 )
文章插图
图6 Glance and Focus Network (GFNet) 的基本框架
其具体执行流程为:
- 首先 , 对于一张任意给定的输入图片 , 由于我们没有任何关于它的先验知识 , 我们直接将其放缩为一个patch的大小 , 输入网络 , 这一方面产生了一个初步的判断结果 , 另一方面也提供了原始输入图片的空间分布信息;这一阶段称为扫视(Glance) 。
- 而后 , 我们再以这些基本的空间分布信息为基础 , 逐步从原图上取得高分辨率的patch , 将其不断输入网络 , 以此逐步更新预测结果和空间分布信息 , 得到更为准确的判断 , 并逐步寻找神经网络尚未见到过的关键区域;这一阶段称为关注(Focus) 。
此机制称为自适应推理(Adaptive Inference) 。
通过这种机制 , 我们一方面可以使不同难易度的样本具有不同的序列长度 , 从而动态分配计算量、提高整体效率;
另一方面可以简单地通过改变阈值调整网络的整体计算开销 , 而不需要重新训练网络 , 这使得我们的模型可以动态地以最小的计算开销达到所需的性能 , 或者实时最大化地利用所有可用的计算资源以提升模型表现 。
关于这些阈值的具体整定方法 , 由于比较繁杂 , 不在这里赘述 , 可以参阅我们的paper~
3 网络结构
下面我们具体介绍Glance and Focus Network (GFNet) 的具体结构 , 如下图所示
文章插图图7 Glance and Focus Network (GFNet) 的网络结构
【Glance and Focus: 通用、高效的神经网络自适应推理框架】GFNet共有四个组件 , 分别为:
- 全局编码器和局部编码器(Global Encoder and Local Encoder)为两个CNN , 分别用于从放缩后的原图和局部patch中提取信息 , 之所以用两个CNN , 是因为我们发现一个CNN很难同时适应缩略图和局部patch两种尺度(scale)的输入 。 几乎所有现有的网络结构均可以作为这两个编码器以提升其推理效率(如MobileNet-V3、EfficientNet、RegNet等) 。
- 分类器 (Classifier)为一个循环神经网络(RNN) , 输入为全局池化后的特征向量 , 用于整合过去所有输入的信息 , 以得到目前最优的分类结果 。
- 图像块选择网络 (Patch Proposal Network)是另一个循环神经网络(RNN) , 输入为全局池化前的特征图(不做池化是为了避免损失空间信息) , 用于整合目前为止所有的空间分布信息 , 并决定下一个patch的位置 。 值得注意的是由于取得patch的crop操作不可求导 , 是使用强化学习中的策略梯度方法(policy gradient)训练的 。
为了确保GFNet的四个组件按照我们预期的方式工作 , 我们提出了一个三阶段的训练策略 , 在这里简要概述 , 更多细节可以参见我们的paper~
- 首先 , 我们从GFNet中移除, 在每一步均以均匀分布随机选择patch的位置 , 以下面所示的损失函数训练 , 和 , 使其达到最佳的分类性能 , 其中 代表交叉熵损失 ,和分别代表在第步的预测结果和原始输入图片 对应的标签 ,表示训练集 , 表示序列的最大可能长度 。
文章插图- 而后 , 我们固定第一步得到的 , 和, 在网络中插入一个随机初始化的, 以强化学习算法(policy gradient)优化以下形式的折扣奖励函数 。 其中 为一个预先定义折扣因子 ,为每次选择patch位置的奖励(reward) , 我们将其定义为所选择的patch所造成的在正确标签上的confidence的增量 , 换言之 , 我们总是希望选择目前的网络没有处理过的、对产生正确的预测结果最有帮助的patch 。
文章插图- 最后 , 我们固定第二步得到的, 再以第一步中的损失函数对 , 和 进行最终的微调(Finetune) 。
在实验中我们考虑了两种设置:
- budgeted batch classi?cation , 测试数据伴随有一个计算开销的预算(budget) , 网络需要在这个计算预算内进行推理 。 在此设置下 , 我们使用前面提到的方法 , 确定阈值(confidence threshold)并进行自适应推理 。
- 合并|Andre Cronje主导批量「合并」DeFi项目,是好事情吗?
- Android|索尼Android 11更新时间表公布 最早本月开始
- Python中文速查表-Pandas 基础
- Pandas教程
- POCO F2 Pro获Android 11稳定版更新
- 随机森林(Random Forest)算法原理
- Python数据处理,pandas 统计连续停车时长
- 不常见的Pandas小窍门:我打赌一定有你不知道的
- 详解command设计模式,解耦操作和回滚
- 装机必备!解压缩神器Bandizip中文免费版|电脑软件
