【转载】(附链接)​CVPR2021 | 开放世界检测综述

网站首页    行业信息    【转载】(附链接)​CVPR2021 | 开放世界检测综述

在开放世界中分类是验证模型安全性的重要方式,也是一个真正能够商用落地的模型不可避免要面对的问题。传统的分类模型都是在一个封闭的世界中进行训练,即假设测试数据和训练数据都来自同样的分布(称作分布内,in-distribution)。例如我们利用一组猫、狗照片训练一个猫、狗分类器。然而,部署的模型在实际使用中总是会遇到一些不属于封闭世界类别的图片,例如老虎。或者也会遇到一些和训练图片视觉上大相径庭的照片,例如卡通猫。模型应当如何去处理这些不属于训练分布的图片(即分布外样本,out-of-distribution),是开放世界领域所关注的问题。

 
开放世界领域中时常能够见到如下几个任务:
 
  • OD: Outlier Detection, 离群检测
  • AD: Anomaly Detection, 异常检测

  • ND: Novelty Detection, 新类检测

  • OSR: Open Set Recognition, 开集识别

  • OOD Detection: Out-of-Distribution Detection, 分布外检测

 

它们之间虽然各有千秋,却又有千丝万缕的联系。虽然现有工作也有尝试着将自己的任务和别的任务进行区分,但是各任务之间也不统一,使得整个领域都缺乏对各个任务准确的定义。让外界甚至参与者都对各个任务的具体目标困惑。
 
为了解决这个问题,一篇名为《Generalized Out-of-Distribution Detection: A Survey》的综述解决了这些困惑,将以上五个任务归纳进一个「广义 · 分布外检测」(Generalized OOD Detection)的大框架内。至此,这些任务都能进行准确的定位,而它们之间的关系也顿时清晰可辨。
 

 

  • 论文地址:https://arxiv.org/abs/2110.11334

  • 项目主页:https://github.com/Jingkang50/OODSurvey

 

准备工作

 
为了方便理解「广义分布外检测框架」,我们需要了解以下两个概念:
 

Covariate Shift:表层统计层面上的分布变化,简称统计偏移。

Semantic Shift:深层语义层面上的分布变化,简称语义偏移。

 

规范地讲,如果我们用 X 代表图片像素空间的变量,用 Y 代表图片语义空间的变量,这样我们可以用 P(X,Y)来表示一组图片的分布。
 

像素空间分布 P(X)的偏移就是 Covariate Shift,可能来源于对抗样本或者画风的变化。

语义空间分布 P(Y)的偏移就是 Semantic Shift,可能来源于新类别的加入。

 

下图生动地展现了这两种分布偏移:
 

 

广义分布外检测(Generalized OOD Detection)

 
在学习到「统计偏移」和「语义偏移」这两个概念之后,我们可以利用下图来认识各个任务在框架中的位置。任务的定位使用四个维度:
 

(1)偏移类型:任务需要检测出表层统计偏移或深层语义偏移; 

(2)分布内数据类别数:分布内数据包含一个类或多个类;

(3)对分布内样本的处理:是否需要对分布内样本进行分类;

(4)是否遵循“训练 - 测试模式”:Transductive 学习需要利用所有样本进行决策;Inductive 学习则遵循训练 - 测试模式,目的是得到一个单独可用的模型。

 

 

根据上图,“异常检测”AD 分为两个子任务,即 Sensory AD 和 Semantic AD,即 “感知上的异常检测” 和“语义上的异常检测”。

 
  • 感知上的异常检测(Sensory AD)需要识别出具有统计偏移的样本,无论分布内样本类别数。

  • 语义上的异常检测(Semantic AD)需要识别出具有语义偏移的样本,并要求分布内只有单类。

 

「新类检测」ND 也分为两个子任务。他们都需要识别出具有语义偏移的样本,但是根据分布内样本类别的不同分为「单类的新类检测」(One-Class ND)和「多类的新类检测」(Multi-Class ND)。
 
「开集识别」OSR 同样需要识别出具有语义偏移的样本,但是相比于 ND,它只关心分布内是多类别的情况,并且要求对分布内样本进行正确的分类。
 
「分布外检测」(OOD Detection)同样需要识别出具有语义偏移的样本,但是相比 OSR,它还包含了分布内是单类的情况。因此,OOD Detection 可以理解成一个包含 Semantic AD, Novelty Detection, OSR 的超级大类。
 

