目前存在的蜉蝣生物检测问题
- 表示能力不足
- 海洋中浮游生物的巨大多样性和丰富性不可避免地导致一些类群之间难以区分的相似性
- 不同的光学成像仪器受到自身物理和方法的限制,所获取的图像在分辨率、对比度、噪声、模糊、色彩、动态范围等方面具有不同的质量和限制
- 原位 2D 成像还伴随着表示 3D 目标的多种固有缺陷,例如不完整、遮挡和视角模糊等
- 数据分布漂移DSS
- 测试集与训练集的分布不一致
- OOD问题
- 数据分布不均匀
- 少样本问题
- 难以识别少数类群
标准
FPR95

FPR (False Positive Rate) 和 TPR (True Positive Rate) 是机器学习和统计学中用于评估分类器性能的重要指标。FPR(TPR@95%) 是指当分类器的 TPR(真正例率)达到 95% 时,对应的 FPR(假正例率) 值。
TPR增大的时候,会看到这个边界会往右走,而且我们希望边界还可以往下走(减少假阳性样本)
各术语含义:
- TPR (True Positive Rate)
表示分类器正确识别正例的比例,公式为:
$$\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}$$
其中,TP 是正确预测为正的样本数量,FN 是实际为正但被预测为负的样本数量。
- FPR (False Positive Rate)
表示分类器错误将负例预测为正例的比例,公式为:
$$\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}$$
其中,FP 是实际为负但被预测为正的样本数量,TN 是正确预测为负的样本数量。
- FPR@95%
意味着在模型调整到能够达到 95% TPR 的点时(即能正确识别 95% 的正例),我们观察此时模型的 FPR。
FPR(TPR@95%) 的意义
- 它衡量在模型保证高 TPR(真正例率)的情况下,对负例的误分类情况(假正例率)有多高。
- 低 FPR(TPR@95%) 表明分类器在保持高真正例率时,对负例的误分类也很少,性能较好。
AUROC
AUPR
在评估分类模型(尤其是处理不平衡数据或分布外检测任务)时,AUPR(Area Under the Precision-Recall Curve)和FPR@95(False Positive Rate at 95% True Positive Rate)是两个常用的指标,但它们的设计目的和关注点存在显著差异。以下是详细分析:
1. 指标定义与核心目标
(1) AUPR(精确率-召回率曲线下面积)
- 定义:通过不同分类阈值下的精确率(Precision)和召回率(Recall)绘制曲线,计算其下方的面积。
- 目标:
- 衡量模型在正类样本(如异常/OOD样本)上的综合性能,尤其是在类别极度不平衡时(正样本远少于负样本)。
- 反映模型对精确率(避免误报)和召回率(避免漏检)的平衡能力。
(2) FPR@95(在召回率95%时的假阳性率)
- 定义:当模型的召回率(True Positive Rate, TPR)被设定为95%时,对应的假阳性率(False Positive Rate, FPR)。
- 例如:在OOD检测中,当模型检测到95%的OOD样本时,误将多少ID样本判定为OOD。
- 目标:
- 衡量模型在确保高召回率(如不漏检关键样本)时,对负类样本的误判程度。
- 直接服务于高召回率优先的场景(如医疗诊断、自动驾驶中的安全关键任务)。
2. 核心区别
维度 |
AUPR |
FPR@95 |
关注点 |
正类(如OOD)的精确率与召回率的整体平衡 |
在高召回率(TPR=95%)下对负类的误判控制 |
数据敏感性 |
对类别不平衡敏感(适合正样本少的场景) |
依赖阈值选择(关注单一操作点) |
优化方向 |
综合提升精确率和召回率 |
在高召回率下最小化假阳性率 |
应用场景 |
数据不平衡、需全面评估正类性能 |
安全关键领域,要求严格避免漏检 |
3. 为什么两者的目的不一致?
(1) 问题本质不同
- AUPR:
- 反映模型在所有可能阈值下对正类的识别能力,强调整体性能。
- 例如:在OOD检测中,若大部分OOD样本得分明显低于ID样本,AUPR会较高。
- FPR@95:
- 仅关注特定阈值(TPR=95%)下的负类误判率,服务于特定需求(如“宁可误报,不可漏报”)。
- 例如:在自动驾驶中,必须检测到95%的未知障碍物,同时控制误判已知物体的频率。
(2) 对类别不平衡的响应不同
- AUPR:
- 在正样本极少时,PR曲线对模型性能变化更敏感,优于AUROC。
- 例如:若正样本占比1%,AUPR=0.8表明模型在极端不平衡下仍表现良好。
- FPR@95:
- 不直接受类别分布影响,但实际应用中若负样本(如ID数据)远多于正样本,FPR@95的微小上升可能导致大量误判。
- 例如:FPR@95=5%时,若测试集中有100万个ID样本,误判数将高达5万。
(3) 优化目标的冲突
- 提高AUPR:需要同时提升精确率和召回率,可能需要对分类边界进行全面优化。
- 降低FPR@95:只需在高召回率区域(TPR≥95%)优化假阳性率,可能与全局性能无关。
- 例如:一个模型可能在TPR=95%时表现极佳(FPR@95低),但在其他阈值下性能波动(导致AUPR一般)。
4. 实际场景中的典型关系
(1) 理想情况
若模型在所有阈值下均表现良好,AUPR和FPR@95可能同步优化。例如:
- 完美分离ID和OOD样本时,AUPR=1.0,FPR@95=0%。
(2) 常见情况
两者常呈现权衡关系:
- 高AUPR但高FPR@95:模型整体区分能力强,但在高召回率区域(如TPR=95%)误判较多。
- 例如:OOD检测模型对明显异常的样本敏感,但对边界样本(接近ID分布)误判率高。
- 低FPR@95但低AUPR:模型在高召回率区域严格控制误判,但整体性能较差。
- 例如:保守模型仅对极端OOD样本报警,漏检大量边界OOD样本,导致AUPR低。
5. 如何选择指标?
(1) 优先AUPR的场景
- 数据极度不平衡(如OOD样本占比<1%)。
- 需综合评估正类性能(如既要减少漏检,又要避免误报)。
- 示例:金融欺诈检测,需平衡欺诈交易的召回率和正常交易的误拦截率。
(2) 优先FPR@95的场景
- 安全关键任务(如医疗诊断、自动驾驶),漏检后果严重。
- 明确要求高召回率(如“必须检测到95%的异常”)。
- 示例:癌症筛查模型,要求尽可能检测所有疑似病例(TPR=95%),同时控制健康人的误诊率(FPR@95)。
6. 总结
- AUPR和FPR@95的目的不一致:
- AUPR关注正类识别的全局平衡,FPR@95关注高召回率下的负类误判控制。
- 实际应用中需根据需求选择:
- 若需全面评估模型对正类的识别能力,优先AUPR。
- 若需保证高召回率下的可靠性,优先FPR@95。
- 两者结合使用:
- 例如:在自动驾驶中,可同时要求AUPR>0.9(整体性能强)且FPR@95<5%(高召回率下误判可控)。
OOD
ID与OOD
ID指的是in-distribution数据,也就是我们熟悉的训练数据;OOD指的是out-of-distribution,在不同的领域也可能被叫做outlier或者是anomaly data,说的是与ID分布不一致的数据。
其实ID和OOD的界定比较模糊,通常我们是将语意信息相差较大的两个数据集构成ID和OOD。例如,我们在CIFAR-10上训练好了一个图像分类网络,那么对于这个网络来讲,CIFAR-10数据集的图像就是ID数据,而MNIST,或者是SVHN,以及LSUN等数据集就可以看做是OOD。
[!question] 通常一个比较难以回答的问题就是,在CIFAR-100上训练好的网络,那么CIFAR-10对于网络来说是OOD吗?因为二者相似性很高。
这个实际上由不同的观点,一部分人认为能识别来自与ID不同的类别就叫OOD;但另一部分人认为,应该选择协方差偏移的样本才叫OOD。
我们构造验证试验的时候,还是需要尽量选取语义信息具有差异性的两个数据集构成ID与OOD。
分布外检测在现实世界中部署机器模型时,可靠的分类器不仅应该准确地对已知的分布内 (ID) 样本进行分类,而且还应将任何 OOD 输入识别为“未知”。
这可以通过 OOD 检测器与分类模型 $f$ 配合来实现。 OOD 检测可以表述为二元分类问题。 在测试时,OOD 检测的目标是确定样本 $x ∈ X$ 是否来自 $P_{in} (ID)$ 或不是 (OOD)。 可以通过水平集估计做出决定:

