BatchFormer:有效提升数据稀缺场景的模型泛化能力|CVPR2022

6266cc3e1fea631a4d65f3e65f278ecb.png

文 | 侯志@知乎(已授权)
源 | 极市平台

d1e4f03db4ac0c31147cfe8764f0c084.png摘要be6c64821e3035dafcacf2638531284b.png

当前的深度神经网络尽管已经取得了巨大的成功,但仍然面临着来自于数据稀缺的各种挑战,比如数据不平衡,零样本分布,域适应等等。

当前已经有各种方法通过样本之间的关系去针对这些问题。然而这些方法并没有去挖掘内在的网络结构来使网络模型建模关系。

受这些启发,我们提出了一个使网络能够从训练批次(min-batch)中学习样本关系的简单有效并且即插即用Transformer模块,Batch TransFormer (BatchFormer)。

具体地,BatchFormer应用于每个训练批次数据的batch维度来隐式地探索样本关系。BatchFormer使每个批量的样本间能够互相促进学习,比方说,在长尾识别中,利用频繁类别数据促进稀有类别的样本的学习。

更进一步地,由于在训练的时候在batch维度引用了Transformer,训练和测试的数据分布不再一致了。

因此我们提出一种共享分类器的策略,来消除在训练和测试的分布偏差从而达到Batch不变学习,进而使我们在测试的时候能够移除BatchFormer。

这种共享策略使BatchFormer在测试时不增加任何计算负载。不需要任何额外的策略,BatchFormer 在10多个数据集上面展示了稳定的提升,包括了长尾分布,组合零样本学习,领域泛化,领域适应,对比学习

最后但是更重要的,基于DETR,我们进一步将BatchFormer扩展到像素级别的任务上面,包括目标检测,全景分割,图像分类。

改进版的BatchFormer能够即插即用于DETR, Deformable DETR, Conditional DETR, SMCA, DeiT

Paper:

BatchFormer:
https://arxiv.org/pdf/2203.01522.pdf(CVPR2022)

BatchFormerV2:
https://arxiv.org/pdf/2204.01254.pdfCode

(V1 & V2):
https://github.com/zhihou7/BatchFormer

1450b1eaee092a6d4efe38581d8f230b.png介绍94f30f5f025f1a4feb80faba05b41add.png

尽管深度学习已经取得了巨大的成功,但是它严重依赖于大量的数据。对大量训练数据的依赖限制了深度模型的实际应用。

因此,怎么改善深度模型在数据稀缺的场景下的泛化能力受到了广泛的关注,比如长尾学习,少样本学习,零样本学习,领域泛化。

尽管这样,当前仍然缺乏一种简单,统一的探索样本关系的框架来针对各种样本稀缺的问题。

一个直观的例子可以见图1.我们可以利用不同样本的相似性和共享的part来改善网络的泛化。

758d04514468bb758312110e2fc84114.jpeg
▲图1:样本关系的示例.鸟和鸡具有形状上的相似性。并且他们共享着两条腿的特性。

尽管没有单独地阐述样本关系,最近的工作已经内在地探索了样本关系通过约束或者知识迁移。一些常见的例子是mixup[3],copy-paste[4],crossgrad[5],和组合学习[6]。

这些方法内在地利用样本间存在相似关系和共享部分的关系来增强数据约束模型。

另外一种方式是知识迁移,比如说1)在频繁类别和稀有类别之间[7],2)从已见类别到未见[8],3)已知域和未知域[9].然而这些方法是从网络的输入或者输出来探索关系,没有设计网络内部结构来学习到样本关系,更没有在batch维度进行数据的协同学习。

在这篇文章,我们介绍一种网络模块作用到Batch维度上去探索样本关系。

然而,训练和测试的不一致(测试的时候,不会总有一个样本)使网络并不容易在batch维度学习到样本关系。

因为我们在测试的时候,经常会遇到没有batch的数据。一个经典的例子是Batch Normalization。

Batch Normalization总是保留着mini-batch统计出的均值和方差,来归一化测试样本。另外一种方式是使用特征的memory bank 来保留类别的中心,这样来帮助判别稀有和零样本类别. 不同于以上的方式,我们介绍一种全新的简单有效的模块来通过利用结构的优势探索样本关系对于表示学习的帮助。

