当前位置: 首页 > 编程日记 > 正文

旷视提双边分支网络BBN:攻坚长尾分布的现实世界任务 | CVPR 2020 Oral


作者 | 旷视研究院

出品 | AI科技大本营(ID:rgznai100)

导读:本文是旷视 CVPR 2020 论文系列解读文章,也是 CVPR 2020 Oral展示论文之一,它揭示了再平衡方法解决长尾问题的本质及不足:虽然增强了分类器性能,却在一定程度上损害了模型的表征能力。针对其不足,本文提出了一种针对长尾问题的新型网络框架——双边分支网络(BBN),以兼顾表征学习和分类器学习。通过该方法,旷视研究院在细粒度识别领域权威赛事 FGVC 2019 中,获得 iNaturalist Challenge 赛道的世界冠军。该网络框架的代码已开源。

导语

随着深度卷积神经网络(CNN)研究的推进,图像分类的性能表现已经取得了惊人的进步,这一成功与高质量的大规模可用数据集密不可分,比如 ImageNet ILSVRC 2012、MS COCO 和 Places 数据集。这些视觉识别数据集的类别标签分布是大致均匀的,相对而言,真实世界的数据集却总是存在偏重情况,呈现出长尾分布模式,即少量类别(头部类别)具有大量数据,而大部分类别(尾部类别)仅有少量样本,如图 1 所示。

另外,计算机视觉社区在近些年中构建出了越来越多反映真实难题的长尾数据集,如 iNaturalist、LVIS、RPC。当处理这样的视觉数据时,深度学习方法不足以取得优良的识别精度,原因有二:一是深度模型本身就需要大量数据,二是长尾数据分布存在极端的类别不平衡问题。

图 1:真实世界的大规模数据集往往会展现出长尾分布现象

长尾分布这种极端不平衡会导致分类训练难以得到很好的效果,尤其是对于长尾类别而言。类别再平衡策略可让模型在长尾问题上的准确度表现更好。本文揭示出,这些策略的机制是显著提升分类器学习,但同时又会在一定程度上出人意料地损害已学的深度特征的表征能力。

如图 1 所示,经过再平衡之后,决策边界(黑色实弧线)往往能更准确地分类尾部数据(红色方块)。但是,每个类别的类内分布会变得更加松散。在过去的研究中,处理长尾问题的显著且有效的方法是类别再平衡,它可以缓解训练数据的极端不平衡问题。

一般来说,类别再平衡方法有两类:1)再采样方法,2)代价敏感再加权方法。这些方法可对 mini-batch 中的样本进行再采样或对这些样本的损失进行重新加权,以期望能够和测试分布维持一致,从而实现对网络训练的调整。因此,类别再平衡可有效地直接影响深度网络的分类器权重更新,即促进分类器的学习。正是因为这个原因,再平衡方法可以在长尾数据上取得令人满意的识别准确度。

但是,尽管再平衡方法最终能得到良好的预测结果,这些方法仍会产生不良影响,即会在一定程度上出人意料地损害深度特征的表征能力。

简介

在本文中,旷视研究院首先通过验证实验,对前述论点进行了证明。具体来说,为了解析再平衡策略的工作方式,把深度网络的训练过程分为两个阶段:1)表征学习;2)分类器学习。

表征学习阶段,旷视研究院采用的传统的训练方法(交叉熵损失)、再加权和再采样这三种学习方式来习得各自对应的表征。

然后,在分类器学习阶段,采用的做法是先固定在前一阶段收敛的表征学习的参数(即主干网络层),然后再从头开始训练这些网络的分类器(即全连接层),这个过程同样使用了上述三种学习方法。

图 2:在 CIFAR-100-IR50 和 CIFAR-10-IR50 这两个大规模长尾数据集上采用不同的表征学习和分类器学习方法所得到的 top-1 错误率

