APP下载

基于Faster-RCNN的汽车漆面缺陷部位检测

2023-09-04叶晓康万轶伦

计算机应用与软件 2023年8期
关键词:锚框尺度卷积

薛 阳 叶晓康* 孙 越 洪 俊 万轶伦

(上海电力大学自动化工程学院 上海 200090) 2(国网上海浦东供电公司 上海 200122)

0 引 言

现代社会对于汽车喷漆的需求越来越高,人工进行喷漆的方法存在着喷涂不均匀及对人体危害大的问题,因此用自动化设备代替人工工作具有重要的实际意义,其首要问题即是对缺陷区域的识别和定位。传统图像识别方法一般有如下两种,一种是基于灰度和颜色的信息对图像二值化分割或利用边缘检测算法对图像进行分割,再结合数学形态学等算法对图像进行特征提取,另一种是人工设计特征(如SIFT[1]、HOG[2]、Haar[3])结合分类器(如SVM[4]、Adaboost[5])的方法。文献[6-7]应用SIFT特征结合分类器以及边缘检测算法分别对中厚板表面缺陷的检测和车标进行识别。文献[8]通过局部对比度增强算法对灰度图像进行二值化分割的方法对光学元件损失进行检测。文献[9]通过背景平滑滤波器,利用局部灰度和梯度变化信息自适应调整不同特征区域的平滑程度,对原图像平滑得到背景图像,通过对原图像和背景图像的差分图像阈值分割对钢轨表面缺陷检测。传统的基于灰度、颜色和边缘信息的方法容易受到背景的干扰,而人工设计特征的方法复杂,对设计者的经验要求高。近几年,深度学习飞速发展,使得特征提取和匹配的工作得以简化。文献[10]基于Faster-RCNN并修改了锚框生成规则来对零件表面不同缺陷进行检测,文献[11]通过图像融合的方法对样本进行扩充以训练深度网络来进行电网异物的检测。文献[11-12]以Faster-RCNN算法为基础,修改了非极大值抑制算法实现了对于复杂条件下电力系统多目标的识别和故障检测。当前目标检测领域常用的算法包括Faster-RCNN算法、YOLO(You Only Look Once,一步检测)系列算法以及SSD(Single Shot Multi-box Detector,单次多框检测器)算法。YOLO系列算法和SSD算法改进了检测的速度,同时也导致检测的精度有不同程度的下降[13-16]。本文目标识别任务对精度要求较高,而对实时性检测要求相对较低,因此选取了检测精度更高的Faster-RCNN算法。原始的Faster-RCN算法虽然在一般的目标检测问题上取得了不错的精度,但是对于小区域目标的检测精度往往不理想,因此,对原始Faster-RCNN结构进行改进,以满足在对于小目标区域的检测要求。

本文的主要工作是:1) 引入了多尺度检测,使得网络可以同时利用高层和低层的特征,从而加强对于小区域的检测能力。2) 通过聚类算法确定的锚框来取代原始网络中固定的锚框设定,提高网络的收敛速度和检测速度。

1 Faster-RCNN目标检测算法

1.1 算法结构

Faster-RCNN是在Fast-RCNN基础上提出用区域推荐网络(Region Proposal Network,RPN)候选框生成算法取代Select search算法,使得目标检测速度大大提高。Faster-RCNN算法主要由卷积神经网络(Convolutional Neural Network,CNN)、RPN,以及一个基于感兴趣区域(Region-of-Interest,ROI)的分类器三部分组成。卷积神经网络用于对输入图像的特征进行提取,区域推荐网络则用于生成候选区域。Faster R-CNN算法原理如图1所示,图像将首先经过一个卷积神经网络提取特征图谱,常用的提取特征的卷积神经网络有ZF、VGG-16、ResNet等。特征提取网络包含Conv层(卷积层)、ReLU激活函数层以及Pooling层(池化层)。Pooling层会缩小输入图像的尺寸,常见的有Max pooling和Average pooling两种池化方式,每经过一次池化操作,输出层的特征图的大小为输入图的1/2,本文采用的VGG-16网络共有4个池化层,因此最后输出的特征图为原图的1/16。ReLU为激活函数。Conv层提取的特征图将作为RPN网络和分类回归网络的输入。RPN网络对输入的图像进行识别,并生成一系列不同大小的建议区域(Proposal Region),ROI池化层的作用是将输入的不同尺寸的建议区域的大小固定,然后通过全连接层输入到后面的分类回归网络。分类层的作用是判定建议区域的类别,边界框回归层用来进行边框回归运算,获取更精确的位置[14]。

图1 Faster-RCNN算法结构

