OpenOOD v1.5

【OpenOOD v1.5: Enhanced Benchmark for Out-of-Distribution Detection】更全面、精确的分布外检测代码库及测试平台

  • Paper: https://arxiv.org/abs/2306.09301

  • OpenOOD Codebase: https://github.com/Jingkang50/OpenOOD

  • OpenOOD Leaderboard: https://zjysteven.github.io/OpenOOD/

 对于训练好的图像分类器,能让其可靠地在开放世界中工作的一个关键能力便是检测未知的、分布外的(out-of-distribution, OOD)样本。例如我们利用一组猫狗照片训练出了一个猫狗分类器。对于分布内的(in-distribution, ID)样本,也就是这里的猫、狗图片,我们自然期待分类器能够准确地将它们识别到相应的类别中去。而对于分布外的OOD样本,也就是除了猫狗之外的任何图片(例如飞机、水果等等),我们希望模型能够检测出它们是未知的、新颖的物体/概念,因而无法将它们判别到分布内的猫或狗任何一类中。这个问题便是分布外检测(OOD detection),其近年来吸引了广泛的关注,新工作层出不穷。然而领域快速扩张的同时,追踪、衡量领域的发展现状却由于种种原因成了一件难事。

原因1:不一致的测试OOD数据集。深度学习各个任务的快速发展都离不开统一的测试数据集(就像图像分类有CIFAR,ImageNet,物体检测有PASCAL VOC,COCO)。然而不幸的是OOD检测领域一直以来都缺乏统一的、被广泛采用的OOD数据集。这就造成了在上图中,当我们回看已有工作的实验设定时,会发现所用的OOD数据十分不一致(例如对于CIFAR-10是ID数据的情况,有些工作使用MNIST,SVHN作为OOD,有些工作使用CIFAR-100,Tiny ImageNet作为OOD)。在这样的情况下,直接公平地比较全部方法面临巨大困难。

原因2:令人困惑的术语。除了OOD检测外,另外一些术语比如“开集识别”(Open-Set Recognition, OSR),“新类检测”(Novelty Detection)也常常出现在文献中。它们本质上都在关注同一个问题,仅在一些实验设定的细节上有着微小差别。然而不同的术语会导致方法之间形成不必要的分支,例如OOD检测和OSR就曾经被当作是两个独立的任务,而不同分支之间的方法(尽管在解决同一个问题)也很少被放在一起比较。

原因3:错误的操作。在许多工作中,研究者们往往直接使用OOD测试集中的样本来调参甚至训练模型。这样的操作会对方法的OOD检测能力做出高估。

以上的问题显然是对领域的有序发展不利的,我们迫切需要一个统一的基准和平台来测试评估现有以及未来的OOD检测方法。OpenOOD 在这样的挑战下应运而生。其第一版迈出了重要的一步,然而有着规模小、可用性有待提升的问题。因此在OpenOOD全新版本v1.5中,我们进一步做了加强和升级,试图打造一个全面、准确、易用的测试平台供广大研究者使用。总结来看,OpenOOD有着如下重要的特性和贡献:

  1. 庞大、模块化的代码库。该代码库将模型结构、数据预处理、后处理器、训练、测试等等进行了解藕及模块化,方便复用以及开发。目前OpenOOD实现了近40种最先进的针对图像分类任务的OOD检测方法。

  1. 可一键测试的评估器。如上图所示,仅用几行代码,OpenOOD的评估器就可以在指定的ID数据集上给出所提供的分类器、后处理器的OOD检测测试结果。相应的OOD数据是由评估器内部所确定并提供的,这保证了测试的一致性和公平性。该评估器也同时支持标准OOD检测(standard OOD detection)和全谱OOD检测(full-spectrum OOD detection)两种场景(后文会有更多介绍)。

  2. 在线排行榜。利用OpenOOD,我们在CIFAR-10,CIFAR-100, ImageNet-200,ImageNet-1K四个ID数据集上比较了近40种OOD检测方法的性能,并将结果制作成了公开排行榜。希望能够帮助大家随时了解领域内最有效、最有潜力的方法。

  3. 实验结果中的新发现。根据OpenOOD全面的实验结果,我们在论文中提供了许多新发现。例如,尽管看起来与OOD检测关系不大,但数据增强(data augmentation)实际上能有效提升OOD检测的性能,且这方面提升与具体OOD检测手段带来的提升是正交、互补的。另外,我们发现已有方法在全谱OOD检测上的表现并不尽如人意,这也将是未来领域内一个重要的待解决问题。

问题描述

这一部分会简略、通俗地描述标准与全谱OOD检测的目标。对于更详细、正式的描述,欢迎大家阅读我们的论文。

首先讨论一些背景。在我们所考虑的图像分类场景下,分布内(ID)数据是由相应的分类任务所定义的。例如对于CIFAR-10分类,ID分布就对应着它的10个语义类别。OOD的概念是相对于ID形成的:ID语义类别之外的、与ID类别不同的任何语义类别所对应的图片都是分布外OOD图片。与此同时,我们需要讨论如下两种类型的分布偏移(distributional shift)。

