一种改进Faster RCNN的工件检测算法

2020-04-07 09:53郭志浩
西安邮电大学学报 2020年6期
关键词:像素点工件精度

周 有,郭志浩

(西安邮电大学 自动化学院,陕西 西安 710121)

随着自动化和计算机技术的发展,工业自动化对工件的精准检测与识别提出了更高的要求。工件检测算法分为传统的工件检测算法和基于深度学习的工件检测算法。传统的工件检测算法一般结合Blob特征[1],Sobel算子[2]和图像Hu矩[3]等通过模板匹配的方法对工件进行检测。利用局部二值特征模式[4](local binary pattern,LBP)对不同工件特征进行多模式多尺度提取,可对工件进行匹配识别。在此基础上,融合基于遗传算法寻优的梯度方向直方图,增加了算法在形状特征上的匹配效果[5]。文献[6]提出基于角点通过闭合区域识别工件边界,再根据边界识别出不同几何关系的角点类型。上述方法适用于特征区分度高,特征容易建立的场景,但在不同形状、工件种类多的情况下的检测精度较低,达不到工业场景的基本要求。

近年来,深度学习技术被广泛应用于图像分类[7],目标检测[8]和图像分割[9]等众多复杂任务中。对工件的目标检测可转换为目标检测问题。基于深度学习的目标检测算法可以分为两类。一类是基于两阶段的区域目标检测算法,该类算法首先生成候选区域,然后放入分类器分类并对候选区域进行位置回归。例如,区域卷积神经网络[10](region convolutional neural network,RCNN)、快速区域卷积网络[11](fast region with convolution neural networks,Fast RCNN)、更快速区域卷积网络[12](faster region with convolution neural networks,Faster RCNN)、空间金字塔池化网络[13](spatial pyramid pooling network,SPP Net)及掩码区域卷积神经网络(mask region convolutional neural networks,Mask RCNN)[14],此类算法检测精度较高但速度慢。另一类算法以YOLO[15](you only look once)和单点多盒检测器[16](single shot multibox detector,SSD)为代表,将目标检测问题转换为回归问题,通过默认的检测框对预测目标进行回归,该类算法检测速度快,但对于小目标检测精度不高。相对于基于候选区域的目标检测算法,直接对预测边界框进行回归可以有效地提高检测速率,但YOLO对原图像进行网格划分,较为粗糙,SSD虽然基于YOLO加以改进,对不同网络层划分了不同的尺度窗口,但对小目标的检测精度依然差于Faster RCNN。

以Faster RCNN网络作为工件检测的基础框架,针对实际应用场景存在部分光照较强或者光照较暗的工件无法检测、网络特征提取能力不佳、网络模型拟合效果不够,以及多种工件检测中小目标难以检测等问题,提出一种改进Faster RCNN的工件检测算法。先通过自动色彩均衡(automatic color equalization,ACE)算法统计图像中的光照强度信息,将光照强度较大或较小的目标处理为网络模型最为敏感的光照强度分布,克服光照强度的影响。再通过增加按照固定比例设置的预定义锚点(Anchor)的数量并修改其尺寸优化网络模型,提高模型的学习能力,以期改善目标尺寸差异大的影响,进一步提高小目标工件检测的准确率。

1 工件检测算法

1.1 工件检测算法的核心框架

结合Faster RCNN与ACE算法,构建工件检测算法模型。先将数据集制作成VOC 2007格式,生成目标位置以及类别信息。然后通过ACE算法对输入图像进行处理,调整图像中颜色和亮度的关系,实现局部以及非线性特征的色彩映射关系,利用差分计算目标及其周围图像像素点的相对明暗关系矫正最终的像素值。最后,通过增加锚点个数并修改其尺寸改进区域建议网络[17](region proposal network,RPN),结合Fast RCNN交替优化共享特征信息,提高网络效率。工件检测算法核心框架如图1所示。

图1 工件检测算法的核心框架

1.2 Faster RCNN算法

Faster RCNN由区域建议网络模块RPN和目标检测模块Fast RCNN组成。Faster RCNN采用交替训练使两个网络共享卷积层,RPN模块采用“注意力”机制产生候选区域,让Fast RCNN有方向的检测目标,同时缩短检测时间并提升检测精度。Faster RCNN网络示意图如图2所示。

图2 Faster RCNN网络

RPN的基本思想是通过区域提议网络在特征图上找到所有可能的目标候选区域,以任意大小的图像作为输入,输出一组矩形的目标提议。为了生成区域提议,在最后的共享卷积层输出的卷积特征映射上滑动一个小网格,将输入卷积特征映射的n×n空间窗口作为输入,每个滑动窗口映射到一个低维特征,并被输入到边框回归层和边界框分类层。在每个滑动窗口位置同时预测多个区域提议,每个位置的最大可能建议数量为K,即对特征图上的每个位置设置多个锚点,预测不同尺度和长宽的候选区域。回归层输出4K个参数化坐标,分类层输出2K个目标分数,RPN网络示意图如图3所示。

图3 区域建议网络

Fast RCNN基于RPN产生的候选区域边界框检测并识别候选框中的工件。在训练时,首先将工件数据集送入网络中,通过基础网络进行特征提取,再通过RPN产生候选区域映射至特征图,感兴趣区域(region of interest,ROI)产生固定大小的特征图送入全连接层,输出目标置信度和位置信息。RPN 和Fast RCNN共享特征提取网络,实现高效检测。

Faster RCNN使用多任务损失函数度量工件检测网络模型预测值与真实值之间的差值,包括分类损失和回归损失,计算表达式为