1.2 RPN网络

RPN网络是Faster-RCNN算法结构的核心,其结构图如图2所示,卷积层输出的特征图输入到RPN网络后,网络首先将特征图上的每一个点映射到原图上的对应区域,并按照预定的参数生成一定数量的锚框(archor)。以原始Faster-RCNN所采用的参数为例说明锚框生成过程,卷积层输出的特征图尺寸大小为原图的1/16,因此特征图谱中每个像素点均可映射到原图中16×16像素的区域。对每个特征图谱中的像素在原图中的对应的16×16像素的区域,按3种不同比例(如0.5、1,2)改变其长宽比,并分别3种不同的放大倍数(如8、16、32)进行放大,最终在每个锚点处生成9个不同形状和尺寸的锚框。图3为生成锚框示意图。在筛选掉一部分锚框后,会按如下规则将剩余锚框标记为正样本、负样本和不关注样本:当锚框与原图中真实框(ground truth box)的交叠面积与两者面积之和之比大于0.7时,将锚框标记为正样本,标签为1,当锚框与原图中真实框的交叠面积与两者面积之和之比小于0.7时,将锚框标记为负样本,标签为0,否则将其标记为不关注样本,标签为-1,不关注样本在训练时不参与网络的训练。同时用一个3×3的滑动窗口作用于特征图生成一个256维长度的特征,然后通过两个1×1的卷积层分别生成分类层和回归层,从而进行下一步的分类和回归运算。

图2 RPN网络结构

(a) 同一尺寸对应的3种长宽比

1.3 损失函数和边界框回归

RPN的训练采用端对端方式,采用梯度下降算法对RPN网络进行反向传播训练,损失函数如下:

(1)

(2)

(3)

对于边界框回归,采用的算法为:

(4)

2 改进的Faster-RCNN算法

2.1 多尺度检测算法

在一个多层卷积神经网络中,随着网络深度不断增加,高层特征忽略的细节的信息越多。原始Faster-RCNN的方法中,候选区域由候选区域生成网络生成,候选区域的特征仅由最后一个卷积层经过池化操作得到,利用高层特征对小目标进行检测会存在比较大的问题。受到金字塔结构[19]的启发,本文引入了多尺度检测,在利用最后一层卷积层输出的特征图来生成候选区域的基础上,同时引入其他卷积层的输出来生成候选区域。具体流程如图4所示,原始输入图片经过一个卷积神经网络提取特征,将不同层提取出的多个不同尺度的特征图送入各自RPN生成候选区。为了研究不同尺度的特征图对检测速度的影响,对于VGG-16网络,将conv1_2(经第1层卷积层进行2次卷积操作后输出的特征图,下同)、conv2_2、conv3_3、conv4_3、conv5_3这5层的输出分别输入到RPN网络中来进行检测,统计1 000幅测试图像的平均检测时间,其结果如表1所示,表中conv1_2用conv1表示,其他卷积层的表述类似。

表1 使用不同尺度特征检测时间 单位:s

图4 多尺度Faster-RCNN网络结构

2.2 聚类算法确定archor方案

原始Faster-RCNN算法的RPN中锚框(archor)是根据高层特征而设定的,不适用于检测小尺寸区域。针对此问题,通过聚类算法来分析图像中检测目标的尺度特征来确定锚框。目前广泛采用的聚类算法有K-means系列算法和均值漂移聚类等。其中K均值聚类算法因算法简单高效等特点使用最为广泛,本文选用K-means++算法,按照如下的思想选取k个初始聚类中心:首先通过随机的方法选取第一个初始聚类中心,在选取下一个聚类中心点前,计算数据集中每个样本点与当前选中的聚类中心的最短距离,距离越远的点被选中的概率越大,然后通过轮盘赌法选出下一个聚类中心点,直到选出k个初始聚类中心点。其克服了初始聚类中心随机性,显著地提高了聚类的效果。算法把输入的点数据集分类为k个聚类,使数据集中点都划分到距离其最近的聚类中心所在的类中,分类时使用欧氏距离作为衡量距离的标准。欧氏距离表达式为:

(5)

式中:x、y是数据集中的任意两个样本点,i为样本点维度的索引,n为样本点维度。

算法步骤流程如图5所示。

图5 聚类算法流程

每个样本成为下一个聚类中心的概率用下式计算:

(6)

式中:x表示数据集中任意一个样本点;D(x)表示该样本点与当前聚类中心的最短距离。

重新计算各个类的聚类中心计算方法为:

(7)

式中:i为聚类中心的索引,等式左侧ci为更新后的聚类中心,右侧ci为更新前的聚类中心,x是属于以ci为聚类中心点的类中的样本点。