OOD与常规问题的区别
传统模式识别系统假设:
- 封闭世界假设
- 训练测试域数据是独立同分布的(I.I.D)
- 各类别数据量充足,不会出现不均衡问题
OOD问题与上面的假设均相反
与其他领域的一些区别
- Open Set Recognition(OSR)
- 不仅要求能够检测未知类别,还要求正确分类已知的类别。
- 评价标准:AUROC,AUPR,CCR@FPRx
- Out-of-Distribution Detection(OOD)
- 保证ID类测试样本的分类性能,拒绝OOD测试样本,ID样本往往具有多个类别,OOD的类别不能与ID的类别重合。
- 经常使用CIFAR-10作为ID样本进行训练,其他数据集如SVHN等作为OOD测试样本。
- 评价标准:AUROC,AUPR,or F-scores,FPR@TPRx,TNR@TPRx
- 和OSR的区别:
- OSR常常用一个数据集,一部分类别作为ID一部分作为OOD。而OOD则是一个数据集作为ID样本,再用别的数据集作为OOD样本(仍要保证类别不重合)。
- OOD检测方法的范围更广,如多标签分类,解空间更大。
OOD检测的主流是Detecting semantic shift。当然在一些领域中,也十分的关注covariate shift,即要拒绝和原本的ID样本具有不同分布的样本,即使类别可能一样。如医学图像或者隐私敏感的领域,就不能让模型对具有不同分布的样本进行泛化。
1. 定义与核心目标
- 异常检测(AD)
旨在识别与“正常”数据显著偏离的样本,即使这些异常可能仍属于训练数据的分布(例如同一分布中的低概率事件)。例如:信用卡欺诈检测、工业设备故障发现等。
- 分布外检测(OOD)
专注于检测来自与训练数据完全不同的分布的数据。例如:在猫狗分类模型中,输入汽车的图像会被标记为OOD。
2. 数据假设
- AD
- 假设异常是同一分布中的罕见事件(如分布的“尾部”),或由相同生成机制中的异常参数导致(如设备故障)。
- 训练数据通常仅包含正常样本(无监督学习)。
- OOD
- 假设测试数据来自与训练数据完全无关的分布(如不同领域、不同采集条件)。
- 训练时可能仅使用分布内数据,但需模型在推理时拒绝分布外样本。
3. 应用场景
- AD的典型场景
- 网络安全(入侵检测)、医疗诊断(罕见病识别)、质量控制(缺陷产品检测)。
- 核心需求:在已知环境中捕捉异常模式。
- OOD的典型场景
- 自动驾驶(识别未知障碍物)、医疗AI(拒绝非医学图像输入)、开放世界分类(避免对未知类别过度自信)。
- 核心需求:防止模型对不相关数据做出高置信度预测。
4. 方法与技术
- AD常用方法
- 统计方法(如高斯混合模型、马氏距离)。
- 重建误差(自编码器、生成对抗网络)。
- 单类分类(如单类SVM、孤立森林)。
- OOD常用方法
- 基于置信度(如Softmax阈值、蒙特卡洛Dropout)。
- 特征空间分析(Mahalanobis距离、能量模型)。
- 对抗训练或合成OOD样本(如ODIN、Outlier Exposure)。
5. 关键区别总结
维度 |
异常检测(AD) |
分布外检测(OOD) |
数据来源 |
同一分布中的异常(低概率事件) |
完全不同的数据分布 |
问题焦点 |
应用层面的异常(如故障、欺诈) |
数据分布层面的差异(跨域、跨类别) |
训练假设 |
通常仅需正常数据(无监督) |
可能需要分布内数据的表征学习 |
典型方法 |
重建误差、单类分类 |
置信度校准、特征空间度量 |
6. 重叠与联系
- 交叉场景:某些情况下,OOD样本可能被视作AD中的异常(如模型未见过的类别)。
- 技术共享:部分方法(如自编码器)可同时用于AD和OOD检测,但优化目标不同。
总结
- AD 更关注在已知环境(同一分布)中发现异常,强调应用层面的异常模式。
- OOD 更关注模型泛化性,强调识别与训练数据分布无关的样本,确保模型在开放环境中的安全性。
- 两者相辅相成,实际应用中可能结合使用(如先检测OOD样本,再在分布内进行AD)。
常规数据集
首先我们介绍OOD样本,OOD样本的偏移包括两类,第一类是semantic shift (语义偏移),即OOD样本是来自于和ID(In-distribution)不同的类别(例如plankton 50 和后面的40个类别)。另一类是covariate shift(协方差偏移),即OOD样本来自于和ID样本不同的domain(如CIFAR-10和Imagenet)。在OOD Survey综述中,所讨论的shift,主要是semantic shift,即OOD样本和ID样本具有不同的类别。
在OOD研究中,常用的数据集主要是一些小规模数据,超大规模数据集目前还没有在研究中大范围的看到,这里介绍一下经常使用的几个并说明实验的构造方法。
MNIST,Fashion- MNIST,Omniglot:这是三个单通道的灰度数据集。MNIST与Fashion-MNIST大家都比较熟悉,一个是手写数字,一个是服装图像。Omniglot是一个在小样本学习中经常使用的数据集,它里面包含了1623个类别,每个类别仅有20个样本。在OOD检测中,通常是使用MNIST作为ID数据,将Fashion-MNIST与Omniglot的混合作为OOD数据;或者是将Fashion- MNIST作为ID数据,将MNIST与Omniglot的混合作为OOD数据。由于Omniglot并不适合训练常规的分类网络,因此通常不作为ID数据。
CIFAR-10,CIFAR-100,TinyImageNet,LSUN,SVHN:这是5个RGB三通道的彩色数据集。CIFAR-10与CIFAR-100大家应该都比较熟悉,在分类网络的评测中经常看到它们。TinyImageNet是类似于ImageNet数据集的一个规模较小的数据集,它里面包含有200个种类的数据。LSUN是一个大规模的场景识别数据集,包含厨房、客厅、卧室等等之类的图像。SVHN是街景数字识别,主要是一些门牌号上的数字。这些数据集的下载链接都比较容易找到,我把它们列在文章的最后。在OOD实验设计中,通常是有以下几种设计方法,当然这些组合方案并不绝对,只是为了方便与大家常用的组合进行比较:
- CIFAR-10作为ID数据,SVHN、LSUN、TinyImageNet作为OOD数据
- CIFAR-100作为ID数据,SVHN、LSUN、TinyImageNet作为OOD数据
- SVHN作为ID数据,LSUN、CIFAR-10、TinyImageNet作为OOD数据
因为需要在ID数据上训练分类网络,因此,在设计实验时,通常会选择不太复杂的数据集作为ID,而将其他数据作为OOD数据。
在OOD检测的训练中,我们通常约定不可以使用任何形式的OOD数据,我们能接触到的只有ID数据,这也是符合OOD研究的目的的。在实际使用中,网络不可能会见到所有的OOD图像,因此,如果在网络接触到的OOD数据上评测它的拒识能力是没有意义的。在一些方法中,作者使用了OOD数据来finetune网络,这样得到的指标结果是偏高的,并且说服力不强。
OOD方法总结
Jingkang50/OODSurvey: The Official Repository for “Generalized OOD Detection: A Survey”
Generalized Out-of-Distribution Detection: A Survey


