点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文!
后台回复【领域综述】获取自动驾驶全栈近80篇综述论文!
后台回复【数据集下载】获取计算机视觉近30种数据集!
时隔两年,饱受了社会的毒打之后,让我们再次重新回到计算机视觉中的长尾分布这个我博士期间研究的主要问题上,看看2022年了这个方向是否还值得继续做下去。本文主要介绍我们今年被ECCV 2022接受的论文《Invariant Feature Learning for Generalized Long-Tailed Classification》
![cc421cb3936211619ca4fe764d82cd30.jpeg](https://i-blog.csdnimg.cn/blog_migrate/106fecb1500ccea07eb0e43c80759574.jpeg)
论文链接:https://arxiv.org/abs/2207.09504
代码链接:
https://github.com/kaihuatang/generalized-long-tailed-benchmarks.pytorchgithub.com/kaihuatang/generalized-long-tailed-benchmarks.pytorch
一. 对长尾分类问题的反思和展望
先说暴论:如果只考虑训练集与测试集独立同分布(IID)且长尾分布仅体现在类间分布的情况下,Google的Logit Adjustment(https://arxiv.org/abs/2007.07314)研究已经从理论上提供了非常优雅的最优解了。也就是说,计算机视觉中传统的Long-tailed Classification设定其实早就已经被“完美”解决了。那么这就带来了两个问题:(1)长尾分类领域最近的“进展”到底提升的是什么?(2)长尾分布相关的问题后续还能不能做?该怎么做?
1.1 一种优雅的IID类间长尾分类问题的建模方式
首先, 让我们解释下为什么我认为IID情况下的类间长尾分布问题已经被完美解决了。基于Logit Adjustment文中的分析, 分类问题的概率模型 可以通过贝叶斯分解为如下形式:
402 Payment Required
。那么在训练集与测试集独立同分布 (IID) 的情况下, 我们自然而然可以得到如下的假设: , 也就是说对于分类模型 , 唯 一的类别bias来自 中的第二项 。
那么问题就简单了, 我们可以直接通过 来将类别分布从训练分布更改为测试分布, 而由于传统长尾分类任务中默认测试分布为均衡分布, 那么就可以去掉最后一项 , 因为在分类的logits上加上一个常数项并不会改变最后分类结果。由此, 我们就实现了理论上的对IID类间长尾分布的最优解。
而上述 的形式也可以理解为优化Point-wise Mutual Information: , 这个优雅的理解方式来自于苏剑林大佬的博客《通过互信息思想来缓解类别不平衡问题》(https://kexue.fm/archives/7615), 非常推荐大家读一下。
1.2 长尾分类领域最近的“进展”到底提升的是什么?
那么,让我们先来尝试回答一下第一个问题。近年来随着一些基于Ensemble的backbone在长尾分布问题上的应用,其实我们不难发现,目前的趋势是在利用更加通用高效的特征提取方式来提升长尾分类的效果。也就是说是在提升 ,即找到更好的更鲁棒的和类别对应的特征。但这些通用的方式之所以通用,也是因为他们其实并不能算作长尾分布的算法。这其实就是目前计算机视觉中的长尾分布问题的困境:传统的分布矫正思路已经渐渐走到了尽头,而新的特征学习方法又缺少理论支撑。
不过如果读完下文其实就可以发现,近来的特征学习算法大部分确实也是在解决数据不均衡的问题,但并不是解决类间偏见,而是解决类内的属性偏见。比如multi-expert backbone就可以通过ensemble缓解单个特征空间学到的领域偏见,得到更鲁棒的特征。
1.3 长尾分布相关问题的后续研究还能不能做?该怎么做?
其实计算机视觉中的长尾分布问题还是可以做的。至于做的方向就来自于传统长尾分类任务对问题的过度简化。
其一:并不是所有视觉任务都可以简单建模为 。 大多数多模态任务中的长尾分布会更加复杂,比如视觉问答VQA数据中的长尾分布既有整体答案的 分布,同时又有基于输入问题 的条件长尾 ,即给定特定问题类型,答案呈现长尾分布(如面对问运动的问题时,答案“网球”成为了明显的常见主导类),而实际训练中后者的影响反而比单纯的全局分布 更明显。所以如何在更加复杂的多模态任务中解决长尾分布会比单纯分类问题下的长尾分布更有生命力。
其二:工业界真正头疼的长尾分布问题其实并不全是学术界研究的最多的类间长尾。比如当说到无人车训练数据中的长尾分布时,大多数情况下这指代的其实并不是类间长尾。像长尾的天气分布,日夜分布等,并不是模型预测的目标,因此这里长尾的不是类别,而是属性(或者说context)。是这种类内的长尾(intra-class long tail)阻碍了机器学习的进一步在工业界落地,而非类间长尾(inter-class long tail),前者远比后者难得多。所以,如何给出更好的长尾问题的新设定也是个值得研究的方向。比如我即将要说的广义长尾分类(Generalized Long-tailed Classification:https://arxiv.org/abs/2207.09504),或者其他研究者的任意测试分布下的长尾算法(Test-Agnostic Long-Tailed Recognition:https://github.com/Vanint/TADE-AgnosticLT),还有近来一些把类间长尾分类和领域泛化(Domain Generalization)结合的工作(https://arxiv.org/abs/2207.10150)等等。
二. 对长尾分类问题的一种拓展思路
![3bdd007ba13d34da056bf810124f9198.jpeg](https://i-blog.csdnimg.cn/blog_migrate/2c3f5c71553e6ba4ecdbf08fec2e30e1.jpeg)
正如我上文提及的,既然单纯的类间长尾无法解释实际应用中所有的数据不均衡问题。那么一个自然而然的拓展思路就是同时考虑类间长尾,即Class-wise Long Tail,和类内长尾,即Attribute-wise Long Tail(这里的属性同时包含了物体层面的属性,如纹理,姿态等,也包含了图像层面的属性,如背景,上下文信息等)。我们将这种同时考虑两种数据不均衡的问题命名为广义长尾分类(Generalized Long-tailed Classification)
2.1 传统建模的局限性
下面让我们看看传统长尾分类问题的建模有什么局限,为什么分类问题还需要考虑一个额外的属性不均衡问题,即类内长尾问题。其实我们从Logit Adjustment(https://arxiv.org/abs/2007.07314)的公式中不难看出,最明显容易有问题的地方就是他的假设 了。对!这个假设太强了,这把Logit Adjustment(https://arxiv.org/abs/2007.07314)限制在了IID场景下,而一旦给定类 中的数据样本产生分布偏移,这个假设就失效了。而在真实数据中,这种分布偏移或者说领域偏移(Domain Transfer)却又往往并不罕见,不管天气,昼夜,甚至是图片所属城市的变化,都可以产生样本 分布的偏移。尤其是对于罕见类别,由于样本不足,使得他们对整体分布的估计很容易存在偏差,也更容易受到领域偏移的影响。这些局限大大的减少了传统IID类间长尾分类任务的实用价值。
但同时每个类别也必然存在不随领域偏移而改变的特征, 否则分类任务本身便不可能存在最优解。因此,我们可以将任意单个物体的图片 看作由两个潜在特征向量 和 生成的,即 。这里 是具有不变性的类别特征, 可以理解为类别的模板或原型 (Class Prototype, 而 是会随着领域而改变分布的属性特征, 这里可以是姿态纹理等物体属性, 也可以是背景光照上下文等图像属性。而我们弱化版的假设就是对于每个类别 ,存在某个特征子集 具备分布不变性, 即 。由此, IID分类任务和OOD分类任务就可以分别理解为属性特征 不发生分布偏移和发生分布偏移这两种情况。
![de211f85f2e042d8345108d2b346c05c.jpeg](https://i-blog.csdnimg.cn/blog_migrate/b1298714a180f9535e67958c25a86a60.jpeg)
2.2 一种崭新的建模方式
由此, 我们就可以通过将图像 分解为两个变量 和 来实现我们图3的全新建模方式了。该公式同时解释了类别偏见(class bias)和属性偏见(attribute bias)的存在。而 和 之间的依 赖关系来自我们图3左侧的朴素理解, 即给定类别 会存在特定类别原型 (注意, 这里我们认为 并不是一个 的one-hot向量, 而是包含了 的多个组成部分, 可以理解为一连串binary的向量, 比如 人的 为 [头, 躯体, 四肢] 。这样我们也可以很好地拓展到细粒度分类 (fine-grained classification), 一些大类的子类其实就是再额外具备某些特征, 比如 牛头人 的 其实就是"人"的 加上额外的“牛角", 而不需要用一个独立的不相干的onehot向量来表示), 而不同类别原型 分别会有不同的属性集合 与之对应 (如人和动物等具有四肢的类别存在姿态属性, 而其他物体则没有), 属性 的实际取值又受到某外部末知噪声 的影响, 至于具体的物体图像 则同时由其类别模板 和对应属性集 决定。
![f45acba77c678c4b14055cfcc0f172ea.jpeg](https://i-blog.csdnimg.cn/blog_migrate/3e999bb6fa987cb9e4b3bb79d8341636.jpeg)
下面让我们看看这个新引入的属性偏见(attribute bias)是怎么影响分类结果 的。首先就是在每个类别内部, 即便 是所有类内图片共享的, 但由于 的取值不同attribute bias项会使同一类的样本出现难易之分(如潮湿的皮毛在狗的类别内特别罕见则会使得潮湿的狗变为困难样本), 即图4的例子。其次, 属性偏见(attribute bias)还能解释类别之间是如何产生错分的。比如潮湿的皮毛在河狸类中就很常见, 因为河狸大多生活在水里, 这就给“潮湿的皮毛"与"河狸"之间产生了伪相关性。让潮湿的狗有很大概率被错分为河狸, 也就是图5的例子。
![c23f227e4e946f600fec1118bc63e00b.jpeg](https://i-blog.csdnimg.cn/blog_migrate/5ef43973ef9a0868a4fe78b21ace728b.jpeg)
![bd1bd03cd055ba4acee9bb11e57fd2db.jpeg](https://i-blog.csdnimg.cn/blog_migrate/93ba2a56d92debcb4c4ac0c021e62c22.jpeg)
2.3 两个数据集,两个指标,三种测试方式
由于之前的类间长尾分类问题和属性相关的领域泛化/迁移问题往往在计算机视觉中被看作两个独立的问题。我们并没有统一的数据集,因此我们构建了两个数据集ImageNet-GLT和MSCOCO-GLT,前者使用预训练模型的特征聚类作为伪属性标注,后者则直接通过MSCOCO-Attribute(https://github.com/genp/cocottributes)数据集获取属性标注。同时我们采取了两个指标,除了传统的正确率(accuracy)外我们也引入了准确率(precision),从而更好的分析传统长尾分类算法的Accuracy-Precision Trade-off(https://github.com/BeierZhu/xERM)现象。最后我们划分了三种测试方式: 类间长尾协议(Class-wise Long Tail (CLT) Protocol),属性长尾协议(Attribute-wise Long Tail (ALT) Protocol)和广义长尾协议(Generalized Long Tail (GLT) Protocol),用以独立研究类间长尾,属性长尾和他们的联合效应。这也可以更好的分析不同的算法到底是提升了哪一类鲁棒性。
2.4 一个新的基准方法
同时我们也引入了一种新的基于特征学习的基准方法。我们的基本思路是,类间长尾产生的问题主要体现在分类器(classifier)上,而类内属性长尾的问题主要体现在特征提取器(backbone)上。传统的长尾分类算法,如Logit Adjustment(https://arxiv.org/abs/2007.07314)和Decoupling(https://arxiv.org/abs/1910.09217)都是在不改变特征的基础上调整分类边界。这就可以看作图6中间的例子,但是这样做的问题是,类别间的混淆区域并没有得到很好的处理,也同时造成了上述的Accuracy-Precision Trade-off(https://github.com/BeierZhu/xERM)现象。而我们通过可视化发现,混淆区域内的样本大多拥有相同的背景或者环境,也就是说模型不小心把这类属性信息也学成了分类特征(因为属性在一些类中和类别高度相关),所以我们的思路就是通过特征学习时加入约束,让模型尽可能不去学习这类属性信息。
![ea27b612652e26e94db347f26a0438b4.jpeg](https://i-blog.csdnimg.cn/blog_migrate/ed5b42dbf81fac7838ba7ee71adb2d0d.jpeg)
因此我们基于Center Loss(https://ydwen.github.io/papers/WenECCV16.pdf)修改了一个名为不变性特性学习(Invariant Feature Learning)的损失约束函数。首先传统的Center Loss已经在人脸分类等任务中证明了自己可以使类内分布尽可能收束,从而增加类间距离。但是传统的特征中心在一个有偏的数据中也是天然有偏的,比如90%的香蕉都是黄色香蕉,那么这个特征中心也会学到0.9的颜色信息,从而降低绿色香蕉的准确性。因此我们通过构建重采样的双环境,均匀难易样本的比重,实现对特征中心更无偏的估计,从而增加Center Loss在我们泛化长尾分类任务中的效果。
2.5 从算法的局限到新的难点
当然,提出这个基准方法主要是为了抛砖引玉,我们希望大家可以在广义长尾分类(GLT)这类更接近实际应用的设定下提出更多更加实用的算法。我们提出的IFL算法也自然有很多不完善之处。比如,我们发现在构建重采样的双环境的过程中,其实也很容易将噪声样本也过度上采样,而在真实数据中噪声样本虽然可以控制在合理范围内但几乎无法避免。因此我们组的易炫宇学弟也尝试将长尾分布和去噪问题结合,该工作也被ECCV 2022接受,名为 《Identifying Hard Noise in Long-Tailed Sample Distribution》(https://arxiv.org/abs/2207.13378)。 该工作的动机和本文也非常相似。另一个问题在于,虽然我们文中表示我们提出的IFL是Invariant Risk Minimization(https://arxiv.org/abs/1907.02893)版的Center Loss,但是原始的IRM约束在真实的视觉数据中往往并没有很好的效果,我们的原始IRM Loss实验中甚至出现10个随机种子有7个会在学习到一般突然变为NaN loss。这也是一个值得研究的问题。
三. 总结
本文主要分享了目前传统计算机视觉中长尾分类任务的一些反思,我们认为传统的IID类间长尾分类已经有了非常完善的解决方案。但该设定大大地简化了甚至忽视了实际应用中长尾分布真正的难点,由此我们拓展了传统长尾分类任务的设定和建模方式,引入了新的类内属性偏见,并提出了更复合实际工业需求的广义长尾分类设定和数据集以及一个简单的基准算法。希望可以启发后来的研究者提供更好的问题建模方式和解决方案。
@inproceedings{tang2022invariant,
title={Invariant Feature Learning for Generalized Long-Tailed Classification},
author={Tang, Kaihua and Tao, Mingyuan and Qi, Jiaxin and Liu, Zhenguang and Zhang, Hanwang},
journal={ECCV},
year={2022}
}
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!