1.本发明涉及图像异常检测技术领域,尤其涉及一种基于多层次特征融合网络的图像异常检测方法。
背景技术:2.异常检测通常是指在异常先验知识有限甚至缺失的情况下,检测并定位出与正常模式不同的异常模式。在计算机视觉领域中,很多应用任务都涉及异常检测问题,如工业图像缺陷检测、医学图像分析和视频监控等。
3.与常见的监督分类问题不同,异常检测在数据和算法层面面临着更多的挑战。首先,相比较于正常模式,异常模式通常十分罕见,形式上呈现多样性,因此难以获取丰富的标注以及未标注的异常数据用于模型训练;其次,在图像异常检测与分割中,异常通常是细粒度的,它在高分辨率图像中往往占据着少量的像素,这不仅为设计高性能的缺陷检测器带来困难,还使得研究人员们难以对异常图像中的异常区域进行精准地像素级标注。
技术实现要素:4.针对现有技术的不足,本发明提供了一种基于多层次特征融合网络的图像异常检测方法,解决了针对异常检测任务异常先验较少以及现有方法提取的特征质量不高的技术问题,本发明利用伪异常生成算法,将异常检测任务转化为监督学习任务,并构建多层次特征融合网络模型获得多层次语义信息,提高了异常检测的准确率。
5.为解决上述技术问题,本发明提供了如下技术方案:一种基于多层次特征融合网络的图像异常检测方法,包括以下步骤:
6.s1、获取待检测的图像数据;
7.s2、将待检测的图像数据输入至多层次特征融合网络模型中生成单一图像所对应的异常分数图;
8.s3、采用双线性插值方法将异常分数图上采样为原图大小,得到用于图像异常定位的像素级异常分数。
9.进一步地,在步骤s2中,多层次特征融合网络模型的构建方法包括以下步骤:
10.s21、采用伪异常数据生成算法,对训练集进行异常数据扩充,将异常检测任务转化为监督学习任务;
11.s22、搭建多层次特征融合网络模型;
12.s23、通过分数映射网络生成异常分数,然后使用全局损失函数训练多层次特征融合网络模型,
13.全局损失函数包括特征约束损失函数f、分数约束损失函数s和一致性约束损失函数batch_fs。
14.进一步地,在步骤s21中,采用伪异常数据生成算法,对训练集进行异常数据扩充,将异常检测任务转化为监督学习任务,具体过程包括以下步骤:
15.s211、通过复制操作对训练集中的数据进行10倍扩充,然后在扩充后图像中选取一半数量的图像用于生成伪异常数据;
16.s212、使用五彩纸屑噪声和cutpaste两种伪异常生成算法在训练集中的图像上生成伪异常图像,并为每张伪异常图像生成相应的掩膜。
17.进一步地,在步骤s22中,多层次特征融合网络模型包括主干网络、纹理特征提取网络stlnet和自校准模块三部分组成。
18.进一步地,采用多尺度特征提取器resnet作为主干网络。
19.进一步地,纹理特征提取网络stlnet由纹理增强模块tem和金字塔纹理增强模块ptfem两个模块组成,纹理特征提取网络stlnet用于输出最终的图像底层纹理特征。
20.进一步地,自校准模块用于在两个不同的尺度空间进行卷积变换。
21.进一步地,在步骤s23中,通过分数映射网络生成异常分数,然后使用全局损失函数训练多层次特征融合网络模型,具体过程包括以下步骤:
22.s231、基于正常-异常定义特征约束损失函数f;
23.s232、使用一个全连接层将像素特征f映射为异常得分s,其中θs为网络中的参数;
24.s233、使用kl散度对像素特征间的拓扑性与分数之间的拓扑性进行确定一致性约束损失函数batch_fs;
25.s234、根据特征约束损失函数f、分数约束损失函数s和一致性约束损失函数batch_fs确定全局损失函数。
26.进一步地,在步骤s233中,使用kl散度对像素特征间的拓扑性与分数之间的拓扑性进行确定一致性约束损失函数batch_fs,具体过程包括以下步骤:
27.s2331、将输入的图像x的特征图分数图z∈r1×h×w的表达形式分别改为z∈rk×1,其中k=h
×
w;
28.s2332、分别计算特征图f、分数图z中每一个像素的特征向量与所有像素特征向量之间的欧式距离,得到相应的特征相似度矩阵p∈rk×k、分数相似性矩阵q∈rk×k;
29.s2333、根据相应的特征相似度矩阵p∈rk×k、分数相似性矩阵q∈rk×k确定一致性约束损失函数batch_fs。
30.借由上述技术方案,本发明提供了一种基于多层次特征融合网络的图像异常检测方法,至少具备以下有益效果:
31.1、针对在异常检测任务中异常先验较少问题,使用融合了异常先验知识的伪异常数据生成算法,对训练集进行了异常数据扩充,将异常检测任务转化为监督学习任务。引入了伪异常数据来辅助训练多层次特征融合网络模型,使得多层次特征融合网络模型具有更好的泛化性能,能够在测试阶段识别出未知的异常模式。
32.2、为解决现有方法中提取特征质量不高问题,本发明构建了多层次特征融合网络模型,通过将神经网络中不同层次特征进行融合,丰富了特征中的低层纹理信息和高层语义信息,使得用于异常检测的特征更具区分性。
33.3、图像中的异常通常是细粒度的,为了更准确地分割出图像中的缺陷区域,本发明采用密集的像素级预测,即预测出每个像素所属的类别(正常或异常),提高了图像异常
检测精度。
34.4、通过将数据特征经过一个全连接层映射的方式生成相应的异常分数,使得模型能够很好地应对特征质量不高的情况。
35.5、考虑到像素特征之间的相关性在图像异常检测任务中也起着至关重要的作用,因此,本发明设计了特征与分数之间的一致性约束损失约束函数项,通过使像素特征间的拓扑性与分数之间的拓扑性一致,来捕获像素特征之间的相关性。
36.6、本发明首先通过自监督的方式生成伪异常数据,扩充了数据集;然后构建一个多层次特征融合网络,使用stlnet抽取底层纹理特征和自校准模块提取更具表示力的特征用于异常检测;最后使用特征约束损失函数、分数约束损失函数和一致性约束损失函数联合训练多层次特征融合网络模型,提高了图像异常检测精度。
附图说明
37.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
38.图1为本发明图像异常检测方法的流程图;
39.图2为本发明多层次特征融合网络模型的网络结构图;
40.图3为本发明超球面分类示意图;
41.图4为本发明图像异常检测结果可视化的示例图;
42.图5为本发明与现有图像异常检测方法在mvtec数据集上图像级检测结果auroc值(%)的比较示意图;
43.图6为本发明与现有图像异常检测方法在mvtec数据集上像素级检测结果auroc值(左%)和pro值(右%)的比较示意图。
具体实施方式
44.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。借此对本技术如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
45.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
46.背景概述
47.异常检测通常是指在异常先验知识有限甚至缺失的情况下,检测并定位出与正常模式不同的异常模式。在计算机视觉领域中,很多应用任务都涉及异常检测问题,如工业图像缺陷检测、医学图像分析和视频监控等。与常见的监督分类问题不同,异常检测在数据和算法层面面临着更多的挑战。首先,相比较于正常模式,异常模式通常十分罕见,形式上呈现多样性,因此难以获取丰富的标注以及未标注的异常数据用于模型训练;其次,在图像异常检测与分割中,异常通常是细粒度的,它在高分辨率图像中往往占据着少量的像素,这不
仅为设计高性能的缺陷检测器带来困难,还使得研究人员们难以对异常图像中的异常区域进行精准地像素级标注。
48.受限于异常数据难以获取和标注,在异常检测任务中通常只使用正常数据来训练异常检测器。训练阶段模型仅仅学习正常示例的数据分布或特征表示,因为异常示例和正常示例存在着差异性,所以在测试阶段那些无法被模型很好表示的示例将被检测为异常。图像异常检测算法总体上可分为三类:基于重构的方法、基于概率预测的方法以及基于单类分类的方法。
49.基于重构的方法,在训练时通常只包含正常数据模式,测试时正常数据可以通过一组基函数精准地重建,而异常数据的重构误差往往会显著地大于正常数据的重构误差,因此可以通过重构误差的大小来判定测试数据是否存在异常。然而,最近的研究表明,深度模型具有很好的泛化能力,即使是异常区域也可以被模型较好地重建。为了解决这个问题,记忆机制和图像掩蔽策略被引入基于重构的方法中,但是这些方法对于检测真实世界中复杂多样的异常依然缺乏足够的辨别能力。
50.基于概率预测的方法,在训练时模型会学习和模拟正常数据的数据分布,所以测试时正常数据的预测概率较高,异常数据的预测概率较低,因此可以通过预测概率的大小来判断异常是否发生。然而只有当模型所提取的数据特征满足潜在的概率条件假设时,所使用的概率模型才能获得很好的性能表现。
51.基于单类分类的方法,旨在学习一个具有判别力的特征空间,将仅包含正常模式的特征区域与所有的异常特征区域分离开来。ruff等人提出完全卷积描述算法(fully convolutional data description,fcdd),该算法在训练时使用正常数据和伪异常数据,通过交叉熵分类损失训练一个超球体,实现将正常数据特征聚集在超球体球心附近,异常数据特征映射到远离球心的区域,测试阶段利用数据点到球心的距离来生成相应的异常分数。然而,该算法存在着如下三个缺点:
52.(1)、所使用的伪异常数据类型单一,使得模型在测试阶段无法很好地处理复杂多样的真实异常模式;
53.(2)、所使用特征的质量不高,缺乏对图像底层纹理信息的利用;
54.(3)、直接通过将数据点到球心的距离转化为异常分数,使得模型性能严重依赖于数据的特征质量,当特征质量不高时,模型性能十分有限。
55.请参照图1-图6,示出了本实施例的一种具体实施方式,本实施例使用伪异常生成算法,有效地缓解了难以获取充足的异常数据用于模型训练的问题,基于多层次特征融合实现了更高的图像异常检测精度。
56.请参照图1,本实施例提出了一种基于多层次特征融合网络的图像异常检测方法,包括以下步骤:
57.s1、获取待检测的图像数据,待检测的图像数据中包含若干张图像;
58.s2、将待检测的图像数据输入至多层次特征融合网络模型中生成单一图像所对应的异常分数图。
59.请参照图2,在步骤s2中,多层次特征融合网络模型的构建方法包括以下步骤:
60.s21、采用伪异常数据生成算法,对训练集进行异常数据扩充,将异常检测任务转化为监督学习任务;
61.在步骤s21中,采用伪异常数据生成算法,对训练集进行异常数据扩充,将异常检测任务转化为监督学习任务,具体过程包括以下步骤:
62.s211、通过复制操作(repeat)对训练集中的数据进行10倍扩充,然后在扩充后图像中选取一半数量的图像用于生成伪异常数据;
63.s212、使用五彩纸屑噪声和cutpaste两种伪异常生成算法在训练集中的图像上生成伪异常图像,并为每张伪异常图像生成相应的掩膜(mask);
64.本实施例使用公开数据集mvtec数据集,该数据集包含5354张高分辨率彩色图像,分为10个对象类别和5个纹理类别,用于异常检测任务。数据集的训练集中仅仅包含正常图像,测试集由正常图像和具有各种类型缺陷的异常图像组成。该数据集为每张有缺陷的测试图像提供了像素级注释,图像数量相对较少,其中每类训练集的图像数量在60到391张不等,分辨率在700
×
700和1024
×
1024之间。由于训练集中图像数量相对较少且不包含异常图像,这给深度表征学习带来了挑战,因此本实施例在训练多层次特征融合网络模型时,通过复制操作(repeat)对训练集中的数据进行10倍扩充,并在扩充后选取一半数量的图像用于生成伪异常数据。
65.s22、搭建多层次特征融合网络模型,通过将神经网络中不同层次特征进行融合,丰富了特征中的低层纹理信息和高层语义信息,使得用于异常检测的特征更具区分性;
66.在步骤s22中,多层次特征融合网络模型包括主干网络、纹理特征提取网络stlnet和自校准模块三部分组成,如图2所示,本实施例的多层次特征融合网络模型整体上可以分为主干网络、纹理特征提取网络stlnet和自校准模块三个部分。通过将纹理特征提取网络stlnet提取的底层纹理特征和自校准模块生成的高层语义特征进行融合,得到网络最终的输出特征。
67.采用多尺度特征提取器resnet作为主干网络,考虑到特征经过层层卷积后分辨率的变化,本实施例仅使用多尺度特征提取器resnet前三层网络输出的特征。
68.纹理特征提取网络stlnet由纹理增强模块tem和金字塔纹理增强模块ptfem两个模块组成,纹理特征提取网络stlnet用于输出最终的图像底层纹理特征,纹理特征提取网络stlnet首先融合多尺度特征提取器resnet前两层网络输出的特征,并送入纹理增强模块tem中提取一级纹理特征;然后将纹理增强模块tem提取的一级纹理特征和多尺度特征提取器resnet前两层网络输出的特征进行融合,输入到金字塔纹理增强模块ptfem抽取多尺度纹理特征;最后融合多尺度特征提取器resnet前两层网络输出的特征、一级纹理特征和多尺度纹理特征获取最终的图像底层纹理特征。
69.纹理增强模块tem逐个考量每个像素在特征空间中的分布情况,首先通过计算输入特征图中的每个像素特征与其全局特征的余弦距离,得到特征相似度向量m=r1×k,其中k=h
×
w,h和w分别表示输入特征图的高度和宽度;然后使用一维qco将m量化成n个级别,得到量化矩阵e=rn×k和量化级别l=[l1,l2,
…
,ln],其中ln=(m
max-m
min
)
÷n×
n+m
min
,ei∈rn(i∈[1,k])表示向量m第i像素相似值mi所属的量级级别,e
i,n
的计算公式如下:
[0070][0071]
将量化级l和归一化后的量化矩阵e'融合生成量化映射矩阵b=rn×2。b的计算公式
为:
[0072][0073]
最后将量化映射b通过多层感知机(multilayer perceptron,mlp)增加通道数并与全局特征相融合获得统计特征d=rn×c,其中c表示通道数。由于直接从多尺度特征提取器resnet网络浅层提取的底层特征质量通常较低,因此纹理增强模块tem利用自注意力机制设计了一个可学习的映射矩阵,该矩阵融合所有其他节点特征来更新统计特征d,得到重构的d';然后将特征d'的信息平均分配给输入的每个像素,生成高质量的纹理特征r=d'
·
e。
[0074]
金字塔纹理增强模块ptfem使用二维qco来逐对考量两个相邻像素在特征空间中的分布情况,旨在计算特征图相邻像素之间的共生关系,是对一维qco的扩展。此外,金字塔纹理增强模块ptfem还使用四个不同尺度[1,2,4,8]的并行分支来提取多尺度纹理特征。每个分支上的特征图被划分为不同数量的子区域,每个子区域通过纹理特征提取单元得到相对应的纹理表示;然后将每个分支所得的特征图上采样至输入特征图大小,并进行特征融合,生成多尺度纹理特征。
[0075]
自校准模块用于在两个不同的尺度空间进行卷积变换,如图2所示,在原始尺度空间中,输入特征经过conv-bn操作(conv表示卷积操作,bn表示批次归一化操作),不改变特征图宽度和高度;在小尺度特征空间中,输入特征首先经过平均池化下采样(下采样率为r)后通过conv-bn操作,然后上采样到原始特征图尺寸,并与原始特征进行相加融合,经过sigmoid激活后与原始尺度空间中特征相乘并通过conv-bn操作获得最终的输出。
[0076]
s23、通过分数映射网络生成异常分数,然后使用全局损失函数训练多层次特征融合网络模型,全局损失函数包括特征约束损失函数f、分数约束损失函数s和一致性约束损失函数batch_fs。
[0077]
在步骤s23中,通过分数映射网络生成异常分数,然后使用特征约束损失函数f、分数约束损失函数s和一致性约束损失函数batch_fs联合训练多层次特征融合网络模型,具体过程包括以下步骤:
[0078]
s231、基于正常-异常定义特征约束损失函数f;
[0079]
如图3所示,该特征约束损失函数f项旨在学习一个超球体,通过对神经网络ψ(
·
,w)的训练,将正常数据特征聚集在球心附近,异常数据特征映射远离球心。
[0080]
预测图像中每个像素所属的类别,正常或异常,设x1,x2…
,xn表示图像像素样本集合,y1,y2,
…
,yn表示每个像素所对应的标签,其中yi=0表示正常、yi=1表示异常,特征约束损失函数f表示为:
[0081][0082]
其中表示像素xi到超球体球心的距离,本实施例将原点作为球心,ψ表示特征学习网络,表示像素xi的特征向量,c1表示通道数,w为网络中的参数,通过l(z)=exp(-a(xi))将像素xi到球心的距离a(xi)转换为像素属于正常类别的概率,然后使用交叉熵损失训练网络使得正常像素到球心的距离尽可能
小,异常像素到球心的距离尽可能大。
[0083]
为了缓解类别不平衡对多层次特征融合网络模型训练阶段的影响,本实施例为正常和异常特征损失引入不同的权重,重新设计了如下特征约束损失函数f:
[0084][0085]
其中n1表示训练图像中正常像素个数,n2表示异常像素个数。
[0086]
s232、使用一个全连接层将像素特征f映射为异常得分s,其中θs为网络中的参数,设计分数约束损失函数s项使得正常像素异常得分低,异常像素异常得分高,分数约束损失函数s表示为:
[0087][0088]
其中nn和na分别表示正常和异常像素个数,和分别表示正常和异常像素,s(xi)=η(ψ(xi,w),θs)表示像素xi的异常得分,ψ(xi,w)表示像素xi的特征,γ和λ为超参数。s中的第一项保证正常像素的异常得分小于阈值γ,第二项保证异常像素和正常像素的异常得分之差大于阈值λ。
[0089]
s233、使用kl散度对像素特征间的拓扑性与分数之间的拓扑性进行确定一致性约束损失函数batch_fs;
[0090]
在步骤s233中,使用kl散度对像素特征间的拓扑性与分数之间的拓扑性进行确定一致性约束损失函数batch_fs,具体过程包括以下步骤:
[0091]
s2331、将输入的图像x的特征图分数图z∈r1×h×w的表达形式分别改为z∈rk×1,其中k=h
×
w;
[0092]
s2332、分别计算特征图f、分数图z中每一个像素的特征向量与所有像素特征向量之间的欧式距离,得到相应的特征相似度矩阵p∈rk×k、分数相似性矩阵q∈rk×k;
[0093]
s2333、根据相应的特征相似度矩阵p∈rk×k、分数相似性矩阵q∈rk×k确定一致性约束损失函数batch_fs;
[0094]
本实施例所提出的一致性约束损失函数fs定义如下:
[0095][0096]
其中k表示图像中的像素点个数,i表示相似性矩阵的第i行,即pi、qi分别表示第i个像素特征、分数与图像中所有其他像素特征、分数之间的相似性关系,然后使用softmax函数σ将相似性关系转换为概率分布,最后通过计算每一行概率分布之间的kl散度约束特征与分数之间的一致性关系。假设每个batch有n张图象,则最终的一致性约束损失函数batch_fs定义如下:
[0097][0098]
s234、根据特征约束损失函数f、分数约束损失函数s和一致性约束损失函数
batch_fs确定全局损失函数;
[0099]
全局损失函数包括了特征约束损失函数、分数约束损失函数和一致性约束损失函数,具体形式如下:
[0100]
=αf+βs+ξbatch_fs
[0101]
其中α,β,ξ为超参数,本实施例中设置为:α=1,β=1,ξ=1。
[0102]
本实施例首先通过自监督方式在正常训练图像上生成伪异常,同步训练多层次特征融合网络和一个单类分类器,使正常数据特征集中在设定的超球球心附近,生成的伪异常数据特征映射在尽可能远离球心的区域;
[0103]
然后使用一个全连接层将正常数据和异常数据特征映射为异常分数,并使得正常数据的异常得分小,异常数据的异常得分大;
[0104]
最后考虑到数据特征与分数之间应保持相类似的拓扑结构,提出了特征与分数之间一致性约束项,用于最终损失函数的设计。
[0105]
请参照图4,待检测的图像经过多层次特征融合网络模型生成异常分数图,为了确定本方法对各种异常的稳健性,本实施例将缺陷类型分类为较大缺陷和微小缺陷两类,并通过图可视化定性评价其性能。如图4所示,第一行为原图,第二行为真实标签,第三行为模型的可视化结果,可以看出本实施例提供的方法在整体上产生了优异的检测效果。
[0106]
s3、采用双线性插值方法将异常分数图上采样为原图大小,得到用于图像异常定位的像素级异常分数,每张图像像素中最大的异常分数作为该图像的异常分数。
[0107]
首先使用经过训练后的多层次特征融合网络模型为每个测试对象生成异常分数图,测试对象即为待检测的图像数据,如下述公式所示:
[0108]
score(xi)=η(ψ(xi,w),θs)
[0109]
上式中,score(xi)表示图像像素xi的异常分数,表示图像像素xi的特征向量,η为分数映射网络生成的异常分数,θs为分数映射网络中的参数。
[0110]
然后采用双线性插值方法将异常分数图上采样为原图大小,得到像素级异常分数,用于图像异常定位;最后,本实施例使用每张图像像素中最大的异常分数作为该图像的像素级异常分数。
[0111]
请参照图5和图6,本实施例所提供的方法在mvtec数据集上的实验结果如图5和图6所示,15个类别图像级检测平均精度和像素级检测平均精度均高于现有方法,图像级平均auroc值达到98.7%,像素级平均auroc值和pro值分别达到97.9%和94.2%。
[0112]
以上实施方式对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。