1. Classification-based Methods
简而言之,就是利用maximum softmax probability作为判断ID样本的分数。早期的OOD检测方法侧重于基于神经网络的输出来获得更好的OOD评分。
1.1 Output-based Methods
a. Post-hoc Detection:事后训练方法的优点是易于使用,无需修改训练过程和目标。研究工作包括ODIN score,energy score。
b. Confidence Enhancement Methods:训练神经网络在分布内和分布外的数据之间产生高度可区分的置信度分数。
c. Outlier Exposure:OOD检测方法的另一个分支是在训练过程中使用一组收集的OOD样本,或称“离群值”,以帮助模型学习ID/OOD差异。
1.2 Label Space Redesign
one-hot编码通常用于对分类信息进行编码。然而,one-hot编码忽略了标签之间的内在关系。例如,狗和猫之间的距离与狗和汽车之间有相同的距离是不合理的。为此,一些工作试图使用标签空间中的信息来进行OOD检测。
在测试时,将与来自不同头部的所有embedding vectors距离最小的label作为预测。
1.3 OOD Data Generation
当没有OOD样本可用时,一些方法尝试合成OOD样本以实现ID/OOD可分离性。现在的方法有利用GAN来进行操作的。
1.4 Gradient-based Methods
依赖于梯度值的OOD检测方法也是一个比较有趣的方向。ODIN方法(Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks)首先使用了梯度信息用于OOD检测,通过对输入增加一些小的扰动,检测梯度的变化。在输入增加的扰动,可以增强模型的预测置信度,最终在ID和OOD样本输入的softmax分数之间产生更大的差距,帮助判断样本是否为OOD样本。类似使用梯度值方法的还有(On the Importance of Gradients for Detecting Distributional Shifts in the Wild),该方法显式的从梯度空间推导评分函数。
1.5 Bayesian Models
最具代表性的Bayesian神经网络方法(Bayesian Learning for Neural Networks)由于其方法预测的不准确性和高额的计算代价被遗弃。进一步的探索采用自然梯度变分推理,实现实用且负担得起的现代深度学习训练,同时保留贝叶斯原则的好处(Practical Deep Learning with Bayesian Principles)。类似的工作还有(Predictive Uncertainty Estimation via Prior Networks;Reverse KL-Divergence Training of Prior Networks: Improved Uncertainty and Adversarial Robustness;Towards Maximizing the Representation Gap between In-Domain & Out-of-Distribution Examples;Locally Most Powerful Bayesian Test for Out-of-Distribution Detection using Deep Generative Models)
1.6 Large-scale OOD Detection
这个方向也是近期比较火的一个方向——大规模的OOD检测。例如,(MOS: Towards Scaling Out-of-distribution Detection for Large Semantic Space)揭示了在 CIFAR 基准上开发的方法可能无法有效地转化为具有大语义空间的 ImageNet 基准,突出了在大规模现实世界设置中评估 OOD 检测的必要性。该方法将大规模语义空间解耦为具有相似概念的小组,有助于简化已知类和未知类之间的边界。(Exploring the Limits of Out-of-Distribution Detection;Pretrained Transformers Improve Out-of-Distribution Robustness;OODformer: Out-Of-Distribution Detection Transformer.)这些方法证明了,大规模的预训练transformer模型可以有效提高方法在OOD任务上的性能。
2. Density-based Methods
OOD检测中的基于密度的方法显式地用一些概率模型对分布内数据进行建模,并将低密度区域的测试数据标记为OOD。一些作品尝试使用似然比来解决问题(Likelihood Ratios for Out-of-Distribution Detection;Input complexity and out-of-distribution detection with likelihood-based generative models)发现似然对输入复杂度表现出强烈的偏差,并提出了一种基于似然比的方法来补偿输入复杂度的影响。相对来说还是Classification-based Methods表现更好。
3. Distance-based Methods
基于距离的方法的基本思想是,OOD样本应该相对远离分布内类的质心或原型。(A Simple Fix to Mahalanobis Distance for Improving Near-OOD Detection)方法通过将图片的前景和背景分离,然后计算Mahalanobis distance。与参数化方法相比,最近的工作(Out-of-distribution Detection with Deep Nearest Neighbors)显示出非参数最近邻距离用于 OOD 检测的强大前景。非参数的方法无需提前对特征空间进行分布的假设,因此更加的简单、灵活和通用。
还有一些方法使用余弦相似度来判断测试样本特征和类内特征的距离,从而判断是否是OOD样本(Hyperparameter-Free Out-of-Distribution Detection Using Cosine Similarity;A Boundary Based Out-of-Distribution Classifier for Generalized Zero-Shot Learning)。此外,其他工作利用输入特征和类质心之间的径向基函数核(Uncertainty Estimation Using a Single Deep Deterministic Neural Network)、欧氏距离(Feature Space Singularity for Out-of-Distribution Detection.)和geodesic distance(Igeood: An Information Geometry Approach to Out-of-Distribution Detection)的距离。
除了计算样本与类质心之间的距离外,在主空间的正交补空间中的特征范数对OOD检测也是有效的(ViM: Out-Of-Distribution with Virtual-logit Matching)。CIDER(CIDER: Exploiting Hyperspherical Embeddings for Out-of-Distribution Detection)引入了一种用于OOD检测的新的表示学习框架,增大了不同类质心的最大角距离,并让类内样本尽可能的靠近类质心。
4. Reconstruction-based Methods
该类方法的核心想法是,encoder-decoder架构对于类内样本和分布外样本往往产生不同的输出。编码器解码器模型的输出表现可以用来判断样本时ID样本还是OOD样本(通常模型生成得到的类内样本效果会更好,以此来判断)。例如,如果一个模型只使用ID data来进行训练,那么输入OOD data,他便无法进行很好的处理,这样就能判断样本是不是OOD样本了。
但很显然,这样的方法是pixel-level的,因此训练成本会比较高。为了解决该问题,(Rethinking Reconstruction Autoencoder-Based Out-of-Distribution Detection)方法尝试reconstruct with hidden features,即只生成隐式特征,不需要恢复原图。