基于残差网络和改进特征金字塔的油田作业现场目标检测算法

2020-06-04 02:01邵明文李传秀张兆雷
科学技术与工程 2020年11期
关键词:残差准确率卷积

梁 鸿, 李 洋, 邵明文, 李传秀, 张兆雷

(中国石油大学(华东)计算机科学与技术学院,青岛 266000)

目前油田生产过程中主要依靠人工对生产现场进行监控,摄像头路数众多,监督成本高且无法保证质量。为了快速查找作业现场,减少违规作业并保证生产安全,将人工智能应用于油田安防之中。以单点多盒检测器(single shot multibox detector, SSD)算法[1]为基础并结合油田现场对SSD算法进行改进。油田现场摄像头悬挂较高,距离物体远,因此提高SSD算法对小目标识别的精度是关键问题。

Krizhevsky等[2]在ImageNet视觉识别挑战赛中使用卷积神经网络对物体进行识别,并取得很高的准确率,这使得人们重新认识到神经网络的强大之处,开启了研究神经网络的热潮。目前基于卷积神经网络的目标检测算法主要有以R-CNN(Region-CNN)[3]为代表的两步检测算法和以YOLO[4]为代表的一步检测算法。

Girshick等[3]提出R-CNN算法,该算法首次将卷积神经网络应用于目标检测领域。R-CNN算法的精确度超过了传统算法,但R-CNN算法计算量大,检测图片的速度较慢。Girshick[5]提出了Faste R-CNN算法。对于R-CNN存在计算量大的问题,Faste R-CNN采用共享感兴趣区域池化的方式减少计算量,从而提高检测速度。Ren等[6]提出Faster R-CNN算法,该算法使用RPN(region proposal network)网络代替了SearchSelective算法[3],提高了检测速度。He等[7]提出空间金字塔池化网络(spatial pyramid pooling net, SPP-Net),该网络可以自适应图片大小,很大程度上提高了检测速度。R-CNN系列算法虽然准确率较高,但检测速度依然很慢。Redmon等[4]提出了YOLO(you only look once)算法,该算法采用端到端的设计思路,将区域提取和预测统一到一个网络中,极大地提高了检测速度。YOLO算法从最后一个特征层进行预测,对小目标的预测不理想。Liu等[1]提出SSD算法,它同样采用端到端的设计思路。SSD算法采用从多层进行预测,一定程度上提高了对小目标识别的准确率。由于较低的卷积层缺乏语义信息,从而导致对小目标的检测不够准确。

针对小目标的问题,Cai等[8]提出Cascade R-CNN算法。该算法是一种多阶段的结构,每阶段都相继提高交并比(intersection over union,IOU)的阈值,通过控制IOU阈值提高小目标的准确率。Fu等[9]提出DSSD(deconvolutional single shot detecter)算法,该算法使用反卷积进行上采样,同时使用ResNet-101[10]代替SSD结构中的VGG(visual geometry group)-16[11]。DSSD提高了小目标检测准确率的同时降低了检测速度,DSSD321[9]在TitanX上测试的速度为9.5 fps[9]。Lin等[12]提出FPN算法,该算法通过将上采样和下采样特征图相结合的方式,来提高对小目标识别的准确率。Bell等[13]提出两个网络的结构,通过SkipPooling和IRNN(spatial recurrent neural network)将内网和外网相互结合的方式提高准确率。Cao等[14]通过融合底层特征的方式提高小目标的准确率。Shen等[15]使用卷积神经网络中间层的不同尺度来动态地调整监督强度,以此来提高小目标检测的准确率。文献[16]通过注意力机制提高识别准确率。文献[17]通过均值漂移滤波平移算法改善对中小目标的识别效果。

针对SSD算法对小目标识别不够准确的问题,使用改进的FPN融合高层和底层语义信息,以此来提高对小目标检测的准确率。较低的卷积层感受野小,采用空洞卷积进行处理以得到较大的感受野[18]。在融合后的特征图之上添加预测模块[5],进一步提高网络对目标语义信息的提取和融合。

1 改进SSD

SSD算法是继YOLO之后另一单步目标检测算法。相比较Faster R-CNN这种两步目标检测算法,单步算法速度更快同时精度较高[4,6],在工业上有着广泛的应用。SSD借鉴YOLO的设计思路,其速度和准确率都超过了YOLO v1[4]。相比较YOLO算法,SSD利用前面特征层中信息损失较少的特点对小目标进行预测,但前面语义信息不深,对小目标识别依然不理想。针对SSD算法对小目标检测精度低的问题进行改进,改进后的网络结构如图1所示。

图1 RP-SSD网络结构Fig.1 RP-SSD of network structure

1.1 改进特征金字塔

1.1.1 上采样模块

FPN网络有两条路径,一条自底向上,另一条自顶向下[12]。自底向上的网络不断下采样提取物体的特征。自顶向下的网络通过双线性插值法[19]进行上采样。FPN将基础网络提取的特征图经过卷积核为1×1的卷积层进行卷积,之后与上采样得到特征图的对应元素相加进行融合。FPN算法将融合后的特征图使用步长为1、卷积核大小为3×3的卷积层进行卷积,以此来减少相加后的特征图的通道数。

首先按照FPN的方法构造自顶向下的路径,如图2所示。对基础网络提取的特征图进行上采样,之后与基础网络提取的特征图相加,最后将相加的结果经过一个卷积核为3×3的卷积层进行卷积。由于基础网络前面卷积层的语义不深,所以直接与上采样的卷积层相加会产生负面干扰。改进后的算法在PASCAL VOC[20]2007测试的mAP为74.7%,相比现有SSD的77.2%[1]下降了2.5%。

图2 直接按照FPN的方式改进SSD网络Fig.2 Improving SSD network directly according to FPN

为了更好地融合上采样和下采样产生的特征图,对FPN的上采样过程重新构造,如图3所示。使用双线性插值法进行上采样,并将VGG-16的Conv4_3[11]所产生的特征图使用空洞卷积进行卷积,扩大感受野。对于使用双线性差值法得到的特征图,首先输入到卷积核为1×1、输出通道为256的卷积层中进行卷积。使用1×1的卷积核目的是为了减少特征图的通道数,从而减少模型的参数。之后将卷积后的特征图输入BN(batch normalization,批量归一化)层中,进行归一化处理加速网络的收敛。对于基础网络提取的特征图放到两个卷积层中进行卷积,每个卷积层后设置一个BN层。并在两个卷积层中间加入非线性激活函数relu,增加模型的表达能力。同时relu函数可以随机使神经元失活,在一定程度上避免卷积神经网络的过拟合现象。最后将上采样和下采样结果的对应元素相加进行融合。本文所设计的上采样模块适用于整个SSD网络。

由于Conv4_3在卷积神经网络的浅层感受野不足,将它直接与上采样后的卷积层相加会造成负面影响。使用池化层进行下采样虽然可以增大感受野,但是会造成像素信息的损失。空洞卷积优点就是在不进行池化层处理的情况下,增大特征图的感受野,使每个卷积层输出都有较大信息范围。空洞卷积将原有的卷积核以一定比例进行扩大,但实际的卷积核和原卷积核的大小相同,并不会增加计算量。采用扩张率[18]为2的空洞卷积对Conv4_3输出的特征图进行卷积,增大感受野。

图3 上采样模块Fig.3 Up sampling module

1.1.2 预测模块

为了得到更多的语义信息,在上采样模块之后增加预测模块[9],如图4所示。预测模块a由一个残差块组成,预测模块b由两个残差块组成。每个残差块由3个卷积层构成,卷积层的输出通道数依次为256、256、1 024,卷积核大小为1×1,步长为1,跳层连接处卷积核为1×1,网络最终得到的特征图如式(1)所示。对比两种预测模块,预测模块b的准确率要好于预测模块a。这主要因为VGG-16的卷积层要少,使用卷积层较多的预测模块可以获得更多的语义信息[10]。