原始Faster-RCNN算法特征图上每个位置生成9个锚框,因此选定聚类的数目k=9。将缺陷区域按照预设参数自动标记为“B”(大)、“M”(中)、“S”(小),读取标签为“S”的标注框的宽和高数据共1 000多个数据点作为数据集,算法总用时为30.20 s,聚类结果如图6所示,图中三角形代表每个类的聚类中心坐标。通过聚类得到的9个聚类中心将作为低层特征对应的RPN网络锚框初始的宽和高。

图6 聚类结果

2.3 算法的功能流程及实现

图7为该检测算法的功能流程,其中训练和检测部分大致相同,训练部分需要计算误差函数来更新模型参数,检测部分加载训练好的模型参数输出检测结果。其主要包含特征提取、锚框生成、候选区域生成、边界框回归运算及分类4个部分。

图7 算法功能流程

下述为各功能框的具体实现算法,部分软件核心编程将在附件中给出。

1) VGG-16特征提取。VGG-16网络主要结构由5个卷积层、4个池化层组成,卷积层为n×n的二维数组,将卷积层与图像进行二维的卷积运算,对图像的局部特征进行提取。池化层为一个2×2的二维数组,将池化层与特征图像进行卷积运算,通过对步长和卷积方式进行设置,使输出的特征图像的大小为原始特征图的0.5倍,对特征图像的尺度进行缩小。

2) 锚框生成。将不同尺度特征图上的每个像素点按不同的放大尺度映射到原图中一块区域,将此区域按照不同的长宽比例和放大尺度进行变换,特征图上的/每个像素点的每个像素点对应k个不同大小和比例的边界框,则为锚框。高层的特征图锚框生成方案按照长宽比(0.5,1,2),放大尺度(8,16,32)的参数生成,最低层特征图的锚框大小由前述聚类算法的结果确定。

3) 候选区域生成。

Step1通过一个3×3的卷积层与提取出来的特征图做二维卷积运算,再通过两个不同的1×1卷积层,在特征图每个像素点处分别生成2k和4k维的向量,k为对应特征图上每个像素点所生成的锚框的数量,2k维的向量用来预测每个锚框为前景和背景的概率得分,4k维的特征图用来预测锚框的回归位置偏移,进行初步的回归运算。

Step2去除超出原图边界的锚框,计算剩余每个锚框与每个真实边界框的最大的IOU(锚框与真实边界框的重叠比例)。当IOU>0.7时,将此锚框标记为正样本,label=1,当IOU<0.3时,将此锚框标记为负样本,label=0,当0.3

Step3进一步对archors进行越界剔除并使用非最大值抑制算法去除掉重叠度较高的锚框,即根据概率大小为标签为1和0的锚框进行排序,依次计算所有其他锚框与得分较大的锚框的重叠比例,当重叠比例大于一定阈值时,将该锚框去除。

4) 候选框分类。从样本中随机选择256个archors,将256个archors按缩放比例映射到对应的特征图上,并通过Roi池化层固定为7×7的尺度大小,将7×7的二维矩阵转换为一维矩阵,输入到全连接层,再通过softmax函数输出n个结果(n为要检测的目标的种类的个数),结果的值表示当前候选框属于某个类别的概率,最大值表示的是预测的结果。

(1) 先做平移变换(Δx,Δy),Δx=Pwdx(P),Δy=Phdy(P),可得:

(8)

(9)

(2) 做尺度缩放(sw,sh),sw=exp(dw(P)),sh=exp(dh(P))得:

(10)

(11)

可以看出,需要学习这四个变换。当候选框与真实框相差较小时,可认为这种变换是一种线性变换,可以通过线性回归来建模对窗口进行微调,具体算法实现如下所示:

定义一组向量t=(tx,ty,tw,th),其中:

(12)

输入:候选框的坐标(Px,Py,Pw,Ph)的特征向量Φ(P)。

输出:t*=(dx),dy(P),dw(P),dh(P))。

(13)

式中:N为候选框的总数,i为候选框的索引。利用梯度下降法使Loss趋向于0,此时的参数w即为变换参数。

3 实 验

硬件环境:CPU为Intel Core i5-9300H,GPU为NVIDIA GTX 1660Ti,6 GB显存,8 GB内存。软件环境:Windows 10,Tensorflow架构,GPU加速库为CUDA10.1和CUDNN10.0,编程语言采用Python 3.6和Matlab 2017b。其他参数设置如下:权重衰减系数为0.000 1,学习率为0.001,BATCH_SIZE取120,动量参数为0.9,训练最大迭代次数20 000次。样本图片共3 000幅,采用CMOS摄像机拍摄,分辨率为1 440×1 080,按照3∶1的比例分为训练集和测试集。下文中VGG-16、MS-VGG16分别表示原始Faster-RCNN网络和多尺度Faster-RCNN网络,MS-VGG16+K-means++表示用聚类算法确定锚框的多尺度Faster-RCNN网络。衡量指标采用“F-score”,F-score的计算方式如式(14)所示。

