APP下载

基于改进CenterNet的竹条表面缺陷检测方法

2021-07-30高钦泉黄炳城刘文哲

计算机应用 2021年7期
关键词:竹条卷积注意力

高钦泉,黄炳城,刘文哲,童 同*

(1.福州大学物理与信息工程学院,福州 350116;2.福建省医疗器械与医药技术重点实验室(福州大学),福州 350116;3.福建帝视信息科技有限公司,福州 350001)

0 引言

目标检测一直是计算机视觉中的经典问题,包含图像分类和目标定位两个任务,在人脸识别、自动驾驶、工业检测等领域有着广泛的应用。随着深度学习的发展,许多基于卷积神经网络(Convolutional Neural Network,CNN)的目标检测性能得到进一步的提升。目前基于CNN 的目标检测主要分为两种:1)二阶段目标检测,利用候选区域生成阶段生成一组候选目标检测框,然后利用CNN 对候选区域的特征进行分类和位置回归,典型代表为区域卷积神经网络(Region-Convolutional Neural Network,R-CNN)系列[1-3];2)单阶段目标检测,它们取消了生成候选区域阶段,直接利用CNN 来预测边界框,典型代表为SSD(Single Shot multibox Detector)系列[4-5]、YOLO(You Only Look Once)系列[6-8]。

本文所依托的骨干网络CenterNet[9]将需要成对关键点的问题简化成中心关键点的估计问题,由于CenterNet 只通过提取目标的中心点且不需要对中心点进行后处理,极大地加快了算法的整体速度。基于关键点的目标检测中,大大减少了计算量,降低了基于anchor-based所导致的大量正负样本不均衡,减少了大量超参数设计。基于关键点的目标检测以其简洁、高效率的优点将一阶段目标检测推向另一高度。一般来说,二阶段检测器具有比单阶段检测器精度更高的优势,而单阶段检测器比二阶段检测器在时间和效率更具优势。

目前,国内已有一些针对竹条表面缺陷检测的研究。贺峰等[10]提出了一种基于小波多尺度分解的方法实现竹条六种缺陷的检测。该方法首先通过图像共生矩阵的逆差矩差分值获得的最佳小波分解层对竹条纹理进行滤除,然后利用OTSU自动阈值检测算法完成缺陷检测。张殿甫等[11]提出了一种基于机器视觉的竹条表面缺陷检测方法。该方法先将对竹条采集到的彩色图像转为灰度图,之后进行中值滤波去除噪声,平滑后将灰度图转为二值图像;然后用sobel算子提取竹条边缘;最后对竹条边缘进行分段处理,结合最小二乘法对每一段进行直线拟合,依据拟合之后直线的斜率大小来判断是否存在缺陷。

近年来,随着深度学习的快速发展,很多传统的工业问题利用深度学习的方法得到了更好的解决。面对传统工业问题,一般是将由CNN 构成的目标检测网络框架首先使用分类任务数据集(如ImageNet[12])进行预训练,使其拥有强大的分类能力,然后利用迁移学习的方法将模型针对对应目标工业数据集进行调优细化,从而实现在工业问题上的检测。但是,采用将一般CNN 构成的目标检测框架直接迁移应用到工业检测问题,一般存在以下几个影响:

1)直接采用迁移学习,可能导致模型泛化性能弱。目前现有基于CNN 的目标检测网络框架主要针对的是一般场景的问题,如COCO[13]涵盖80类物体,而工业场景数据与这些数据存在较大的差别,所以可能导致预训练模型的特征提取能力在工业场景数据上表现较差。

2)基于少数据的模型训练,可能导致检测性能较差。比如竹条来源复杂,没办法采集所有类型的数据,所以竹条表面缺陷数据量少,导致CNN不能充分地学习。

3)基于现实工业竹条表面缺陷检测应用中,其数据不适合用数据增广的方法来提高少量数据缺陷样本。比如采用旋转、翻转等操作,因为在工业应用中,数据的呈现形式是固定的,即不可能出现翻转、旋转后的那种数据形态,所以这些数据增广的方法对提高现实工业竹条表面缺陷检测应用中的性能表现影响不大。