Y=Cp(Fd⊕Fu)

(1)

式(1)中:Y表示最终得到的特征图;Cp表示对特征图使用预测模块进行卷积;Fd表示基础网络提取的特征图;Fu表示上采样得到的特征图;⊕表示将特征图对应的像素值相加。

图5 使用跳层连接改进基础网络Fig.5 Improves the back bone network with a jump-layer connection

图4 预测模块Fig.4 Prediction module

1.2 改进基础网络

VGG-16由牛津大学提出,该网络的优点是简洁实用,缺点是与近些年提出的ResNet-101相比,VGG-16的卷积层较少,这意味着VGG-16所提取的语义少。VGG-16由13个卷积层、3个全连接层、5个池化层组成。SSD的基础网络为改进后的VGG-16。去掉了VGG-16的一个全连接层,将剩下的两个全连接层变为卷积层,之后添加8个额外的卷积层。

为提高网络对小目标识别的准确率,在基础网络中添加上采样模块和6个卷积层组成的预测模块。虽然可以提升卷积神经网络对语义信息的提取,提高物体的识别率,但同时也给网络带来了梯度爆炸或梯度消失[10]的问题,使得网络难以训练。

He等[10]发现随着网络层数的加深,网络的准确率会越来越高,但是加深到一定的程度后网络的精度会立刻下降,反而不如浅层网络预测的精度高。深层网络的准确率比浅层的准确率低的主要原因是梯度消失和梯度爆炸。为了解决梯度问题,文献[10]采用跳层连接卷积层的方式构造残差块。本文同样采用跳层连接的方式在SSD的基础网络中构造残差块,以此来解决梯度问题,网络结构如图5所示。

以VGG-16的卷积段[11]作为一个残差单元,残差单元之间使用短线进行跳层连接。每个短线由卷积层和BN层组成。以VGG-16的卷积段作为一个残差单元,VGG-16共含有5个卷积段,在此处构造5个残差块。在额外卷积层处,每两个卷积层作为一个残差单元。在额外卷积层处共构造4个残差块,本文一共设计9个残差块。每个跳层连接的卷积层参数如表1所示。

表1 跳层连接处的卷积层参数

2 实验

2.1 实验环境与参数设置

SSD512在Titan X测试的速度为19 fps[9],考虑到油田安防中的实时性,针对SSD300[1]进行改进实验。实验使用3种数据集验证模型的有效性,分别为PASCAL VOC 2007加PASCAL VOC 2012、COCO 2014以及从胜利油田所采集的视频图像并按照PASCAL VOC制作的数据集。从油田采集的数据集一共有9个类别,分别为 no-hat (不戴安全帽)、auto-cr (汽车吊)、truck-cr (随车吊)、excavator(挖掘机)、oxy-ace(用火设备)、tractor(拖拉机)、 person (人)、cr-arm (起重臂)、 gr-anchor(地锚机)。

实验的评价标准主要使用准确率mAP,它是目标检测领域公认的评价标准,计算方式如公式(2)所示。本实验同时借助mAP曲线、P-R(precision-recall,精确率-召回率)曲线来分析所改进算法的性能。

(2)

式(2)中:Pii表示真正;Pij表示假正。一共有k+1个类别。

实验使用的操作系统为Ubuntu16.04,显卡为GTX 1080Ti,其显存为11 G,处理器为酷睿i7-7700。本实验学习率初始值设置为1×10-4,动量为0.9,权重衰减率为5×10-4。利用ImageNet数据集进行预训练,得到的权重对VGG-16网络进行初始化。网络其余卷积层的参数使用“xavier”方法[21]进行初始化。所有训练和测试代码均在pytorch框架中编写。

2.2 PASCAL VOC 2007