具体地,我们尝试在batch维度上面引入Transformer结构来建模样本关系。在这里,我们主要启发与图结构,没有positional embedding时,Transformer也可以看做是一个全连接图网络。

我们把这种模块称为Batch Transformer 或者BatchFormer。在实现中,我们在分类器和特征提取器之间插入BatchFormer。

此外,为了减少测试和训练的偏移,不同于Batch Normalization和Memory Feature Bank, 我们介绍了一种新的策略,共享分类器:我们在BatchFormer前后引入共享的分类器。

相较于统计的均值方差和Feature back,共享策略能够让我们在测试的时候不增加任何计算和内存的负载。

尽管加入共享分类器可以使得网络能够有效地改善数据稀缺的分类问题。然而,对于pixel级别的任务来说,这并不非常适用。

因此我们进一步将BatchFormer泛化到一般化的任务,像目标检测和分割。我们将BatchFormer应用到一般的Transformer结构中,比如DETR和DeiT,插入到两层空间Transformer的中间,同时改进共享分类器为双流结构来保证训练和测试的batch不变性。

我们把这个方法称为BatchFormerV2。一个简单的比较Channel Attention[10], Visual Transformer[11] 和BatchFormer可以如图2所示。

我们将Attention结构从通道和空间维度泛化到batch维度,展示了一种新的模型结构的可能。

eedb86973057bd333bcbf7706c9a2dc9.jpeg
▲图2: Channel Attention在通道做attention,Visual Transformer在空间维度上面做attention,而我们的BatchFormer在Batch维度上面做attention。

简而言之,我们介绍了一种简单有效的针对数据稀缺的Transformer模块,取名为BatchFormer。我们在超过10个数据稀缺数据,5个任务上面展示了方法的有效性。

更进一步,我们提出一个BatchFormerV2版本,将BatchFormer泛化到一般的目标检测和分割任务上面,即插即用地显著改善了DETR,Deformable-DETR,Conditional DETR,SMCA的效果。

94f7a9ab68b52c9a881d3fe598218fef.png方法8a74336b7cce2e05947d84b57b61dcd5.png

BatchFormer

BatchFormer 是一个即插即用的模块,通过探索样本关系对促进表示学习。

如图3所示,我们在特征提取器后面插入TransFormer模块。

特别地,我们的Transformer是沿着batch dimension, 也就是说我们把整个batch看做一个sequence。

再这里,我们移除了Transformer的positional embedding以达到位置的不变性学习。

与此同时,我们在Transformer前后都加入了一个分类器,注意,这两个分类器是共享的,通过这个共享分类器,使得我们能够保持训练和测试的batch不变性。

ab55c26728e32bc34f7ab1c389295e34.jpeg
▲图3:模块示意图,我们在分类器前一层插入一个Transformer Encoder模块。该模块作用于Batch维度,而不是空间维度。同时在Transformer前后共享分类器。

BatchFormer可以通过简单的几行代码实现,如下图所示,

81cb855f057eb643e5edf6f548bb0860.jpeg

BatchFormerV2

我们将BatchFormer泛化为一个更通用的模块,来促进一般的计算机视觉任务,比如目标检测和分割,图像分类。

具体的,我们将BatchFormer插入到两层Visual Transformer之间,在每个空间的像素点上面进行Batch Transformer 操作.同时我们将每个空间位置上面的BatchFormer共享,如下图所示.

5b024c8d6aaabcc801f6b4ffac57799e.jpeg
▲图4:BatchFormerV2空间维度共享图

同时,我们介绍了一种新的双分支模式,从BatchFormer前开始,将每个Batch复制一份,让一份batch的数据传入原有的网络模块中,让另外一份batch的数据经过BatchFormer分支。

除了BatchFormerV2模块外,其他所有模块参数,我们在两个分支中全部共享。这里的目的同共享分类器一致:让模型学到一个batch 不变的特征。模型框架如下,

277d288e0d562b6df354fa1230b4482b.jpeg
▲图5: BatchFormerV2双分支框架图。BatchFormerV2分支加入了BatchFormer模块,而原有的分支保持不变。两个分支输入的数据是一样的。

BatchFormerV2也可以通过简单的几行代码实现如下,

9f39c669203336615ad0bd87c970b216.jpeg

梯度分析

从模型的优化上,BatchFormer结构改变了梯度传播的方向,使得任意一个样本的特征会贡献到所有其他样本的loss计算上面。