基于以上问题,本文提出一种改进CenterNet 的基于辅助检测的竹条表面缺陷检测方法,将基于关键点检测的CenterNet 作为骨干网络,并通过一种注意力机制的连接的方法与辅助学习检测网络结合。实验采用平均精度均值(mean Average Precision,mAP)来评估方法,在竹条表面缺陷检测数据集上使用相同的训练集和测试集,本文方法比YOLOv3 的mAP 提高了16.45个百分点,比CenterNet 的mAP 提高了9.06个百分点。

综上所述,本文的工作如下:1)使用基于深度学习的方法来进行竹条的缺陷检测。利用CNN 的可学习性,能够同时检出竹黄、竹青、霉斑、虫洞等十种缺陷,减少了传统机器视觉所需的超参数,简化了检测过程,提高了检测效率。2)提出了一个针对竹条表面缺陷特点的辅助检测网络。该网络模型小,训练速度快,能够得到较精确的目标定位,辅助骨干网络,提高检测性能。3)使用一个注意力机制的连接方式将辅助检测网络和预训练的骨干网络结合,这一方法能更好地学习不同网络阶段产生的特征图,能够更合理地分配不同重要性程度的特征图的比重,让特征图利用得到最优化,减少冗余特征,提高特征处理速度,使目标检测性能得到优化。4)针对竹条表面缺陷特点,采用梯度均衡损失函数用于计算对位置坐标回归。相比L1损失函数的方法,梯度均衡损失函数在计算位置坐标时在L1损失函数的基础上加入了梯度密度的影响,能达到更好的回归效果。

1 网络方案设计

1.1 本文方法分析

本文模型由三个部分组成:骨干网络、辅助检测网络和注意力机制连接。骨干网络采取经过(ImageNet)预训练的模型,具备强大的特征提取能力;而辅助检测网络则采取针对竹条表面缺陷数据从零训练。文献[14-15]中表明,当训练数据少时,使用基于预训练的模型能够快速收敛以及得到较好的检测精度;当训练数据足够时,使用预训练模型仅只能比从零开始训练的模型更快地收敛,并不能带来精度的提升;而当模型从零开始训练时,能够得到较精确的目标定位,但相比经过预训练的模型则需要花费更多的时间。本文以CenterNet-dla34[9,16]为基础网络,因为它具有高检测精度与高效率的特点。如图1(a)所示,将骨干网络最后几层得到的特征图通过注意力机制连接的方式分别与辅助检测网络所产生的特征图结合。为了能够得到更精确的目标信息,在辅助检测网络中采用可变形卷积(Deformable Convolution,DCN)[17]替代了普通卷积,因为在可变形卷积中,其卷积核能够根据目标形状的不同而做出相应的改变,能够得到更为精确的竹条表面缺陷信息。

图1 增强CenterNet网络框架Fig.1 Network framework of enhanced CenterNet

表1 为竹条表面缺陷数据集的每一类缺陷类型的样本数,表2 为缺陷的长宽比和面积比详情。可以看出,竹条表面缺陷的样本数存在较大的不均衡,如霉斑、裂边、内碳等具有较多的样本数,而虫洞、竹黄、刀疤等缺陷的样本数则较少。因为所采用的竹条表面缺陷数据极不均衡,所以本文采用Focal Loss[18]结合梯度均衡损失函数(Gradient Harmonizing Mechanism Loss,GHM Loss)[19]来减小由数据不平衡带来的影响,因为Focal Loss 及GHM Loss 均能有效解决数据中的样本不均衡现象。

表1 竹条表面缺陷数据详情Tab.1 Details of bamboo strip surface defects

表2 竹条表面缺陷长宽比与面积比详情Tab.2 Details of aspect ratio and area ratio of bamboo strip surface defects

1.1.1 骨干网络

本文以CenterNet 为基础网络,在CenterNet 选取DLA-34为骨干分类网络,如图2所示为本文所采取的CenterNet-dla34网络结构。其中DLA(Deep Layer Aggregation)为一个带有多级跳跃连接的图像分类网络,由下采样模块、上采样特征融合模块和特征结合传递输出等三个部分组成,该网络使用跳跃连接(skip connection)的方式将低层卷积层的输出与当前层的卷积层输出通过可变形卷积的方式进行上采样。

图2 CenterNet-dla34网络结构Fig.2 CenterNet-dla34 network structure

1.1.2 辅助学习检测网络

本文的辅助学习检测网络结构如图1(a)所示,其中辅助检测网络结构由三个部分组成:

1)降采样特征提取表示,由一个自适应降采样层和卷积层表示。首先输入竹条图像经过一个降采样处理,然后再经过两个连续的卷积层,每个卷积层后都接一个非线性激活函数ReLU来增强网络的非线性表达能力。

2)多尺度特征融合,如图1(b)所示,由多个卷积组成,为了得到多尺度的上下文信息,本文采用了空洞卷积[20]对其进行处理。首先将降采样特征提取表示部分的输出作为多尺度特征融合的输入,接着由三个卷积核大小为1×1 的卷积拆分成三个分支,然后采用三个卷积核大小为3×3 且空洞卷积率r分别为2、4、8 的卷积进行提取特征,接着对提取得到不同感受野的特征进行融合输出到下一模块。在本文方法中,使用空洞卷积有如下几个优点:第一,在不降低图像分辨率且不增加额外计算量的基础上,扩大感受野。经观察统计在竹条表面缺陷中,存在着缺陷目标大小不一且其长宽比等差距较大,如表1 所示,竹条表面缺陷的长宽比大部分落在(0,10.4)内,且竹条表面缺陷的面积比大部分为(0,0.025)区间,说明本文所采用的竹条数据集中竹条的大部分缺陷为细小且狭长的缺陷。扩大感受野可以检测分割大缺陷目标,且可以精确定位目标。第二,使用不同的空洞卷积率的卷积,可获得不同感受野的特征,即可获得多尺度的缺陷特征。

3)使用卷积层对输出特征信息作进一步处理,使用多个卷积对多尺度特征融合模块的输出信息进行处理,使得到的图像特征更具有代表性。

1.1.3 注意力机制连接

注意力机制连接模块参考了SENet(Squeeze-and-Excitation Networks)[21]与CBAM(Convolutionl Block Attention Module)[22]。文献[23]中表明,h-swish(hard version of swish)和h-sigmoid激活函数能比ReLU和Sigmoid激活函数更有效地提高检测精度,h-swish 和h-sigmoid 激活函数的计算量相对较小且能有效避免模型在量化计算时的精度损失。受此启发,本文在CBAM 的基础上分别将ReLU 和Sigmoid 换成h-swish 和h-sigmoid,在CBAM中提到了通道注意力机制主要关注物体的类别信息,而空间注意力机制主要关注的是物体的定位信息,所以在本文中分别利用通道注意力机制和空间注意力机制用于连接骨干分类网络和辅助检测网络,然后将两者的特征进行融合。注意力机制连接模块可以通过学习的方式获得两个网络的特征重要性程度,优化提取的图像特征,避免了大量冗余特征,以获得更好的特征表达,提高网络的计算速度。

1.2 损失函数

Focal Loss 能够解决检测任务中由于大量难易样本数量不平衡的问题,因此被广泛采用,本文也采用Focal Loss 来计算中心点的损失。假设输入图像I∈RW×H×3,其中W和H表示输入图像的宽和高。在预测时,要产生出关键点的热力图(keypoint heatmap),其中:R为输出对应原图的步长,文本中取R=4;C是在竹条表面缺陷检测中对应检测点的数量,本文中取C=10,表示有10个缺陷类别。

其中:α和β为Focal Loss 的超参数,本文中α和β分别为2 和4;N为图像I的关键点数量。假设p为图像I的中心点,且p~ 为的向下取整,用一个高斯核为:

本文参考CenterNet参数设置取:λoff=1,λsize=0.1。

2 实验与分析

2.1 实验数据准备和实验设置

