井下行人检测的改进Cascade R-CNN算法 | ![]() |
通过摄像头采集信息, 并利用计算机图形学进行图形分析, 已经应用于各行各业中, 在无人汽车、无人飞机、机器人等领域得到了广泛的应用。煤炭行业也在不断进行信息化的改革, 目前矿井出入口都安装有监控设备, 获取井下工作人员的图像信息, 但所采集的视频资源并没有充分发挥作用, 主要受限于井下特殊环境的影响, 例如光线不足、背景复杂、行人特征不明显等, 井下目标检测和识别的难度较高。
井下的行人检测算法近年来也得到飞速的发展, 例如:张应团等[1]提出了基于DCNN的井下行人监测方法研究, 对原YOLO系统中网络中第8层进行改进优化, 并应用到井下行人检测中。王琳等[2]提出了同样构建在YOLO系统下, 引入结合金字塔池化模块的井下行人检测方法。李伟山等[3]利用深度学习目标检测框架Faster R-CNN, 提出了一种“金字塔RPN”的Faster R-CNN算法实现井下行人检测。李现国等[4]提出一种基于DenseNet网络的轻量级卷积神经网络作为SSD网络实现井下行人检测方法。韩江洪等[5]提出基于Faster R-CNN实现井下行人定位算法。
目前主流的基于深度学习的目标检测框架分为两个大类, 分别是Faster R-CNN和YOLO, 其中Faster R-CNN主要通过对候选区域进行分类回归实现目标检测, 精确度高但速度较慢, YOLO主要将目标检测转换为回归问题求解, 检测速度快但精度不高。Cai Zhao-wei等[6]针对Faster R-CNN中存在的mismatch问题, 提出级联结构的R-CNN模型。文献[7-9]中已经将级联结构的R-CNN应用到实际目标检测之中。本文提出一种基于Cascade R-CNN模型, 针对井下特殊环境的行人检测方法。该方法以PyTorch作为深度学习框架, 采用Soft-NMS替代传统NMS对Cascade R-CNN模型进行改进, 并在井下数据集中取得了不错的效果。
在此基础上, 本文提出一种高效的改进Cascade R-CNN井下行人检测算法, 可更准确地检测出行人, 更好地保障工矿企业生产, 提高井下工作人员的安全。
1 Cascade R-CNN算法 1.1 Cascade R-CNN简介Cascade R-CNN是在Faster R-CNN的基础上进行了优化, 主要用来解决IoU阈值设置的问题。传统Faster R-CNN网络分为training阶段和inference阶段, 每个阶段又包含分类和box回归任务, 在这个过程中需要通过人为设置一个IoU阈值来将Proposals分为正负两个样本, 一般情况下, IoU阈值设置为0.5。虽然通过提高IoU阈值可以提高检测质量, 但如果设置过高会导致样本过少时引起过渡拟合, 同时也会导致更为严重的mismatch问题。可以发现单一IoU阈值训练的效果具有一定局限性。Zhao-wei等[6]提出了一种muti-stage的结构, 不同stage都设置有不同的IoU阈值, 利用级联回归实现重采样, 逐级提高IoU阈值, 使前一阶段重新采样过IoU阈值能够更好的适应下一个阶段, 从而减少传统Faster R-CNN中的mismatch问题, 提高目标识别的效率。
1.2 Cascade R-CNN的级联结构所谓级联检测模型就是设置不同的IoU阈值界定样本训练模型, 前一个阶段的输出作为后一个阶段输入, IoU阈值一直提升。使用级联结构可以避免在样本不足情况下的过度拟合问题, 同时在多阶段模型中可以获得更高的IoU阈值。另外, 采用级联结构随着阶段的不断输入, 目标检测性能也不断提高。由于很难找出一个适应所有IoU的分类器, 可以把回归任务分解成一个级联的回归问题, 整体构架如下:
$ f\left( {x, b} \right) = f_T^ \circ {f_{T - 1}}^ \circ \cdots {}^ \circ {f_1}\left( {x, b} \right) $ | (1) |
其中T表示级联的阶段数, 其中每一个ft都是预优化的, x表示本阶段你输入的图片, b表示本阶段图片对应的检测框, 随着阶段的不断深入, 效果也不会不断提升。
1.3 Cascade R-CNN的实现Cascade R-CNN模型结构如图 1所示, 对传统的Faster R-CNN的两阶段检测架构进行扩展, Cascade R-CNN实现了多阶段构成的级联回归模型。Cascade R-CNN模型是由一个用于生成候选区的RPN阶段和三个检测阶段组成, IoU阈值分别设为0.5, 0.6和0.7。具体实现流程是先由子网络“H0”对输入图片进行处理并产生候选RPN; 然后依次利用三个检测阶段对第一阶段的候选RPN进行处理; 最后送到分类模块和边框回归模块中进行检测处理。
![]() |
图 1 Cascade R-CNN模型结构 |
2 基于Cascade R-CNN的井下行人检测系统设计 2.1 井下行人检测系统处理流程
由于井下环境复杂, 存在光线不足、目标与背景差异较小、边界不清等现象, 因此本文针对井下行人目标检测特殊情况, 构建基于改进Cascade R-CNN的目标检测系统, 流程如下:
本系统构建于PyTorch深度学习框架之上, 首先对井下行人数据进行预处理, 即将图片信息转换为COCO格式数据集; 接着通过mmdetection工具箱实现Cascade R-CNN基本功能, 结合Soft-NMS实现更好目标检测效果; 然后进行预训练模型初始化、训练和测试, 最后验证模型实际效果。
![]() |
图 2 基于Cascade R-CNN的井下行人检测处理流程 |
2.2 Soft-NMS
非极大值抑制(NMS)是目标检测流程中重要步骤, 传统NMS采用贪心算法筛选检测区域, 因NMS阈值设置不当, 使得部分重叠检测区域因得分较低被筛选掉, 导致检测效果不佳。本文在Cascade R-CNN之上引入Soft-NMS对重叠区域进行处理, 避免得分较低的有效候选区域被筛选掉, 提高模型性能。
Soft-NMS利用衰减函数调整得分, 主要提供两种方式。一种是线性加权:
$ {s_i} = \left\{ {\begin{array}{*{20}{c}} {{s_i}\;\;\;\;iou\left( {M, {b_i}} \right) < {N_t}}\\ {{s_i}\left[ {1 - iou\left( {M, {b_i}} \right)} \right]\;\;\;iou\left( {M, {b_i}} \right) \ge {N_t}} \end{array}} \right. $ | (2) |
另外一种是高斯加权:
$ {s_i} = {s_i}{e^{ - \frac{{iou{{\left( {M, {b_i}} \right)}^2}}}{\sigma }}}\;\;\;\;\forall {b_i} \in D $ | (3) |
其中M表示得分最高的候选框; bi代表第i个候选检测框; iou(M, b)表示M和bi的重叠度; si表示bi的得分值; D表示预留候选框的集合; σ表示高斯函数方差; Nt表示NMS阈值。
3 试验与结果分析 3.1 数据集准备利用安徽某煤炭企业井下视频采集大量图片构建井下行人数据集, 首先将对所有采集的图片进行预处理, 由于目前主流数据格式为PASCAL VOC和MS-COCO两种格式, 本文采用MS-COCO格式制作数据集。整个数据集包含图片6 000张, 每张图片包含1~15人等, 其中3 000张作为训练集使用, 另外3 000张作为测试集。
3.2 实验环境和参数设置实验环境是PyTorch+mmdetection, 其中PyTorch是目前主流的深度学习框架, 最新版本为Stable(1.4)。mmdetection是由商汤科技和香港中文大学联合开发的开源深度学习检测库, mmdetection已经实现了Cascade R-CNN的基础功能。开发环境配置如下:
表 1 开发环境 |
![]() |
基于mmdetection目标检测工具实现Cascade R-CNN, 本文选择在ImageNet分类任务上预训练好的模型初始化训练网络, 其中backbone类型选择X-101-64x4d-FPN, neck类型选择FPN, RPN网络类型选择RPNHead, RoIExtractor类型选择SingleRoIExtractor, 全连接层类型选择SharedFCBBoxHead。结合之前的大量工作, 对模型训练过程中的参数优化如下:全局学习率为0.002, 初始学习率设为1.0/3, 动量因子为0.9, 权重衰减为0.000 1。在初始的500次迭代中学习率逐渐增加, 在第8和11个epoch时降低学习率。
3.3 试验结果与评估最终本文提出的改进Cascade R-CNN模型在井下行人检测数据集中取得了91.4%的平均检测准确率AP, 其P-R曲线如图 3所示。
![]() |
图 3 P-R曲线 |
通过分析可以发现改进Cascade R-CNN模型具有较好的效果主要原因是:1)前期准备的大量训练数据集, 配合前期数据处理, 提高了检测效果; 2)将传统NMS使用Soft-NMS后在复杂环境下的效果也较之前改良很多。最终本文提出的改进算法取得了上述效果。
为了验证改进后的Cascade R-CNN模型效果, 将井下数据集在Faster R-CNN模型上也进行了训练, 并测试集进行目标检测。在测试集中选择一张代表性的图片, 分别使用Faster R-CNN和Cascade R-CNN进行检测, 从图 4(a)和图 4(c)中可以看出Faster R-CNN在背景昏暗复杂的情况下没有识别出行人, 而图 4(b)和图 4(d)使用Cascade R-CNN成功识别出行人。也可以进一步证明在井下复杂环境下Cascade R-CNN具有较好的鲁棒性。
![]() |
图 4 改进Cascade R-CNN与Faster R-CNN在井下行人数据集上的检测效果 |
同时也应该注意到, Cascade R-CNN虽然能够较好的解决mismatch问题, 提高目标检测效率, 但是从实验中可以发现Cascade R-CNN算法通过级联方式对候选RPN的影响越来越小, 三个阶段中只有第一和第二阶段取得了不错的效果, 第三阶段基本没有发挥作用, 可以推断出仅仅通过优化阈值并不能够得到更好的结果, 还需要在候选RPN的选择上进行更多的优化。
最终通过实验可以得出在较为简单的场景中无论是Faster R-CNN还是Cascade R-CNN都能取得不错的效果, 但是在场景较为复杂, 如光线不足、背景复杂的情况下, Cascade R-CNN较之Faster R-CNN取得了更好的效果, 同时可以应注意到图 4(b)中没有能够很好识别出遮挡较多的待测目标。所以对于遮挡关系比较复杂的情况下Cascade R-CNN并未能取得比较好的检测结果。
3.4 分析对比为了进一步验证该算法的有效性, 本文在通用数据集COCO上进行了实验。COCO数据集是由微软团队提供的大型图像数据集, 专为目标检测、实例分割而设计。COCO数据集包括80类别, 20万个图像和50万个目标标注, 平均图像目标数为7.2。通过COCO数据集进一步验改进Cascade R-CNN与传统Faster R-CNN和Cascade R-CNN之间的性能差别, 本次实验的环境同表 1。
由表 2和图 5可知, Cascade R-CNN在COCO数据集上比Faster R-CNN取得了更高的识别精度。改进后的Cascade R-CNN在原Cascade R-CNN上性能提升约为2%左右, 优于原始算法, 同时也进一步证明该算法在目标检测中的效果。
表 2 在COCO数据集上的检测结果 |
![]() |
![]() |
图 5 三种模型下的P-R曲线 |
通过实验分析可以发现传统的Cascade R-CNN算法有效的解决Faster R-CNN中mismatch问题, 在AP上有明显的提升, 总体性能提升约在10%~20%。但也应该注意到级联模型处理阶段越往后效果越不明显, 本文提出的改进Cascade R-CNN在原算法基础之上引入Soft-NMS, 进一步提高了识别准确率, 也说明Cascade R-CNN还有很多有待改进的地方。
4 结论本文提出一种改进Cascade R-CNN的井下行人检测方法, 引入Soft-NMS对Cascade R-CNN进行改进, 最终在井下行人测试集中取得91.4%的检测准确率, 并在COCO数据集上对本改进算法进行了进一步的验证, 取得不错的效果。从实验数据可以发现Cascade R-CNN在第三阶段时性能提升不大, 应该还是有进一步的提升空间, 其次mmdetection工具箱上还可以进一步优化参数, 提高检测准确率。
[1] |
张应团, 李涛, 郑嘉祺. 基于DCNN的井下行人监测方法研究[J]. 计算机与数字工程, 2019, 47(08): 2027-2032. DOI:10.3969/j.issn.1672-9722.2019.08.039 |
[2] |
王琳, 卫晨, 李伟山, 等. 结合金字塔池化模块的YOLOv2的井下行人检测[J]. 计算机工程与应用, 2019, 55(3): 133-139. |
[3] |
李伟山, 卫晨, 王琳. 改进的Faster RCNN煤矿井下行人检测算法[J]. 计算机工程与应用, 2019, 55(4): 200-207. |
[4] |
李现国, 李斌, 刘宗鹏, 等. 井下视频行人检测方法[J]. 工矿自动化, 2020, 46(2): 54-58. |
[5] |
韩江洪, 袁稼轩, 卫星, 等. 基于深度学习的井下巷道行人视觉定位算法[J]. 计算机应用, 2019, 39(3): 688-694. |
[6] |
CAI ZHAO-WEI, VASCONCELOS NUNO. Cascade R-CNN:High quality object detection and instance segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019, 54(2): 104-118. |
[7] |
徐昕军, 江波, 黄启迪. 基于Cascade R-CNN的铁路路基翻浆冒泥病害智能识别方法[J]. 铁道建筑, 2019, 59(12): 99-104. |
[8] |
周刚. 基于Cascade R-CNN的车辆目标检测方法[J]. 内燃机与配件, 2019(20): 146-148. DOI:10.3969/j.issn.1674-957X.2019.20.076 |
[9] |
李长江, 韩志伟, 钟俊平, 等. 基于级联Faster R-CNN的高铁接触网支撑装置等电位线故障检测[J]. 铁道学报, 2019, 41(6): 68-73. DOI:10.3969/j.issn.1001-8360.2019.06.010 |