周如辰,游昌壕,潘永东
(同济大学 航空航天与力学学院,上海 200092)
硬度是反映材料力学性能的基本指标[1]。布氏硬度法是通过加载一定大小的载荷力将硬质钢球压入待测物体表面[2],通过压痕直径换算试件的硬度。因为该方法的压痕较大,相较于里氏硬度法有更高的准确性。
布氏硬度检测方法数值稳定,但是现有方法[3]绝大多数都是在20倍显微镜通过人工读取压痕直径,然后人工对照直径硬度换算表格来确定待测物体硬度值,该方法在工厂生产工况下检测效率低下,且有较大检验误差。
针对布氏硬度法检测[4]过程中需要使用光学仪器人工找点检测压痕直径效率低的情况,李和平[5]提出根据压痕深度计算出压痕直径及布氏硬度,方法并没有经过广泛验证,且设备长期使用后精度可能会丢失。西北工业大学[6]提供了一种硬度块压痕直径测量方法及装置,通过图像处理,最后采用最小二乘法拟合提取压痕拟合直径得到布氏硬度。单忠德[7]等根据机器视觉[8]相关理论提出了基于粒子群动态轮廓模型(Snake模型[9])的压痕轮廓提取算法,并通过引入压痕直径标定系数,解决了视觉测量中的压痕直径像素与压痕物理直径的换算关系,并对直径标定系数进行最小二乘法拟合,提高了测量精度。但他们的测量大多数是在图像轮廓很清晰的条件下进行的,对于工件表面反光不佳,表面锈蚀导致压痕轮廓清晰度降低的图像,该算法会失效,本文尝试用该算法检测锈蚀金属表面的布氏压痕,识别效果如图1所示,可见该算法针对压痕轮廓清晰的图片有较好的效果,针对压痕轮廓不清晰的情况则效果不佳。
图1 使用改进的snake算法检测布氏硬度压痕的效果图示例
近年来,深度学习在机器视觉[10]领域兴起。深度学习通过建立神经元网络从图片中提取有用的信息,通过不断优化损失函数的方式训练,最后得到特征与目标之间映射的深度学习模型[11]。FasterRCNN[12]网络作为目标检测[13]方法的一种,在数据标注过程中,除了标注类别之外,还通过标注矩形框标注了目标物体。在矩形框内的属于目标物体的正例部分,在矩形框外的属于目标物体外的负例部分。因此使用该网络进行训练,不仅可以识别目标物体,并且可以得到目标在图像中所处的位置和大小。本文目的是完成布氏硬度压痕圆识别,计算布氏硬度压痕圆直径两个功能,通过FasterRCNN网络可以完成布氏硬度压痕圆识别,通过布氏硬度压痕圆定位框大小位置计算布氏硬度压痕圆直径两个功能,解决布氏硬度法测量布氏硬度压痕直径大小的问题。针对布氏硬度压痕特点,适当对FasterRCNN网络进行改进可以提高布氏硬度压痕圆直径的测量精度[14]。本文首次提出通过FasterRCNN网络检测布氏硬度压痕,针对布氏压痕特点改进FasterRCNN网络,可以在光滑或锈蚀金属表面自动[15]提取布氏硬度压痕轮廓并提高布氏硬度压痕圆直径的测量精度,弥补传统机器视觉算法提取压痕轮廓的不足。
基于FasterRCNN的布氏硬度法采用布氏硬度标准测试块[16],选取5种型号200HBW10/3000,300HBW10/3000,400HBW10/3000,500HBW10/3000,600HBW10/3000。每种型号硬度块选取一块,对于每个硬度块[17],本文对其正面涂油保存,反面不涂油保护,在潮湿环境下使得试块正面呈现锈蚀斑点,另一面保持光滑平整。200HBW10/3000含义是指在14 710 N(15 000 kgf)的试验载荷作用下,将直径为10 mm的淬硬钢球压入试块,保持10~15 s时,测得的布氏硬度值为200。本文采用14 710(15 000 kgf)的试验载荷压入钢球[18],保持时间10~15 s,对每种型号试块锈蚀面和非锈蚀面各留10个压痕。本文采用1 000倍USB电子放大镜,对每个压痕处于镜头中不同位置拍摄10张照片,共计1 000张照片。同时采集不存在布氏硬度压痕的照片200张,提取储存格式为Jpg,分辨率大小为640*480。
对不包含压痕圆的200张图片数据不进行矩形框标注,作为数据集中的正常类图片,作对照组。
针对数据集中存在压痕圆的图片,本文通过矩形框标注压痕圆在图片中的直径与矩形框位置,运用三点求圆法得到矩形框所处的位置与直径。
数据标注过程前,手动标注出照片中分布于压痕边缘的15个点,从15个点中任意选取3个点能得到105组圆的直径数据和中心位置。在每组测量(第m组)过程中,选取的3个点在图像坐标系中的像素坐标为(xmi,ymi),(xmj,ymj),(xmk,ymk),第m组测量测得圆的半径rm,中心位置(xm,ym),那么有:
(1)
式(1)的第一式和第二式相减,第一式和第三式相减可得:
(2)
那么:
(3)
其中:
(4)
可见,通过第m组测量得到的像素坐标(xmi,ymi),(xmj,ymj),(xmk,ymk)可求得第m组圆的半径rm,中心位置(xm,ym)。本文求取105组圆的半径rm及中心位置(xm,ym)的平均值作为该张照片压痕圆的真实半径r0(此处的直径指的是图片中圆的直径对应的像素值大小,本文下面出现的直径指的此含义)及中心位置(x0,y0),该关系如式(5)所示:
(5)
在图片标注过程中,通过确定顶点坐标(x1,y1),(x2,y2),(x3,y3),(x4,y4)来标注矩形框,标注过程如图2所示。矩形框与图像中的压痕圆相切,故顶点坐标可依据压痕圆的半径r0,中心位置(x0,y0)给出,该关系如式(6)所示:
图2 图像数据的标注过程
(6)
数据集实际采集1 200张图片,其中200张图片不含压痕圆,没有检测框,作为数据集的负例部分。在1 000张存在布氏硬度压痕的照片中,布氏硬度压痕的位置,大小和背景都存在差异,可适用于本实验的训练目标。本文提出的基于布氏硬度检测的FasterRCNN模型为单类别目标检测,数据量少会导致泛化能力差,模型过拟合等问题,因此需要进行数据增强。数据增强主要是对采集到的图片采取左右翻折,上下翻折处理,同时针对实际工况中的不同光照条件,对模型进行随机调整亮度对比度处理,数据增强示例如图3所示,经过数据增强后的数据集总共包含4 800张图片。由于数据集是按批次送入神经网络中训练,数据量的增长并不会增加模型的训练运算量,显存占用量。数据增强的优点是解决模型过拟合[19],泛化能力差的缺点,使得模型的鲁棒性增强,同时提高模型在不同亮度条件下的检测能力。
图3 训练数据集数据增强的3种扩充方法
经过增强的数据集包含4 800张照片。本文对照片标注类别为压痕,并标注矩形边框,同时以 PASCAL VOC 的格式保存数据集[20]。
FasterRCNN是一种端到端目标检测算法,通过卷积运算提取特征,对候选框大小及目标类型进行回归达到实时检测要求。FasterRCNN主要由卷积层,RPN网络,RoiPooling层和分类层4个部分组成,如图4所示。
图4 原始的FasterRCNN模型
1)图像特征选取网络:FasterRCNN基于卷积神经网络[21](VGG16[22],ResNet50[23])提取图片中的特征矩阵,该特征矩阵将被作为后续RPN层和全连接层[24]的输入。
2)RPN网络(图像特征选取网络):RPN网络(Region Proposal Networks)的作用是生成目标检测候选区域。该层通过softmax层判断锚框属于前景或背景并标记,再利用边框回归调整候选锚框的大小,让目标检测候选区域更准确,更贴近真实的正例检测区域。
3)Roi Pooling层(感兴趣区域池化层):Roi Pooling层将RPN网络输出的特征和RPN网络输出的目标检测候选区域作为输入,提取其中的综合信息得到感兴趣区域,将感兴趣区域池化为固定尺寸的特征图。
4)Classification层(分类层):Classification层利用Roi Pooling层输出的特征矩阵进行两个工作:1)判断候选区域的类别;2)再次进行边框回归得到检测框的准确位置,让目标检测候选区域更准确,更贴近真实的正例检测区域。
在图像坐标系中,一个矩形边框可以用其中心位置坐标(a,b)及矩形边框的宽w与高h表示。故本文采用矩形边框的中心位置坐标及边框的宽与高(a,b,w,h)来定义矩形边框。
基于FasterRCNN的布氏硬度检测方法通过FasterRCNN模型实现布氏压痕圆边缘的提取,目标检测框内为图片正例部分,即模型认为存在布氏硬度压痕的区域,目标检测框外为图片负例部分,即模型认为不存在布氏硬度压痕的区域。目标检测框为最大覆盖存在布氏硬度压痕的矩形区域,布氏硬度压痕的形状为圆形,因此布氏压痕圆会相切于目标检测框。进一步,本文通过获取FasterRCNN模型输出的检测边框的宽woutput与高houtput来计算压痕圆[25]的直径d,该关系如式(7)所示:
(7)
在FasterRCNN网络中,RPN网络会先经过3×3的卷积运算,然后网络分为两条支路。第一条路线用来判断候选框是前景还是背景,它先把输入的候选框特征矩阵映射到一维向量,然后采用softmax函数来判断候选框是前景还是背景,然后把它恢复为二维特征矩阵。第二条路线路用来确定候选框的位置,通过边框回归(bounding box regression)实现。经过两路计算结束后,挑选出前景候选框,并利用计算得到候选框准确位置,生成特征子图。同时在最后的classification层(分类层)会再次利用到边框回归(bounding box regression)用于回归更加精确的目标检测框。
在RPN网络中,RPN对于锚框的设置为默认的9种(默认为3种尺度{322,642,1282},3种宽高比{1∶2,1∶1,2∶1})。如图5(a)所示,已知黑色为当前的选区,即锚框(在RPN网络中设置),白色代表真实的选区,当前的选区可以大概率选择出目标物,但是离真实选区中的真实位置和形状仍然还有较大误差。
在classification层中,Classification层利用Roi Pooling层输出的特征矩阵的信息,得到候选区域的位置。如图5(b)所示,黑色为候选区域的位置,白色代表真实的窗口,经过RPN网络和Roi Pooling层输出的候选区域已经可以覆盖大部分目标正例区域,但是离真实检测框的位置和形状仍然还有调整空间。
图5 图像的真实选区和当前选区
(8)
在具体的边框回归过程中,主要进行如下变换:
1)先对候选区域A的中心位置进行平移变换(Δx,Δy),该关系如式(9)所示:
Δx=wodx(ao,bo,wo,ho)
Δy=hody(ao,bo,wo,ho)
(9)
其中:dx,dy为FasterRCNN模型在平移变换时的映射,映射关系需要通过模型训练学习。
经过平移变换后的回归窗口G′的中心位置与候选区域A的中心位置之间的关系如式(10)所示:
(10)
2)再对检测框进行尺度缩放(Aw,Ah),该关系如式(11)所示:
Aw=exp(dw(ao,bo,wo,ho))
Ah=exp(dh(ao,bo,wo,ho))
(11)
其中:dw,dh为FasterRCNN模型在尺度缩放时的映射,映射关系需要通过模型训练学习。
经过尺度缩放后的回归窗口G′的宽和高与候选区域A的中心位置之间的关系如式(12)所示:
(12)
真实窗口G与候选区域A之间的真实平移变换值(tx,ty)和真实尺度变换值(tw,th)如该关系如式(13)所示:
(13)
将真实平移变换值(tx,ty)和真实尺度变换值(tw,th)定义为真实值t*=(tx,ty,tw,th)
相应的,本文将预测平移变换值(dx,dy)和预测尺度变换值(dw,dh)定义为预测值d*=(dx,dy,dw,dh),目标函数如式(14)所示:
d*=w*TP
(14)
其中:p=(ao,bo,wo,ho)作为输入特征向量,w*为要学习的参数(*x,y,w,h,每个变换对应一个目标函数)。
如图6所示,当候选区域A与真实窗口G之间位置相差较小,可认为是一种线性变化,故对其采用线性回归模型建模。在传统的FasterRCNN中采用smooth L1 loss作为边框回归(bounding box regression)的损失函数,smooth L1函数公式为:
图6 改进后的FasterRCNN模型
(15)
在classification层中的边框回归的目的是使得预测值d*与真实值t*(*代表x,y,w,h,每个变换代表一个真实值)之间差距最小,因此损失函数Loss定义为:
(16)
函数优化目标M*定义为:
(17)
(18)
(19)
通过改进边框回归(bounding box regression)的损失函数,能够使得改进的FasterRCNN模型在检测布氏硬度压痕时,预测的检测框的宽与高之间差距最小。基于改进FasteRCNN的布氏硬度检测能够在保留FasterRCNN的classification层中的边框回归预测值d*与真实值t*之间差距最小的同时,使得预测的检测框形状最贴近正方形,更符合布氏硬度压痕圆的特点,使得模型在布氏硬度的检测中,表现出更优的检测精度和更好的检测效果,改进后的FasterRCNN模型网络如图6所示。
本实验的硬件采用Intel Core i7-8750H CPU @ 2.20GHz八核处理器,LITEON CV8-8E128-11 SATA 128GB固态硬盘,NVIDIA GeForce GTX 1060 with Max-Q Design显卡,操作系统环境采用Ubuntu16.04,采用Tensorflow-gpu深度学习框架,Pycharm编译环境。
本实验将数据集按训练集,验证集,测试集按7∶1∶2的比例进行划分。在实验中,传统FasterRCNN模型采用的模型主干网络采用ResNet50,使用的最终模型为ResNet50+RPN网络+ROI Pooling+Classification层。改进的FasterRCNN模型采用的模型主干网络采用ResNet50,使用的最终模型为ResNet50+RPN网络+ROI Pooling+改进的Classification层。超参数的设置在实验中经过不断优化调整最终设置为:训练步数20 000步,RPN网络采取反向传播和随机梯度下降进行端到端训练,优化器动量为0.9,权重衰减为0.000 5,学习率learning rate设置为0.000 1,当训练步数超过10 000步时,学习率采用固定步长衰减,权值衰减gamma为0.1,步长为step size100。
为了验证改进的FasterRCNN模型的有效性以及基于FasterRCNN模型的布氏硬度检测方法的检测能力,本文评价模型的指标主要分为两部分:第一部分是去衡量模型正确检测压痕圆的能力,第二部分是去衡量模型推导得出压痕圆直径的检测精度。
第一部分通过计算模型准确率Accuracy进行评价,评价指标如下:
总样本数为S,图片含有布氏压痕且模型预测为布氏压痕及图片不含有布氏压痕且模型预测不含有布氏压痕的样本总数为P,即模型预测正确的样本总数,得到准确率Accuracy公式如如式(20)所示:
(20)
根据式(20)可知,当模型准确率Accuracy指标越大时,表明模型识别压痕圆的能力越高。
第二部分通过计算模型归一化均方误差nMSE进行评价,评价指标如下:
评价该指标时,在检测正确且检出布氏硬度压痕的图片中,通过将式(5)计算得出的压痕真实直径r0与式(7)计算得出的通过模型输出的压痕直径di进行比较,得到归一化均方误差nMSE公式如式(21)所示:
(21)
根据式(21)可知,当归一化均方误差nMSE指标越小时,表明模型检测压痕直径的准确度越高。
实验中使用本文1.2节中的数据集,为了满足布氏硬度常见工况下的检测,提高数据样本的多样性,提取了分别在锈蚀表面以及非锈蚀表面情况下含有布氏硬度压痕的图片(如图7(a),(b)所示),锈蚀表面图片的布氏硬度压痕边缘较为模糊,而非锈蚀表面图片的布氏硬度压痕边缘较为清晰。同时添加一定负例,负例中不存在布氏硬度压痕,包含锈蚀表面以及非锈蚀表面情况下的试块表面图片(如图7(c),7(d)所示),进行数据增强进一步丰富样本供模型学习。数据集共4 800张图片,训练集,验证集,测试集的数量分别为3 260张,480张,960张。
图7 数据集部分展示
本实验采用模型准确率Accuracy,模型归一化均方误差nMSE两个指标对数据集中划分出的测试集部分进行指标评估,对比基于改进的FasterRCNN与传统的FasterRCNN模型在本文自建的压痕圆数据集中的识别效果,具体结果见表1所示。
表1 FasterRCNN模型与改进的FasterRCNN模型检测指标对比
从表1中可看出,改进的FasterRCNN模型的准确率Accuracy为97.08%,比传统的FasterRCNN模型的准确率Accuracy提升 0.73%。综上所述,改进的FasterRCNN模型对于检测图像区域内是否存在压痕圆有一定的优化效果。
此外,改进的FasterRCNN模型的归一化均方误差nMSE为0.001 226,相较于传统的FasterRCNN模型的归一化均方误差nMSE降低40.31%。该指标表明了FasterRCNN模型经过改进后,使得布氏硬度检测精度得到提升,鲁棒性得以增强。
通过准确率Accuracy,归一化均方误差nMSE两个指标计算比较,可以验证改进方案的有效性。同时,各项指标都有所提升,表明改进后的FasterRCNN模型对检测布氏硬度压痕具有更好的检测效果,更高的检测精度。
本文展示部分布氏硬度压痕的检测效果,其中原始的布氏硬度压痕图像如图8所示,图8(a)为表面未锈蚀,表面情况差,压痕边缘模糊的图片,图8(b)为表面锈蚀,表面情况好,反光效果好,压痕边缘清晰的图片。基于FasterRCNN模型和改进的FasterRCNN模型的布氏硬度检测效果对比分别如图9(a)、(b)所示。
图8 原始布氏硬度压痕图
图9 FasterRCNN模型与改进FasterRCNN模型的压痕检测效果对比图
根据图9可知,FasterRCNN网络对于检测锈蚀表面以及非锈蚀表面的布氏硬度压痕都具有很好的检测效果,表明基于FasterRCNN网络模型的布氏硬度压痕检测方法适用于锈蚀和光滑金属表面工况。同时改进的FasterRCNN网络相较于传统的FasterRCNN网络,布氏硬度压痕定位框更为准确,推导得出的布氏硬度压痕直径更精准。
本文提出基于改进FasterRCNN模型的布氏硬度检测方法,建立压痕圆数据集进行模型训练。通过检测效果证明,该检测方法适用于锈蚀和光滑金属表面工况,可以自动检测布氏硬度压痕。
同时,本文针对传统的FasterRCNN模型的特点与不足,结合布氏硬度检测的需求和特点,对传统的FasterRCNN模型进行如下改进:
1)结合布氏硬度检测的特点,在classification网络中边框回归损失函数中加入预测检测框的长与宽的方差,在改进的函数优化目标中加入预测检测框宽与高之间差距最小,使得基于改进的FasterRCNN模型布氏硬度检测能够提供更加准确的目标预测检测框,取得更精准检测效果。
2)对自建的数据集进行数据增强,在不易提取大量图片时,有效扩充数据集数量,使模型学到更多有效特征,解决模型过拟合,泛化能力差的缺点,使得模型的鲁棒性增强,同时提高模型在不同亮度下的判断能力。
通过对比改进的FasterRCNN模型与传统FasterRCNN模型的准确率Accuracy,归一化均方误差nMSE,发现改进后的各项指标均较改进前的指标有提升。其中,准确率Accuracy从96.35%提升到97.08%,归一化均方误差nMSE从0.002 054降低到0.001 226。证明了改进的FasterRCNN模型对于检测布氏硬度压痕圆具有更好的检测效果,更高的检测精度,为布氏硬度检测提供了一种结合深度学习的、有效的测量解决方案。