本文使用的竹条表面缺陷数据集包含竹青、竹黄、黑节、裂片、裂边、内碳、霉斑、刀疤、虫洞、凹黄等十种竹条表面缺陷,如图3所示。本文采用的竹条表面缺陷数据图片共37 040张,对其中36 747张图片采用LabelImg 进行标注,而且在标注图片中随机选取28 747 张图进行训练,并按照8∶2 的比例随机选取22 997 张图为训练集,5 750 张图片为验证集,剩下的8 000张标注缺陷数据图与293张未标注无缺陷图组成为测试集,即测试集图片共8 293张。

图3 竹条表面缺陷的类型Fig.3 Types of bamboo strip defects

本文使用了相同的设置来初始化和训练模型,采用CenterNet-dla34 为本文的骨干网络,该骨干网络首先在ImageNet 数据集上预训练,在实验中,使用512×512 的大小输入到骨干网络,批量大小(batch size)设置为8,学习率设定为0.000 125,在网络训练过程中首先冻结带有预训练的骨干网络,只训练本文提出的辅助学习检测网络,待辅助学习检测网络损失趋于稳定时,放开冻结,两者结合一起训练。共训练140 epoch,且当在训练到90 和120 epoch 的时候,学习率分别下降到当前值的1/10,在训练期间,所有实验均使用Adam[24]进行优化,并使用期默认的参数β1=0.9,β2=0.999。本文检测采用的实验环境为pytorch 框架,在Ubuntu16.04 系统下运行,实验均在NVIDIA GTX2070 GPU上进行训练和测试。

2.2 实验结果与分析

2.2.1 在竹条表面缺陷检测数据集上的结果

1)数据均衡与数据增广在竹条数据上的表现。

使用竹条表面缺陷数据集来验证本文方法的效果,并称利用本文方法改进后的模型为增强CenterNet。表3展示了增强CenterNet 与YOLOv3、CenterNet 以及针对本文竹条数据采用数据均衡的方法等在相同数据集、相同测试环境下的mAP结果对比。其中CenterNet+均衡数据是指:将竹条数据中的少量缺陷样本如竹黄、刀疤、虫洞等数据通过平移、旋转、翻转等方法将其增广到与霉斑、裂边、内碳等均衡的数据量并采用CenterNet 进行学习检测;CenterNet+数据增广则是针对竹条表面缺陷数据中的所有数据进行数据增广到更大的数据量,采用CenterNet 进行学习检测。由表3 可以看出,采用数据均衡与数据增广的方法在竹条表面缺陷检测上得到的mAP 分别为67.47% 和68.65%,这与原CenterNet 方法得到的66.94%的mAP 值相差不大,因为在竹条表面缺陷中,其缺陷特征具有固定的表现形式,与其经过翻转、旋转等得到的数据形式具有一定的差别,而本文采用针对竹条的缺陷特点通过辅助学习检测网络与骨干网络的结合,使各类缺陷的检测效果都有较大的提升。

表3 本文方法与其他方法的AP与mAP比较Tab.3 Comparison of AP and mAP between the proposed method and other methods

2)增强CenterNet在竹条数据上的表现。

由表2 可以看出,本文使用的竹条表面缺陷数据集的缺陷长宽比、缺陷面积比、缺陷类别样本数存在较大的不均衡,竹条的缺陷长宽比大部分落在(0,10.4),且竹条的缺陷面积比大部分为(0,0.025),说明本文使用的竹条表面缺陷数据集形状大部分为细小且狭长。由图4 检测结果可以看出,在针对狭长的竹黄、内碳、裂边等缺陷的时候,增强CenterNet 能够比YOLOv3和CenterNet进行更有效、更精准的检测。

图4 本文方法与其他方法检测效果比较Fig.4 Comparison of detection effect of the proposed method and other methods

2.2.2 验证本文模块的有效性

1)基础网络与本文方法的比较。

