RANet : 分辨率自适应网络效果和性能的best trade-off | CVPR 2020
作者 | VincentLee
来源 | 晓飞的算法工程笔记
简介
深度CNN带来了性能提升的同时也带来了过高的计算量,许多研究放在了如何进行网络加速上面,其中比较直接的是根据样本难易程度进行自动调整的自适应网络。基于对自适应网络的研究,论文提出了自适应网络RANet(Resolution Adaptive Network),思想如图1所示,网络包含多个不同输入分辨率和深度子网,样本先从最小的子网开始识别,若结果满足条件则退出,否则继续使用更大的子网进行识别,子网的特征不是独有的,下一级别的子网会融合上一级别的子网特征,从实验来看,论文在效果和性能上取得了很不错的trade-off。
方法
Adaptive Inference Setting
构建包含K个分类器的自适应模型,对于输入图片,第个分类器的输出如公式1,为分类器对应的子网参数,部分参数是分类器间共享的,为类别置信度。
自适应网络根据图片的复杂程度动态选择合适的计算分支,即若当前分类器的输出达到预期,则退出,论文采用softmax输出的置信度来进行判断,如公式2和公式3所示。
Overall Architecture
RANet的整体结构如图2所示,包含初始层(Initial Layer)和个对应不同分辨率的子网,每个子网包含多个分类器。具体流程先使用初始层获得不同分辨率的特征图,然后使用最低分辨率的子网进行预测,如果子网没有获得可靠的结果,则使用下一个分辨率稍大的子网进行预测,重复直到获得可靠的结果或者到达最大分辨率子网。
在重复迭代预测的过程中,高分辨率层会融合低分辨率层的特征。尽管RANet已经在初始层对图片进行了从细粒度到粗粒度的处理,子网仍然会继续对其进行下采样,直到特征图大小为 scale(表示初始层产生的最小分辨率),分类器只加在最后几个特征图大小 scale的block上。
Network Details
Initial Layer
初始层用于生成个基础特征,特征有个尺寸,图2的初始层包含3个不同尺寸的特征,第一个特征通过Regular-Conv层产生,后面的特征通过Strided-Conv层产生。
Sub-networks with Different Scales
Sub-network 1处理分辨率最低的特征图,使用图3(a)的层regular Dense Blocks,每层的输出都将传递到Sub-network 2中。
输入大小为 scale的Sub-network ()处理基础特征,并且使用图3(b,c)的Fusion Blocks来融合自Sub-network ()的特征,包含两种类型,一种为图3b的保持特征图大小的类型,另一种为图3c的降低特征图大小类型。对于低维特征的上采样视当前特征的大小使用Up-Conv(Regular-Conv+Bilinear interpolation)或Regular-Conv,对于前后特征也会进行连接,具体结构细节见图3。
对于输入为 scale的Sub-network 的建立如下:假设子网包含 blocks,block 1至 block 为Fusion Blocks,特征会下采样次,保证输出的特征图为 scale进行分类,剩余的block为regular Dense Blocks。
Transition layer
RANet也使用了DeseNet稠密的transition layer,具体为卷积+BN+ReLU,为了简单没有在图2体现。
Classifiers and loss function
分类器加在每个子网的后几个block中,在训练阶段,样本会按顺序传给所有的子网,最终的损失是每个分类器计算交叉熵损失加权累积,具体逻辑和权重跟MSDNet一样。
Resolution and Depth Adaptation
RANet的整体结构和MSDNet十分类似,论文与其进行了对比,MSDNet的分类器放到分辨率最低的路径中,如果中间的分类器没有得到符合预期的结果,则会进行下一步全部尺寸的推理预测。而RANet则是从低尺寸到高尺寸逐步使用不同的子网进行推理预测,这样的方式能更好地自适应结合深度和分辨率。
实验
Anytime Prediction
限制单图的计算量FLOPs,直接记录自适应网络中所有分类器的性能以及其计算量进行对比。
Budgeted Batch Classification
限制一批图片的资源总量,需要根据资源总量设定阈值来控制推理的提前退出,记录自适应网络的性能以及对应的资源限制。
Visualization and Discussion
图7展示了RANet识别的一些样例,easy为前阶段的分类器能识别成的样本,hard为前阶段识别失败,但后阶段能识别成功的样本,主要的挑战为多目标、小目标和类间特征不明显的物体。
结论
基于对自适应网络的研究,论文提出了自适应网络RANet(Resolution Adaptive Network)来进行效果与性能上的取舍,该网络包含多个不同输入分辨率和深度的子网,难易样本的推理会自动使用不同的计算量,并且子网间的特征会进行融合,从实验结果来看,在性能和速度上取得了很不错的trade-off。
参考内容
MSD: Multi-Self-Distillation Learning via Multi-classifiers within Deep Neural Networks - https://arxiv.org/abs/1911.09418
论文地址:https://arxiv.org/abs/2003.07326
论文代码:https://github.com/yangle15/RANet-pytorch
【end】
欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!
推荐阅读全球呼吸机告急!医疗科技巨头美敦力“开源”设计图和源代码使用大batch优化深度学习:训练BERT仅需76分钟 | ICLR 2020
互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家
微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!2020年,这20个大家都认识的加密交易所过得怎么样?你点的每个“在看”,我都认真当成了AI
相关文章:

strcpy,memcpy和memmove区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, const cha…

WinForm 读写配置文件
读配置文件 方法(1) //ConfigurationManager.RefreshSection("appSettings");stringsettingValue ConfigurationManager.AppSettings.Get("setting1");读配置文件 方法(2) Configuration config ConfigurationManager.OpenExeConfiguration(ConfigurationU…

PHP 读取数据库内容并以二维数组按指定列输出实例
最新PHP 读取数据库内容并以二维数组按指定列输出实例以下是三零网为大家整理的最新PHP 读取数据库内容并以二维数组按指定列输出实例的文章,希望大家能够喜欢!<?php$host "localhost"; //主机名$user "root"; //mysql用户名$passwor…
指针的本质2-void和void*及其应用在nginx中的应用
指针本质论指针有两个属性:指向变量/对象的地址和长度。 但是指针只存储地址,长度则取决于指针的类型,编译器根据指针的类型从指针指向的地址向后寻址, 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元&…
首次揭秘!大麦如何应对超大规模高性能选座抢票?
作者| 阿里文娱技术专家恒磊、高级开发工程师新钱出品 | AI科技大本营(ID:rgznai100)背景介绍随着现场娱乐行业的不断发展,各类演出层出不穷,越来越多的演出开启选座购票满足用 户的自主选座需求。大麦的选座不仅面向中小场馆类的…

华为交换机密码恢复
华为交换机密码恢复说明:以下方法将删除原有config文件,使设备恢复到出厂配置。在设备重启时按CtrlB进入BOOT MENU之后,Press Ctrl-B to enter Boot Menu... 5Password : 缺省为空,回车即可1. Download application file to flash…
nginx源码分析--内存对齐处理
1.nginx内存对齐主要是做2件事情: 1) 内存池的内存地址对齐; 2) 长度按照2的幂取整.因为前面结构体已经是对齐了,如果后面的内存池每一小块不是2的幂,那么后面的就不能对齐 2.通用内存对齐理论 内存对齐:数据项只能…

七喜携手AMD,摆脱英特尔“潜规则”
七喜携手AMD,摆脱英特尔“潜规则”<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />最近,在PC市场随着七喜董事副总裁毛骏飙揭发英特尔制定的潜规则,“游戏规则都是英特尔制定的,全…
半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE
出品 | AI科技大本营(ID:rgznai100) 知识图谱 (Knowledge Graph)作为一个重要的技术,在近几年里被广泛运用在了信息检索,自然语言处理,以及推荐系统等各种领域。学习知识图谱的嵌入表示 &#x…