因此任意一个loss算出来的梯度,都会回传到基于其他所有样本计算的梯度上面。从样本的增强角度上面看,BatchFormer可以看成是隐式地增加了数据。

每一个样本特征可以看成是其他样本的虚拟特征[3]。这样BatchFormer实际上大大增强了样本,所以能够有效地改善数据稀缺的问题。

ba2c783378d7746eecc4f4d1fce85f3a.jpeg
▲图6:BatchFormer梯度回传解析图

fea680d2c09e2ecd906ab3a08eebaaa9.png实验结果338c97061afb958eee43b2e0ed9a113c.png

这里我们主要展示了我们核心的实验结果,比如目标检测,全景分割,长尾识别,对比学习,域泛化,等等。更多任务的实验和消除分析请参见我们的论文和附录。

目标检测

02c631b1593c039a12fd37fd8087221b.jpeg

我们发现,BatchFormer能够即插即用到DETR以及DETR派生出来的各种方法上面。并且取得了超过一个点的一致性的提升。

全景分割

95f98d13c20029c05fda684f969579a0.jpeg

我们在全景分割上面,提高了DETR 1.7%。我们注意到BatchFormerV2主要提升了stuff的类别。我们的可视化实验也发现,BatchFormerV2能够更加注意到object。

长尾分布

6247c4e7bacf92a9143045af9d860550.jpegfc36d3e827b43274b95cf471358fbc84.jpeg

从实验的结果看,BatchFormer主要提升了few shot的类别。在长尾分布中,我们认为BatchFormer平衡了数据。

自监督学习

a06cf4ea7ec069fbdfc9557b0d00f3fd.jpeg

BatchFormer一致地改善了MoCo-V2和V3.

组合零样本学习

00eb2c3ce7c7bf275db6e8718129a2ad.jpeg

领域泛化

6eb1ca4da8a0c4557511f2d4828cc1e3.jpeg

图像分类

826683bb9d523e7eb21180334bc2521a.jpeg95ee47df63a5e2ed6044f1639463b5af.jpeg

消除实验

Batch Size

7aded8e993612e255ebcd1ade3364cc1.jpeg

我们基于长尾识别数据集(ImageNet-LT)进行了消除实验。实验中,我们发现batch size 对于模型性能的影响较小。

梯度分析

ac61ce27129d1c50d3817c149f7abb75.jpeg

我们按照实例的频数降序提取出每个类别的在训练样本中对其他样本的梯度均值。我们发现稀有类别的对其他样本的梯度明显更大。这个实验说明,BatchFormer实际上是通过梯度传播改善了模型对于不平衡数据的学习。

be3dd687fa57e030007d99975453596d.png可视化分析934e6339fbcc632f52980f25e2ee9f3d.png

Grad-CAM 可视化

5bdf428bd2ec6bb2961e2e241a66c434.jpeg

我们基于Grad-CAM可视化了特征图。第二行是我们的基线,第三行是加上Transformer模块后的结果。

我们发现在长尾分类的稀有样本中,当场景简单的时候模型会注意到物体的更多细节部分,当场景复杂的时候,模型会学会忽略噪音像素而专注到具体物体中。

全景分割

86c6852f8a2d94238c6915ec69aa2e88.jpeg

第二行是我们的基线(DETR),第三行是DETR加上我们提出的方法的结果。

我们注意到BatchFormerV2会显著地改善物体分割的细节。

比如上图中桌子脚,飞机的轮子和浴缸边缘。最后一个图片里面展示BatchFormerV2能够分割出细小的目,比如草地。

eeb5d935bf88b77cc79ee199ecc3ba21.png总结与展望51e56cbcac9f58fee0adfe589336fab8.png

在这篇文章中,我们介绍了一种简单有效,即插即用的Transformer模块,我们称之为BatchFormer。

BatchFormer将Transformer应用到网络分类器前一层的batch维度,来挖掘样本之间的关系,比如相似性,部分共享性等等。

同时我们介绍了一种共享分类器策略,这样我们能达到一种batch 的不变性,从而在测试的时候移除BatchFormer,使网络不增加任何计算和内存的负载。

更进一步地,我们介绍一个更一般化的版本,BatchFormerV2。BatchFormerV2是一个对Transformer结构即插即用的方法。我们的实验展示BatchFormer在长尾识别,组合零样本学习,域泛化都取得了当前最好的效果。

