APP下载

一种基于改进SKNet的晶体图像异常识别算法

2022-05-23卯福启

北京工业职业技术学院学报 2022年2期
关键词:晶体准确率卷积

董 建 卯福启,2

(1.北方工业大学,北京 100144;2.中国地质大学(北京),北京 100083)

0 引言

在计算机技术和激光技术快速发展的今天,晶体作为一种重要材料,已被广泛应用于通信、摄影、医学、宇航、地质学、气象学、军事科技等领域。理想的完美晶体结构在三维空间内是有序的,其内部质点按照一定的点阵结构排列。偏离理想状态的不完整晶体与理想晶体之间的点阵结构差异就是晶体缺陷。晶体缺陷对晶体生长,晶体的力学性能、电学性能、磁学性能和光学性能等有着极大影响,在生产和科研中都非常重要。常用的晶体缺陷观察方法主要有:金相显微镜观察法、利用杂质沉淀后的红外线观察法、X光法和电子显微镜观察法。近年来,电子显微镜的放大能力越来越强,高分辨率透射电镜(HRTEM)的出现使其从原子级别观测晶体的内部结构成为可能。高分辨率透射电镜可以获得晶格条纹像(反映晶面间距信息)、结构像及单个原子像(反映晶体结构中原子或原子团配置情况)等分辨率更高的图像信息。

通过高分辨率透射电镜图像对晶体缺陷进行分析已经成为晶体缺陷研究中的一种重要手段。为了提高研究分析效率,很多研究人员致力于HRTEM晶体图像的自动识别算法。ZHU等[1]将深度学习应用于高分辨率透射电子显微镜图像晶面间距的自动快速测量中,采用了一种U型结构的神经网络,通过对随机样本数据进行训练,开发了一种新的图像处理方法,实现了自动提取快速傅里叶变换图像中的衍射斑点。MAKSOV等[2]训练了一个深度学习网络,能够识别STEM图像中的点缺陷,并对其进行无监督分类,判断缺陷类型。LIN等[3]创建了一个仿真图像数据集,并在此基础上提出了一种深度学习方法,实现了对真实STEM图像的原子进行分割、定位,展现了优异的性能。

笔者提出了一种高分辨率透射电镜图像异常识别算法,该算法通过对正常和异常2种类别进行分类,识别待测图像是否含有晶体缺陷。

1 图像分类相关工作

图像分类作为深度学习领域一个重要部分,在近年来取得了极大的发展。早期的分类网络,如AlexNet,VGG Nets层数较少,结构简单,整个网络采用卷积层堆叠而成。SZEGEDY等[4]首次使用了inception结构,在同一层中通过使用多个不同尺度的卷积核对特征图进行特征提取并进行融合,以获得更加丰富的信息。HE等[5]提出的ResNet网络通过使用多个有参层来学习输入输出之间的残差,而非像一般卷积网络使用有参层来直接尝试学习输入、输出之间的映射,成功解决了网络深度增加带来的退化问题。CHOLLET等[6]在inception之上进行优化,将深度可分离卷积换成了分离卷积,将通道卷积与空间卷积进行分离。HU等[7]则提出了通道注意力模块,并将其引入到卷积神经网络中,在增加少量参数和计算量的情况下取得了可观的性能提升。XIE等[8]则在网络深度与宽度之外,增加了新的维度,使网络模型在加深或加宽之外有了其他的提升精度的方式。

笔者使用的SKNet网络融合了上述网络的各种优势[9],提出了基于通道注意力的可选择多卷积核结构,获得了更好的分类性能。其具有优秀的特征提取能力,因此也被作为骨干网络引入到多种检测模型中。ALIPOUR-FARD等[10]利用可选择卷积核单元构造了一个多分支选择性卷积核网络,用来进行高光谱图像分类。BYRA等[11]将SKNet网络作为骨干网络,在火灾中的火焰区域检测任务中取得了很好的性能。GAO等[12]利用SKNet的可选择卷积核思想构建网络,实现了对人类活动的识别。

2 算法设计