实验使用PASCAL VOC 2012和PASCAL VOC 2007的训练集和验证集进行训练,使用PASCAL VOC 2007的测试集进行测试。同时选取了SSD、Faster R-CNN以及DSSD作为本实验的对照算法。数据集共有20个类,分别为aero (飞机)、bike (自行车)、bird (鸟)、boat (船)、bottle (瓶子)、bus (公共汽车)、car (汽车)、cat(猫)、chair(椅子)、cow(牛)、tabble(桌子)、dog(狗)、horse(马)、mbike(摩托车)、person(人)、plant(盆栽植物)、sheep(羊)、sofa(沙发)、train(火车)、tv(电视)。实验结果如表2所示,表中列出了3种算法的mAP以及20个类的平均精度(average precision,AP)。

实验一共训练12万轮。为了得到更好的结果,在8万轮和10万轮时通过式(3)调整学习率。其中Lr为调整后的学习率,Init_Lr为初始的学习率,gamma为动量,step为迭代的轮数。

Lr=Init-Lr×gammastep

(3)

实验使用pytorch框架复现SSD算法,它在PASCAL VOC 2007中测试的mAP最高为76.7%,相比文献[1]中的77.2%低0.5%。从表中可以看出,改进算法优于SSD和DSSD算法,RP-SSD比文献[1]中的SSD的准确率提高了1.7%。RP-SSD相比使用pytorch复现的SSD,准确率提高了2.2%。改进算法对小目标提高显著,其中bird类提高了4.4%,bottle类提高了8.9%,plant类提高了5.2%,chair类提高了4.8%。RP-SSD比DSSD提高了0.3%,其中bottle类提高了4.5%,chair类提高了4.1%,plant类提高了3.1%。RP-SSD比FasterR-CNN的准确率提高了5.7%,其中bird类提高了7.5%,table类提高了12.1%,plant类提高了16%。

表2 PASCAL VOC 2007测试结果

图6展示了SSD和RP-SSD的检测效果。从图中可以看出,图6(a)的置信度高于图6(b)的置信度。在小物体的检测中,图6(a)的漏检率低于图6(b)的漏检率,同时图6(b)错检率大于图6(a)。

召回率(recall)和精确率(precision)是分析目标检测算法性能的重要指标,本文绘制了SSD和RP-SSD算法的P-R曲线,如图7所示。从图中可以看出RP-SSD算法的召回率和精确率都大于SSD算法的召回率和精确率。由RP-SSD的P-R曲线与Precision轴、Recall轴围成的面积完全大于P-R曲线与Precision轴、Recall轴围成的面积,可得RP-SSD的性能完全优于SSD的性能。

实验共迭代12万轮,从图8中可以看出RP-SSD的mAP高于SSD的mAP,1到8万轮大约高1%,8万轮到12万轮大约高2%。从图中可以看出,通过式(3)调整学习率的有效性,从8万轮开始SSD和RP-SSD的mAP值开始显著提高。

2.3 石油数据集

实验使用从胜利油田现场采集的数据对改进算法进行验证。油田数据集中共有4 001张图片,其中训练集加验证集的数量为3 200张,测试集的数据量为801张,每张图片分辨率为640×480。图片的主要来源为包含油田各种施工场景的视频图像。为了增加网络的鲁棒性,从百度搜索189张图片加入数据集中。从百度搜索的图片中包含了数据集的各个类别。制作数据集时,首先将油田视频裁剪成图片,然后挑选差异比较大的图片进行人工标注,如图9所示。制作的数据集中一共标注10 099个目标,其中不戴安全帽标注509个,汽车吊标注1 717个、随车吊标注986个、起重臂标注2 514个、挖掘机标注804个、切割用的氧气瓶和乙炔瓶标注509个、拖拉机标注416个、人标注2514个、地锚机标注130个,标注后的图片按照PASCAL VOC的格式进行制作数据集。

图6 RP-SSD和SSD检测效果对比Fig.6 Comparison of RP-SSD and SSD detection results

图7 SSD和RP-SSD的P-R曲线Fig.7 P-R curves of SSD and RP-SSD

图8 RP-SSD和SSD的mAP曲线Fig.8 mAP curves of RP-SSD and SSD