Semantic Shift:深层语义层面上的分布变化,对应上图横轴。例如训练时语义类别是猫、狗,测试时语义类别是飞机、水果。

Covariate Shift:表层统计层面上的分布变化(而语义不变),对应上图纵轴。例如训练时是猫、狗的干净自然照片,测试时是加了噪声或手绘的猫、狗图片。

有了上述背景,再结合上图就可以很好理解标准以及全谱OOD检测。

标准OOD检测

目标(1):在ID分布上训练一个分类器,使其能够准确对ID数据进行分类。这里假设测试ID数据与训练ID数据不存在covariate shift。

目标(2):基于训练好的分类器,设计OOD检测方法使其能够对任意样本进行ID/OOD的二分类区分。在上图中对应的是将(a)和(c) + (d)区分开来。

全谱OOD检测

目标(1):与标准OOD检测类似,但区别在于考虑了covariate shift,也就是无论测试ID图片相比训练图片是否有covariate shift,分类器都需要精准分类到相应的ID类别中(例如猫狗分类器不仅应该准确分类“干净”猫狗图片,还应当能泛化到带噪、模糊的猫狗图片上)。

目标(2):同样考虑covariate-shifted ID样本,需要将其与正常(没有covariate shift)的ID样本一同与OOD样本判别开来。对应上图中区分(a) + (b)和(c) + (d)。

为什么全谱OOD检测很重要?熟悉的小伙伴可能已经发现,全谱OOD检测中的目标(1)实际上对应着另一个很重要的研究课题——分布外泛化(OOD generalization)。需要澄清一下,OOD泛化中的OOD指的是存在covariate shift的样本,而OOD检测中的OOD指的是存在semantic shift的样本。这两种偏移(shift)都是现实世界中十分常见的,然而现有的OOD 泛化和标准OOD检测都仅仅只考虑了其中一种而忽略了另一种。与之相反,全谱OOD检测在同一场景下将两种偏移自然地考虑在了一起,更准确地反映了我们对于一个理想分类器在开放世界中表现的预期。

实验结果及新发现

在1.5版本中,OpenOOD对近40种方法在6个基准(benchmark)数据集(4个针对标准OOD检测,2个针对全谱OOD检测)上做了统一、全面的测试。论文中对所实现的方法及数据集都进行了描述,欢迎大家查阅。全部实验也都可以在OpenOOD的代码库中复现。这里我们直接讨论从对比结果中得到的发现。

发现1:没有赢家通吃(no single winner)。在上表中,不难发现并没有任何一个方法能够在全部基准数据集上持续地给出突出表现。例如后处理的方法(post-hoc inference methods)ReAct和ASH在大数据集ImageNet上表现优异,但在CIFAR上相比其他方法并没有优势。与之相反,一些在训练中加入约束的方法(training methods),例如RotPred和LogitNorm,在小数据集上要优于后处理方法,但在ImageNet上并不突出。 

发现2:数据增强有效(data augmentations help)。如上表所示,尽管数据增强并不是专门为OOD检测所设计的,但它们却能有效提升OOD检测的表现。更令人惊喜的是,数据增强带来的提升与具体OOD后处理方法带来的提升是互相放大的。这里以AugMix为例,当它与最简单的MSP后处理器结合时,在ImageNet-1K near-OOD检测率上达到了77.49%,仅比不适用数据增强的交叉熵损失(corss-entropy loss)训练的检测率77.38%高1.47%。然而当AugMix与更先进的ASH后处理器结合时,相应的检测率比交叉熵基线高了3.99%,并达到了我们测试中最高的82.16%。这样的结果显示了数据增强与后处理器的结合对于未来进一步提升OOD检测能力是非常有潜力的。 

发现3:全谱OOD检测对现有方法提出了挑战(full-spectrum detection poses challenge for current detectors)。从上图中可以清晰的看出,当场景从标准OOD检测切换为全谱OOD检测时(也即在测试ID数据中加入了covariate-shifted ID图片),绝大多数方法的性能都表现出了显著的退化(大于10%的检测率的下降)。这代表着当前方法倾向于将实际语义未发生变化的covariate-shifted ID图片标记为OOD。该行为与人类的感知(同时也是全谱OOD检测的目标)是相悖的:假设一个人类标记员在标记猫狗图片,此时给他/她出示带噪、模糊的猫狗图片,他/她应当仍会识别出那是猫/狗,是分布内ID数据而不是未知的分布外OOD数据。总的来看,目前方法无法有效地解决全谱OOD检测,而我们相信这将是未来领域内的一大重要问题。

此外还有许多发现没有列在这里,例如数据增强对于全谱OOD检测仍旧有效等等。再次欢迎大家阅读我们的论文。 whaosoft aiot http://143ai.com  

我们希望OpenOOD的代码库、测试器、排行榜、基准数据集以及详实的测试结果能够汇集各路研究人员的力量一起来推动领域发展。十分期待大家使用OpenOOD进行OOD检测的开发、测试。我们也欢迎任意形式的对OpenOOD的贡献,包括但不限于提出反馈,将最新的方法添加到OpenOOD代码库和排行榜中,扩展未来版本OpenOOD等等。

猜你喜欢

转载自blog.csdn.net/qq_29788741/article/details/131426711