笔者基于可选择卷积核网络对高分辨率透射电镜晶体图像进行异常识别,核心是对基线模型SKNet中的通道注意力模块和损失函数进行改进,以提高识别的精度。高分辨率透射电镜晶体图像异常识别中存在的难点来自异常晶体图像的多样性。晶体图像数据异常来自正常结构的形变,这个变化的过程具有很大的随机性。因此异常区域之间的大小差异很大,通过一般的深度学习网络难以对其进行描述。在SKNet中通过可选择卷积核模块这种动态选择机制,对不同尺寸的关注区域自主选择不同大小的卷积核,使得不同大小的物体能够得到相同尺度的深层特征,以得到更好的分类效果。然而该模型在卷积核动态选择过程中,为了减少参数量,对通道权重数量进行了压缩,造成权重与通道信息一一对应关系被破坏,为了保护通道注意力模块中权重系数与通道之间的一一对应关系,笔者使用了ECA模块代替SE结构。异常图像的多样性导致了不同异常图像与正常图像的分类难度相差较大,难分类的样本在总的训练数据中占比较小,模型的优化方向被易分类的样本主导,为了提高网络对困难样本的识别能力,笔者借助Focal Loss代替CE Loss。

2.1 可选择卷积核网络

在异常图像中,点缺陷、线缺陷和面缺陷在缺陷区域大小上存在明显差异,相比于一般分类网络,SKNet对于不同尺度的物体分类稳定性更好。SKNet网络受自视觉皮层神经元能够根据不同的刺激,动态地调节自身感受野大小的启发,通过可选择卷积核模块这种动态选择机制,为每个神经元根据输入信息自适应地调整其感受野的大小,自主地从底层到高层用不同大小的卷积核作为一个整体去提取这些物体的特征,使得在一个相同的较高层中不同尺度的物体能够得到一个相同尺度的特征表现,让特征变得尺度不敏感,更加鲁棒地表征物体类别属性。其中可选择卷积核模块主要由3个操作组成:分解、融合和选取,如图1所示。

图1 可选择卷积核模块结构

(1)

得到特征U后,在W,H这2个维度上使用全局平均池化操作得到

(2)

式(2)中,sc表示s的第c个通道,Fgp表示全局平均池化,Uc表示U的第c个通道。

通过全局平均池化,可统计特征图每个通道携带的信息,通道信息特征s通过全连接层进行跨通道信息交互得到z,为了提高网络效率并减少参数量,全连接层输出维度压缩为d,则

z=Ffc(s)=δ(β(W×s))

(3)

式(3)中,Ffc为全连接层;δ为线性整流激活函数;β为批处理归一化层;W∈Rd×c,表示维度为d×c的全连接层运算矩阵。

(3)选取。经过融合操作,可自适应得到不同空间尺度的权重信息,对z进行softmax函数,可得到权重

(4)

(5)

式(5)中,V为最终特征,c表示该元素的第c个通道。

算法使用的SKNet-50网络结构如表1所示。图像经过多个串联的SK模块进行特征提取,得到2 048维的特征向量,通过一个输出为2维的全连接层进行预测,分别输出正常与异常的概率。

表1 SKNet-50网络结构

2.2 引入高效通道注意力模块

SKNet的卷积核动态选择过程基于可选择卷积核模块实现。该模块综合考虑2个不同感受野下特征图的对应通道之间的关系,对2个特征图对应通道的重要程度给出直接预测,为对应通道的输出特征提供不同信息,从而实现卷积核大小的动态选择。可选择卷积核模块的融合操作与选取的部分操作采用了与压缩激励模块相同的方式来实现,存在数据压缩造成的通道与权重对应关系丢失问题,笔者将原网络中的压缩-激励模块替换为高效通道注意力模块,2个模块的结构如图2所示。图2(a)为压缩激励模块,其通过全局平均池化得到权重向量后,采用了全连接层来进行通道之间的信息交互,同时,为了减少使用全连接层所带来的参数量,其第1个全连接层的输出通道数为C/r,将参数量压缩了r倍。在这个过程中,每个特征通道与各自权重之间的一一直接对应关系遭到了破坏,对通道重要程度的预测过程产生了负作用。为了解决这一问题,笔者将其替换为更合理的ECA模块[13],其结构如图2(b)所示。