东营胜利油田现场所部署摄像头的焦距为4.7~94 mm,其放大倍数为20倍。实验设置的参数与VOC 2007相同,实验结果如表3所示,演示效果如图10所示。实验对比了SSD、RP-SSD和DSSD在油田数据集的准确率,SSD的mAP为75.8%,RP-SSD的mAP为78.4%。通过实验发现,本文改进算法的准确率比现有SSD算法的准确率提高了2.6%。其中小目标类别提高显著,切割用的氧气瓶和乙炔瓶类提高了8.7%,人类提高3.6%,不戴安全帽类提高了4.4%。RP-SSD比DSSD的mAP提高了0.9%。

2.4 COCO数据集

COCO数据集标注的物体中小目标数量众多,为了进一步验证改进的模型,从COCO数据集中抽取实际物体较小的20个类别进行验证。抽取的20个类分别为person(人)、bic(bicycle,自行车)、fhyd(firehydrant,消防栓)、bird(鸟)、cat(猫)、dog(狗)、umb(umbrella,雨伞)、hanb(handbag,手提包)、tie(领带)、skis(滑雪板)、bbat(baseballbat,棒球)、tenr(tennisracket,网球)、cup(水杯)、fork(叉子)、bowl(碗)、banana(香蕉)、apple(苹果)、mouse(鼠标)、cellp(cellphone,手机)、toob(toothbrush,牙刷)。

实验使用COCO 2014的训练集对模型进行训练,使用COCO 2014的验证集进行测试。该数据集中测试图片数量为28 738张,训练图片数量为59 207张,训练集中共标定284 670个目标,测试集中共标定136 199个目标。在训练集中标定目标的像素值小于32×32的占42.4%,在测试集中标定目标的像素值小于32×32的占42.2%。检测结果如表4所示。

从表4中可以看出,RP-SSD比现有SSD算法的mAP提高了2.3%,其中cat类提高了3%,dog类提高了4.5%,umbrella类提高了3.1%,baseball bat类提高了5.8%,tennis racket类提高了5.1%,forck类提高了4.9%。RP-SSD比DSSD的mAP提高了1.2%。从实验结果可以看出,RP-SSD算法在小目标的检测中表现优异。

图9 油田数据集展示Fig.9 Oilfield data set display

表3 石油数据集上的检测结果

图10 SSD和RP-SSD检测结果对比Fig.10 Comparison of RP-SSD and SSD detection results

表4 COCO数据集检测结果

2.5 改进算法有效性的验证

为了验证改进策略的有效性,对改进方法分别在PASCAL VOC数据集上逐一验证。首先将SSD算法记为F0。在F0的基础上只添加上采样模块,记为F1。在F1的基础上添加预测模块a,记为F2-a。在F1的基础上添加预测模块b,记为F2-b。在F2-b基础上采用残差思想改进VGG-16,记为F3。准确率如表5所示。

表5 验证各改进方法

UL表示上采样模块,如图3所示;PM(a)表示预测模块a,如图4(a)所示;PM(b)表示上采样模块b,如图4(b)所示;Res表示使用残差思想改进基础网络,如图5所示。

2.6 速度

表6对比了各种检测算法的速度。从表中看出RP-SSD的速度为32 fps,相比SSD下降了14 fps。虽然RP-SSD的速度有所下降,但可以达到实时检测的目的。同时RP-SSD相比DSSD的速度提高了22.5 fps。

表6 检测算法的速度对比

3 结论

为了避免上采样和下采样融合时产生负面干扰,在FPN中增加上采样模块来更好地融合特征。为了得到更多的语义信息在上采样模块之后添加预测模块,并使用跳层连接的方式,解决反向传播过程中的梯度问题。实验表明,改进的SSD算法对小目标的检测效果显著提高。改进的算法在1080Ti上的速度为32 fps,可以达到实时检测的要求。改进的算法较FasterR-CNN、SSD、DSSD有较大的优势。

猜你喜欢
残差准确率卷积
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
基于深度卷积的残差三生网络研究与应用