胡 啸,陈 黎
1.武汉科技大学 计算机科学与技术学院,武汉430081
2.武汉科技大学 智能信息处理与实时工业系统湖北省重点实验室,武汉430081
随着视频监控在社会公共安全防范及各类经济行业部门多年来的推广应用,这些监控系统除了应满足“看得见、看得清”的基本需求外,如果能够进一步基于监控画面自身的场景特征,比如基于道路区域的定位与识别,扩展一些针对性的业务管理工作,特别是与人工智能结合,将会为视频监控系统的使用方带来显著的业务价值。针对(室外监控)视频场景中最重要特征之一的道路区域检测,随着人工智能和深度学习技术的不断快速发展,人们利用目标检测、识别、分割等计算机视觉技术来为一些实际应用提供技术支撑,包括智慧城市、智能交通、智能物流、生活服务领域(无人驾驶)等,这不仅是一种可预见的社会经济领域中的普遍需求趋势,而且其相关的解决方案也已经越来越具备技术上的可行性[1]。由于在军事国防、城市交通以及公共安全等诸多领域具有广阔的应用前景和潜在的使用价值,无人驾驶技术得到了许多国家的重视。道路区域识别技术作为无人驾驶的核心组成部分,成熟与否很大程度上决定了无人驾驶性能的好坏。现阶段,无人驾驶技术已经取得了一定的进展,然而无人驾驶车辆要在现实交通环境下实现安全的自主驾驶仍有很多工作要做。道路区域识别算法的实时性、抗阴影能力、对光照变化的鲁棒性、对复杂道路环境以及恶劣天气的适应能力等因素直接影响着无人驾驶技术的发展[2]。可靠并且高效的道路区域检测算法一直是从事该领域研究的科研工作者以及工程技术人员的追求。
近年来,用于道路识别与检测的算法主要分为两类:(1)基于图像特征的检测方法,即特征驱动法。特征驱动法基于图像中道路的一些图像特征,如颜色分布、纹理特性等,这类方法对道路的车道线、边缘的清晰度有较高的要求,且对外界环境的变化(光照、阴影、天气)和行人、行车的干扰较为敏感。如果车道线、道路边缘被遮挡,依赖于这些特征的识别方法则会失效[3]。(2)基于模型的检测方法,如模型匹配法和样条函数法。这类检测算法识别出来的道路区域较为完整,但模型的选择和求解是关键,对于复杂的路面情况,很难建立准确的模型[4]。在安防监控视频下,道路图像存在着最主要的两个问题:行人、行车对道路遮挡较为严重;消失点位于图像外部。受以上因素影响,安防监控视频下受遮挡和透视影响的道路检测变得非常困难。
针对上述问题,本文提出面向遮挡与透视影响的道路凸包梯形检测算法。该算法采用了将深度神经网络输出的基础识别作为特征空间,同时与行业应用经验相结合的检测方法。该算法具有较高的准确性,很大程度上解决了安防监控视频下受遮挡和透视影响导致道路区域检测不准确的问题,对道路检测具有实际意义。
城市道路的安防监控摄像头通常安装于道路两侧的高处或红绿灯上,距离地面3.5~10.0 m 的高度,倾斜角依据监控范围而定,与监控物距呈负相关关系。为了保证监控视频的清晰度,部分摄像头的俯仰角偏大,监控物距偏小,因此采集到的图像中不存在明显的消失点[5-6]。文献[7-9]介绍的基于消失点的道路检测算法的核心方法是计算消失点后再以消失点为端点构建两条射线来划分出道路区域(三角形模型)。因此,对于消失点位于图像外部的情况会导致算法失效。其次,在实际复杂的场景中,道路边界线经常被行人、行车遮挡,这类遮挡对消失点和边界线的检测都有极大的干扰,如图1所示(视频的生成时间、地点等信息在图像中被模糊处理)。
图1 监控视频下行人、行车对道路边界线的遮挡
图1 (a)为行人遮挡,图1(b)为行车遮挡。基于消失点的道路检测算法在进行纹理方向计算[10]时,对这两类遮挡的抗干扰能力较弱,从而直接影响到消失点的计算,获得与实际场景相差较大的检测结果。实际场景中监控摄像头的成像机理如图2所示。
图2 中左侧红线标出的四边形为摄像头图像传感器所对应的实景范围[11-12],经过透视变换后转换为右侧矩形图像。本文针对消失点难以被检测的问题,分析道路成像特点,提出道路的梯形模型,如图3所示。
图3 中标示的线条为预期道路的两条边界线。如果监控场景中的道路在图像中的呈现方式为道路的两条边界线均与图像底边相交,实际场景如图1(a),则将梯形模型定义为图3(a);如果监控场景中的道路在图像中的呈现方式为道路的一条边界线与图像底边相交,并且一条边界线与图像的左边界或右边界相交,实际场景如图1(b),则将梯形模型定义为图3(b)(图示为道路左边界与图像左边界相交),将图中的五边形ABDCE 定义为一个有截边的梯形,边EC 定义为截边。图3中的外接矩形为实例分割中的单个实例的边框,后续分割在这个边框内部进行。
图2 监控摄像头成像机理
图3 监控场景下的道路梯形模型
目前的分割任务主要有两种:语义分割,实例分割。语义分割的定义是:为图像中每个像素分配一个预先定义的表示其语义目标类别的标签,但是一个像素点只能对应一种固定的语义,由于卷积的平移不变性[13],一个像素只能对应一种语义,如U-Net[14]、DeepLabv3[15]等,而部分监控场景为纵向双侧监控(监控目标兼顾主道和辅道),需要获取每个实例用以筛选出主道,剔除掉辅道。因此本文基于Mask R-CNN[16]实例分割来进行道路区域的后续检测。类的具体对象即为实例,那么实例分割不但要进行像素级别的分类,还需在具体的类别基础上区别开不同的实例,因此可以区分出多个道路实例。在实验中,通过设置不同的学习率和迭代次数等参数进行多次实验对比,择优选择最佳的实例分割模型进行后续实验。主要包括模型的训练和预测两个阶段:训练阶段包括采集数据、清洗数据、制作数据集、选取框架与设定参数、迭代训练;预测阶段是将图像输入训练所得模型获取分割结果。
Mask R-CNN目标检测选用了经典的目标检测算法FasterR-CNN[17]和经典的语义分割算法FCN。Faster RCNN 可以既快又准地完成目标检测的功能;FCN 可以精准地完成语义分割的功能[18]。但是,在受遮挡与透视影响的道路场景中,FCN 并不能很好地提取出道路区域。主要原因是行人、行车等因素对道路边界线造成一定的遮挡,会严重影响最终的分割结果。
针对以上问题,本文在原始Mask R-CNN算法的基础上,保留其精确检测与优势性能的同时,针对受遮挡与透视影响的道路的特殊性,提出安防监控视频下的道路梯形模型。检测任务保持不变,对分割任务做出以下调整:将FCN分割算法调整为“语义分割+凸包算法+梯形模型拟合”组合形式,增加算法对遮挡的抗性,对“欠分割”道路做出有效弥补,使分割结果更加接近安防监控视频下的真实道路。
针对安防监控视频下的行人、行车遮挡道路边界线问题,本文提出使用凸包算法对遮挡区域进行弥补,并基于Graham 扫描法(Graham’s Scan)进行道路区域的凸包计算。行人、行车对道路边界线的遮挡发生在边界线上,对模型检测出的道路区域的干扰主要体现在道路区域轮廓上存在着凹陷,将这些凹陷点同时参与到梯形模型的拟合中会引入干扰信息,因此需要对其凹陷点进行剔除。假设模型检测出的道路区域的残缺轮廓存在若干点,这些点构成一个点集,依据点集每个元素对参照极点的极角大小依次处理。具体步骤如图4所示:(1)搜索点集P 中最低最左的点并将其设为P0;(2)对剩余点按P0的逆时针方向进行排序,将排序后的点记为{P0,P1,P2,…,Pn},如果多个点有相同的极角即多点共线,只保留有最大极径的点;(3)使P0、P1、P2进入堆栈;(4)对k=3~n 个点进行如下处理,对栈顶的两个点和Pk做左转判断,若满足左转要求,则将Pk入栈,k=k+1;若不满足左转要求,则出栈,k=k-1;(5)最终堆栈S 中的元素就是凸包的顶点。
图4 Graham扫描法计算凸包的步骤
求解过程中引入几何学的结论(有向面积[19])来快速确定当前点C 是否在栈顶两个点的连线AB 的左侧。有向面积是平面解析几何的向量体系中的概念,和普通的标量面积相对。三角形的有向面积可以通过一个三阶行列式求得,利用行列式运算法则即可得到有向面积:
有向面积可正可负,这取决于围城封闭图形的向量。如果C 在向量AB 的左侧,那么SΔ的值为正,则将当前点压入栈,反之为负,将栈顶元素出栈。本次实验中的点集输入为模型检测出的道路区域轮廓,运用上述凸包算法剔除掉轮廓上的凹陷点,可以提取整个道路区域的大致外形。
经过上述凸包算法对道路区域中被行人、行车遮挡的部分进行补偿后,道路区域检测算法对这类遮挡已具有一定的抗干扰能力,但是所计算出的凸包区域仍是不规则的,与实际场景中的道路区域有所偏差,因为应用价值较小。所以需要在凸包的m×n 的外接矩形框内,对所检测到的道路区域做进一步的调整,将该区域拟合成图3 中的梯形模型。定义凸包区域内所有点的集合为P,g(x,y)为图像内每一个像素点值的函数,则凸包内部像素点的值为1,外部像素点的值为0,即:
首先,计算凸包的面积,统计图中所有值为1的点:
计算出最终梯形的上底中心点的横坐标,即凸包纵坐标最小的所有点的横坐标平均值:
通过以下式中的K 值判断凸包两侧有无明显的截边形态:
式(5)中的n 即为凸包外接矩形的宽,d 为预设参数,在本文实验中取3。公式中列向量的3个元素分别为3个独立判定条件,在图像中的实际意义分别为凸包横坐标取最小时点的数量是否大于凸包横坐标取最大时点的数量、凸包横坐标取最小时点的数量是否大于外接矩形宽的、凸包横坐标取最大时点的数量是否大于外接矩形宽的。行向量中的3 个数1、2、4 分别对应二进制的001、010、100,这样即可保证列向量中的3个条件呈各种组合值时K 都能有与之相对应的值。本方法中,当列向量的元素分别取1、1、1或1、1、-1,即当K 的值为7或-1时,判定凸包左侧有截边;当列向量的元素分别取-1、1、-1 或-1、-1、-1,即K 的值为-3 或-7时,判定凸包右侧有截边;否则为无截边。
(1)若无截边,则判定道路区域为一个完整的梯形,将凸包拟合成图3(a)的形态,根据以下公式:
(2)若有截边,则判定道路区域为一个有截边的梯形,将凸包拟合成图3(b)的形态(此处仅列出截边在左侧的情况,右侧与左侧类似),根据以下公式:
式(6)、(7)中的l 为最终梯形的上底长度,t 为上底中点的横坐标,求解出l 和t 后则可以在外接矩形中确定上底的精确位置,并以外接矩形的下底为最终梯形的下底,则可以拟合出完整的梯形模型。
实验测试图像来自安防监控摄像头采集的城市道路场景。算法程序采用PyCharm平台开发,CPU为Intel®CoreTMi7-8700K,显卡为NVIDIA GeForce GTX 1080 Ti。本次实验所使用训练集由4 200 帧图像构成,尺寸均为1 920×1 080。在精度评价方面,选择交除并(IoU)、精确率(Precision)和召回率(Recall)作为评价性能指标:
式中,TP、FP 和FN 分别表示真阳性、假阳性和假阴性像素点的个数。
测试数据是在模型训练前随机抽取的来自安防监控摄像头采集的普通城市道路2 000 帧场景,包括了人行道、公路、巷路等不同场景,部分场景存在遮挡现象。为了验证本文算法的性能,同时与消失点检测法[10]、UNet[14]、DeepLabv3[15]、Mask R-CNN[16]进行了对比,IoU、Precision、Recall 和检测时间(Detection Time,DT)如表1所示。从表中可以看出,消失点检测法并不适合本文场景,该方法能在纹理清晰、结构单一的图像中取得较好的效果,而在复杂、存在遮挡现象的道路中效果不佳,同时对于消失点位于图像外部的情况算法易失效,故而平均精度不高,鲁棒性较差。相较于U-Net、Deep-Labv3、Mask R-CNN,本文算法在精度上有所提高,而在耗时上略有增加。Mask R-CNN 这类原始分割算法的局限性在于易受行车、行人等遮挡因素的影响,造成缺口的出现,故而不适用于安防监控视频下的道路检测。而本文所提出的凸包梯形检测算法的耗时仅比Mask R-CNN多25 ms,在增加少量计算耗时的情况下,取得较好的检测结果。
表1 不同算法性能对比
单张图像的可视化结果如图5 所示。图5(b)中的白色区域为本文算法检测出的道路区域,与图3的梯形模型保持一致,符合场景预期。
图5 安防监控视频下的道路区域检测结果
为了分析本文算法在不同遮挡程度下的有效性,将测试数据的遮挡程度由低到高分为1~5 级并进行对比测试,分级依据为图像中的行车、行人、树叶等遮挡因素的比例大小。实验结果如图6所示。
图6 不同遮挡等级检测结果
图6 中实线条为本文算法,虚线为Mask R-CNN。可以看出,本文算法在轻微遮挡中对精度的提升未能发挥较大作用,而随着遮挡等级的提升,本文算法的性能相较于Mask R-CNN有了明显的提高。
不同场景中的监控范围不一致,因此监控摄像头俯仰角也不同。为了分析本文算法在不同透视角度下的有效性,抽取部分数据进行透视变换,模拟摄像头俯仰角的变动。单张图片检测过程如图7所示,第一行为透视变换处理后的一组图片,后两行分别为Mask R-CNN的检测结果与本文算法的检测结果。整个测试集在不同透视场景的IoU对比如表2所示。可以看出,Mask RCNN对遮挡较为敏感,行车、行人的位置变动易影响检测结果,而本文算法相对有较强的稳定性,在不同透视角度下能得到相仿且精确的检测结果。
表2 不同透视场景的IoU对比 %
分割问题采用IoU 等像素级指标的缺陷在于对边缘的刻画不敏感,注意力主要集中在分割区域内部[20],而Hu 矩作为形状相似性的一种度量,能够对IoU 进行较好的补充。Hu矩利用二阶和三阶规格中心矩可以导出7 个不变矩组,它们在图像平移、旋转和比例变化时保持不变,据此计算出的Hu 矩值越接近0,则表示两者边缘轮廓越匹配。实验结果如表3 所示,可以看出,本文方法相较于Mask R-CNN 在道路边界上的表达能力有一定程度的提升,更接近实际场景中的道路形状。
表3 Hu矩对比
图7 不同透视角度检测结果对比
本文提出了一种面向遮挡与透视影响的道路凸包梯形检测算法,与已知常见的同类检测方法(比如基于道路特征、道路模型和传统机器学习)相比,本文所提出的凸包梯形检测算法对于安防监控视频下受遮挡与透视影响的道路具有较好的检测效果。对比实验证明,本文算法能够在不同遮挡和透视程度下取得较为稳定的检测结果,满足安防监控视频下道路实时检测的需求,达到了预期效果。同时,本文所提出的梯形模型具有一定的局限性,下一步工作将考虑结合辅助信息(如车道线、行人与行车流向等)对场景结构模型进行优化,提升多模态特征融合能力。