(14)

式中:NTP表示正确识别为目标区域的数量;NFN表示原本是目标区域但未识别的数量;NFP表示非目标区域但被识别为目标区域的数量。F的值越大,说明网络检测精度越高,性能越好。

3.1 多尺度Faster-RCNN检测

为验证本文提出的多尺度检测方法的有效性,在数据集一致,且锚框均为原始Faster-RCNN设定的情况下,对采用不同的卷积层组合网络比较其F-score值大小。为表述简便,下文中卷积层的组合采用字母和数字下标的形式表示,如conv123表示表示conv1+conv2+conv3的组合。其结果如表2所示。

表2 使用不同卷积层组合的结果对比

可以看到,与原始的Faster-RCNN相比,采用多尺度检测准确度有了显著的提升。当多尺度检测的卷积层数达到一定数目时,不能通过增加卷积层的数目有效地增加检测的精度,相反会大大降低训练及检测的速度,综合考虑精度和速度的要求,本文多尺度检测选取conv2+conv4+conv5的卷积层组合。

3.2 K-means++聚类算法生成锚框可行性检验

为验证通过聚类算法生成锚框的方法的有效性,在相同数据集且网络结构均为上述确定卷积层组合的多尺度检测方案的情况下,比较其与采用原始锚框设定时的F-score,结果如表3所示。可以看到,其检测精度达到了95.39%,相较于采用原始的archor,提高了1.55%。为了研究此方法对于训练的效率和检测的速度的影响,对采用不同网络的模型训练过程中总损失函数进行分析,图8(a)、(b)、(c)分别是使用不同网络的训练模型的总体损失函数(total loss)的收敛图。通过对比可以发现相较于原始的VGG-16网络,MS-VGG16网络能以迭代更少的次数收敛,同时可以得到,采用K-means++聚类算法来确定锚框的方案具有更快收敛速度,由此可以提高训练的效率。

表3 不同archors生成方法的结果对比

(a) VGG-16网络收敛曲线

表4所示的是使用不同网络训练模型的时间和检测速度,由于多尺度检测产生了更多的候选区域,迭代一次的消耗的时间相对增多,导致整体训练时间变长,同时可以看出使用K-means++算法确定archors的方法使得训练效率和检测速度得到了较为明显的提高,最高可达到4.5帧/s。部分检测结果如图9所示,图中矩形框为检测到的目标位置,左下方字母表示目标的类别标签,数字表示目标属于某类别的概率。如图9(a)所示,共检测到5个目标,“S”、“M”分别代表目标属于小目标和中目标。

表4 不同网络训练时间和检测速度

(a)

为了验证本文算法的先进性,在建立的相同的数据集上分别使用YOLOv3算法及以Resnet50作为特征提取网络的Faster-RCNN算法进行漆面缺陷部位检测,其结果如表5所示,可以看到由于YOLO算法同时进行候选框提取和边界框回归运算,其训练和检测速度远远高于另外两种算法,但因为其基于回归运算,感受野较大,因此其对于小目标的检测效果较差。Resnet深度残差网络因为实现了更深层的网络模型且在低层的特征中融合了高层的特征,因此实现较好的检测精度,但是需要训练的网络参数显著增加,导致训练和检测的速度明显下降。

表5 不同算法对比

4 结 语

本文提出了一种基于多尺度Faster-RCNN的汽车漆面缺陷部位的检测和定位方法。实验结果表明,多尺度检测算法相比采用单一尺度特征检测的算法能获得更好的检测精度,对不同尺度特征采用不同的锚框设定能够获得更快的收敛和检测速度。下一步将对于锚框的生成机制进行不断的改进,如当采用低层特征时,随着特征图尺度变大,相对应地减少锚框的生成数量,以减小计算的开销。

猜你喜欢

锚框尺度卷积
基于YOLOv3锚框优化的侧扫声呐图像目标检测
锚框策略匹配的SSD飞机遥感图像目标检测
基于SSD算法的轻量化仪器表盘检测算法*
基于GA-RoI Transformer的遥感图像任意方向目标检测
基于3D-Winograd的快速卷积算法设计及FPGA实现
财产的五大尺度和五重应对
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
宇宙的尺度
9