NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架

文 | rainforest wang

源 | 知乎


本文主要介绍我们被NeurIPS 2020会议录用的一篇文章:
Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classification

代码和预训练模型已经在Github上面放出:
https://link.zhihu.com/?target=https%3A//github.com/blackfeather-wang/GFNet-Pytorch

这项工作提出了一个通用于绝大多数CNN的自适应推理框架,其效果比较明显,在同等精度的条件下,将MobileNetV3的平均推理速度加快了30%,将ResNet/DenseNet加速了3倍以上,且在iPhone XS Max上的实际测速和理论结果高度吻合。此外,它的计算开销可以简单地动态在线调整,无需额外训练

(太长不看版)下面一张图可以概括我们做的事情:将图像识别建模为序列决策过程,先将缩略图输入神经网络(Glance),再不断选择最关键的图像区域进行处理(Focus,利用强化学习实现),直至网络产生一个足够可信的预测结果时停止;对于简单和困难的样本分配不同的计算资源,以提升整体效率。

图1 Glance and Focus Network \(GFNet\) 效果图

下面,我将详细介绍这一工作的具体内容。

Introduction

在基于卷积神经网络(CNN)的图像任务中,提升网络效果的一个有效方法是使用高分辨率的输入,例如,在ImageNet分类[1]任务上,近年来的最新网络(DenseNet[2], SENet[3], EfficientNet[4])往往需要使用224x224或更大的输入图片以取得最佳性能:

ModelInput SizeAccuracy
DenseNet-265224x22477.85 %
SENet-154320x32082.72 %
EfficientNet-B7600x60084.40 %

然而,这种方式会带来较大的计算开销,因为推理CNN所需的计算量(FLOPs)基本与像素数目成正比[5],即与图形的长、宽成二次关系,如下图所示:

图2 CNN计算量与图片长/宽的关系

在实际应用(例如手机APP、自动驾驶系统、图片搜索引擎)中,计算量往往正比于能耗或者时间开销,显然,无论出于成本因素还是从安全性和用户体验的角度考虑,网络的计算开销都应当尽可能小。那么,如何在保留高分辨率输入所带来的好处的同时,减小其计算开销呢?

事实上,我们可以借助神经网络的一个有趣的性质。与人类视觉相似,神经网络往往可以通过仅仅处理图像中与任务相关的一小部分区域而得到正确的结果,例如在下图中,遮挡住屋顶、飞鸟或花朵之外的部分,神经网络仍然可以得到正确的分类结果[6]:

图3 部分关键信息足以使神经网络做出可靠的判断

这便是本文所提出方法的出发点,我们的目标是,对于输入图片,自适应地找到其与任务最相关的区域,进而通过使神经网络只处理这些区域,以尽可能小的计算量得到可信的结果。具体而言,我们采用的方法是,将一张分辨率较高的图片表征为若干个包含其关键部分的“小块”(Patch),而后仅将这些小块输入神经网络。以下面的示意图为例,将一张224x224的图片分解为3个96x96的Patch进行处理所需的计算量仅为原图的55.2%。

图4 Glance and Focus Network \(GFNet\) 的基本建模方式

Method

为了实现上述目的,事实上,有两个显然的困难:

(a) 任意给定一张输入图片,如何判断其与任务最相关的区域在哪里呢?

(b) 考虑到我们的最终目的是使神经网络得到正确的预测结果,不同输入所需的计算量是不一样的,例如对于下面所示的两个输入图片,神经网络可能仅需要处理一个patch就能识别出特征非常突出的月亮,但是需要处理更多的patch才能分辨出猫咪的具体品种。

图5 对于不同输入,应分配不同大小的计算资源

为了解决这两个问题,我们设计了一个Glance and Focus的框架,将这一思路建模为了一个序列决策过程,如下图所示。

图6 Glance and Focus Network \(GFNet\) 的基本框架

其具体执行流程为:

  1. 首先,对于一张任意给定的输入图片,由于我们没有任何关于它的先验知识,我们直接将其放缩为一个patch的大小,输入网络,这一方面产生了一个初步的判断结果,另一方面也提供了原始输入图片的空间分布信息;这一阶段称为扫视(Glance)。

  2. 而后,我们再以这些基本的空间分布信息为基础,逐步从原图上取得高分辨率的patch,将其不断输入网络,以此逐步更新预测结果和空间分布信息,得到更为准确的判断,并逐步寻找神经网络尚未见到过的关键区域;这一阶段称为关注(Focus)。

值得注意的是,在上述序列过程的每一步结束之后,我们会将神经网络的预测自信度(confidence)与一个预先定义的阈值进行比较,一旦confidence超过阈值,我们便视为网络已经得到了可信的结果,这一过程立即终止。此机制称为自适应推理(Adaptive Inference)。通过这种机制,我们一方面可以使不同难易度的样本具有不同的序列长度,从而动态分配计算量、提高整体效率;另一方面可以简单地通过改变阈值调整网络的整体计算开销,而不需要重新训练网络,这使得我们的模型可以动态地以最小的计算开销达到所需的性能,或者实时最大化地利用所有可用的计算资源以提升模型表现。

关于这些阈值的具体整定方法,由于比较繁杂,不在这里赘述,可以参阅我们的paper~

Network Architecture

下面我们具体介绍Glance and Focus Network (GFNet) 的具体结构,如下图所示

图7 Glance and Focus Network \(GFNet\) 的网络结构

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)训练的。

Training

为了确保GFNet的四个组件按照我们预期的方式工作,我们提出了一个三阶段的训练策略,在这里简要概述,更多细节可以参见我们的paper~

  • 首先,我们从GFNet中移除 ,在每一步均以均匀分布随机选择patch的位置,以下面所示的损失函数训练,使其达到最佳的分类性能,其中 代表交叉熵损失, 分别代表 在第 步的预测结果和原始输入图片 对应的标签, 表示训练集, 表示序列的最大可能长度。

  • 而后,我们固定第一步得到的,在网络中插入一个随机初始化的 ,以强化学习算法(policy gradient)优化以下形式的折扣奖励函数。其中 为一个预先定义折扣因子, 为每次选择patch位置的奖励(reward),我们将其定义为所选择的patch所造成的在正确标签上的confidence的增量,换言之,我们总是希望 选择目前的网络没有处理过的、对产生正确的预测结果最有帮助的patch。

  • 最后,我们固定第二步得到的 ,再以第一步中的损失函数对 进行最终的微调(Finetune)。

Experiments

在实验中我们考虑了两种设置:

  • budgeted batch classification,测试数据伴随有一个计算开销的预算(budget),网络需要在这个计算预算内进行推理。在此设置下,我们使用前面提到的方法,确定阈值(confidence threshold)并进行自适应推理。

  • anytime prediction,网络有可能在任何时候被要求立刻输出预测结果。在此设置下,我们不使用自适应推理技术,并假设所有测试样本的序列长度固定。

下图为我们在不同网络结构上实现GFNet的实验结果,其中横轴为网络的平均理论计算开销,纵轴为准确率,(a-e)为budgeted batch classification的结果,(f)为anytime prediction的结果。可以看出,GFNet明显地提升了包括MobileNetV3、RegNet和EfficientNet在内的最新网络结构的推理效率,同等精度下,计算开销减小达30-40%以上,对于ResNet/DenseNet的增幅可达3倍甚至更高;同等计算开销下,对MobileNetV3提点2%左右,对ResNet/DenseNet达5-10%以上。

图8 GFNet基于不同CNN的实验结果(Accuracy v.s. Multiply-Adds)

GFNet的另一个显著优势是,由于其没有更改CNN的具体结构,其可以方便地在移动端或边缘设备上使用现有的工具部署,且享有和理论结果几乎等同的实际加速比。下图为我们在一台iPhone XS Max(就是我的手机)上基于TensorFlow Lite的测试结果:

图9 GFNet在一台iPhone XS Max上的实际测试结果(Accuracy v.s. Latency)

下面是GFNet的一些可视化结果,可以从中看出,对于比较简单的样本,GFNet可以仅在Glance阶段或Focus阶段的第一步以很高的confidence得到正确的结果,对于较为复杂的样本,则实现了以不断关注关键区域的形式逐步提升confidence。

图10 GFNet的可视化结果

Conclusion

最后总结一下,其实我本人是非常喜欢这项工作的,因为它非常的自然、通用、有效。一方面它很好的模拟了生物(或者说人)识别一张图片的过程,人眼对图像数据的认知事实上也是一个先扫视得出一些直觉信息、再逐渐关注关键区域的过程。另一方面GFNet的实际效果也非常显著,且能在目前最佳的一些模型上进一步提升理论计算效率,并加快实测速度。欢迎大家follow我们的工作~。

@inproceedings{NeurIPS2020_7866,title = {Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classification},author = {Wang, Yulin and Lv, Kangchen and Huang, Rui and Song, Shiji and Yang, Le and Huang, Gao},booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},year = {2020},
}

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

 

[1] http://www.image-net.org/

[2] https://arxiv.org/pdf/2001.02394.pdf

[3] https://arxiv.org/pdf/1709.01507.pdf

[4] https://arxiv.org/pdf/1905.11946.pdf

[5] https://papers.nips.cc/paper/5542-recurrent-models-of-visual-attention.pdf

[6] https://arxiv.org/pdf/1910.08485.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)

今天终于把代码下载完成,特此开一篇博文记录一下。上图: 为了下载这些源码,历时5天5夜,说为什么这么长时间,是因为太容易中断了,有时候下一晚上可能就一直没在下,在你入睡的时候它就自己断了&am…

NumPy快速入门-- Less 基础/线性代数

文章目录1. 广播(Broadcasting)规则2. 使用索引数组索引3. 使用布尔值作为数组索引4. ix_()函数5. 线性代数 简单数组操作6. 技巧和提示6.1 “自动”整形6.2 矢量堆叠1. 广播(Broadcasting)规则 Broadcasting允许通用函数以有意义…

Intel PAUSE指令变化影响到MySQL的性能,该如何解决?

MySQL得益于其开源属性、成熟的商业运作、良好的社区运营以及功能的不断迭代与完善,已经成为互联网关系型数据库的标配。可以说,X86服务器、Linux作为基础设施,跟MySQL一起构建了互联网数据存储服务的基石,三者相辅相成。本文将分…

会议 | CCKS 2019 全国知识图谱与语义计算大会在杭州隆重召开

本文转载自公众号:中国中文信息学会。2019 年全国知识图谱与语义计算大会(CCKS 2019)于 8 月 24 日至 27 日在杭州召开,由中国中文信息学会语言与知识计算专业委员会主办,浙江大学承办。本次会议主题是“知识智能”。大会吸引了来自海内外的八…

Hystrix 简介和使用

Hystrix一、概念二、使用1. 环境搭建2. 服务降级3. 异常熔断4. 自定义异常熔断器5.Hystrix仪表盘监控三、测试1. 异常熔断2. 超时熔断3. 熔断器获得异常4. 异常忽略5. 自定义异常熔断器一、概念 故障蔓延:由于一个服务变慢或没有响应导致大量请求堆积,进…

android中如何使用一张图片适配不同尺寸的APP引导页

在我们平常开发的过程中在做引导页适配的时候,有时候会犯难,怎么样作图可以将各种不同尺寸分辨率的手机都适配好也就是不变形不拉伸,官方给的说法也只是做多套图去适配不同的分辨率,遇到全屏展示引导这种问题的时候就有些力不从心…

还在用Tensorboard?机器学习实验管理平台大盘点