(a)SE Block结构

ECA模块通过对全局平均池化后得到的权重向量使用一种不降低通道维度的方式来捕获局部跨通道信息。其跨通道信息表示为

(6)

跨通道信息交互过程共涉及K×C个参数。对于权重y,通过共享权重的一维卷积C1DK得到权重w,仅引入K个参数,完成了K个相邻通道之间的信息交互,且避免了不同分组的完全独立,如式(7):

w=δ(C1DK(y))

(7)

式(7)中,δ表示线性整流激活函数,C1DK表示卷积核大小为k的一维卷积。

由于ECA模块旨在适当捕获局部跨通道信息交互,因此需要确定通道交互信息的范围,即K的值。不同深度的卷积层输出的特征维度相差较大,为了使跨通道信息交互作用的覆盖范围能够适应不同的输入维度,将一维卷积的核大小K设置为与通道维数C成正比关系:

(8)

式(8)中,odd表示取奇数操作。

笔者通过实验验证了不同K值对最终结果的影响,其结果如图3所示。

图3 不同K值下的准确率

固定k值时,在k值设置为5的条件下,得到了最高的准确率为0.940。笔者通过实验验证了将k值设置为式(8)下的准确率为0.943,因此k值的动态选择能够取得比固定k值更高的准确率。

2.3 损失函数优化

由于异常数据的多样性与有限性,笔者的数据集中,异常样本之间存在分类难度上的差异与数量上的差异,在网络原始损失函数的条件下,训练的模型存在对某些异常图片分类准确率极低的情况。其中,易分类的样本产生的损失值较小但数量极大,难分类的样本产生的损失较大但数量极少。在总损失中,由于数量的差异远大于单个样本产生的损失的差异,模型的优化方向完全被易分类样本所主导,造成训练好的模型对于训练数据中的某些难分样本分类效果很差,影响总体分类效果。

网络原始损失函数为分类任务最常用的交叉熵损失CE Loss,在独热编码标签的情况下,CE loss如式(9):

CE(p)=-log2(p)

(9)

式(9)中,p为正确类别下的预测概率。

Focal Loss[14]损失函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。如式(10)。

FL(p)=-α(1-p)γlog2(p)

(10)

式(10)中,α为控制正负样本权重的参数,α值设置为0.5;(1-p)γ为调制因子;γ为聚焦参数,γ≥0。

在训练中,当一个难分样本被分错的时候,p值较小,调制因子(1-p)接近1,损失不被影响;易分样本分类正确的概率接近1,调制因子(1-p)接近0,该权值被调低。在γ>1的情况下,增大γ的值,调制因子的作用会被进一步加大,难分样本的权重相对就提升了很多,增加了难分样本对于网络优化的贡献。笔者通过实验验证了不同γ值对于准确率的影响。当γ设置为2,3,4时,准确率分别为0.943,0.938,0.936,因此最终γ值设置为2。

3 实验结果与分析

3.1 实验数据

图像数据采用由多个金属纳米晶体视频分解成的图像组成,如图4所示。

(a)正常晶体图像 (b)异常晶体图像图4 晶体图像数据

其数量较少且相同来源图像相似度较高,因此在创建数据集时,对现有数据进行了数据增强操作,增强方式包括旋转、剪切、平移、改变亮度、调整对比度、添加椒盐噪声,如图5所示。共2 300 张数据,其中训练数据中,正常图像数量为700 张,异常图像数量为800 张,共1 500 张;验证数据共150 张;测试数据中正常样本数量为250 张,异常样本数量为400 张,共650 张。

(a)原始图像 (b) 翻转图像

3.2 实验设置

采用Pytorch框架1.1.0版本、CUDA-10.1版本的显卡驱动程序和Windows10上的Python3.6来进行所有实验。硬件环境为10核CPU型号E5-2640 V4 10核处理器,内存为64 GB,图形处理单元为1台NVIDIA TITAN Xp。

