根据我国2013–2030年的交通发展规划, 未来公路的规模为550万~600万公里. 其中, 在460万~520万公里乡村公路中, 水泥混凝土路面占比达到84%~87%. 露骨为水泥混凝土路面的常见病害, 路面出现露骨病害不仅会影响行车的安全性, 继续扩展还会形成坑槽, 严重影响路面的使用年限. 尽早对露骨病害检测并加以养护, 可以延长路面的使用寿命, 降低路面维护成本. 目前露骨病害检测主要依靠人工识别, 这种方法不仅耗费大量人力物力, 而且检测结果受主观判断影响, 容易发生误检漏检的情况. 因此, 如何快速自动化检测路面露骨病害已经成为亟待解决的问题.
随着深度学习的广泛应用, 目标检测方法已经成为卷积神经网络领域的热点话题[1,2]. 基于卷积神经网络的方法主要包括两大类: 一类是one-stage一阶段目标检测方法, 此方法将整个目标检测过程融合成一个端到端的任务, 只对图像进行一次处理即可得到目标的类别和位置信息, 其典型的算法有SSD[3]、YOLOv3[4]、FSSD[5]等; 另一类是基于候选区域的two-stage二阶段目标检测方法, 此方法将生成候选框和候选框分类回归分成2个阶段, 首先在图像上生成若干可能包含目标的候选框, 其次使用卷积神经网络对候选框进行特征提取, 最后使用卷积神经网络对目标区域进行分类和回归, 其典型的算法有Fast R-CNN[6]、Faster R-CNN[7]、SPP-Net[8]、Mask R-CNN[9]等. 与二阶段目标检测算法相比, 一阶段目标检测算法效率更高, 但是在特征提取过程中, 容易产生大量负样本, 导致在训练时正负样本失衡, 准确率和定位精度较低. Lin等[10]提出的RetinaNet模型利用Focal Loss 函数解决样本失衡的问题, 在COCO测试集上其检测精度高于当时最先进的二阶段检测算法. 谭章禄等[11]利用RetinaNet模型在煤矿监控中实现自动检测及提取人员信息, 整体性能满足煤矿监控的需求. Zhang等[12]引入Octave卷积和加权特征金字塔结构以提高RetinaNet对车辆的检测性能, 结果证明该方法对不同场景、不同规模的车辆目标具有良好的检测结果. 姚青等[13]选择组归一化作为RetinaNet的归一化方法, 改进特征金字塔网络结构, 改进后的模型对稻纵卷叶螟和二化螟为害状区域的平均检测精度为 93.76%. 吴华运等[14]对RetinaNet特征金字塔网络的特征融合过程进行优化, 增加语义特征提取模块, 在特征提取网络ResNet网络中添加了膨胀卷积瓶颈模块, 对医药空瓶表面气泡缺陷检测的准确率为99.72%. 张涛等[15]在RetinaNet模型基础上, 建立用来融合深层特征的HFF模块和融合浅层特征LFF模块, 在PASCAL VOC和MSCOCO数据集上较原模型精度有提升. 邓小桐等[16]针对迷彩伪装人员目标特性, 将空间注意力和通道注意力机制嵌入到RetinaNet网络结构中, 并设计基于定位置信信息的检测框过滤算法, 比原模型检测精度提升了8.7个百分点, 达到93.1%.
针对目前缺少关于水泥路面露骨病害检测方法以及人工检测费时、费力和检测精度不高的问题, 本文以RetinaNet为基础, 以SE-ResNet101作为特征提取网络、对特征金字塔结构进行改进, 提出一种改进的RetinaNet模型, 实现对水泥路面露骨病害的准确且快速地识别.
1 改进的RetinaNet模型 1.1 RetinaNetRetinaNet 是Lin等在2018年提出的一阶段目标检测器, 其结构如图1所示. RetinaNet主要由3部分构成: 如图1(a)为特征提取网络, 实现对图像的特征提取操作, 目前应用较广泛的特征提取网络有残差网络ResNet[17]、VGG-Net[18]、GoogleNet[19]等; 如图1(b)为特征金字塔网络(feature pyramid networks, FPN)[20], 其将特征提取网络提取的特征图进行重新组合, 形成具有各种尺度的相同维度特征, 实现特征的精细化提取; 如图1(c)和图1(d)表示用来分类和定位的分类和回归子网络(fully convolutional networks, FCN)[21], 分类子网络用于卷积对象分类, 回归子网络用于卷积边界框回归.
1.1.1 特征提取网络
随着神经网络深度的增加, 特征的提取抽象程度就越高, 理论上也就能产生更好的拟合效果. 但是, 随之会出现梯度弥散、梯度爆炸、学习率下降等问题. 为解决此问题, He等[17]提出ResNet残差网络, 如图2为ResNet的残差单元. H(x)=F(x)+x表示最优解映射, 其中x为输入, F(x)为残差映射. 其采用快捷连接跨越的思想, 使用等值映射方式, 跳过中间层, 直接将一部分原始数据直接输出传到下一层. 此结构不会增加网络参数, 对网络计算的复杂度也不会有影响, 有效的解决网络的梯度爆炸、梯度弥散的问题.
1.1.2 特征金字塔网络(FPN)
如图1(b)为特征金字塔网络, 在RetinaNet模型中, 特征金字塔网络使得高层语义特征和低层位置特征相结合, 增强卷积神经网络的特征提取能力. 对ResNet101特征提取网络输出的特征图C2~C5 进行上采样和横向连接操作, 产生特征融合后的特征金字塔网络结构P3~P5. 具体操作方法为首先对C5使用步长为1的1×1卷积核卷积得P5; 其次对C4使用步长为1的1×1卷积核卷积, 并相加对P5进行两倍上采样结果; 最后对上一步操作得到的特征图使用步长为1的3×3卷积核卷积得到P4. 以此类推, 得到P3.
1.1.3 分类回归子网络与损失函数RetinaNet网络借鉴RPN (region proposal network)中的Anchor的思想: 当卷积核滑动到特征图某位置时, 滑动窗口的中心点映射到原图上形成一个映射点, 此映射点对应一个尺度和纵横比, 成为一个Anchor. 本文在Anchor生成时使用了3种不同尺寸
分类子网络为每个Anchor预测露骨病害的概率. 将特征金字塔中某一层特征图与激励函数为ReLU的全卷积网络相连接, 使用Sigmoid 函数预测水泥路面露骨病害的概率. 在分类子网络中, 检测器一般通过交叉熵损失函数(CE loss) 判定预测值与真实值的差异程度. 目前普遍应用的CE loss 如式(1)所示:
$ CE(p, y) = CE({p_t}) = - \log {p^t} $ | (1) |
其中, y 为聚焦参数;
$ {p_t} = \left\{ {\begin{array}{*{20}{l}} {p,\;\; y = 1, p \in \left[ {0, 1} \right]} \\ {1 - p,\;\; y \ne 1, p \in [0, 1]} \end{array}} \right. $ | (2) |
在进行露骨病害检测时, 由于受路面车道线和阴影的影响, 出现了类不平衡和难易实例的检测问题. 本文在CE loss的基础上, 为解决中正负样本区域严重失衡的问题, 将正负样本增加权重因子α, 降低负样本的权重, 增加正样本权重, 加权CE loss的定义如式(3); 为解决难易样本区域失衡的问题, 增加调制系数
$ CE({p_t}) = - {\alpha _t}\log {p^t} $ | (3) |
$ FL({p_t}) = - {\alpha _t}{(1 - {p_t})^\beta }\log {p^t} $ | (4) |
其中,
$ {\alpha _t} = \left\{ {\begin{array}{*{20}{l}} {\alpha ,\;\; y = 1, \alpha \in [0, 1]} \\ {1 - \alpha ,\;\; y \ne 1, \alpha \in [0, 1]} \end{array}} \right. $ | (5) |
回归子网络与分类子结构相类似. 在回归子网络中, RetinaNet使用了Smooth L1损失函数. 假定p代表预测区域与Anchor之间的变换关系, t代表真实区域与Anchor之间的变换关系;
$\left\{ \begin{split} & \overline {p_i^x} = (p_i^x - d_j^x)/d_j^w, \;\overline {p_i^y} = (p_i^y - d_j^y)/d_j^h \hfill \\ & \overline {p_i^w} = \log (p_i^w/d_j^w), \;\overline {p_i^h} = \log (p_i^h/d_j^h) \hfill \\ & \overline {t_i^x} = (t_i^x - d_j^x)/d_j^w,\;\overline {t_i^y} = (t_i^y - d_j^y)/d_j^h \hfill \\ & \overline {t_i^w} = \log (t_i^w/d_j^w), \;\overline {t_i^h} = \log (t_i^h/d_j^h) \hfill \\ \end{split} \right.$ | (6) |
定义Smooth L
$ SL1 = \left\{ {\begin{array}{*{20}{l}} {0.5{{(\overline {p_i^m} - \overline {t_i^m} )}^2}, \;\;{\rm{if}}\left| {\overline {p_i^m} - \overline {t_i^m} } \right| < 1} \\ {\left| {\overline {p_i^m} - \overline {t_i^m} } \right| - 0.5, \;\;{\rm{otherwise}}} \end{array}} \right. $ | (7) |
为了更准确的获得水泥路面露骨病害的原始图像特征, 本文使用ResNet101作为特征提取网络. 由于路面病害的破损程度不同, 检测图像中的目标尺寸有差异, 为扩大感受野, 在FPN特征金字塔上做了改进. 并借鉴了SE Net的设计思想, 对残差网络进行改进.
1.2.1 ResNet101本文采用深度残差网络ResNet101作为特征提取网络, 其结构如图3所示. 整个网络包含101个卷积层, 其中每个括号内的结构代表一个结构块, 每个结构块中包含3层卷积. 在Conv2中3×3, maxpool, stride2代表卷积核为3×3, 步长为2的最大池化操作, 1×1, 64代表卷积核大小为1×1, 输出通道为64的卷积操作, 其余与之同理.
1.2.2 改进的FPN在RetinaNet模型中, FPN通过自底向上、自顶向下、横向连接等多种方式将ResNet不同层的特征图进行融合, 对小目标具有较好的检测效果. 本试验的数据集中, 露骨病害目标所占比例较大. 为了使模型有利于大目标图像的检测, 对本试验目标有更好的检测效果, 选择进一步增大模型的感受野, 具体操作为: 在图1(b)P5的基础上, 使用步长为2的3×3 的卷积核卷积运算得到P6、P7, 提升感受野的同时, 进一步对训练目标信息进行抽象, 获取更高维度的特征信息. 将更大感受野且更高维度信息整合后送入网络, 同时计算class subnet和box subnet的损失值, 进行反向梯度更新, 从而更加准确的进行下一阶段的特征提取操作, 提升整体检测性能.
1.2.3 基于SE-ResNet101的特征提取网络
图4为SE-ResNet101模块内部结构, SE-ResNet101由ResNet101模块和SE Net模块两部分构成. SE Net (squeeze-and-excitation networks)[22]是基于加权特征图思想提出的一种网络结构, 在残差网络ResNet101中嵌入SE, 促使神经网络更有针对性地提取目标特征, 以提高对目标的特征表达能力, 从而提升对露骨病害的聚焦.
SE Net结构由压缩 Squeeze和激励Excitation两个部分组成. 具体流程为: 首先 Squeeze操作将
不同通道的特征进行一定的相乘相加运算, 使得加入注意力模块的网络学习到更多有用的图像信息, 也避免了网络学习不感兴趣区域的资源浪费, 增强网络的学习重点能力, 改善学习效率.
2 基于改进的RetinaNet模型的路面露骨病害目标检测 2.1 数据集构建
本文所使用的水泥路面露骨病害图像数据集由人工手机拍摄及车载运动相机拍摄, 采集区域主要是在中国陕西省西安市长安大学及其附近. 最终拍摄数据集图像共506幅. 部分露骨病害采集样本如图5所示.
由图5可以看出, 由于露骨病害图像源自不同拍摄设备、不同路段, 因此图像背景十分复杂且样本数据集较少. 基于上述情况, 本文对数据集进行处理以提升其质量. 首先为解决样本数据集数量不足的问题, 本文采取镜像、旋转和调节像素等多种方式对数据集进行数据增广, 最终样本的数量为1523. 其次, 为了尽可能减小背景及路况对检测的影响, 需要对样本数据集进行预处理工作, 具体流程图如图6所示. 最后, 使用LabelImg软件对数据集图像中的露骨病害目标进行标记, 每个露骨病害目标对应于数据样本中位置注释的XML文件.
2.2 数据集构建
本实验的操作系统为Ubuntu 14.04操作系统. 具体的实验环境如表1所示.
从本文自制的1523个数据集中, 选出90%即1370幅露骨病害样本进行训练, 其余10%即153幅露骨病害样本进行测试. 在分类训练集和测试集时, 将图像按照复杂度(阴影、车道线及其他异物)均匀地分给训练集和测试集以保证实验的有效性. 模型训练过程中的参数设置如表2所示.
2.3 实验评价指标
本文采用准确率Precision、召回率Recall和检测精度AP对水泥路面露骨病害检测的效果进行评价, 其计算公式如下:
$ \left\{\begin{split} & Precision = \frac{{TP}}{{TP + FP}} \hfill \\ & Recall = \frac{{TP}}{{TP + FN}} \hfill \\ & AP = \int_0^1 {Precision({Re}call)d{Re}call} \hfill \\ \end{split} \right.$ | (8) |
式中, Precision准确率表示正确检测为露骨病害目标在全部检测为露骨病害目标结果中的占比, 其值越大说明误检的目标越少; Recall表示检测正确的露骨病害目标在所有露骨病害目标的占比, 其值越大说明漏检目标越少; TP表示正确检测露骨病害目标数量, FP表示误检为露骨病害目标的数量, TN表示正确检测非露骨病害目标数量, FN表示漏检的露骨病害目标数量. PR曲线是以Precision作为纵坐标,Recall作为横坐标, 绘制的二维曲线, PR曲线与坐标轴所围成的面积为平均准确率(average precision, AP)值. AP值用来分析模型检测效果, 衡量目标的检测精度. AP值越大, 说明其检测精度越高.
2.4 实验结果对比与分析 2.4.1 模型改进前后结果对比为了验证本文方法改进后的RetinaNet对水泥路面露骨病害检测的有效性, 分别对RetinaNet和改进后的RetinaNet在测试集上的检测结果进行比较. 混淆矩阵如表3. 由表4可知, 在检测精度方面, 改进后的RetinaNet比原RetinaNet的AP提升4.9%; 在检测速度方面, 改进后的模型单张速度了仅增加了1.8 ms. 利用Python 语言中的Matplotlib库绘制PR曲线如图7, 可见改进后的模型整体性能得到了提升, 漏检率进一步的降低.
图8为RetinaNet改进前后目标检测算法对水泥里面露骨病害的识别效果的对比, 可以看出改进后RetinaNet算法相较于原算法有更好的检测效果.
根据改进后的RetinaNet输出结果与露骨图像实际标签, 得到混淆矩阵, 如表5所示.
图9比较了使用CE loss和Focal loss的训练损失曲线, 从图9中可以看出, 在50轮的训练过程中, 本文使用的Focal loss函数相对于CE loss使得改进后的RetinaNet收敛速率更快. 在模型训练后期, 采用Focal loss在训练集上的损失值均低于CE loss.
2.4.2 不同目标检测模型检测效果对比为了进一步验证本文改进的RetinaNet模型对于水泥路面露骨病害检测的有效性, 将本文模型与目前主流的目标检测模型Faster R-CNN、SSD以及YOLOv3对水泥路面露骨病害测试集进行检测对比, 实验结果如图10所示. 由图10可以看出, 本文提出的改进RetinaNet 模型相比于二阶目标检测模型Faster R-CNN, 单副检测速度减少105.8 ms, AP增加4.1%; 相比于二阶目标检测模型SSD和YOLOv3, 虽然检测速度略有增加, 但检测精度增加6.4%和5.2%. 综合上述分析, 本文提出的模型是一个对水泥路面露骨病害有效的检测模型.
3 结论
本文以水泥路面露骨病害为研究对象, 基于改进的RetinaNet网络对露骨病害自动化检测问题展开研究, 主要结论如下:
(1)采集路面露骨病害的图像, 并进行灰度化、滤波去噪、图像增强等预处理操作, 构建水泥路面露骨病害数据集;
(2)在RetinaNet模型的基础上, 利用SE Net的思想对特征提取网络ResNet101进行改进, 增强特征图的特征表达能力; 增加特征金字塔的层数, 充分扩大目标的感受野完成对路面露骨病害图像的检测;
(3)通过与Faster R-CNN、SSD和YOLOv3对比, 发现改进后的RetinaNet模型对露骨病害的检测精度有显著提升, 达到98.9%. 实现对露骨病害的准确检测, 能够替代繁琐、效率低的人工检测方法.
本文提出的RetinaNet改进模型对水泥路面露骨病害自动化检测领域具有重要意义. 但改进后的RetinaNet模型相比于原模型单幅露骨病害检测时间增加1.8 ms, 因此在保证识别精度的同时提升网络检测速度是之后研究工作的重点.
[1] |
孙朝云, 裴莉莉, 李伟, 等. 基于改进Faster R-CNN的路面灌封裂缝检测方法. 华南理工大学学报(自然科学版), 2020, 48(2): 84-93. |
[2] |
Feng XR, Xiao LY, Li W, et al. Pavement crack detection and segmentation method based on improved deep learning fusion model. Mathematical Problems in Engineering, 2020, 2020: 8515213. |
[3] |
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot MultiBox detector. Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016. 21–37.
|
[4] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767, 2018.
|
[5] |
Li ZX, Zhou FQ. FSSD: Feature fusion single shot multibox detector. arXiv: 1712.00960, 2017.
|
[6] |
Girshick R. Fast R-CNN. Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago: IEEE, 2015. 1440–1448.
|
[7] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[8] |
He KM, Zhang XY, Ren SQ, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. DOI:10.1109/TPAMI.2015.2389824 |
[9] |
He KM, Gkioxari G, Dollár P, et al. Mask R-CNN. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 2980–2988.
|
[10] |
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(2): 318-327. |
[11] |
谭章禄, 陈孝慈. RetinaNet图像识别技术在煤矿目标监测领域的应用研究. 矿业安全与环保, 2020, 47(5): 65-70, 76. DOI:10.1109/TPAMI.2018.2858826 |
[12] |
Zhang LY, Wang HT, Wang XY, et al. Vehicle object detection based on improved RetinaNet. Journal of Physics: Conference Series, 2021, 1757: 012070. |
[13] |
姚青, 谷嘉乐, 吕军, 等. 改进RetinaNet的水稻冠层害虫为害状自动检测模型. 农业工程学报, 2020, 36(15): 182-188. |
[14] |
吴华运, 任德均, 吕义钊, 等. 基于改进的RetinaNet医药空瓶表面气泡检测. 四川大学学报(自然科学版), 2020, 57(6): 1090-1095. |
[15] |
张涛, 张乐. 一种基于多尺度特征融合的目标检测算法. 激光与光电子学进展, 2021, 58(2): 0215003.16.
|
[16] |
邓小桐, 曹铁勇, 方正, 等. 改进RetinaNet的伪装人员检测方法研究. 计算机工程与应用, 2021, 57(5): 190-196. |
[17] |
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016. 770–778.
|
[18] |
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. arXiv: 1409.1556, 2014.
|
[19] |
Szegedy C, Liu W, Jia YQ, et al. Going deeper with convolutions. Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston: IEEE, 2015. 1–9.
|
[20] |
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 936–944.
|
[21] |
Shelhamer E, Long J, Darrell T. Fully convolutional networks for semantic segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(4): 640-651. DOI:10.1109/TPAMI.2016.2572683 |
[22] |
Hu J, Shen L, Albanie S, et al. Squeeze-and-excitation networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(8): 2011-2023. DOI:10.1109/TPAMI.2019.2913372 |