文 | SisyphusBJ源 | Pytorch Lightningwandb.aicomet.mlneptune.aiallegro trainsmlflowguild.aisacredtest-tubetensorboard相信很多同学看到上面这个列表的第一印象是懵的。我们先看下机器学习实验管理平台 到底是做神马滴:一句话概括就是:&#xff0…

论文浅尝 | 利用图 Transformer 实现基于知识图谱的文本生成

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NAACL2019链接:https://arxiv.org/pdf/1904.02342.pdf本文关注如何从信息抽取结果(特别是知识图谱)出发,生…

LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)

文章目录1. 题目信息2. 解题2.1 中序递归2.2 中序循环写法1. 题目信息 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1:输入: root …

Apache Doris在美团外卖数仓中的应用实践

序言 美团外卖数据仓库技术团队负责支撑日常业务运营及分析师的日常分析,由于外卖业务特点带来的数据生产成本较高和查询效率偏低的问题,他们通过引入Apache Doris引擎优化生产方案,实现了低成本生产与高效查询的平衡。并以此分析不同业务场景…

Feign 简介和使用

声明式服务消费Feign一、简介二、使用Feign实现服务消费者三、实现普通的服务提供者四、Feign服务调用测试五、Feign消费者测试负载均衡服务熔断一、简介 Feign是Netflix公司开发的一个声明式的REST调用客户端; Ribbon负载均衡、Hystrix服务熔断是我们Spring Cloud…

论文浅尝 | 面向自动问题生成的跨语言训练

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:ACL 2019链接:https://128.84.21.199/pdf/1906.02525.pdf动机现有问题生成方法需要大量的“文本-问题”有标注数据对作为训练数据集&#xff…

再见,Spark!Flink已成气候!

身为大数据工程师,你还在苦学Spark、Hadoop、Storm,却还没搞过Flink?醒醒吧!刚过去的2020双11,阿里在Flink实时计算技术的驱动下全程保持了“如丝般顺滑”,基于Flink的阿里巴巴实时计算平台简直强无敌。最恐…

Java线程池实现原理及其在美团业务中的实践

随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使…

Zuul 简介和使用

Zuul背景Zuul的作用Zuul API网关Zuul请求过滤Zuul路由规则Zuul异常处理背景 通过之前的学习,我们知道注册中心Eureka,可以讲服务注册到该注册中心,Ribbon和Feign可以实现服务负载均衡地调用,Hystrix可以实现服务熔断,…

技术动态 | 知识图谱上的实体链接

本文转载自公众号:知识工场 1、什么是实体链接实体链接(entity linking)就是将一段文本中的某些字符串映射到知识库中对应的实体上。比如对于文本“郑雯出任复旦大学新闻学院副院长”,就应当将字符串“郑雯”、“复旦大学…

卖萌屋学术站开放注册啦!寻募种子用户,超多特权放出!

文:夕小瑶消失一个多月的小夕又突然出现啦!要问小夕最近业余时间在做什么,那就是跟小伙伴们开发学术站啦~(等...等再肝一版,小夕就继续给大家写文章(。 ́︿ ̀。)众所周知,卖萌屋学术…

LeetCode 11. 盛最多水的容器(双指针)

文章目录1. 题目信息2. 解题1. 题目信息 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。 找出其中的两条线,…

WSDM Cup 2020检索排序评测任务第一名经验总结

1.背景 第13届“国际网络搜索与数据挖掘会议”(WSDM 2020)于2月3日在美国休斯敦召开,该会议由SIGIR、SIGKDD、SIGMOD和SIGWEB四个专委会共同协调筹办,在互联网搜索、数据挖掘领域享有很高学术声誉。本届会议论文录用率仅约15%,并且WSDM历来注…

ltp︱基于ltp的无监督信息抽取模块

ltp︱基于ltp的无监督信息抽取模块:https://zhuanlan.zhihu.com/p/44890664 无监督信息抽取较多都是使用哈工大的ltp作为底层框架。那么基于ltp其实有了非常多的小伙伴进行了尝试,笔者私自将其归纳为:事件抽取(三元组…