图 2 给出了在 CIFAR-100-IR50 和 CIFAR-10-IR50 这两个基准长尾数据集上所得到的预测错误率。很明显,当表征学习的方式固定时,再平衡方法可以合理地实现更低的错误率,这表明它们确实可以促进分类器学习。

另一方面,通过固定分类器的学习方式,简单的交叉熵损失相比再平衡策略反而可以取得更低的错误率,这说明再平衡策略在一定程度上损害了表征学习。从该角度出发,旷视研究院提出了一种统一的双边分支网络(BBN),可以同时兼顾表征学习和分类器学习,大幅提升了长尾问题的识别性能。

如图 3 所示,BBN 模型由两个分支构成,即常规学习分支(Conventional Learning Branch)和再平衡分支(Re-Balancing Branch)。总体而言,BBN 的每个分支各自执行其表征学习和分类器学习任务。顾名思义,常规学习分支为原始数据分布配备了典型的均匀采样器(Uniform Sampler),可用于为识别任务学习通用的表征;再平衡分支则耦合了一个逆向的采样器(Reversed Sampler),其目标是建模尾部数据。

接着,再通过累积学习(Cumulative Learning)将这些双边分支的预测输出聚合起来。累积学习使用了一个自适应权衡参数 α,它通过「适应器(Adaptor)」根据当前训练 epoch 的数量自动生成,可以调节整个 BBN首先从原始分布学习通用的特征,然后再逐渐关注尾部数据。此外,α 并没有阶跃式地从1变为0,而是逐渐降低,使得两个分支在整个训练过程可以同时维持学习状态,让模型在迭代后期关注尾部数据的同时不损害已习得的通用表征。

论点证明

为探究再平衡策略对表征学习和分类器学习的影响,旷视研究院设计了一个两阶段的验证实验,把深度学习模型解耦为了表征提取器和分类器。

具体来说,第一阶段使用普通的训练方法(即交叉熵)或再平衡方法(即再加权/再采样)作为学习方法训练一个分类网络;然后,获取对应于这些学习方法的不同类型的表征提取器。

在第二阶段,固定在前一阶段学习到的表征提取器的参数,再使用前述的三种学习方法从头开始重新训练分类器。如图 2 所示,旷视研究院在 CIFAR-100-IR50 数据集(这是不平衡比为 50 的长尾 CIFAR-100)上通过对照实验对上述论点进行了验证。可以看到,在每个数据集上,基于不同的排列组合可得到 9 组结果。基于此,可得到两个方面的观察结果:

  • 分类器:可以发现,当应用同样的表征学习方法时(比较竖直方向上三个单元格的错误率),RW/RS 的分类错误率总是低于 CE,这是因为它们的再平衡操作会对分类器权重的更新过程进行调整,以与测试分布相匹配;

  • 表征:当应用同样的分类器学习方法时(比较水平方向上三个单元格的错误率),可以惊讶地发现 CE 的错误率总是低于 RW/RS。这说明使用 CE 进行训练可以获得更好的表征,RW/RS 在一定程度上损害了习得的深度特征的表征能力。

此外,如图 2 左图所示,通过在表征学习上应用 CE 和在分类学习上应用 RS,在 CIFAR-100-IR50 的验证集上得到的错误率最低。

方法

如图 3 所示,BBN 模型包含 3 个主要组件:1)常规学习分支,2)再平衡分支,3)累积学习策略。

图 3:BBN 框架示意图

具体来说,常规学习分支和再平衡分支分别用于表征学习和分类器学习 。这两个分支使用了同样的残差网络结构,除最后一个残差模块,两个分支的网络参数是共享的。旷视研究院为这两个分支分别配备了均匀采样器和逆向采样器,得到两个样本 (x_c, y_c) 和 (x_r, y_r) 作为输入数据,其中前者用于常规学习分支,后者用于再平衡分支。将这两个样本送入各自对应的分支后,通过卷积神经网络和全局平均池化(GAP)得到特征向量

