在工业检测领域,将训练好的模型部署到实际场景时,常会碰到一个问题:如果输入的图片是一个新的类别,模型之前根本没见过,那么,无论模型的预测结果是什么,都必会是错误的。这种情况下,有两种选择:一种是将新出现的类别加入训练集,从新训练一个模型;另一种便是我们将要介绍的OOD检测方法。
问题定义和使用场景
定义:在分类任务中,给定测试图片,若模型在训练阶段模型见过或类似的图片,则能正确分类;但如果与训练集完全不相关,也会被强制判定为训练集类别中的一种,这种情况是不合理的。OOD算法希望能判断的分布状况是否与训练集一致,若一致,则称为in-distribution(ID),否则称为out-of-distribution(OOD)。
使用场景举例:在MNIST上训练的一个分类模型,然后,输入一张“马”的图片,会被归类为数字0~9,这是错误的。此时,MNIST数据集就是in-distribution,相对于ID而言,“马”是out-of-distribution。
本文将为大家介绍五种OOD检测方法
1- 基于softmax的OOD检测方法
在分类网络中,对进行运算,可以得到概率向量。而基于的OOD检测方法,就是利用了概率向量的特点,直接判定是ID样本还是OOD样本。本节介绍MSP和ODIN,两者都是OOD领域较为经典的方法。
1- 1 - MSP
MSP是Maximum Softmax Probability的缩写。在分类任务中,分类器的输出概率为,其中,是预先设定的类别总数。给定,若标签,则很大,其余分量很小;而且,实验发现,若为OOD样本,那么的任意分量都很小,说明模型不确定的类别。如下图所示,使用MNIST数据集训练的模型进行推理,会发现“马”的概率向量的每个分量都很小,而在数字0~9的概率向量中,都有一个特别大的分量。
正是利用了这个特性,MSP定义OOD分数定义为
如果分数较大,判定为ID样本,否则判为OOD样本。
MSP的缺点:当ID与OOD区别较大时,效果好;区别较小时,效果较差。在NuSA的介绍中,会看到这是因为从特征到logits会丢失了OOD样本的一些信息。
1 - 2 - ODIN
ODIN代表着Out-of-DIstribution detector for Neural networks,它在MSP的基础上,引入了temperature scaling和input preprocessing,使ID样本和OOD样本之间的区分度变大。
首先,介绍temperature scaling。在MSP中,OOD分数为
。
而在ODIN中,引入了一个温度因子,变成了