对各个任务的具体介绍

 
AD: Anomaly Detection, 异常检测
 
背景:当人们提起异常(Anomaly)时,心中其实已经形成了一个 “正常” 的概念。例如,要创建一个 “热狗 / 非热狗检测器”,我们将“热狗” 的概念定义为正常,将不符合的定义为异常,也就是非热狗。
 
请注意,在这种情况下,热狗是一个统一的概念,无论热狗的大小、酱汁、面包类型、价格、香肠的来源等可能存在差异。任何其他物体,如牛排、米饭,以及非食物物体,如猫和狗,都被视为异常。
 
同时,现有的异常检测通常会对目标环境有所限制。例如,“热狗 / 非热狗检测器”会采用 “检测器只会接触真实照片” 的假设,测试时不会存在卡通或素描图。这使得在检测统计偏移时避免了语义偏移的出现。另一个现实的例子是工业缺陷检测,它针对的只是一组特定的产品装配线。这使得在检测统计偏移时避免了语义偏移的出现。换句话说,“开放世界”假设通常不是完全 “开放” 的。然而,“非热狗”或 “缺陷” 其实已经形成了一个巨大的未知空间,也早已打破了 “封闭世界” 的假设。
 
综上所述,异常检测任务的主要特征是其统一地定义了“正常”,并且假设一个相对封闭的限制。
 
定义:异常检测(Anomaly Detection, AD)的任务旨在找出测试集中所有偏离 “预设的正常样本” 的异常样本。这种偏移可能是来源于 covariate shift 或者 semantic shift。该任务通常假设另一种偏移类型不存在。这两种不同的样本偏移类型对应着 “异常检测” 的两个子任务:“感知上的异常检测”sensory AD 和“语义上的异常检测”semantic AD。
 
Sensory AD,即 “感知上的异常检测”。该任务希望识别出由 covariate shift 导致的异常样本。此处我们假设所有预定义好的“正常” 样本都具有同一种像素空间分布,并且整个测试集的样本空间不存在语义上的偏移,即测试集的所有样本都来自同一个类别。总的来说, “Sensory AD”旨在检测出同一个类别的所有测试样本中具有 “异常” 像素空间分布的样本。
 
Semantic AD,即 “语义上的异常检测” ,该任务希望识别出由 semantic shift(label shift)导致的异常样本。此处我们假设所有预定义好的“正常” 样本都具有相同的语义分布,即来自同一个类别,并且整个测试集的样本空间具有相同的像素空间分布。总的来说,“Semantic AD”旨在检测出同种像素空间分布的所有测试样本中非 “正常” 类别的样本。
 
应用:
 
Sensory AD:工业检测,对抗样本防御,活体检测,艺术品的伪造识别,伪证识别等。

Semantic AD:视频监控,数据筛选等。

 

ND: Novelty Detection, 新类检测
 
背景:“Novelty”这个词通常指的是未知的、新颖的、有趣的东西。虽然新类检测的目标与异常检测相似,但是它们之间有三个显著不同:
 
  • 在动机方面,新类检测通常不会像异常检测那样将 “新类” 样本视为错误、恶意、应当丢弃的。反之,该任务会将它们视为学习资源,以积极的学习态度供未来使用。例如新野生动物检测器,检测到的新类可供生物学界进行研究。

  • 新类检测主要侧重于语义转移。它有一个可互相替换的名字:“novel class detection”。

  • 新类检测去除了分布内样本只能属于一个类的限制。训练集可以出现一个或多个类。

 

定义:新类检测(Novelty Detection, ND)的任务旨在找出测试集中不属于训练集中任何类别的 “新类” 样本,检测到的 “新类” 样本通常会为下一步增量学习(incremental learning) 提供更多的学习样本,或者作为全新的类型进行探索研究。
 
基于训练集中的类别数量,“新类检测”可被分为两个子类型: “单类新类检测”(One-class ND);以及 “多类新类检测”(Multi-class ND)。尽管“多类新类检测” 的训练集样本中包含多个类别,其目的只是将测试集中的 “新类” 样本与 “分布内” 样本区分开。因此,“单类新类检测”和 “多类新类检测” 的本质都是二分类问题。
 
应用:视频监控,行星探索,增量学习
 
OSR: Open Set Recognition, 开集识别
 
背景:在封闭世界中训练的机器学习模型通常将属于未知类别的测试样本错误地分类为具有高置信度的 已知类别。一些文献将模型这种过度自信的行为称为“模型的傲慢”。因此,OSR 于 2013 年被提出,旨在解决这个问题。
 
定义:“开集识别”(Open Set Recognition, OSR)要求多分类器同时达到如下两个要求:
 
  • 对测试集中属于 “已知类别“的图片进行准确分类;“已知类别” 代表训练集中存在的类别。

  • 检测出”未知”类别, “未知类别”不属于训练集中任何类别。

 

OOD Detection: 分布外检测
 
背景:类似的,鉴于深度学习模型通常会对来自不同语义分布的样本进行过度自信地分类,分布外检测领域应运而生,要求模型在保证分类性能的同时,拒绝语义偏移的样本,以保证可靠性和安全性。
 
定义:“分布外检测”任务和新类识别类似,都是在找出测试集中不属于训练集中任何类别的 “新类” 样本。但是在新类识别的基础上,同时完成多分类任务。相比于 “开集识别”,“分布外检测” 的训练集可以是单类别的也可以是多类别的。
 
备注:虽然当前学界的大多数论文都将 “out-of-distribution” 理解为“out-of-label/semantic-distribution”,但一些分布外检测的工作也考虑检测 covariate shift(统计偏移)。它们声称 covariate shift 通常会导致模型性能显着下降,因此需要模型进行识别和丢弃。然而,尽管在某些特定(通常是高风险)任务上检测 covariate shift 是合理的,例如由一家医院训练的医疗诊断模型应该更加保守地对来自其他医院、具有 covariate shift 的图像进行决策,但这个目标与另一个领域 out-of-distribution generalization(领域泛化)似乎有所冲突。综述原文对 out-of-distribution detection 和 out-of-distribution generalization 做了详细的讨论,欢迎大家阅读原文。但是无论如何,检测语义偏移一直是分布外检测任务的主流。
 
OD: Outlier Detection, 离群检测
 
背景:根据维基百科,outlier 是指与其他观测结果显着不同的数据点。不同于之前任务需要检测与训练数据分布不同的测试样本,离群检测则是直接处理所有观察结果,旨在从受污染的数据集中找出异常。由于离群检测不遵循“训练 - 测试模式”,而其方法通常依赖于所有观察结果,因此解决此问题的方法通常是 Transductive 传导学习而不是 Inductive 归纳学习。
 
定义:“离群检测”(Outlier Detection, OD)的任务旨在检测出给定数据集中与其他样本显著不同的样本,其中这种不同既可以来源于 covariate shift 也可以来源于 semantic shift。
 
应用:数据清洗
 
至此,该研究希望读者对以上五个任务的异同有了更加深入的理解。下图用图片案例的方式再次比较这些任务。
 

 

方法论

 
该研究全面总结了解决 「广义分布外检测」中各个任务的方法。由于它们的目标大体相同,它们的解法自然也相似。研究发现它们的解法基本分为四大类:
 
  • Density-based Methods 基于密度估计的方法

  • Reconstruction-based Methods 基于重构的方法

  • Classification-based Methods 基于分类的方法

  • Distance-based Methods 基于距离的方法

 

欢迎大家参考综述原文进行参考,同时欢迎大家在综述的 GitHub 主页提 issue/pr 进行补充。文尾附上了方法论的目录。
 

 

挑战和展望

 
最终研究人员总结了目前该领域的问题、挑战和发展方向。
 
挑战 1: 建立正确并且规范的评价指标
挑战 2: 不需要额外数据的分布外检测
挑战 3: 分布内分类和分布外检测的权衡
挑战 4: 建立有现实意义并且大规模的数据集
 
展望 1: 框架中不同任务互相借鉴及比较
展望 2: 分布外检测和分布外泛化的结合
展望 3: 分布外检测和开集噪声标签学习的结合
展望 4: 期待进行更多的理论研究
 

详情参考原文。该研究希望开放世界领域能够发展地更好,并且希望更多研究者能够关注并投身到这个人工智能的重要问题上。

 

—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系高视科技删除或修改!

2021年11月26日 16:03