浙江大学光电学院提出全归一化流模型——PyramidFlow,它将潜在模板对比的思想融入最先进的归一化流技术,提出金字塔耦合块(Pyramid Block)和体积归一化策略(Volume Normalization),首次实现了高分辨的缺陷异常定位。

浙大提出首个全归一化流模型PyramidFlow,专为高分辨率缺陷异常定位设计。

论文和代码:  https://paperswithcode.com/paper/pyramidflow-high-resolution-defect

一句话: 提出了首个不依赖于预训练模型的全归一化流方法,专为高分辨率的缺陷异常定位设计。

在工业加工过程中,不可控因素会给产品带来不可预见的缺陷,如何有效地检测这些缺陷是生产控制过程中的重要问题。在过去,基于监督学习的方法被广泛使用,这类方法需要收集尽可能多的正常样本和缺陷样本,使用判别式模型来区分和定位缺陷;然而,由于工业产品的良品率高、缺陷来源复杂且多样,在实际应用中无法详尽地收集各式各样的缺陷,因此基于监督学习的方法常常难以得到广泛应用。为了解决这个问题,最近一些研究者提出通过“模拟异常”(如数据增强或生成对抗网络)来人为地制造缺陷样本,但这类方法仍然依赖于缺陷的先验知识,这将无法泛化到开放世界的未知场景。

由于监督学习在数据缺乏时的无力性,我们审视了目前非监督的缺陷检测方法,将它们大致分为两类:基于重建(reconstruction-based)的方法和基于异常(anomaly-based)的方法。基于重建的方法使用正常样本训练自编码器来重建自身,但当遇到缺陷样本时,缺陷无法很好地被自编码器重建,因此重建结果与原图的显著差异便定位了缺陷的位置;然而,解码器重建原图的过程是一个不适定的逆问题,这使得这类方法难以重建复杂纹理。基于异常的方法大多数是基于预训练编码器来获取良好表征(良好表征即相似的纹理具有相似的表征),如PaDiM或SPADE,然后使用Mahalanobis距离或KNN来度量特征空间的距离,因此远离正常原型(normal prototype)便指示了图像块的异常;最近的研究在预训练特征的基础上,进一步使用归一化流来重塑特征空间的概率分布,使正常原型紧致化。然而,为获取足够大的感受野、充分感知纹理特征,预训练模型通常需要下采样16倍甚至更多,这使得缺陷定位图像的分辨率通常仅有32甚至更低。预训练模型的使用极大地限制了缺陷异常定位的精度,因此工业界亟需一种能实现高分辨率的缺陷异常定位方法。

然而,直接将现有的归一化流技术应用于高分辨率图像是行不通的,因为高分辨率图像具有很大的块方差(patch-variance)。现有方法配合预训练特征的目的便是将块特征投射到低方差的高维空间,高维空间相比低维空间能够更有效地使用归一化流来重塑概率分布。基于重建的方法能够保持高分辨率、基于异常的方法能够泛化到未知场景、基于归一化的方法能够重塑概率空间分布,我们取这三者的优点,提出了一种全新的缺陷异常检测范式——潜在模板对比。

PyramidFlow_异常检测

(a,b)其他缺陷异常检测范式,(c)所提出的潜在模板对比范式

这种范式基于如下思想:可逆归一化流建立了图像空间与潜在空间的双射关系,在图像空间中的操作都对应了潜在空间中的某个操作。因此基于重构的方法在图像空间中“对比”(差值、差异的意思),同样对应了潜在空间中的“对比”,重构方法中使用被重构的图像进行对比,而归一化流中无需重构,只需要使用“模板”图像进行对比即可——这就是潜在模板对比的思想。使用潜在模板对比还有一个好处——它隐式降低了块方差,它相当于将图像进行零均值化,使检测效果对于光照更加鲁棒。

此外,由于低分辨率对于异常检测很重要,而高分辨率对于异常定位很重要,我们借鉴了图像处理中常用的拉普拉斯金字塔的思想,提出了可逆金字塔(invertible pyramid):它将单个特征分解为多尺度,由于这个操作是可逆的,也能够将这些多尺度特征合成回单个特征。可逆金字塔作为一种可逆操作,类似常规归一化流中常用的concat-split操作,是实现特征多尺度和多频率(不同层级对应了高频、低频)感知的重要手段。

在多尺度的基础上,我们受到了医疗图像分割中U-Net的启发、也借鉴了CS-Flow的思想,提出了多尺度归一化流——PyramidFlow,它以可逆金字塔分解得到的特征金字塔作为输入,将不同尺度块之间进行可逆耦合(如论文图3所示),以此作为基本组件来构建金字塔归一化流。其中,我们提出了两种多尺度耦合块(Pyramid Coupling Block),如下图的紫色和红色箭头所示(具体计算方式见论文Sec3.2),而虚线代表无操作的单位映射。

PyramidFlow_异常检测_02

PyramidFlow的模型结构,包括两种多尺度耦合块

然而,图像直接使用归一化流映射出来的特征也仅有三通道,无法传递丰富的差异信息。一种常见的方法是使用预训练模型将其映射到高维空间(如使用ResNet18进行特征抽取得到64维的特征图,然后再进行PyramidFlow映射),这便是论文中Ours (Res18) 对应的方法。还有另一种方法是使用随机初始化的1x1卷积将其映射到64维,这种方法没有用到预训练模型,整个算法是相对优雅的“全归一化流(Fully Normalizing Flow)”,这便是论文中Ours (FNF) 的方法。此外,全归一化流方法还有一个好处:它使用的1x1卷积是样本无关(sample-independent)的,因此无需考虑1x1卷积引起的概率分布变化,也无需在训练过程中将其冻结,这使得整个模型是完全可优化的;相反,使用预训练模型需要在优化过程中将其冻结,否则预训练模型将会发生坍缩。

PyramidFlow_归一化_03

PyramidFlow_人工智能_04

BN/ CVN/ SVN的示意图

实验

我们在工业异常检测MVTecAD数据集上进行了详细的实验,结果如下表所示。

PyramidFlow_人工智能_05

MVTecAD实验结果

在不基于额外先验(External Prior=×)的情况下,我们的方法远超同类算法。在基于额外先验(仅使用ResNet18模型)的情况下,我们的方法仍然超越了大部分基于复杂预训练模型(如EfficientNet-B5或Wide-ResNet50)的算法,取得的最佳的AUPRO综合性能。

此外,我们的算法还在更具有挑战性的BTAD数据集上进行了测试,该数据集基本都是复杂纹理的工业图像。结果如下表所示,我们的算法仍然展现出显著的优越性。

PyramidFlow_数据集_06

BTAD实验结果

两个数据集上的可视化结果如下图所示:

PyramidFlow_数据集_07

MVTecAD和BTAD数据集上的异常定位结果

在附录中,我们也将其和其他方法的结果进行了对比,结果如下面两幅图所示:

PyramidFlow_数据集_08

此外,我们的论文中还有很多实验,如消融实验、对于未配准类的实验,感兴趣的读者可以直接看论文。

在本文中,我们提出了PyramidFlow,这是一种基于潜在模板对比范式的全归一化流方法,利用类金字塔的归一化流和体积归一化,实现了高分辨率的缺陷对比定位。我们的方法可以从头开始端到端地进行训练,类似于UNet,我们的全面实验表明,它优于不使用外部先验的可比算法,甚至在复杂情况下实现了最先进的性能。虽然在未配准类别的实验表明我们的方法不及最先进的方法,但仍表现出有竞争力的性能。未来的研究将集中于改善这种情况下的性能。