数组的各类排序
1 package sort;2 3 /**4 * 数组的各种排序操作5 * Created by liuwei on 16/3/6.6 */7 public class MSort {8 9 /**10 * 直接插入排序11 * 外层一个循环,从第2个元素开始(下标为1),遍历后面的所有元素12 * 内层一个循环,从当前位置position i 开始,每次…
Virtualbox安装使用注意
1.VirtualBox升级到4.3以后不能打开 提示创建 COM 对象失败 应用程序将被中断 解决方案:右键VirtualBox的桌面快捷方式,选择属性,选到兼容性选项卡,勾选“以兼容模式运行这个程序”,下拉框选择Windows Server 2008 …
机器学习项目模板:ML项目的6个基本步骤
来源 | DeepHub IMBA每个机器学习项目都有自己独特的形式。对于每个项目,都可以遵循一组预定义的步骤。尽管没有严格的流程,但是可以提出一个通用模板。准备问题不仅是机器学习,任何项目的第一步都是简单地定义当前的问题。您首先需要了解背景…

ib_logfile 在数据库中有何作用?
ib_logfile 在数据库中有何作用? ib_logfile0/ib_logfile1 文件在数据库中起什么作用? 如果被删除,对数据库有何影响? ----->>>>>>>>>>> 回复 #1 mugua_xinli 的帖子 用于存放InnoDB引擎的事…

Podfile 常见语法
source URL : 指定镜像仓库的源 platform : ios, 6.0 : 指定所支持系统和最低版本 inhibit_all_warnings! :屏蔽所有warning workspace 项目空间名: 指定项目空间名 xcodeproj 工程文件名:指定xcodeproj工程文件名 …

今天学完了ccna
通过10天的学习,终于学完了NA,但是会不会呢?还是个未知数,再就也一知半解的。觉得基础知识太差了,可是看书,又觉得太长了,太多了,晚上老是停电 白天啥也看不进去。热。还是静不下心&…
攀登数据科学家和数据工程师之间的隔墙
来源 | 数据派 THU机器学习的教育和研究重点往往集中在数据科学过程的模型构建、训练、测试和优化等方面。要使这些模型投入使用,需要一套工程专长和组织结构,对于其中的标准尚不存在。有一个架构可以指导数据科学和工程团队相互协作,从而将机…

js变量以及其作用域详解
2019独角兽企业重金招聘Python工程师标准>>> 一、变量的类型 Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变…
在A*寻路中使用二叉堆
在A*寻路中使用二叉堆 作者:Patrick Lester(2003年4月11日更新) 译者:Panic 2005年3月28日 译者序: 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章A*寻路初探…
“Hey Siri” 背后的黑科技大揭秘!
作者 | Vishant Batta译者 | 苏本如,责编 | 伍杏玲出品 | CSDN(ID:CSDNnews)以下是译文: 如今苹果手机可随时检测并回答“Hey Siri”命令,有人可能会想,它是不是在随时记录我们的日常生活对话呢…

[ASP.NET4之旅]Circular file references are not allowed
将ASP.NET 2.0的项目升级到ASP.NET 4后,用VS2010编译站点,某些控件出现编译错误“Circular file references are not allowed”,比如: <% Control Language"C#"ClassName"NewsRight"%>解决方法…

IOS-XMPP
一、即时通讯技术简介 即时通讯技术(IM -- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容有许多的IM系统,如AO…

libcurl使用
官网:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html #curl-config --libs 得到 -lcurl #cc libcurl_test.c -o libcurl_test -lcurl 所有的例子:http://curl.haxx.se/libcurl/c/example.html 例子: /***********************…

RH5.4下samba共享配置实例(3)
一、基于用户名的访问控制实例: 王乾大哥写的比较详细了,我是跟着他的教程学习的,按照他的教程走一边; 要求如下: 1、创建一个公共的交换文件夹,所有人都可以写入删除,但不能删除修改其他人的文…

《评人工智能如何走向新阶段》后记(再续21)
346.中国抗疫十大黑科技(以人工智能为主力的黑科技) 摘自数邦客(2020.3.30发布) 负压救护车 人工智能机器人:如送餐机器人、消毒机器人、服务型机器人,及机器人呼叫等呼吸道病毒核配检测试剂盒…

nagios npc安装后状态为off的解决方法
1、检查ndo2db的进程是不是二个 nagios 16825 0.0 0.1 6784 396 ? Ss 19:05 0:00 /usr/local/nagios/bin/ndo2db -c /usr/l nagios 17032 0.0 0.3 6784 1268 ? S 19:09 0:00 /usr/local/nagios/bin/ndo2db -c 2、检查nagios.log日志看…
C语言extern关键字定义外部变量--Redis源码extern使用
在Redis2.8中有networking.c,这个文件没有networking.h networking.c首先引入redis.h这个头文件 #include "redis.h" 在redis.c一开始就声明了全局变量 /* Global vars */ struct redisServer server; networking.c的createClient函数 redisClient *cr…
深度学习面试必备的25个问题
作者 | Tomer Amit译者 | 弯月,编辑 | 屠敏出品 | CSDN(ID:CSDNnews)在本文中,我将分享有关深度学习的25个问题,希望能够帮助你为面试做好准备。1.为什么必须在神经网络中引入非线性?答…

一分钟了解阿里云产品:先知计划
一、 概述 阿里云发布了各种各样的产品,今天让我们一起来了解下阿里云先知计划吧。 什么是先知计划呢? 先知计划是一个帮助企业建立私有应急响应中心的平台(帮助企业收集漏洞信息)。企业加入先知计划后,可…

C语言的HashTable简单实现
原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现,虽然简单,但是该有的部分都还是有的。 一,访问接口 创建一个hashtable. h…