期刊:ECCV 2020
作者:朱文轩 卡内基梅隆大学
框架:重点在于对此半监督学习的异常检测方法的核心内容:神经批量采样器、AE、预测器的介绍和训练作描述,最后给出实验结果和结论。
评价:主要介绍的一个新的半监督的异常检测方法,对其方法所使用的结构和训练步骤描述较为详细,但是缺少代码,只能看看内容,积攒点思路。
术语:the main mode of a data distribution 数据分布的主要模式、key hypothesis 关键假设、loss profile 损失曲线、meta algorithm 元算法、one-class-classification 单类分类、outlier detection 离群检测、prior assumption 事先假定、anomaly-free 无异常、to more generally 更笼统地说、skew 偏差、ubpar performance 优质性能、crack detection 裂缝检测、deep adversarial learning 深度对抗学习、bottleneck tensor 瓶颈张量、local minimas局部最小值、heuristics-based strategy 基于启发式的策略、lear everthing from scratch 从头开始学习一切、thorough evaluation 全面评估、generalization capabilities 概括能力
目 录
2.1 Anomaly Detection and Segmentation 异常检测和分割
2.2 One-Class Classification 单类分类
用于半监督的异常检测且带有强化学习的神经批量采样
摘要
异常点通常很小。统计学角度:异常现象的发生概率很低,且不是来自数据分布的主要模式。从数据的自然分布中学习异常数据的生成模型是很困难的,因为数据分布严重偏向大量的非异常数据。使用SGD在这种不平衡的样本数训练生成模型时,每次更新后的loss值有一个预期的趋势,异常数据样本的损失值会波动。
关键假设:训练期间损失值的变化可以作为识别异常数据的一个特征。
提出了一种新型的半监督学习算法,用于异常检测和分割。使用异常分类器,输入:通过自动编码处理的数据样本的损失曲线。
损失曲线:迭代训练期间产生的重建损失值序列。
选择使用损失曲线进行判别的原因:在不平衡的数据上训练生成模型,大部分梯度更新会被非异常数据支配,导致数据的不稳定性和可能的非融合行为
为扩大异常数据和非异常数据之间损失曲线的差异,引入了一个基于强化学习的元算法,称其为神经批量采样器。可在自动编码器训练期间对训练批次进行战略性采样。
Q:何为战略性采样?
结论:在多个具有高度纹理和物体多样性的数据集上的实验结果表明:域现有的最先进的基线相比,我们的方法的能力有效。
关键词:异常检测、半监督学习
1 Introduction
目标:利用有限的标签数据来检测分割无标签的图像中的异常情况。制造业的应用:光学检测、建筑工地等安全检查任务。
极其不平衡的数据集出现原因:
- 近年来的分割算法在数据收集过程中很少出现异常情况
- 数据收集过程中很难捕捉到所有可能的异常模式,收集到的异常代表性不足
其中非异常数据占主导地位,异常图像占数据集的小部分。
单类分类/离群检测:对检测新的输入与训练数据相比,是否超出分布范围。
本文关注的是:只出现在物体或图像的小区域的异常。
无监督的异常检测;假定存在一大组无异常的图像作为训练数据
本文希望探索半监督的方法来进行图像的异常检测和分割。可被看作一个二进制的半监督分割任务,其数据分布有很大的倾斜性。
引入异常分类器:利用寻来你自动编码器的数据损失曲线来检测和分割异常,会定期重新初始化和训练自动编码器。
产生的损失曲线会发生变化:是因为初始权重和抽样训练批次的不同。会给分类器提供多样化的输入,防止过拟合。
Q:为自动编码器抽样训练批次的最佳方式是什么?
如何产生最具辨别力的损失曲线?
传统上:基于启发式的方法。
- 随机抽样。是为提供稳定的梯度估计
- 只对非异常区域进行采样。只能在少量的标记数据上进行
本文选择使用启发式方法,引入基于强化学习RL的神经批处理。采样器被训练成从数据中产生训练批,用于自动编码器,使异常和非异常之间的损失曲线差异最大化。自动编码器作为一个代理,唯一的目的是提供损失曲线作为分类器的输入。
本文的贡献:
- 提出了一个半监督学习框架。用于数据严重不平衡的二元分割任务,应用于异常检测和分割。
- 引入了一个异常分类器。将自动编码器的重建损失曲线作为输入。且自动编码器会被定期初始化和重新训练,产生多样化的损失曲线作为输入。
- 训练了一个基于RL的神经批量采样器。为自动编码器提供训练批次。旨在使异常和非异常区域间的损失曲线的差异最大化。
- 在横跨大量物体和纹理的多个数据集上的实证结果表明:我们的工作更有优势。
2 相关工作
2.1 Anomaly Detection and Segmentation 异常检测和分割
无监督学习中的目标:检测和分割与训练数据不同的异常区域。Garrera等人异常区域的确定:在非异常图像上训练一个自动编码器,让其过度适应并使用测试图像上的重构损失大小来确定异常区域。
2.2 One-Class Classification 单类分类
离群点检测。关注的是检测相对于训练集的非分布样本。关注的是类级或图像级的异常值,异常检测任务中的异常值和非异常值通常属于同一类别。
工作路线一:使用统计模型来检测分布外的样本。例如,一些工作对从训练集的样本中提取的特征进行拟合分布,并将远离该分布的样本表示为离群值。在低维子空间中不符合要求的样本或形成小的个体聚类的样本被表示为离群值。
工作路线二:使用深度对抗学习进行单类分类。提出:将生成器学习为正常事件的重构器,将重构效果不好的事件块标记为异常。
3 Method 方法
介绍半监督异常检测和分割的算法。数据D分为Dl和Du,其中Dl包含:少量标签图像、收集到的异常图像,Du包含:大的无标签的图像集。目标:利用整个数据集来预测Du中图像的相应标签。
算法的高层次概述:实线:前向通道的管道,红色虚线:损失和奖项的流动,用来训练预测器和神经批量采样器。
过程中不进行任何数据扩充,也不使用先进先出的缓冲区。
3.1 Overview 概述
高层次上:框架包含3个模块:神经批量采样器1个、卷积自动编码器1个、异常预测器1个。
首先考虑在不平衡的数据上训练自动编码器AE会发生什么?
计算AE的重建损失并更新权重时,大部分的损失是由非异常区域贡献的。即AE主要对非异常区域的重建进行优化,会让异常区域的损失曲线高度波动,非异常区域的损失曲线更加收敛。基于此,训练了一个基于CNN的预测器,根据产生的损失曲线对异常情况进行分类。.
为放大异常区域和非异常区域的损失曲线之间的差异,使预测器更容易分类,使用强化学习训练了一个神经批量采样器,会为AE提供训练批次。
下面是3个模块的具体设计。
Neural Batch Sampler 神经批量采样器
被引入用来产生AE的训练批次。最大化异常与非异常区域的损失曲线间的差异。神经批量采样器可能会意识到:特定的模式可能会导致辨别力较差的损失曲线,较大的损失值对应于异常。提供二进制采样历史hi作为输入,hi表明图像中的像素是否在之前的部分被采样过,目的是为了让采样器了解已经被采样的情况。
(xi, li, hi)连接起来表示状态。xi为RGB信息;li为当前图像的像素级重建损失;hi为二进制采样历史。
被送入5个卷积层、2个全连接层,产生一个表示策略的行动概率的输出张量。
策略的动作空间包含9个动作,有8个不同的方向。
会将提取到的补丁的中心转移(补丁的初始中心随机选择),允许神经批量采样器随机切换到一个新图像
Autoencoder 自动编码器AE
AE只为预测器产生损失曲线。利用卷积层将输入补丁在空间上压缩成1x1xK的瓶颈张量,再转置卷积层,将其解码成原始输入。还在编码器和解码器间添加了一些捷径连接,用来加快训练速度。后续会定期重新初始化和重新训练AE,是为解决损失曲线种类减少的问题。每次AE被重新训练时,都从不同的权重集开始,朝不同的局部最小值优化。
损失曲线需要存储,存储位置:一个固定大小的FIFO缓冲区
Q:什么是瓶颈张量?
Predictor 预测器
在”损失空间“进行物体分割。是用一个完全卷积网络来实现的,使用扩张卷积、以指数级的方式扩大感受域,并增加了层数。
输入:大小为WxHxT的损失历史记录,W、H分别对应于图像的宽度和高度
输出:WxHx1的二进制分割掩图
预处理形式:对原始损失历史记录进行标准化处理(将损失历史记录除以其平均值)
预测器可关注各个像素的损失曲线之间的相对差异
3.2 Training
需要训练的模块:神经批量采样器、AE、预测器。
高层次上,3个组件的训练步骤以交替的方式重复,直到收敛。
训练步骤:
1、神经批处理采样器为AE采样训练批次,AE使用这些批次进行更新
2、重新评估重建损失l
3、重建损失被附加到损失曲线h上,最旧的元素被弹出,被保存到FIFO缓冲区中
4、预测器从缓冲区中采样损失曲线并更新自身,同时产生预测损失,用于计算神经批量采样器的回馈
5、神经批量采样器使用前面产生的回馈来进行更新,整个过程重复进行
在重新初始化AE后,跳过神经批量采样器的前M个更新(是由于开始的重建损失值太嘈杂)
神经批量采样器
从数据集D中连续的小块{p1,p2,……,pn}采样来训练AE。引用了强化学习框架:可根据行动序列结束时获得的奖励/反馈来对将要采取的行动进行结余分配。
奖励函数Rpred:定义为预测损失的负值
l perd被定义为加权二元交叉熵损失(考虑数据中固有的不平衡性)
首先会取维度为WxH的单个图像的平均值,是为防止具有较大异常的图像主导损失信息
K:批次大小
α:根据经验计算的异常像素和非异常像素之间的再加权系数
y:小标签子集Dl中的地面真实注释
y^:框架结束时从预测器中获得的预测标签
一个好的也许是次优的基于启发式的策略。允许通过行为克隆为每个采样的补丁分配密集的奖励来引导探索阶段,允许神经批量采样器从一个有意义的策略开始。
基于启发式的策略:只从非异常的位置采样。
我们可以通过在我们的小标签子集Dl上运行神经批量采样器来进行行为克隆,通过检查相应的标签y patch是否包含任何异常来为每个采样的补丁分配一个R clone奖励。
Q:行为克隆?
R clone中,批量采样器会在第一个非异常斑块附近区域反复采样,以此减少采样异常的风险。为防止这种情况的发生,会鼓励神经批量采样器通过一个小的覆盖率奖励R cover来覆盖数据的不同部分,保留了对探索的激励,并防止过早地成为单一的行动模式。
训练能以阶段性的方式进行。首先对R clone和R cover进行优化,以获得良好的初始策略;再转向对R进行优化,获得异常和非异常情况之间的明显损失概况。存在的问题:两个目标之间的粗略过度会导致不稳定,选择从计划抽样方法中得到灵感。
L:超参数
β:行为克隆奖励和真正的优化目标之间的权重
j:训练步骤。j增加,R pred会得到更多强调 ,刚开始会被行为克隆所支配。成功达到目的:利用行为克隆的密集奖励来引导神经批量采样器
RRINIFORCE 标准策略梯度算法:
由神经批处理采样器设定
是奖励的折现总和
使用蒙特卡洛抽样对期望值进行近似。
在我们的方案中,正常化步骤在训练期间消除了奖励信号
AE
在神经批处理采样器产生一个补丁序列后,补丁被分组为大小为N的倍数的小批,被送入AE。
评估重建补丁p ^i和输入补丁p i间的重建损失l ae,将损失反向传播到AE中。
为了产生不同数量的损失曲线来训练预判器,AE用随机权重重新初始化并定期重新训练。根据经验,这是在一个固定数量(K)的更新步骤后进行的,其中权重更新随着AE的收敛而变得很小。在每个更新步骤之后,我们评估数据集D的新重建损失并更新损失曲线。新的重建损失值被用作神经批处理采样器的输入,而标签子集Dl的更新损失剖面则在FIFO缓冲器中用于训练预测器。无标签子集Du的最佳性能损失曲线被保存在光盘中,用于推理。
预测器
从根本上说,预测器只是一个基于损失曲线进行预测的分类器。
我们将损失曲线保存在一个先进先出的缓冲器中,然后从中随机取样,解决了在类似时间段内产生的损失曲线是高度相关和相互依赖这个问题
3.3 Inference 推断
推理步骤:将损失曲线再次通过预测器运行,产生Du的原始预测结果。一个全连接的CRF被应用于原始预测,以平滑预测结果,产生最终的预测标签。
CRF的核心是假设具有相似RGB值的附近区域可能属于同一类别,同时去除原始预测中的小型孤立区域。
3.4 Interpretations 解释
CV观点。将预测器的输入从RGB空间转换为“损失轮廓空间”。此时转换的两个随机来源:自动编码器的周期性重新初始化(随机地设置损失空间的起点)、神经批量采样器的采样策略所产生的随机性(将起点移向损失空间的局部最小值)。
标记数据稀少时成功训练参数化模型的原因:RGB空间和损失空间的数据增量结合在一起,导致了RGB图像和损失曲线间多样化的一对多关系。
Q:损失轮廓空间?
RGB空间和损失空间的数据增量这部分详细指什么?
RL观点(强化学习的观点)。将神经批量采样器以外的一切都视为定义任务的环境的一部分。奖励评估需要在一个不断变化的AE和一个缓慢收敛的预测器上评估神经批量采样器的行动。
神经批量采样器接收当前重建损失作为输入的原因之一:这种策略不仅能在异常区域和非异常区域之间产生差别明显的损失曲线,还能在AE的不同训练阶段发挥作用。.
4 结果
在多个数据集上进行了全面评估。
基线
- MVTec AD数据集。只在非异常数据上训练自动编码器后,根据最终的像素级重建损失进行预测(代码没有公开提供)。
- U-Net。是一种最先进的监督学习方法,最初用于二进制物体分割,后来被推广到许多其他语义分割任务。
还将标准的数据增强技术应用于基线,以帮助它们在数据稀缺的情况下更好地进行推广。我们创建了自己的数据分割(标签和无标签)。
4.1 数据集
- MVTec AD。训练集仅由非异常图像组成,测试集为异常和非异常图像的混合。测试集中的异常情况也按不同模式分组进行分析,训练集是随机抽样的。无监督基线的预处理、训练和评估与原MVTec AD数据集的论文完全一样。
- NanoTWICE。异常点通常很小,仅由少数几个像素组成。该数据集由45幅图像组成,其中5幅图像为无异常图,剩余40个都含有某种形式的异常现象。NanoTWICE数据集的所有测试数据都包含某种形式的异常。所有的图像首先被调整为256×256的大小,然后我们随机抽取5张图像作为我们的标签集Dl。所有剩下的图像都被放在无标签集Du中。为了训练U-Net,我们使用Dl并保留Du用于性能评估。使用5张无异常图像进行训练,并对其余的图像样本进行评估。
- CrackForest。最初是为监督学习任务创建的,共有118张图像。它包含了许多有裂缝的道路图像,并重新反映了城市道路的表面。作为一个用于监督学习的数据集,该数据集的所有118张图像都包含某种异常现象。将图像大小调整为256×256,并从整个数据集中随机抽取5张图像作为我们的半监督方法和U-Net的标记集Dl,并保留数据集的其余部分作为未标记集Du或用于评估。与MVTec AD数据集不同的是,异常情况没有按类型分组,所以我们不知道采样数据是否涵盖了所有的异常模式,但由于样本数量少,很可能有些模式在训练集中没有体现。由于该数据集不包含任何无异常的图像样本,我们不对该数据集的无监督方法进行评估。
4.2 Experimental Results 实验结果
在重建损失的单点上进行阈值处理,预测出了大量的假阳性,取得了良好的召回率,精度得分极低,影响了其总体F1得分。不一定只有异常区域会产生较高的重建损失。
即使只有5个标记的样本,U-Net也能作为一个强大的基线,与无监督方法相比,它取得了更高的F1分数,即使它的召回分数比无监督方法低,但它在许多类别中的精度更高。在NanoTWICE上,我们提出的方法得到了极高的召回分数,但精度却落后于U-Net,从而使其F1分数下降。
在MVTec AD上的表现,物体类、纹理类。表现最好的方法用黑体表示
我们的算法在确定异常点的确切尺寸和形状方面遇到困难。因为自动编码器的结构在编码阶段压缩了空间信息,会导致解码或重建过程中空间分辨率的损失,因此相邻像素的重建损失曲线是密切相关和相互依赖的,同时确切的异常点边界也变得困难,极大地影响了方法的精度,产生了许多不在地面真相中的假阳性。
实际应用中,问你通常更关心的是异常点的位置,而不是确切的形状和大小。
Q:那确定位置是依据什么来确定呢?难道就不需要形状大小来确定了吗?
我们提出的方法似乎能检测到训练期间不存在的异常模式。
三行分别是:原始图像、预测值、地面实况
左边是MVTec AD的训练(不同类别的异常现象所呈现的模式并没有在标注的集合中被采样)。右边分别是CrackForest(左)和NanoTWICE(右)的预测。
不同模式的异常现象的损失概况有一些共同的特征,这些现象可被我们的预测器拾取和学习,导致对未见过的异常模式的某种形式的概括性。
5 Conclusions 结论
我们为异常检测和分割任务提出了一种新的半监督学习算法,它可以被看作是一种具有极端数据不平衡的二元分割任务的特殊类型。该算法由一个神经批量采样器和一个异常分类器组成,该分类器在损失曲线上运行,同时还有一个定期重新初始化和重新训练的自动编码器,该编码器被用作代理,以产生重建损失曲线,将输入空间从RGB空间转化为分类器的损失曲线空间。通过用不同的采样批次重新初始化和重新训练自动编码器,我们能够从有限的监督中产生不同的输入,成功地训练分类器。