我们在超过15个数据集,7个任务上面展示了BatchFormer的有效性。在接下来,我们将继续基于样本关系对特征的表示学习和模型架构进行探索。

95716808b17441b1962833f3ecdb3996.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

8e1098e980e5f584a9d1621bd0507e33.png

[1] Hou, Zhi, Baosheng Yu, and Dacheng Tao. "BatchFormer: Learning to Explore Sample Relationships for Robust Representation Learning”. CVPR2022

[2] Hou, Zhi, et al. "BatchFormerV2: Exploring Sample Relationships for Dense Representation Learning." arXiv preprint arXiv:2204.01254 (2022).

[3] Hongyi Zhang, Moustapha Cisse, Yann N Dauphin, and David Lopez-Paz. mixup: Beyond empirical risk minimization. _ICLR_2018

[4] Golnaz Ghiasi, Yin Cui, Aravind Srinivas, Rui Qian, Tsung- Yi Lin, Ekin D Cubuk, Quoc V Le, and Barret Zoph. Simple copy-paste is a strong data augmentation method for instance segmentation CVPR2021

[5] Shiv Shankar, Vihari Piratla, Soumen Chakrabarti, Siddhartha Chaudhuri, Preethi Jyothi, and Sunita Sarawagi. Generalizing across domains via cross-gradient training. In _ICLR_2018

[6] Zhi Hou, Xiaojiang Peng, Yu Qiao, and Dacheng Tao. Visual compositional learning for human-object interaction detection. _ECCV_2020

[7] Ziwei Liu, Zhongqi Miao, Xiaohang Zhan, Jiayun Wang, Boqing Gong, and Stella X. Yu. Large-scale long-tailed recognition in an open world. In _CVPR_2019

[8] MF Naeem, Y Xian, F Tombari, and Zeynep Akata. Learning graph embeddings for compositional zero-shot learning. In _CVPR_2021

[9] Martin Arjovsky, Le ́on Bottou, Ishaan Gulrajani, and David Lopez-Paz. Invariant risk minimization.

[10] Hu, J., Shen, L., Sun, G.: Squeeze-and-excitation networks. CVPR2018

[11] Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., Dehghani, M., Minderer, M., Heigold, G., Gelly, S., et al.: An image is worth 16x16 words: Transformers for image recognition at scale. ICLR2020

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

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

相关文章

程序员面试金典 - 面试题 16.06. 最小差(排序+双指针)

1. 题目 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差 示例: 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出: 3,即数值对…

bigdecimal 保留两位小数_一起聊聊小数的储存和运算

原创: 蜀中亮子 玄说前端 小数运算的问题在 js 中的小数运算中,一直存在着一个问题,比如:0.10.20.30000000000000004 、0.4-0.30.10000000000000003。那么为什么会出现这种情况呢?这种情况又如何解决呢?为什…

从DeepFace到AdaFace,7篇论文讲清人脸识别

人脸识别是现在应用最广泛的视觉技术之一,同时也是前沿研究热点之一。我找来了深耕人脸的朋友张老师,从DeepFace到AdaFace,讲解deepface、facenet、vggface、sphereface、cosface、adaface等论文,给各位做一次人脸识别的系统分享。…

提升方法(Boosting)

文章目录1. 提升方法AdaBoost算法2. AdaBoost算法训练误差分析3. AdaBoost算法的解释4. 提升树5. sklearn 实例提升(boosting)方法是一种常用的统计学习方法,应用广泛且有效。 在分类问题中,它通过改变训练样本的权重&#xff0c…

在两个页面之间传递信息