在这之后是旷视研究院专门设计的累积学习策略,可在训练阶段在两个分支之间逐渐切换学习的「注意力」。具体的做法是使用一个自适应权衡参数 α 来控制 f_c 和 f_r 的权重,经过加权的特征向量 αf_c 和 (1−α)f_r 将分别被发送给分类器,然后再通过逐元素累加的方式将其输出整合到一起。这个输出 logit 的公式为:

其中是预测得到的输出,即。对于每个类别 i ∈ {1, 2, . . . , C},softmax 函数可通过下式计算该类别的概率:

然后,用 E(·, ·) 表示交叉熵函数,并将输出概率分布记为。则 BBN 模型的加权交叉熵分类损失为:

而且,能以端到端方式训练整个 BBN 网络模型。关于双边分支结构的设计与累积学习策略的细节信息请参阅原论文。

实验

旷视研究院在不平衡比分别为 10、50、100 的三个长尾 CIFAR 数据集上进行了广泛的实验,结果如下所示:

表 1 在不同设置的 CIFAR 数据集上比较了 BBN 模型与其它多种方法。

表 1:在长尾 CIAFR-10 和 CIFAR-100 数据集上的 ResNet 的 top-1 错误率

可以看到,新提出的 BBN 模型在所有数据集上均取得了最佳结果,对比的方法包括之前最佳的方法 CB-Focal 和 LDAM-DRW。

表 2 则给出了在 iNaturalist 2018 和 iNaturalist 2017 这两个大规模长尾数据集上的结果。

表 2:ResNet-50 在 iNaturalist 2018 和 iNaturalist 2017 上的 top-1 错误率

和前面的结果一样,新提出的 BBN 仍然更优。此外,由于 iNaturalist 数据集规模很大,旷视研究院还使用 2× 调度器进行了实验。同时,为了公平地比较,研究者也使用 2× 调度器训练了之前最佳的 LDAM-DRW。可以明显看到,使用 2× 调度器的 BBN 的表现显著优于未使用 2× 调度器的 BBN 的表现。此外,BBN(2×) 的表现也明显优于 LDAM-DRW (2×)。

结论

本文首先探索了类别再平衡策略对深度网络的表征学习和分类器学习产生的影响,并揭示出这些策略虽然可以显著促进分类器学习,但也会对表征学习产生一定的负面影响。基于此,本文提出了一种带有累积学习策略的双分支网络 BBN,可以同时考虑到表征学习与分类器学习,大幅提升长尾识别任务的性能。

经过广泛的实验验证,旷视研究院证明 BBN 能在长尾基准数据集上取得最佳的结果,其中包括大规模的 iNaturalist 数据集。未来,旷视研究院还将继续探索 BBN 模型在长尾检测问题上的应用,并希望通过 BBN 开源项目促进社区在长尾问题方面的探索和研究。

论文名称:BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition

论文链接:http://www.weixiushen.com/publication/cvpr20_BBN.pdf

开源代码:https://github.com/Megvii-Nanjing/BBN


