基于Faster R- CNN 的斑马线识别
2021-01-21陈朝阳王泽松陆佳辰孙铭悦李泽宇
陈朝阳 王泽松 陆佳辰 孙铭悦 董 岩 李泽宇
(1、北京建筑大学测绘与城市空间信息学院,北京102616 2、北京市建筑遗产精细重构与健康检测重点实验室,北京102616 3、北京城建勘测设计研究院有限责任公司,北京100101)
斑马线是行人的生命线,它在道路交通中有至关重要的作用。利用现代科学技术,对斑马线进行检测,可以为自动驾驶技术提供帮助,降低交通安全事故,还可以为导盲系统的设计提供思路,帮助视障患者安全过马路。在斑马线的检测上,B.Riveiroa[1]等人利用激光雷达技术,开发出一种斑马线自动检测算法,由于存在汽车行人的干扰,识别率只有83%;Stephen Se[2]等人利用斑马线相互平行的特点,提出了一种基于姿态估计的斑马线检测方法,但是该算法无法进行实时检测;蔡敏等人利用斑马线自身形态学特征,结合机器视觉,对斑马线进行筛选和识别,但是这些方法都存在成本高、精度低、实时性差等短板。
1 实验数据
因为没有相关的斑马线数据集可供参考,所以本研究建立了自己的斑马线数据集。从视觉差异角度,斑马线有普通斑马线、创意斑马线和电子斑马线。彩色斑马线和电子斑马线虽然具有较高视觉冲击、增添城市文化等功能,但对于目标检测来说,共同点少,不利于学习,所以本次斑马线数据集的建立只考虑普通斑马线。利用LabelImg 制作VOC 数据集,共有斑马线600 张、汽车200 张和人200 张,其中80%作为训练集,20%作为测试集。
2 检测方法
2.1 Faster R-CNN 网络
Faster R-CNN 算法是two-stage 的代表算法,可分为4 个主要部分:卷积层、RPN 网络、ROI Pooling 和分类回归。其核心思想是在Fast R-CNN 的基础上构建了RPN 网络,直接产生Region Proposal 来代替如selective search 等其他方法得到ROI。在Faster R-CNN 算法中,首先将任意大小的图片输入到卷积神经网络(CNN)中,计算后得到特征图像Feature Map,并将最后一层的特征图像输入到区域推荐网络RPN 中,进行推荐候选区域的过程,然后将推荐好的候选区域框输入到感兴趣池化层(ROI Pooling)中,形成固定大小维度的矢量特征,最后,将得到的矢量特征输入到分类器和边框回归器中完成类别的判断和边框回归。(图1)
2.2 VGG16
VGG16 是VGG 网络中性能最佳的网络结构。VGG16 将conv 和relu 组合成卷积层,共有13 个卷积层和3 个全连接层。通过卷积层和池化层叠加的性质,将步长为2 的池化层处理后,再进入全连接层对提取的特征进行连接,最后通过Softmax进行分类。
2.3 ResNet50 网络
深度残差网络(Deep Residual Network,Res)比VGG16 神经网络的层数更多,还可以进行残差学习。残差学习是为了解决因为层数增加而出现弥散现象,导致检测准确度下降的问题。相比于VGG16 卷积神经网络,ResNet50 网络不但增加了深度,还减少了复杂程度,参数量也比VGG16 少得多,因此可以在网络更深的同时,提高分类准确率,并且不会出现深层网络的弥散现象。
通过对两种网络结构进行对比,由表1 可知,随着网络结构的优化,网络的体积也逐渐在降低,识别能力也越来越强,TOP-5 错误率也越来越低。
2.4 网络模型设计
本项目在Faster R-CNN 框架下,利用四个损失函数进行联合训练,使用Smooth-L1 函数训练两个边框回归层,对斑马线的推荐区域使用Softmax 损失函数,判断是否为斑马线,最后一个Softmax 损失函数进行对类别的判断。在训练Faster R-CNN的时候,损失主要可以分为RPN 的损失和Fast R-CNN 的损失两个部分,包括分类损失(cls loss)和回归损失(bbox regression loss)。
图1 Faster R-CNN 算法流程
表1 VGG16 与ResNet50 网络模型对比
在对训练好的Faster R-CNN 模型进行模型评估时,检测分类目标主要分为两类:正例positive 和负例negtive,在本文中,以斑马线为例,正例positive 就是斑马线,负例negtive 就是除了斑马线外的其他类别,具体如下:
Ture positive(tp):斑马线被正确的识别;
Ture negtive(tn):斑马线没有被识别成斑马线,被识别成了别的类;
False positive(fp):其他类别被不正确的识别成了斑马线;
False negtive(fn):斑马线的图片没有被识别。
3 实验
3.1 训练设置
本文基于keras 使用联合训练法来训练Faster R-CNN,首先选择基础网络模型VGG16 和ResNet50,并且设置基础网络模型权重的路径,然后对数据进行解析,划分训练集和测试集,学习率设置为0.01,每10 个epochs 学习率降为原来的10%,共40个epochs。权重衰减设置为0.0005。
3.2 训练结果对比与分析
图2 模型检测结果
使用测试集对模型进行测试,mAP 值达到97.7%。从图3 中可以看出,经过40 次的迭代,我们的模型的总损失函数从1.4降到了0.2,随着迭代次数的增加,损失函数趋近平稳,没有过拟合现象的出现。所以该模型满足对斑马线自动检测的精度要求。
4 结论
针对传统斑马线检测存在的识别精度低和成本高的问题。本文提出使用VGG16 特征提取网络和ResNet50 特征提取网络联合进行算法训练,这种训练方法提升了分类网络的精度和检测速度,使斑马线的检测精度达到了97.7%,满足对斑马线检测的实际需求,为自动驾驶领域的斑马线识别提供帮助,也可为视觉障碍者出行导航提供新思路。