在asp.net不同页面之间传值的方法主要有三种:(1)用querystring方法:在vs2005中新建asp.net网站(发送端),在页面上添加button,两个TextBox,代码如下:protectedvoidButton1_Click(objectsender, EventArgs e) { string url; u…

英特尔或将大幅裁员

编辑 | David来源 | 新智元受PC业务持续不振影响,曝英特尔计划裁员数千人,可能将影响20%的员工。据知情人士透露,英特尔公司正计划大幅裁员,人数可能达到数千人,以削减成本,应对不景气的个人电脑市场的萎缩…

pandas object转float_25个Pandas实用技巧

本文一共为大家分享25个pandas技巧,此为上篇~显示已安装的版本输入下面的命令查询pandas版本:In [7]:pd.__version__Out[7]:0.24.2如果你还想知道pandas所依赖的模块的版本,你可以使用show_versions()函数:In [9]:pd.show_version…

LeetCode 820. 单词的压缩编码(后缀树)

文章目录1. 题目2. 解题2.1 反转字符串字符查找2.2 后缀树1. 题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其…

sql查询分页

用sql 查询时select top 10 * from Orders order by orderid desc操作时,我们先对查询结果进行ordersby排序 然后才取出其最前边10个使用sql查询分页时的几点思路(举例均从查询第100到120之间20条记录)1.取前120条记录orderby主键&#xff0c…

openstack实例状态错误_Openstack虚机操作总结

1. 概览Openstack作为常见的IAAS服务,其最核心的对象就是虚机实例,而Openstack下支持的虚机操作有很多种,有些是特别常见的虚机操作比如创建虚机、启动虚机、删除虚机等,而有些虚机操作则是针对特定场景下比如出现故障而提供的保护…

神网站PaperWithoutCode:举报无法复现的论文,让一作社死??

文 | 小戏几乎是可以肉眼可见的看到机器学习领域的论文几何级的增长,在铺天盖地的论文雪花纸片般涌来时,灌水、可复现性、工作真实的意义这些概念也伴随着 Paper 的洪水进入了人们的视野。谈及科研,我们总是站在以往研究的基础上,…

仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG)

仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG) WINDWS无限级Ajax菜单树又升级了(1.3版) 对以下BUG进行了修复 1.只能在文字上拖拽(不能从文件夹图标上拖) 2.拖拽后不刷新菜单的BUG(拖拽为子级菜单后,菜单原地不消失的情况。也…

程序员面试金典 - 面试题 08.11. 硬币(背包DP)

文章目录1. 题目2. 解题1. 题目 硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算 n 分有几种表示法。(结果可能会很大,你需要将结果模上1000000007) 示例1:输入: n 5输出:2解释: 有两种方式可以凑成总金额:…

ab的plc跟西门子哪个好些_2020滚筒洗衣机哪个牌子好?想买滚筒洗衣机的看过来!...

滚筒洗衣机哪个牌子好?想买滚筒洗衣机的人越来越多,滚筒洗衣机无疑是现在大多数年轻人更喜欢的款式,颜值高、功能多、追求个性化洗衣操作,滚筒的不伤衣物更温柔对于有真丝雪纺面料衣物的,滚筒洗衣机现在真是越来越智能…

AI开始参与政治选举了??

编 | David 好困源 | 新智元让AI去参加议会选举,能成吗?一个丹麦政党让AI聊天机器人当了领袖,试图在议会中拿下一席,现距离20000个提名的门槛线仅差19988个了。现在的AI能干的事情太多了,写作文、画画、下棋、玩游戏&a…

Linux NAT设定

1:echo "1" >/proc/sys/net/ipv4/ip_forward 或vi /proc/sys/net/ipv4/ip_forward把0改为1,0表示IP FORWARDING功能是关闭,1表示开启。2:iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0/24 -j MASQUERADE &a…

程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)

文章目录1. 题目2. 解题2.1 哈希解法2.2 Trie树1. 题目 设计一个方法,找出任意指定单词在一本书中的出现频率。 你的实现应该支持如下操作: WordsFrequency(book)构造函数,参数为字符串数组构成的一本书get(word)查询指定单词在数中出现的…

加州大学博士生Wendy:谈论文精读与方法创新

最近刷朋友圈,很多童鞋的状态都是,不是在搞科研,就是在搞科研的路上,每日为了科研废寝忘食……每天的生活日常,除了下文献、读文献,就是做实验、写论文,debug,二十多岁的自己看着像三…

小米10pro第二个摄像头下面_小米10至尊纪念版、小米10 Pro对比评测:至尊版“至尊”在哪里?...

在几天前的雷军十周年演讲中,小米10至尊纪念版正式面世,价格刚公布,就引起了不小轰动。在吃瓜群众看来,小米终于迈向了高端,毕竟最贵的版本,售价可以卖到6999元,和三星、苹果旗舰保持在一个水准…

转:程序员每天该做的事

程序员每天该做的事 1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 >> 好记性不如烂笔头。呵呵 2、考虑自己明天应该做的主要工作 把明天要做的事情…