(1)

2 改进Faster RCNN的工作检测算法

2.1 基于ACE算法的光照处理

工业场景下,针对光照直接影响待检测工件的检测精度,部分光照较强或者较暗的工件无法检测的问题,考虑到图像中颜色和空间位置关系,采用 ACE算法对数据集进行处理。该算法对图像进行局部特性的自适应滤波,利用差分计算目标与周围图像像素点的相对明暗关系,校正最终的像素值,从而提高网络的学习能力。算法主要包括以下两部分。

1)对图像进行色彩以及空域的调整,完成图像的色差矫正,得到空域重构图像。调整空域后,待处理像素点p与其周围像素点j的差值表示为

(2)

式中:c为色道;S为工件图像中参与运算的所有像素点的子集;Ic(p)-Ic(j)为工件图像两个不同像素点之间的亮度差值;d(p,j) 为两点之间的距离度量函数;r(·)为相对亮度函数,表示一个点与其周围点的相对亮度差值,放大图像中较小的差异,并丰富较大的差异。一般情况下,

其中,T为饱和界限。距离度量函数采用曼哈顿距离公式表示,即

d(i,j)=|xi-xj|+|yi-yj|

其中,xi和yi为图像中i点的坐标,xj和yj为j点的坐标。

2)对于彩色图像,需要进行红绿蓝(red green blue,RGB)三通道单独处理,然后合并为一幅完整图像。对式(2)处理后的工件图像进行动态扩展,扩展方式为

Oc(p)=round[127.5+ScRc(p)]。

式中:Oc为通道c的工件图像;Sc为线段(mc,0)到(Mc,255)的斜率,其中

mc=min[Rc(p)],

Mc=max[Rc(p)]。

最后将线性扩展后的数据映射到[0,255]空间中,得到处理后的工件图像

2.2 RPN网络改进

Anchor的数量是RPN网络中非常重要的超参数,直接影响了后续候选区域的生成。在Faster RCNN的源代码中,每个滑动窗口产生9种Anchor,包括128×128、256×256和512×512等3种尺度,以及1∶1、1∶2和2∶1等3种比例。但是,工件数据集中,5个目标的像素点分布范围在30×40~60×80之间,默认的Anchor参数对小目标工件无法召回,因此,在默认Anchor设置的基础上,增加一组64×64的Anchor,则RPN每个滑动窗口产生12组Anchor,尺度大小分别为64×64、128×128、256×256和512×512,纵横比分别为1∶1、1∶2和2∶1,从而提高模型对工件的检测精度。

3 实验分析

3.1 实验环境配置

实验在GeForce GTX 1080 Ti GPU,内存为8 GB Windows 10操作系统中,利用CUDA 8.0以及CUDNN 6.0加速深度学习运算,基于Tensorflow-GPU 1.4.0学习框架进行相关代码和参数的训练。运行环境为Pyhon 3.5,网络框架Faster RCNN选用在ImageNet[18]分类预训练网络视觉几何组16(visual geometry group,VGG-16)进行权重初始化。在训练工件检测网络模型时,学习率为0.001,批量大小为256,迭代次数为80 000次。

3.2 构建数据集

工件检测的数据集来源于某公司,共1 200张工件图片,每张图片包含小洞(hole)、大洞(bighole)、螺丝正装(nut)、螺丝反装(bolt)和铆钉(rivet)等5种工件类别。各类工件数目统计如表1所示。随机按照4∶1的比例分为训练集和测试集,根据实验要求对各类工件进行人工标注,人工标注的工件类别及位置信息如图4所示。

表1 工件数目统计

图4 人工标注图片数据

3.3 实验结果和分析

利用多任务损失函数式(1)对改进的Faster RCNN算法进行迭代训练,训练过程中记录每一次迭代边框回归和分类回归产生的损失值,绘制损失函数迭代曲线,如图5所示。可以看出,算法在迭代40 000次后开始收敛。

图5 损失函数迭代曲线

根据平均精度(average precision,AP)和平均准确率均值(mean average precision,mAP)两种评估指标[19],分别对比改进前后Faster RCNN网络模型的检测精度。AP衡量网络模型对给定工件类别的检测精度,mAP衡量网络模型对所有工件类别的检测精度。改进前后Faster RCNN网络模型的AP以及mAP如表2所示。

表2 改进前后的AP以及mAP变化

由表2可以看出,改进后Faster RCNN的测试精度提升了3.6%,网络的拟合能力得到了明显提高。

原算法与改进算法在实际图片中的检测结果如图6所示。可以看出,图6(b)相对于图6(a)能检测出更多的工件,且置信度也较高,表明改进算法能有效优化网络模型,检测效果好。

图6 改进前后算法检测结果对比

4 结语

结合ACE算法,基于Faster RCNN提出了一种改进Faster RCNN的工件检测算法。首先通过ACE算法处理工件图像的像素点分布,改善光照不均问题,然后通过修改RPN网络中锚点的个数及尺寸提高网络模型的拟合能力,解决了多种工件目标尺寸差异大对检测结果的影响。实验结果表明,改进算法对多种工件的检测精度有明显提升。

猜你喜欢
像素点工件精度
基于不同快速星历的GAMIT解算精度分析
带服务器的具有固定序列的平行专用机排序
带冲突约束两台平行专用机排序的一个改进算法
热连轧机组粗轧机精度控制
图像二值化处理硬件加速引擎的设计
工业机器人视觉引导抓取工件的研究
两台等级平行机上部分处理时间已知的半在线调度∗
基于局部相似性的特征匹配筛选算法
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密