基于Faster R-CNN 的未爆弹检测
2021-10-26何晓晖邵发明卢冠林王金康
胡 聪, 何晓晖, 邵发明, 卢冠林, 王金康
(陆军工程大学 野战工程学院, 江苏 南京 210007)
0 引言
未爆弹是军事活动或演习活动的遗留物, 多数为未引爆的炮弹、地雷等危险品或武器装备。未爆弹结构大小不一、分布复杂,同时又伴随着易引发、高危害等性质,极大程度上阻碍了正常的土地资源的开发和利用, 所形成的雷场、雷区,严重的限制了人们正常的劳动活动区域,严重危害到民众的生命财产安全。
目前,未爆弹主要依靠人工排除。 人工排除未爆弹的方式不仅效率低,而且危险性极大,因此,人们将目光投向排爆机器人[1-2],希望其能代替人工完成这一危险性巨大的任务。目前,国内外都在积极开发排爆机器人,但目前排爆机器人多为半自主型,极其依赖人的操控。
本文的研究内容为通过计算机视觉相关算法实现对未爆弹的图像检测,旨在为排爆机器人奠定视觉基础,使排爆机器人向自主排爆迈出关键一步。
1 深度学习与目标检测
目标检测是数字图像中对特定类别(如人、动物或汽车)的一项重要计算机视觉任务。 近年来,深度学习技术的快速发展为目标检测注入了新的血液, 取得了显著的突破,将其推向了一个前所未有的研究热点。 目标检测现已广泛应用于许多现实世界的应用中, 比如自动驾驶技术,它需要对交通环境中多类目标进行检测,包括交通标志检测[3]、车道检测[4]、车辆检测[5]、行人检测[6]等。
近二十年来, 人们普遍认为目标检测的发展大致经历了两个历史时期:传统的目标检测时期(2014 年以前)和基于深度学习的检测时期(2014 年以后)。 早期的目标检测算法都是基于手工制作的特征。 由于当时缺乏有效的图像表示,人们不得不设计复杂的特征表示,以及各种加速技能来耗尽有限的计算资源。 而今天的目标检测则是深度学习力量下的技术美学。
文献[7]提出了基于聚类生成anchor 方案的Faster RCNN 的零件表面缺陷检测算法, 并且建立缺陷零件的图像数据集进行实验,将缺陷检测的均值平均精度mAP 从原算法的54.7%提高到97.9%, 检测速度最快达到4.9 fps。文献[8]提出了一种基于Faster R-CNN 网络模型的铁路异物侵限检测算法, 并对该模型做适应性改进以满足铁路异物检测的现实需要, 并在铁路异物侵限视频数据集上进行测试,该算法对于人、车及部分动物的综合检测精确度达到了97.81%。文献[9]提出基于Faster R-CNN 算法的铁谱磨粒识别, 该算法采用ResNet-34 网络完成铁谱磨粒特征自动提取,并采用RPN 网络实现对图像中多个磨粒的识别,实验结果表明:该方法克服了磨粒交叉引起的识别难点,能识别一副图像中的多个磨粒,能统计各类磨粒数量,且准确率较高。 文献[10]提出一种基于Faster R-CNN 的铁路接触网鸟巢检测方法,通过改进卷积神经网络VGG16 对目标进行特征提取,分别在不同分辨率的卷积特征图上获取目标初始建议区域, 该算法对实际高速铁路行进中拍摄的含有鸟巢的图像进行试验, 结果表明: 该方法在检测精度与速度上, 均优于目前主流的Faster R-CNN 算法。
当前,目标检测技术愈加成熟,其应用也越来越多。
2 Faster R-CNN 的网络结构
Faster R-CNN[11]是第一个端到端,第一个近实时深度学习检测器。 它的主要贡献是引入了区域推荐网络(RPN)。 Faster R-CNN 应用广泛,其检测精度高,通用性与鲁棒性强,在多个数据集及物体任务上效果都较好,对于特定的数据集, 往往调参后就能达到较好的效果。 并且,Faster R-CNN 的整个算法框架中可以进行优化的点很多,提供了广阔的算法优化空间。如图1 所示为Faster R-CNN 算法的基本流程,算法主要分为4 个部分:骨干网、区域推荐网、感兴趣区域池化以及R-CNN 模块。
图1 Faster R-CNN 算法流程图
2.1 骨干网
当前物体检测算法虽然各不相同, 但第一步通常都是利用卷积神经网络处理输入图像,生成深层的特征图,这部分卷积神经网络是整个算法的骨架,也就是骨干网。 目前比较常用的骨干网包括VGGNet[12]、Inception[13]、ResNet[14]等,本 文采 用ResNet101 作 为 我 们 检测算法的骨干网。
近年来, 人们不断加深卷积神经网络寻求更好的检测效果,但是随着网络深度的增加,网络却更难以训练,也会产生梯度消失现象。 ResNet 引入了残差映射来解决梯度消失问题。 如图2所示,对于输入x,经过卷积神经网络后我们希望输出为H(x),普通网络直接拟合, 而ResNet引入一个捷径分支,将需要拟合的这种映射变为残差F(x)。
图2 普通网络与ResNet 的残差映射
2.2 区域推荐网(RPN)
区域推荐网顾名思义就是用来提取候选框的网络。原图经过骨干网后,形成特征图,区域推荐网在此特征图上进行滑窗(如图3),每个锚点产生K 个锚框,对所有的锚框打分,筛选出分数较高的部分锚框作为推荐区域。在此, 我们定义K 值为9, 锚框大小设置为128×128、256×256、512×512 三种,长宽比设置为2:1、1:1、1:2 三种。
图3 RPN 原理图
2.3 感兴趣区域池化
感兴趣区域池化(Region of interest pooling)(也 称 为RoI pooling)是卷积神经网络在目标检测任务中广泛使用的操作。例如,在单个图像中检测多个汽车和行人。 其目的是对非均匀尺寸的输入执行最大池化以获得固定尺寸的特征图。
对于来自输入列表的每个感兴趣区域, 它采用与其对应的输入特征图的一部分并将其缩放到某个预定义的大小。缩放通过三种方式完成:①将区域提案划分为相等大小的部分(其数量与输出的维度相同);②找到每个部分的最大值;③将这些最大值复制到输出(max pooling)。
2.4 R-CNN 模块
感兴趣区域池化层输出固定维度的特征, 接下来利用R-CNN 全连接网络进行分类和回归的计算。
3 实验环境与数据集
3.1 实验环境配置
本文实验环境配置如表1 所示。PyTorch 是一个集简洁与高性能于一身的框架, 相比于TensorFlow 等框架,很多模型在Py-Torch 上的实现也会更快, 因此Py-Torch 在计算机视觉领域的应用比较广泛。
表1 实验环境配置
3.2 未爆弹数据集
我们通过网络搜集的方式来搜集未爆弹 (主要为迫击炮弹、航弹以及形状与其相似的炮弹)图像,并且通过翻转、旋转、加入噪声等方式进行数据扩充,得到2948 张未爆弹图像(部分图像如图4 所示),对每张图像进行标注,最终形成我们的未爆弹数据集。
图4 未爆弹数据集图像样例
4 实验结果与分析
在目标检测领域,各种各样的检测算法都不尽相同,因此检测的精度也有所差异。 本文选择目标检测领域两个最常用的评价指标AP 和F1 作为我们衡量未爆弹检测效果的评价指标。
为了计算AP 值,我们首先计算出检测的召回率(Recall)和精准率(Precision),以其为坐标点形成P-R(精准率-召回率)曲线(如图5所示),曲线与坐标轴围成的面积即为AP值, 通常来说一个越好的分类器,AP 值越高。通过实验,我们得出未爆弹检测的AP 值为0.98。
图5 P-R 曲线
F1 值可由式(1)计算得出, 它是精准率和召回率的调和平均数。通过实验, 我们得出未爆弹检测的F1 曲线见图6。
图6 F1 曲线
实验结果表明,本文算法对未爆弹检测的精度较高,AP 值达到了0.98。 图7 为我们的一个检测结果图,从图中我们可以看出,目标与周围环境颜色接近,但算法还是成功检测出了目标, 并且算法识别此目标是未爆弹的可能性为0.825,表明算法的鲁棒性好,不受复杂背景环境的影响。
图7 检测结果示例
5 结论
未来, 排爆无人车必定会向智能化进一步发展。 在这一过程中, 排爆无人车的视觉技术就是智能化的先导,它好比是无人车的眼睛,能够对外界环境进行感知并且自主寻找目标, 这是无人车智能化作业的基石。 未爆弹检测就是排爆无人车视觉系统的关键任务之一, 它能够使无人车从获取的图像中自主识别未爆弹等目标物体, 并且实时获取目标的位置信息, 这种视觉反馈信息将为排爆无人车精准抓取打下基础,这对提升排爆效率具有重大意义。