ECCV2020 | 解决长尾分布问题新方法,解耦类别特征并实现空间增广

这篇文章收录于ECCV2020,针对的是分类任务中的长尾分布问题。具体而言,本文的方法将每个类的特征解耦成类特有和类共有特征,将尾部类的类特有特征和头部类的类共有特征进行融合,从而实现特征空间的增广。整体方法简单高效,值得学习。

论文地址:https://arxiv.org/abs/2008.03673

现实世界的数据通常遵循长尾分布,也就是说每个类的数量通常是不同的。例如,数据集头部类中样本数很多,而尾部类中样本数很少。然而我们希望模型是能够公平的表示整个数据集,而不是偏向某些样本多的类。解决长尾问题的各种方法中,类平衡损失、重采样和数据增广是比较常见的方法。但是对于尾部类来说,我们不得不考虑一些其他知识来弥补丢失的信息。在本文中,作者提出了一种新的方法来解决长尾问题——在特征空间中将头部类的特征增广到尾部类特征上。具体来说是将每个类的特征解耦成类特有和类共有特征,将尾部类的类特有特征和头部类的类共有特征进行融合,从而实现特征空间的增广。该方法在iNaturalist, ImageNet-LT, Places-LT 和长尾的CIFAR集四个数据集上都取得了不错的效果。

简介

长尾分布广泛存在于视觉任务中。如图所示在分类和检测任务中存在长尾分布问题。

长尾分布带来的主要问题是在训练时,因为尾部类数据量少,统计信息不够丰富,因而模型并不能很好的表达尾部类。现有的方法主要有数据增广,下采样,过采样,和平衡损失函数的构建等。但是这些方法当尾部类数量极少时,性能并不理想。如下图所示。

本文提出了在特征空间中,将头部类的信息迁移到尾部类上,具体方法如下。

本文方法

本文首先用CAM方法提取注意力区域,得到每个类的类特有特征和类共有特征。之后将尾部类的类特有特征和头部类的类共有特征进行融合。

首先来介绍一下CAM(Class Activation Map)。

M是我们得到的高亮图。c是类别,x,y是像素位置,k是通道,w是权重,f是特征向量。当M越大,意味着x,y处的特征对于c这一类别来说越发重要。之后我们将M归一化到0-1,给一个阈值,通过下面的公式,我们就能得到类特有特征(s代表specific)和类共有特征(g代表generic)。

其中,代表Hadamard乘积,而当x大于等于0时,sgn(x)=1,小于0时,sgn(x)=0。

之后我们来看整体的训练流程。第一步是进行全部数据的训练,得到提取特征的子网络和基础分类器,用于之后的步骤中。第二步是根据刚刚得到的提取特征网络和分类器,以及之前的CAM,进行尾部类的增广。可以看到,第二步进去一张尾部类图片和一张头部类图片,选取头部类图片时是选取的与尾部类距离较近,容易混淆的头部类(根据置信度排序得到)。

第三步则是微调。注意第三步和第二步是同步进行的,统称为第二阶段。第二阶段整体算法流程如下。

实验与结果

数据集: Long-tailed CIFAR-10 and CIFAR-100, ImageNet-LT and Places-LT Dataset,iNaturalist 2017 and 2018.

对比实验:

消融实验

结果分析

更多细节可参考论文原文。

猜你喜欢

转载自blog.csdn.net/update7/article/details/108402559