参考文献

  • Yin Cui, Menglin Jia, Tsung-Yi Lin, Yang Song, and Serge Belongie. Class-balanced loss based on effective number of samples. In CVPR, pages 9268–9277, 2019.

  • Haibo He and Edwardo A Garcia. Learning from imbalanced data. IEEE Transactions on Knowledge and Data Engineering, 21(9):1263–1284, 2009.

  • Chen Huang,Yining Li,Chen ChangeLoy, and Xiaoou Tang. Learning deep representation for imbalanced classification. In CVPR, pages 5375–5384, 2016.

  • Xiu-Shen Wei, Peng Wang, Lingqiao Liu, Chunhua Shen, and Jianxin Wu. Piecewise classifier mappings: Learning fine-grained learners for novel categories with few examples. IEEE Transactions on Image Processing, 28(12):6116–6125, 2019.

  • Nathalie Japkowicz and Shaju Stephen. The class imbalance problem: A systematic study. Intelligent Data Analysis, 6(5):429–449, 2002.

  • Xiu-Shen Wei, Quan Cui, Lei Yang, Peng Wang, and Lingqiao Liu. RPC: A large-scale retail product checkout dataset. arXiv preprint arXiv:1901.07249, pages 1–24, 2019.

  • Mengye Ren, Wenyuan Zeng, Bin Yang, and Raquel Urtasun. Learning to reweight examples for robust deep learning. In ICML, pages 1–13, 2018.

  • Li Shen, Zhouchen Lin, and Qingming Huang. Relay back-propagation for effective learning of deep convolutional neural networks. In ECCV, pages 467–482, 2016.

  • Yu-Xiong Wang, Deva Ramanan, and Martial Hebert. Learning to model the tail. In NeurIPS, pages 7029–7039, 2017.

  • Xiu-Shen Wei, Jian-Hao Luo, Jianxin Wu, and Zhi-Hua Zhou. Selective convolutional descriptor aggregation for fine-grained image retrieval. IEEE Transactions on Image Processing, 26(6):2868–2881, 2017.

【end】◆精彩推荐◆「AI应用技术大师课」是CSDN发起的“百万人学AI”倡议下的重要组成部分,4月份AI大师课以线上技术峰会的形式推出,来自微软、硅谷TigerGraph、北邮等产学界大咖就图计算+机器学习,语音技术、新基建+AI、AI+医疗等主题展开分享,扫描下方二维码免费报名,限时再送299元「2020AI开发者万人大会」门票一张。
推荐阅读
  • 用于单图像超分辨率的对偶回归网络,达到最新SOTA | CVPR 2020

  • 悼念前端大牛司徒正美

  • 罗永浩抖音直播首秀:3小时1.1亿;微软曝三屏折叠机专利;Linux Mint 20仅提供64位版本

  • “死扛”高并发大流量,大麦抢票的技术涅槃之路

  • 比特币由"蒙面人"创造,那下一个"比特币"还会由蒙面人创造吗?

  • 在容器上构建持续部署及最佳实践初探

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

kissy core

http://code.google.com/p/kissy/转载于:https://www.cnblogs.com/pinnasky/archive/2010/07/07/1772646.html

VIM多窗口编辑

vim提供多窗口编辑的功能,可以简化复合的编辑任务。vim的多窗口并不是说在终端上启动多个vim实例。启动多窗口编辑 vim的多窗口是动态的,可以开始编辑时就打开多窗口,也可以工作时随时增加新窗口,或者删除一个窗口。$ …

从Nginx绑定80端口学套接字编程

