TransFormer文章太多了 又搬了一个哦
一个使网络能够从训练批次(min-batch)中学习样本关系的简单有效并且即插即用Transformer模块,Batch TransFormer。其在10多个数据集上面展示了稳定的提升,包括了长尾分布,组合零样本学习,领域泛化,领域适应,对比学习。
当前的深度神经网络尽管已经取得了巨大的成功,但仍然面临着来自于数据稀缺的各种挑战,比如数据不平衡,零样本分布,域适应等等。当前已经有各种方法通过样本之间的关系去针对这些问题。然而这些方法并没有去挖掘内在的网络结构来使网络模型建模关系。受这些启发,我们提出了一个使网络能够从训练批次(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。
论文&代码
BatchFormer: https://arxiv.org/pdf/2203.01522.pdf(CVPR2022)
BatchFormerV2: https://arxiv.org/pdf/2204.01254.pdf
Code (V1 & V2): https://github.com/zhihou7/BatchFormer
尽管深度学习已经取得了巨大的成功,但是它严重依赖于大量的数据。对大量训练数据的依赖限制了深度模型的实际应用。因此,怎么改善深度模型在数据稀缺的场景下的泛化能力受到了广泛的关注,比如长尾学习,少样本学习,零样本学习,领域泛化。尽管这样,当前仍然缺乏一种简单,统一的探索样本关系的框架来针对各种样本稀缺的问题。一个直观的例子可以见图1.我们可以利用不同样本的相似性和共享的part来改善网络的泛化。
尽管没有单独地阐述样本关系,最近的工作已经内在地探索了样本关系通过约束或者知识迁移。一些常见的例子是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维度,展示了一种新的模型结构的可能。
简而言之,我们介绍了一种简单有效的针对数据稀缺的Transformer模块,取名为BatchFormer。我们在超过10个数据稀缺数据,5个任务上面展示了方法的有效性。更进一步,我们提出一个BatchFormerV2版本,将BatchFormer泛化到一般的目标检测和分割任务上面,即插即用地显著改善了DETR,Deformable-DETR,Conditional DETR,SMCA的效果。
BatchFormer 是一个即插即用的模块,通过探索样本关系对促进表示学习。如图3所示,我们在特征提取器后面插入TransFormer模块。特别地,我们的Transformer是沿着batch dimension, 也就是说我们把整个batch看做一个sequence。再这里,我们移除了Transformer的positional embedding以达到位置的不变性学习。与此同时,我们在Transformer前后都加入了一个分类器,注意,这两个分类器是共享的,通过这个共享分类器,使得我们能够保持训练和测试的batch不变性。
BatchFormer可以通过简单的几行代码实现,如下图所示,
我们将BatchFormer泛化为一个更通用的模块,来促进一般的计算机视觉任务,比如目标检测和分割,图像分类。具体的,我们将BatchFormer插入到两层Visual Transformer之间,在每个空间的像素点上面进行Batch Transformer 操作.同时我们将每个空间位置上面的BatchFormer共享,如下图所示.
同时,我们介绍了一种新的双分支模式,从BatchFormer前开始,将每个Batch复制一份,让一份batch的数据传入原有的网络模块中,让另外一份batch的数据经过BatchFormer分支。除了BatchFormerV2模块外,其他所有模块参数,我们在两个分支中全部共享。这里的目的同共享分类器一致:让模型学到一个batch 不变的特征。模型框架如下,
BatchFormerV2也可以通过简单的几行代码实现如下,
从模型的优化上,BatchFormer结构改变了梯度传播的方向,使得任意一个样本的特征会贡献到所有其他样本的loss计算上面。因此任意一个loss算出来的梯度,都会回传到基于其他所有样本计算的梯度上面。从样本的增强角度上面看,BatchFormer可以看成是隐式地增加了数据。每一个样本特征可以看成是其他样本的虚拟特征[3]。这样BatchFormer实际上大大增强了样本,所以能够有效地改善数据稀缺的问题。
实验结果
这里我们主要展示了我们核心的实验结果,比如目标检测,全景分割,长尾识别,对比学习,域泛化,等等。更多任务的实验和消除分析请参见我们的论文和附录。
我们发现,BatchFormer能够即插即用到DETR以及DETR派生出来的各种方法上面。并且取得了超过一个点的一致性的提升。
我们在全景分割上面,提高了DETR 1.7%。我们注意到BatchFormerV2主要提升了stuff的类别。我们的可视化实验也发现,BatchFormerV2能够更加注意到object。
从实验的结果看,BatchFormer主要提升了few shot的类别。在长尾分布中,我们认为BatchFormer平衡了数据。
BatchFormer一致地改善了MoCo-V2和V3.
领域泛化 whaosoft aiot http://143ai.com
图像分类
Batch Size
我们基于长尾识别数据集(ImageNet-LT)进行了消除实验。实验中,我们发现batch size 对于模型性能的影响较小。
我们按照实例的频数降序提取出每个类别的在训练样本中对其他样本的梯度均值。我们发现稀有类别的对其他样本的梯度明显更大。这个实验说明,BatchFormer实际上是通过梯度传播改善了模型对于不平衡数据的学习。
我们基于Grad-CAM可视化了特征图。第二行是我们的基线,第三行是加上Transformer模块后的结果。我们发现在长尾分类的稀有样本中,当场景简单的时候模型会注意到物体的更多细节部分,当场景复杂的时候,模型会学会忽略噪音像素而专注到具体物体中。
第二行是我们的基线(DETR),第三行是DETR加上我们提出的方法的结果。我们注意到BatchFormerV2会显著地改善物体分割的细节。比如上图中桌子脚,飞机的轮子和浴缸边缘。最后一个图片里面展示BatchFormerV2能够分割出细小的目,比如草地。
总结与展望
在这篇文章中,我们介绍了一种简单有效,即插即用的Transformer模块,我们称之为BatchFormer。BatchFormer将Transformer应用到网络分类器前一层的batch维度,来挖掘样本之间的关系,比如相似性,部分共享性等等。同时我们介绍了一种共享分类器策略,这样我们能达到一种batch 的不变性,从而在测试的时候移除BatchFormer,使网络不增加任何计算和内存的负载。更进一步地,我们介绍一个更一般化的版本,BatchFormerV2。BatchFormerV2是一个对Transformer结构即插即用的方法。我们的实验展示BatchFormer在长尾识别,组合零样本学习,域泛化都取得了当前最好的效果。我们在超过15个数据集,7个任务上面展示了BatchFormer的有效性。在接下来,我们将继续基于样本关系对特征的表示学习和模型架构进行探索。