在训练过程中,批处理大小设置为8,使用Adam优化器来优化网络,初始学习率设置为0.001,保证模型能够正常收敛且收敛速度较快,betas参数采用默认值0.9,0.999,并使用了0.001的权重惩罚系数。为了使网络更好地收敛,学习率设置为每完成30轮训练衰减为原学习率的1/10,共训练80轮。

3.3 结果分析

实验中采用准确率(Accuracy)、精确率(Precision)、召回率(Recall)3种评价标准。各指标的计算表达式见式(11)~式(13):

(11)

(12)

(13)

式(11)~式(13)中,TP表示实际为正,被预测为正的样本数量;FP表示实际为负,但被预测为正的样本数量;FN表示实际为正,但被预测为负的样本的数量;TN表示实际为负,被预测为负的样本的数量。实验中将异常图像作为正样本,正常图像作为负样本。分别计算总体样本的平均准确率、正样本的精确率与召回率。

将SE模块替换为ECA模块前后模型分类性能对比,如表2所示。

表2 ECA模块与SE模块性能对比

表2表明,将SE模块替换为ECA模块后,模型分类性能得到了提升,在总体样本的平均准确率上提高了3%,在异常样本类别上精确率提高3%,召回率提高2.2%。

使用CE loss与Focal loss作为损失函数训练所得到模型的分类性能对比,如表3所示。

表3 Focal loss与CE loss性能对比

表3表明,将CE Loss替换为Focal Loss后模型分类性能得到了提升,在准确率上取得了3.3%的提升。

为了验证改进算法的分类效果,比较了改进后模型与原模型的性能。进一步与几种经典的分类网络进行对比实验,结果如表4所示。

表4 不同模型性能对比

表4说明,在数据集上SKNet的分类性能优于其他对比网络。将SE block替换为ECA module后,网络特征提取能力更强,准确率提高3%。将原来的交叉熵损失修改为Focal loss后,模型对异常样本中困难样本的拟合程度更高,准确率提高3.3%,异常图像召回率提高4%。综合两者,准确率总提升为3.9%,异常图像召回率提高5.2%。

类激活映射的热力分布说明网络对于图像分类任务关注的主要区域是图像的正常区域。由于异常图像的多样性,导致网络难以对形态不一的异常区域进行统一描述,因此对异常图像的识别,依靠判断图像中有多少非正常图像结构来进行。

模型改进前后4张异常图像的类激活映射如图6、图7所示。其中,深黑色区域表示正常区域,浅白色区域表示异常区域。图7(a)中未出现图6(a)将部分正常区域误检为异常区域的情况,说明改进网络对异常的识别更加准确;图7(b)中识别出了图6(b)中未识别出的异常区域,说明改进网络对多异常区域图像的漏检更低;图6(c)与图6(d)中将晶体与背景边界区域错误识别为异常区域,而在图7(c)与图7(d)中能够正确识别异常区域,说明改进网络受到边界区域的影响更小。

(a)异常样本1 (b)异常样本2

(a)异常样本1 (b)异常样本2

4 结论

笔者提出了一种基于SKNet的高分辨率透射电镜晶体图像异常识别算法。笔者通过对比实验,选择SKNet作为基础网络进行改进,针对SKNet中数据压缩造成的通道与权重对应关系丢失问题,将原网络中的压缩-激励模块替换为高效通道注意力模块,在不降低数据维度的情况下,实现了跨通道信息的交互。此外,使用焦点损失函数替换原网络中的交叉熵损失函数,增强了算法对于困难样本的分类效果。实验结果表明:与原始SKNet网络相比,笔者提出的算法在正常和异常类别上的平均正确率提高了3.9%,在异常样本类别上准确率提高了1.5%,召回率提高了5.2%。综上所述,通过深度学习技术,实现了高分辨率透射电镜晶体图像中异常图像的识别,在数据集上取得了优于其他深度学习网络的效果。由于笔者所提方法是一种基于监督学习的方法,识别效果会受到训练数据的限制,对于非训练数据中的缺陷类型的图像识别能力可能会有所下降,未来若能获得更多的异常晶体训练数据,则能够提高笔者所提方法的识别能力。

猜你喜欢

晶体准确率卷积
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
显微摄影呈现晶体梦幻色彩