《UNIX网络编程(卷1):套接字联网API(第3版)》 ngx_connection.c ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle) {int reuseaddr;ngx_uint_t i, tries, failed;ngx_err_t err;ngx_log_t *log;ngx_socket_t …

中国无人机“老炮儿”回忆录

整理 | 夕颜采访嘉宾 | 刘宾,通飞航空总工程师、飞行教员来源 | CSDN(ID:CSDNnews)今天的采访嘉宾有些与众不同,在我的印象中,这是一位不原意用“中国式”讲话与人沟通的人,因为费劲,也只有在回…

一些常用DOS命令

1. gpedit.msc-----组策略2. sndrec32-------录音机3. Nslookup-------IP地址侦测器4. explorer-------打开资源管理器5. logoff---------注销命令6. tsshutdn-------60秒倒计时关机命令7. lusrmgr.msc----本机用户和组8. services.msc---本地服务设置9. oobe/msoobe /a----检查…

linux文本编辑nano

2019独角兽企业重金招聘Python工程师标准>>> Nano命令指南 今天在输命令时,无意中输入了nano,对这个命令不太熟悉,结果不知道如何才能退出,保存,赶快查了一下资料,原来是这样的啊。打开文件与新…

write的奥秘

在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动…

常用的键盘命令

Alt空格C 关闭窗口 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Alt空格N 最小化当前窗口 Alt空格R 恢复最小化窗口 Alt空格X 最大化当前窗口 Alt空格M 移动窗口 Alt空格S 改变窗口大小 AltTab 两个程序交换 Alt255 QQ号中输…

京东智能内容创作算法的演进与实践:基于关键词自动生成摘要

来源 | 京东智联云开发者导读&#xff1a;京东商城背后的 AI 技术能力揭秘&#xff1a; 基于关键词自动生成摘要过去几十年间&#xff0c;人类的计算能力获得了巨大提升&#xff1b;随着数据不断积累&#xff0c;算法日益先进&#xff0c;我们已经步入了人工智能时代。确实&…

【基础复习】二:预处理、const与sizeof

赋值语句 1.i的值为&#xff1f; #include <iostream> using namespace std; int i 1; int main() {int i i; } 解析&#xff1a; 此时main函数内的i是优先考虑局部变量&#xff0c;除非使用作用域符号&#xff0c;否则是和外面值为1的i是无关的。 其次&#xff0c;使用…

使用多线程还是用IO复用select/epoll? epoll 或者 kqueue 的原理是什么?

原作者&#xff1a;蓝形参 原文&#xff1a;http://www.zhihu.com/question/20114168/answer/14024115 使用多线程还是用IO复用select/epoll? 多线程模型适用于处理短连接&#xff0c;且连接的打开关闭非常频繁的情形&#xff0c;但不适合处理长连接。多线程模型默认情况下…

使用大batch优化深度学习:训练BERT仅需76分钟 | ICLR 2020

作者 | Yang You, Jing Li等译者 | 刘畅在海量数据集上训练大型深度神经网络&#xff0c;是非常具有挑战性的。最近&#xff0c;有许多研究均使用大batch随机优化方法来解决此问题。在该研究领域中&#xff0c;目前最杰出的算法是LARS&#xff0c;它通过采用分层自适应学习率&a…

华为AR28-11路由器配置

公司使用华为AR28-11路由器&#xff0c;宽带接入。现使用2M光纤接入&#xff0c;地址&#xff1a;124.117.254.* 255.255.255.252.公司电脑使用192.168.1.0 255.255.255.0 网段地址参考配置#version 5.20, Release 1205P02, Basic#sysname H3C#domain default enable system#vl…

PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据

现在数据库里面有一组数据&#xff0c;我们将它按照不同的难度进行分sheet. 首先我们需要写一个mysql的配置文件- db.config.php(utf-8编码) : <?php $dbconfig array( host > 127.0.0.1, username > root, password > , database > xxx, charset &…

C语言清空输入缓冲区的N种方法对比

C语言中有几个基本输入函数&#xff1a; //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fgets(char * restrict s, int n, FILE * restrict stream); char *gets(char *s);//可能导致溢出&#xff0c;用fgets代替之…

低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法

作者 | 罗人千、谭旭、王蕊、秦涛、陈恩红、刘铁岩 来源 | 微软研究院AI头条&#xff08;ID:MSRAsia&#xff09;编者按&#xff1a;近年来&#xff0c;神经网络结构搜索&#xff08;Neural Architecture Search, NAS&#xff09;取得了较大的突破&#xff0c;但仍然面临搜索耗…

《虚拟化与云计算》读书感(三)数据中心的概述

看了《虚拟化与云计算》的第一章第一节‘数据中心的概述’。在我读这一节开始&#xff0c;我看到这个题目的时候总是联想到类似谷歌数据中心一类的东西&#xff0c;多个硬盘或者服务器的堆叠。然后整来几个集装箱把这些堆叠的服务器塞进去&#xff0c;然后供用户使用。然而自从…

golang笔记——struct

1、定义一个结构体 type User struct {userid intusername stringpassword string } 2、初始化一个结构体 有两种情况&#xff0c;一是得到结构体的对象&#xff0c;一是得到结构的对象指针&#xff0c;分别有三种方式&#xff1a; //第1种方式&#xff0c;先声明对象&#x…

posix_memalign

翻译的<Linux system programming> 第八章 二 ;《Linux System Programming》中文版 对齐 数据的对齐(alignment)是指数据的地址和由硬件条件决定的内存块大小之间的关系。一个变量的地址是它大小的倍数的时候&#xff0c;这就叫做自然对齐(naturally aligned)。例如&…

ubuntu 10.04 安装eclipse及其中文语言包

1.安装eclipsesudo apt-get install eclipse2.暗自中文语言包点 击下载中文语言包&#xff08;http://www.eclipse.org/downloads/download.php?file /technology/babel/babel_language_packs/BabelLanguagePack-eclipse- zh_3.5.0.v20091121043401.zip&urlhttp://d2u376u…

世界顶级赛事百万座位如何做到票务限时匹配?

作者 | 阿里文娱技术专家 展恒出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;背景麦座&#xff0c;是大麦旗下的票务系统。去年&#xff0c;我们承接了 2019 年国际篮联篮球世界杯&#xff08;2019FBWC&#xff09;&#xff0c; 核心目标是完成三种套票的运营及售卖…

[转](不理想)Ubuntu下更改主显示器

参考链接&#xff1a;http://www.cnblogs.com/feng_013/archive/2012/03/05/2380111.html 查看显示器信息&#xff1a; fdmfdm-OptiPlex-780:~$ xrandr 设置主显示器 fdmfdm-OptiPlex-780:~$ xrandr --output HDMI1 --auto --primary 设置副显示器在主显示器右边 fdmfdm-OptiPl…

Nginx源码分析--数据对齐posix_memalign和memalign函数

posix_memalign函数() /* * 背景&#xff1a; * 1&#xff09;POSIX 1003.1d * 2&#xff09;POSIX 标明了通过malloc( ), calloc( ), 和 realloc( ) 返回的地址对于 * 任何的C类型来说都是对齐的 * 功能&#xff1a;由posix_memalign分配的内存空间&…

不要一辈子靠技术生存

今天看了一篇文章,感受挺深的,人的一生不能一辈子靠技术生存,尽管你的技术能力很强.(文章转载出处忘记,有哪位朋友知道的提醒一下)一、 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇&#xff0c;你千万更不要认为哪些从事 市场开发&#xff0c;跑腿的人&am…

中国顶尖的技术社区们在一个群里,会聊什么…

* 文中表情包图片来自网络

矩阵中路径数目问题

在如下8*6的矩阵中&#xff0c;请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格&#xff0c;并且不能经过P。 8*6的矩阵&#xff0c;从左下角A到右上角B&#xff0c;一共需要走12步&#xff0c;其中5步向上&#xff0c;7步向右&#xff0c;因此总的走法一共…

RANet : 分辨率自适应网络效果和性能的best trade-off | CVPR 2020

作者 | VincentLee来源 | 晓飞的算法工程笔记简介深度CNN带来了性能提升的同时也带来了过高的计算量&#xff0c;许多研究放在了如何进行网络加速上面&#xff0c;其中比较直接的是根据样本难易程度进行自动调整的自适应网络。基于对自适应网络的研究&#xff0c;论文提出了自适…

strcpy,memcpy和memmove区别

strcpy和memcpy都是标准C库函数&#xff0c;它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制&#xff0c;并且它不仅复制字符串内容之外&#xff0c;还会复制字符串的结束符。 已知strcpy函数的原型是&#xff1a;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 读取数据库内容并以二维数组按指定列输出实例的文章&#xff0c;希望大家能够喜欢!<?php$host "localhost"; //主机名$user "root"; //mysql用户名$passwor…