Out-of-Distribution Detection with Semantic Mismatch under Masking 论文阅读
文章目录
传送门
一、介绍
首先文章介绍了一下检测OOD数据的重要性,属于老生常谈的内容。随后文章提出了现有一些检测OOD样本的方法以及缺点:
- 使用从原DNN模型中提取出的特征区分OOD数据。缺点是由于共享了DNN的特征,需要牺牲In-D样本的分类精度去提高OOD样本的检测精度
- 基于密度的OOD检测方法。该方法使用概率方法(如密度、似然)去对In-D数据进行建模。缺点是这些概率方法比较不可靠
论文说的,不是我说的 - 还有使用生成模型(如VAE)的方法去重建输入。该方法的思想是In-D数据能够被很好的重建,但是OOD数据难以被重建。可以通过比较重建后图像与原图像之间的差异来判断OOD数据。缺点是在一些情况中OOD数据也可以被重建
随后论文提出了自己的基于密度的OOD检测框架,称为 Masked OOD Catcher(MOODCAT),该模型使用被遮盖区域语义上的不匹配作为距离指标。首先随机的对输入图像的一块区域进行遮盖,随后基于预测结果使用生成模型去合成被遮盖的图像,随后计算原始图像和合成图像之间的语义差异进行OOD检测。
关于使用生成模型,文章中引用到了两篇相关的文章:
Improving reconstruction autoencoder out-of-distribution detection with mahalanobis distance
简单介绍
一些之前关于OOD检测的研究,分别使用马氏距离和重构损失进行OOD检测。在该论文中作者使用马氏距离和自编码器的重构损失来构造置信度得分。使用 E 、 D E、D E、D 分别表示编码器和解码器, x x x 表示输入图像, x ^ = D ( E ( x ) ) \hat{x}=D(E(x)) x^=D(E(x)) 表示重建图像,使用 l ( x , x ^ ) l(x,\hat{x}) l(x,x^) 表示重构损失, μ ^ \hat\mu μ^ 和 Σ ^ \hat\Sigma Σ^ 分别为 E ( X t r a i n ) E(X_{train}) E(Xtrain) 上的均值和协方差。最后获取到的异常度如下:
n o v e l t y ( x ) = α ⋅ D M ( E ( x ) ) + β ⋅ l ( x , D ( E ( x ) ) ) D M ( E ( x ) ) = ( E ( x ) − μ ^ ) T Σ ^ − 1 ( E ( x ) − μ ^ ) novelty(x)=\alpha\cdot D_M(E(x))+\beta\cdot l(x,D(E(x)))\\ D_M(E(x))=\sqrt{(E(x)-\hat\mu)^T{\hat\Sigma}^{-1}(E(x)-\hat\mu)} novelty(x)=α⋅DM(E(x))+β⋅l(x,D(E(x)))DM(E(x))=(E(x)−μ^)TΣ^−1(E(x)−μ^)
其中 D M D_M DM 为马氏距离。使用 n o v e l t y novelty novelty 判断样例是否属于OOD数据Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery
参考博客:深度学习论文笔记(异常检测)—— Generative Adversarial Networks to Guide Marker Discovery_菜到怀疑人生的博客-CSDN博客
简单介绍
该论文在DCGAN(深度卷积对抗生成网络)的基础上,构建了名为AnoGAN的架构。DCGAN训练完毕之后,冻结DCGAN的参数。随机在隐空间选在点 z y z_y zy,生成器生成的图像记为 G ( z y ) G(z_y) G(zy),测试图像记为 x x x,通过反向传播利用优化算法在隐空间中找到点 z y ′ z_y' zy′,使得 l o s s loss loss 最小。 l o s s loss loss 分为两部分:
Resiudal loss: R ( z y ) = ∑ ∣ x − G ( z y ) ∣ R(z_y)=\sum|x-G(z_y)| R(zy)=∑∣x−G(zy)∣
Discrimination loss: D ( z y ) = ∑ ∣ f ( x ) − f ( G ( z y ) ) ∣ D(z_y)=\sum|f(x)-f(G(z_y))| D(zy)=∑∣f(x)−f(G(zy))∣
其中 f f f 为判别器中某一层的输出。最终定义 l o s s loss loss 函数为 A ( z y ) = ( 1 − λ ) R ( z y ) + λ D ( z y ) A(z_y)=(1-\lambda)R(z_y)+\lambda D(z_y) A(zy)=(1−λ)R(zy)+λD(zy)。直接使用 l o s s loss loss 度量图片差异,如果经过若干轮优化后, l o s s loss loss 仍然大于某个阈值,则认为图片存在异常。
额外赠送:Pixel-wise Anomaly Detection in Complex Driving Scenes
原论文:[2103.05445] Pixel-wise Anomaly Detection in Complex Driving Scenes (arxiv.org)
参考博客:Pixel-wise Anomaly Detection in Complex Driving Scenes_yijun009的博客-CSDN博客
简单介绍
该论文使用语义分割的map图重新生成原始图像,随后比较原始图像与重新生成的图像之间的像素差异,从而得到像素精度的异常物体。
可以看到,上述生成模型都是通过 GAN 网络或者 AE 网络等重建图像,随后比较重建后图像与原始图像之间的距离。距离直接体现在特征空间中的距离上。而本篇论文使用神经网络来判断重新生成的图像与原始图像之间的相似性,重新生成图像与原始图像不必相同,但是要保证语义上相似,这是相对新颖的思想。
论文的思想在于,分类器的结果携带有判别语义信息,对图像合成的过程有较强的约束力。对于正确分类的In-D数据,MOODCAT能够根据未被遮盖的区域去生成被遮盖的区域,而对于OOD样本,生成的区域与原区域会存在较大的差异。
其实前者就是 CGAN 的思想。而后者其实仍然是生成模型判断OOD数据的范畴。
MOODCAT是一个独立的OOD检测器,不依赖于分类器。
论文提出其工作有如下贡献:
- 提出了新的OOD检测框架,识别出遮盖区域之下的语义不匹配。
- 提出了新的遮盖和基于条件(条件是指已知分类标签)合成图像的工作流,调研了各种maks策略和条件生成器的设计。
- 部署了一个由多种质量评价指标和一个新提出的条件二元分类器组成的异常打分模型。
二、相关工作
1、现有的OOD检测方法
-
基于分类的方法
根据DNN的输出得到OOD分数。MSP方法使用最大softmax概率判断In-D数据。ODIN 将温度测量用于softmax值上进行OOD检测。这些方法易于实现,但是绝大多数会改变原有分类器的训练过程,并且减少In-D样本的分类精度。
-
基于密度的方法
将概率模型应用在In-D样本的分布上,将在低密度区域的测试数据看做OOD数据。最近的研究发现学习到的概率模型可能会将较高的似然赋给OOD数据,因为获取到的似然可能由低级特征(比如位置和方差)信息决定,而不是由高级的语义特征决定。特定的网络结构和训练的数据决定了概率模型能否学习到语义信息。
我理解的是,在一些概率模型中,图像的低级特征,比如物体位置、颜色、大小会影响概率模型,从而无法有效区分OOD数据。
-
基于距离的方法
基于距离的方法认为OOD样本在空间中距离In-D样本较远。一些论文会计算In-D数据不同类别特征空间中的质心,或者重建输入图像。对于高级的语义特征,其关于距离的假设不成立,同时较高的重建质量无法保证图像属于In-D数据。
我的理解是可能距离很远,但是语义接近。或者语义相差过大,但是图像之间的距离较小。
2、基于重建的OOD检测
基于重建的OOD检测属于基于距离的OOD检测。其假设是In-D数据能够从生成模型中较好的重建出来,但是OOD数据无法重建。之前的基于重建的OOD检测器仅通过像素级的质量下降比较来判断OOD数据。但是如果没有关于OOD样本的先验知识,无法保证重建图像后会出现质量下降。相反,MOODCAT 尝试生成 In-D 图像而不是重建图像,这与生成模型的目标一致。
下划线的部分我也不懂,原文贴在下边:
However, without prior-knowledge about OOD samples, there is no guarantee for such quality degradation. In contrast, MoodCat tries to synthesize In-D images instead of reconstructing the inputs, which is in line with the objective of the generative model.
3、使用额外OOD数据的OOD检测
一些研究提出在模型训练中使用额外数据集的数据来模拟OOD样本。一些典型的技术有 Outlier Exposure(OE),Maximum Classifier Discrepancy(MCD)以及 Unsupervised Dual Grouping(UDG)。OE 使用有标签的 OOD 样本,MCD 和 UDG 使用额外的无标签数据,需要包括In-D和UDG数据。这些方法都是基于分类的方法,使用额外数据来训练分类器模型。本篇论文提出的模型也需要使用额外的训练数据,进一步改善模型性能。由于 MOODCAT 独立于分类器,因此额外引入训练数据不会影响模型的分类性能。
3、开放集合识别
开放集合识别(Open Set Recognition,OSR)问题与OOD问题类似,目标是区分已知和未知类。
论文 Generalized Out-of-Distribution Detection: A Survey 中介绍有 OSR 问题与 OOD 问题的差别
- 原论文:[2110.11334] Generalized Out-of-Distribution Detection: A Survey (arxiv.org)
- 参考博客:[【综述】离群/异常/新类检测?开集识别?分布外检测?一文搞懂其间异同! - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/426521773#:~:text=OSR%3A Open Set Recognition%2C “开集识别”,OOD Detection%3A Out-of-Distribution Detection%2C “分布外检测”)
简单介绍
协变量偏移(Covariate Shift):数据 P ( X ) P(X) P(X) 变动, P ( Y ∣ X ) P(Y|X) P(Y∣X) 不变,即测试集和训练集中分布出现变化,如图像风格的变化,不同类别比例
语义偏移(Semantic Shift): P ( Y ) P(Y) P(Y) 发生变化,可以理解为测试集中出现训练集中没有出现的类别
由上图可以看到,OOD检测包括单类和多类的语义偏移检测,OSR 仅包括多类的语义偏移检测。这里的多类和单类指训练集中有多个类别还是只有一个类别。
一些OSR算法也部署了生成模型,但是与MOODCAT有很大不同。OSRCI使用GAN作为数据增强的方式来训练分类器。C2AE和CVAECapOSR使用条件VAE/自编码器。C2AE基于重建误差检测OOD数据,但是需要K次推导来获取最终决策。MOODCAT只需要推导一次,并且基于语义误差来完成决策。 CVAECapOSR在隐空间检测OOD数据,MOODCAT而是在图像空间中进行检测。
三、算法
该模型虽然与分类器相互独立,实现可插拔的效果,但是需要获取到分类器的预测结果,属于三个层次分类中的第三层,使用模型预测分数。
1、方法总览
上图展示了MOOD算法的三阶段:随机mask、合成以及打分。首先随机对输入图像 x x x 进行mask操作得到 x m = M ( x ) x_m=M(x) xm=M(x),随后应用生成模型 G G G 得到新的图片 x ′ = G ( x m , y ) x'=G(x_m,y) x′=G(xm,y),其中 y y y 为图像对应的标签。最后使用了一个异常评价模型来判断输入图像和合成图像之间的差异。论文在训练时使用真实的标签 y y y,在推断时使用分类器的输出 y = C ( x ) y=C(x) y=C(x)。
当输入图像 x x x 属于 In-D 样例时,生成模型能够根据 mask 区域周围的信息以及分类结果合成较好的图像,与原始图像之间具有较近的语义距离。正如上图的 stop 标志一样。当输入图像 x x x 属于 OOD 样例时,分类器提供的预测标签与原图语义无关。这样即使仅 mask 了部分区域,也难以还原原始图像。正如上图中的汽车,其属于OOD数据,但是分类器的分类结果是 stop 停车标志,则重新合成的图像与原图像有明显的语义差异,判断其为OOD样例。
注意上一段中的黑体字部分,是论文的一个重要思想。之前使用生成模型方法的缺点是对分布外的数据也可能提供良好的图像生成,而如果在这里引入了预测标签,则会避免该情况。
常规的使用模型预测分数判断OOD的方法,可能存在误差,而在本模型中使用模型预测结果+合成图像,一方面避免了分数判断方法过于单一、不可靠的缺点,另一方面也避免了生成模型方法对OOD数据也能提供良好数据生成的缺点。
2、Mask 机制
MOODCAT中,生成模型以输入图像为模板,根据提供的标签,生成具有相同语义信息的图像。高质量的生成图像能够更好的反映出OOD图像与合成图像的差异。但是由于输入图像和OOD图像的标签之间存在冲突(冲突是指原始OOD图像,与标签反映了不同的语义信息),保留原始输入图像中过多的信息会降低生成的质量(也即可能完美的还原出OOD图像,影响OOD检测的质量)。因此需要在原图 x x x 中使用 mask 机制去移除冗余信息。
mask 机制也为语义上的合成提供了帮助,进一步解释见下
mask机制的贡献:
-
对输入图像进行 mask 操作能够帮助生成模型更好的根据语义信息(提供的标签)还原图像
我的理解是,在 Encoder-Decoder 方法中, D ( E ( x ) ) D(E(x)) D(E(x)) 使用的是完整的图像信息,而假设采用 D ( E ( m a s k ( x ) ) ) D(E(mask(x))) D(E(mask(x))),则使用的是不完整的图像信息,因而重新生成的过程中会考虑更多标签带来的影响
-
是一种数据增强手段,能够促进编码器提取输入特征,改善合成质量,尤其是改善合成 In-D 数据的质量
3、生成模型
文章采用生成器-解码器架构作为生成模型,使用被 mask 之后图像
x
m
x_m
xm 作为输入,编码器
E
E
E 被用于捕获低级特征并且将其编码为隐向量
z
=
E
(
x
m
)
z=E(x_m)
z=E(xm)。使用 VAE 中提出的KL 散度来规整隐向量(使其分布接近正态分布):
L
K
L
D
=
D
K
L
[
N
(
μ
(
x
m
)
,
Σ
(
x
m
)
)
∣
∣
N
(
0
,
1
)
]
L_{KLD}=D_{KL}[\mathcal N(\mu(x_m),\Sigma(x_m))||\mathcal N(0,1)]
LKLD=DKL[N(μ(xm),Σ(xm))∣∣N(0,1)]
其中
N
(
μ
,
Σ
)
\mathcal N(\mu,\Sigma)
N(μ,Σ) 表示多元高斯分布。使用
V
A
E
VAE
VAE中的重参数化技巧(reparameterization trick)来获取隐变量
z
=
μ
(
x
m
)
+
ϵ
⋅
Σ
(
x
m
)
z=\mu(x_m)+\epsilon\cdot\Sigma(x_m)
z=μ(xm)+ϵ⋅Σ(xm) ,其中
ϵ
∼
N
(
0
,
1
)
\epsilon\sim\mathcal N(0,1)
ϵ∼N(0,1)
其解码器 D D D 被用于生成合成图像 x ′ = D ( z , y ) x'=D(z,y) x′=D(z,y)。使用 class-condition batch normalization layer 来进行合成,该 layer 常用于指定类别的图像生成。文章使用基于 Large scale gan training for high fidelity natural image synthesis 论文中的生成器架构,应用了经典的 l 1 , l 2 , S S I M l_1,l_2,SSIM l1,l2,SSIM 作为 x ’ x’ x’ 与 x x x 比较的损失项。使用基于 U-net 的判别器获取到对抗损失改善生成图像的质量。与传统的判别器相比,U-net 能够在像素级别上判断fake image
4、异常打分模型(Anomalous Scoring Model)
文章提出的异常打分模型基于两种类型的得分:条件二元分类器(conditional binary classifier),图像质量评估模型(Image Quality Assessment models,IQA)。
条件二元分类器:将判断 OOD 图像和生成图像之间是否不匹配看做二分类任务,可以使用自监督的方式获取到二元分类器。文章进一步的为分类器提供了语义标签,增强了分类效果。
需要注意到是训练过程中不依赖OOD数据,为了弥补确实 OOD 样例的不足,文章使用根据错误分类标签而生成的图像来模拟 OOD 样例,从而使分类器学习到了语义上的不匹配。该二元分类器也支持无标签的学习。其训练过程如下图所示
x
y
′
x_y'
xy′ 表示对于标签为
y
y
y 的样本
x
x
x 重新生成的模型,
(
x
,
x
y
′
)
(x,x_y')
(x,xy′) 表示正样例,
x
y
′
′
x'_{y'}
xy′′ 表示通过随机采样得到不匹配的标签
y
′
y'
y′ 在
x
x
x 上重新生成的图像,
(
x
,
x
y
′
′
)
(x,x'_{y'})
(x,xy′′) 表示负样例。使用
C
b
C_b
Cb 代表该二元分类器,则损失函数为
L
C
b
=
R
e
L
U
(
1
−
C
b
(
(
x
,
x
y
′
)
,
y
)
)
+
R
e
L
U
(
1
+
C
b
(
(
x
,
x
y
′
′
)
,
y
′
)
)
L_{C_b}=ReLU(1-C_b((x,x'_y),y))+ReLU(1+C_b((x,x'_{y'}),y'))
LCb=ReLU(1−Cb((x,xy′),y))+ReLU(1+Cb((x,xy′′),y′))
可以通过设定阈值的方式,直接通
C
b
C_b
Cb 的输出来判断 OOD 样例。
IQA:IQA 模型被广泛用于在许多CV任务中(如降噪,压缩等)衡量图像合成的质量。论文采用 IQA 模型作为合成的指标。
论文提出上述两种方法从不同的角度判断 OOD,可以同时使用上述两个方法,串行的判断 OOD 样例,从而达到更好的性能。
5、使用无标签数据进行学习
上边的条件二元分类器使用 In-D 来构造负样例。可以使用外来数据达到同样的目的。训练中的阜阳里只需要满足用于合成的语义标签和输入图像不匹配即可。因此可以使用在 In-D 上训练得到的分类器在无标签数据(外来数据)上做预测,得到伪标签,随后随机抽取与伪标签不一致的标签,生成图像,即可满足要求。
四、实验结果
1、实验设置
文章在 SC-OOD benchmark 上进行测评。SC-OOD 的有点事提供了语义级别的 OOD 检测。原有 OOD 检测数据集通常以一个数据集作为 In-D,其他数据集作为 OOD。但是其他数据集中也包含有与 In-D 中重复或相似的类。因此 SC-OOD 对这些数据集进行了语义上的合并。
2、实验结果
训练过程中不需要额外的 OOD 数据集
该表中判断 OOD 的模型都不需要额外的 OOD 数据集进行训练。MOODCAT 提供了更好的分类性能以及更好的稳定性,即在不同测试集上表现相对稳定。
训练过程中引入额外的 OOD 数据集
该表中判断 OOD 的模型需要额外的 OOD 数据集进行训练。