为了验证本文方法的有效性,针对辅助检测网络、多尺度融合模块、注意力机制连接等做了如下实验。在实验过程中,采用相同的设置来初始化和训练模型。如表4 所示,在竹条表面缺陷数据集上用基础网络CenterNet 得到了66.94%的mAP;在CenterNet 的基础上引入辅助学习检测网络,mAP 提高了5.36 个百分点;将骨干网络和辅助学习检测网络进行直接结合时,虽然辅助学习检测网络能帮助模型较精确地定位缺陷位置,但因为缺乏合理的特征融合方法,在模型学习得到的特征中存在大量冗余特征,所以引入了注意力机制的连接方法,这使模型的mAP 提升了1.9 个百分点。由表1 中可知,在竹条表面缺陷数据集中,缺陷的有效样本分布极不均匀,针对辅助学习检测网络中的竹条表面缺陷特点,引入了GHM Loss,利用特征梯度分布的方法来引导缺陷定位,使本文方法在竹条表面缺陷数据集上获得了76.9%的mAP。如图5所示为基于CenterNet 上改进方法的损失函数收敛曲线,可看出本文方法在改进CenterNet上能够有更优的表现。

表4 基础网络添加不同模块的mAP结果Tab.4 mAP results of adding different modules to base network

图5 基础网络添加不同模块的损失曲线Fig.5 Loss cuves of adding different modules to base network

2)不同注意力机制的连接表示。

在表5 中,针对注意力机制连接方法采取了五种不同的方法,其中CT表示通道注意力,CT+表示在通道注意力中采用h-swish和h-sigmoid激活函数,SPT表示空间注意力,CBAM+表示在CBAM 方法的基础上将激活函数更改为h-swish 和h-sigmoid。采用通道注意力机制的方式作为连接骨干网络与辅助学习检测网络的方法能够比骨干网络和辅助学习检测网络直接结合情况的mAP 提高0.5 个百分点,说明引入注意力机制的方式能在一定程度上提高模型的学习能力,但仍需更有效的方式。当在通道注意力中的ReLU 和sigmoid 激活函数替换为h-swish 和h-sigmoid 时,获得了73.7%的mAP,说明在针对竹条表面缺陷形状中引入使用分段线性激活函数的通道注意力机制连接的方法能让模型更加准确地关注缺陷特征的学习,有效地提高了检测的精度。但在使用空间注意力机制进行连接时,检测精度比不使用注意力机制连接的mAP 还下降了0.7 个百分点。在使用CBAM 作为骨干网络与辅助学习检测网络的连接方式时,其检测精度比不采用注意力机制连接的mAP 提高了1.9 个百分点,且当将CBAM 的激活函数替换成h-swish和h-sigmoid时,其检测获得了最好的效果。

表5 不同注意力机制连接的mAP结果Tab.5 mAP results of integrating with different attention mechanisms

3)不同空洞卷积率的表示。

尝试三种不同空洞卷积率的空洞卷积进行辅助检测网络中缺陷特征的提取,结果如表6 所示。在不采取空洞卷积进行特征提取时,mAP 为69.9%;当采用三个分支分别为2、4、8的空洞卷积率进行结合时,获得的mAP 为76.9%,模型性能有了一个较好的提升,说明在竹条表面缺陷数据集中采用空洞卷积,通过增大感受野对模型获取上下文的多尺度缺陷特征具有重大意义。

表6 不同空洞卷积率的mAP结果Tab.6 mAP results of different dilation rates

3 结语

本文针对竹条表面缺陷特点利用深度学习的方法来进行竹条表面缺陷检测,能够在较少缺陷数据的情况下获得较好的检测结果。且针对目前现有网络模型的单一训练模式,本文提出一种结合预训练网络迁移学习和从零训练的辅助学习检测网络混合训练的方法,能够有效地提高在仅拥有较少量竹条表面缺陷数据情况下的检测性能。在本文所提取的骨干分类网络特征层上具有尺度单一性,下一步研究工作将探寻提取特征更丰富的、结构更小、效率更高的模型,以便能得到更好的检测效果。

猜你喜欢

竹条卷积注意力
基于全卷积神经网络的猪背膘厚快速准确测定
颜色空间直方图相交法的竹条色差分类检测系统研究*
让注意力“飞”回来
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
农桑之心
A Beautiful Way Of Looking At Things
巧手做风筝
阅读理解两则