将长尾分布的图像分类问题解耦为表示学习和分类.

在本文中,作者提出了一种解决长尾分布数据集上的图像分类问题的新思路:将模型解耦(decouple)表示学习(representation learning)分类(classification)两个部分。如对常用的ResNeXt分类模型,可以看作一个backbone和一个classifier(通常是最后一层全连接层)。backbone从图像中提取特征;classifier给每个特征不同类别的得分。由于后者对于全连接层是很直观的,因此对模型的这种拆分应该是合理的。

本文的实验过程如下,首先在长尾分布数据集上训练模型,然后通过重采样方法构造一个类别平衡数据集,将模型在数据集上微调并测试性能。通过实验得到以下结论:

  1. 数据不平衡问题并不影响模型(在长尾分布数据集上)学习到高质量的特征表示;
  2. 在类别重采样的数据上进行微调后,模型能获得较好的长尾分布识别能力。

1. Sampling Strategies

首先介绍几种使用重采样方法构造类别平衡样本的采样策略。若数据集共有$C$个类别,第$j$个类别的样本总数为$n_j$,数据集总样本数为$N$;则重采样时采样到第$j$个类别的样本的概率是:

\[p_j = \frac{n_j^q}{\sum_{i=1}^{C}n_i^q}\]

其中$q \in [0,1]$控制重采样的比例。其取值不同对应不同的重采样策略:

\[p_j^{IB} = \frac{n_j}{\sum_{i=1}^{C}n_i} = \frac{n_j}{N}\] \[p_j^{CB} = \frac{1}{\sum_{i=1}^{C}1} = \frac{1}{C}\] \[p_j^{SR} = \frac{n_j^\frac{1}{2}}{\sum_{i=1}^{C}n_i^\frac{1}{2}}\] \[p_j^{PB}(t) = (1-\frac{t}{T})p_j^{IB} +\frac{t}{T}p_j^{CB}\]

2. Fine Tuning

作者使用两阶段(two-stage)的训练方法。首先在原始数据集(类别不平衡数据集)上训练模型(这一步被看作特征学习阶段),然后构造类别平衡数据集,在其上进行微调。下面介绍几种微调方法:

3. 实验分析

作者分析了在不同的重采样策略下、使用不同的微调方法获得的模型性能。即使是最简单的采样策略(IB)和不进行微调的方法(NCM),模型也能获得不错的性能,这说明即使在长尾分布数据集上,模型学习到的特征也具有较高的质量。

下图表示微调不同的结果获得的分类性能。只需要微调classifier便能获得最好的性能。

作者分析了不同类别对应的classifier权重范数(下图左),表明范数大小与类别数具有比较明显的相关性,而$\tau$-normalized能够捕捉这种关系;下图右对$\tau$-normalized的超参数$\tau$进行了消融: