基于目标检测和语义分割的人行道违规停车检测

2020-04-25 07:53赵逸如刘正熙熊运余严广宇
现代计算机 2020年9期
关键词:人行道卷积语义

赵逸如,刘正熙,熊运余,严广宇

(四川大学计算机学院,成都610065)

0 引言

随着经济和城镇化建设的快速发展,我国各城市的道路和车辆总量不断增长,车辆违规停放行为也日益增加,对城市道路监控图像或者视频中车辆违规检测已成为城市管理中的一项重要的任务。虽然高清监控摄像头已经在绝大多数路口部署,但每日产生的视频量也越来越庞大,通过人工进行视频实时监控或离线处理既费时又费力,而且容易延误和遗漏,所以急需寻找一种高效的方法辅助人工进行监控处理。

传统的车辆检测方法使用滑动窗口策略,通过HOG[1]、SIFT[2]等方法对目标特征进行提取,并将提取到的特征送入SVM、AdaBoost 等分类器进行分类识别[3]。这些特征本质上是一种手工设计的特征,针对不同的识别问题,提取到的特征好坏对系统性能有着直接的影响。由于监控视频的分辨率、摄像角度和方向都有着很大的差异,再加上不同时刻光线亮度的差异、大风带来的摄像头抖动等因素,使得监控视频中的图像质量受到影响;同时车辆的种类繁多,人工提供的特征无法满足车辆种类特征的需求,这对车辆检测带来了极大的困难,因此传统的车辆检测方法效果表现不佳。

近些年来,深度学习发展迅速,基于卷积神经网络的模型层出不穷。与传统方法相比,基于深度学习的目标检测算法以及语义分割算法提取特征能力强、准确率高,已经被应用到人脸识别、自动驾驶、医疗影像等各种领域。

车辆违停是个非常普遍的问题,其中人行道违规停车占了车辆违停事件的绝大多数。人行道违规停车会破坏市容、影响行人出行、堵塞交通甚至覆盖盲道,导致盲人无法通行,如图1 所示。而对于复杂的道路情况进行分析,从而找到车辆违停事件是一项十分有挑战性的工作。本文将车辆违停问题简化为人行道违规停车问题,对人行道违规停车进行报警,作为一种高效的方法辅助监控处理人员的工作。

图1 人行道车辆违停

由于人行道上不允许停放机动车,故本文的目标是检测出所有人行道上停放的机动车辆并进行违停报警。本文使用两个子网络来实现车辆违停的检测,一个是YOLOv3[4],用于检测监控视频和图片中出现的车辆;另一个是DeepLabv3+[5],用于分割出道路区域,结合目标检测结果,综合判定车辆是否停在了人行道上。本文最后提出了两种人行道停车检测方法,使得网络能够自动检测出停留在人行道上机动车辆并且向事件处理人员报警,平均准确率达到87.5%。

在目标检测方面,基于深度学习的目标检测方法根据其检测思路不同可分成两类:基于区域推荐的Two Stage 目标检测算法和基于回归的One Stage 目标检测算法。基于区域推荐的目标检测算法有R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]、Mask R-CNN[9]等,它们首先使用区域推荐产生候选目标,随后使用卷积神经网络处理候选框,但是其速度不能满足实时性的要求。另一种是One Stage 的目标检测算法,将检测问题视为回归问题处理,YOLOv3 就是一种很经典的One Stage 目标检测算法,其检测速度很快,可以达到实时检测的要求。因此,考虑到车辆实时检测的需求,本文使用YOLOv3 目标检测算法来检测图片中出现的车辆。实验证明YOLOv3 在检测本文所使用数据集中的车辆时无论是速度还是准确率都要优于以ResNet-101为主干网络的Faster R-CNN。

当检测出车辆目标之后,还需要对判断车辆的位置以及是否违规停车。本文使用基于深度学习的语义分割算法来划分城市道路区域,判断车辆是否违规停车。语义分割是一种比目标检测更深层次的计算机视觉任务,是计算机视觉技术中关于图像理解的重要一环。目标在于标记图片中每一个像素,并将每一个像素与其表示的类别对应起来。传统的图像分割方法包括区域生长法、分水岭法、Graph cut 等一系列算法,分割结果并没有语义标注。随着卷积神经网络的发展和全卷积网络(Fully Convolutional Networks)[10]的出现,语义分割取得了前所未有的进步,准确率得到了大幅度提高。本文使用DeepLab 算法最新版本DeepLabv3+来进行语义分割的训练。

本文采用YOLOv3 目标检测算法进行车辆检测,同时使用DeepLabv3+对城市道路图片进行语义分割,提取高级语义信息。将检测与分割相结合,加入混合高斯背景建模,最终提出了离线检测和实时检测这两种解决城市管理任务中车辆违停问题的方法。

1 YOLOv3目标检测网络

目标检测算法经过这些年的发展已经进入了一个相对成熟的阶段,YOLOv3 则是One-Stage 有框检测的相对成熟的网络。YOLO 将目标检测问题转化成回归问题。YOLOv3 使用比ResNet-152 综合性能更好的DarkNet-53 作为主干网络。DarkNet-53 比ResNet-101准确率要高并且快了1.5 倍。DarkNet-53 与ResNet-152准确率表现相当,但是前者快了2 倍。YOLOv3 借鉴了特征金字塔网络(Feature Pyramid Networks)[11]中上采样和融合的思想在多个尺度的特征图上做检测,为了使网络同时获得语义信息和细节信息,算法在三种尺度上预测目标,在每个尺度上通过K-means 聚类算法来确定三个候选框,共9 个候选框。

YOLOv3 直接在输入图像的多个位置预测目标的类别和位置,对于给定的输入图像CNN 网络将输入图像划分成N×N 个单元网格,每个网格只负责检测中心落在该网格中的目标。网络为每个候选框预测四个回归坐标tx,ty,tw,th。(cx, cy)为负责预测目标的单元格相对于图像的左上角偏移,并且候选框的宽度和高度为pw和ph,预测框实际坐标为:

其中(bx,by)为预测框的中心坐标,bw、bh为预测框的宽度和高度,其中σ 是Sigmoid 函数。YOLOv3 在三种尺度上预测,每个网格会预测每个尺度的3 个边界框以及每个边界框的置信度和4 个边界框偏移。同时该网格还要预测区域内包含的C 个类别的概率,一步实现了所有区域内含有目标类别概率、边界框、置信度的预测。同时YOLOv3 不使用Softmax 来分类,而是使用独立的逻辑分类器,在训练过程中,使用二元交叉熵损失来进行训练。YOLOv3 有很高的检测速度,在416×416 的输入图像上,YOLOv3 的速度可以达到22ms。

2 基于语义分割的违停区域判定

在汽车违停事件检测中,已用目标检测检测出了所有的车辆,但并不是所有的车辆都是违规停车,在本文中只有停在人行道上的车辆才算是违规停车。随后需要获取车辆所停放区域,来判断是否为车辆违停事件。本文使用另一个语义分割子网络负责划分城市道路区域,将城市道路划分为三类:马路、人行道和汽车。

语义分割是计算机视觉的基本任务之一,目标是给每个像素分配语义标签。近年来,以全卷积网络为基础的深度卷积神经网络在语义分割任务中取得了显著的进步。对于本文的语义分割任务,本文使用了DeepLab 算法的最新版本DeepLabv3+。DeepLabv3+是由DeepLabv3 发展而来,使用了以Xception[12]结构为模型主干网络,并探讨了深度可分离卷积在ASPP(Atrous Spatial Pyramid Pooling)[13]和编码器-解码器模块上的应用,最终得到了更快更强大的语义分割网络。

在语义分割的任务中,编码器模块逐渐压缩特征图,获取高级语义信息;解码器模块逐渐恢复空间信息。DeepLabv3+使用DeepLabv3 作为编码器模块,同时加入一个简单并且有效的解码器模块来获得更精确的分割。网络使用空洞卷积来提取特征,同时使用了Xception 并对其进行了改进。Xception 使用深度可分离卷积,将标准卷积分解为深度卷积和逐点卷积(即1×1 卷积),可以大幅度降低网络的参数量和计算量。DeepLabv3+使用了更深的Xception 结构,使用深度可分离卷积替换所有的最大池化操作,来对任意分辨率的图片提取特征图。同时在3×3 深度卷积层后增加BN 层和ReLU 层。图,划分出城市道路中人行道和马路区域。对每一个类别为目标类别检测框,为了突出其位置信息,首先截取其下半部分,如图3,再将其与分割图相比较,计算出检测框下半部分分别与人行道的重合面积Asidewalk和与马路的重合面积Aroad,按照以下公式计算重合比例。若P>1,判定为人行道停车。

图2 语义分割结构图

同时,DeepLabv3+提出了一种简单并且有效的解码器模块。在原先的DeepLabv3 中,预测的特征图直接用双线性插值方法上采样16 倍到原始尺寸,这样的简易的解码器模块不能成功地恢复分割细节。Deep-Labv3+将编码器模块的输出先经过1×1 卷积,减少输出的通道数,随后用双线性插值上采样四倍,与相应的具有相同分辨率的低层次特征相结合。最后用3×3 卷积细化特征,用双线性插值上采样四倍得到最后的预测结果。这样最终结果的分辨率就与原图相同。DeepLab v3+的结构如图2 所示。

3 人行道违规停车检测

3.1 离线检测

基于目标检测和语义分割,本文提出了一种人行道停车检测方法。将同一张图送入目标检测和语义分割两个子网络,目标检测网络输出一张检测图,包含了图片中的所有车辆;语义分割网络输出一张语义分割

图3 检测框判定区域

人行道停车离线检测的网络结构图如图4 所示。DeepLabv3+语义分割网络不能达到实时检测,因此本文将在下文讨论如何进行实时的人行道违规停车检测。

图4 人行道停车离线检测网络结构图

3.2 实时检测

笔者发现,对于同一个固定的摄像头,语义分割之后的图片都非常相似。因此只需要对每个摄像头所提取的道路背景进行一次语义分割,语义分割图可提供给后续的所有检测使用。同时,监控视频中的现实场景往往是错综复杂、变化无常的,对监控场景进行背景建模是目标检测、分割、跟踪、分类和行为理解等后续处理的基础。本文首先使用混合高斯背景模型对一段视频提取干净的道路背景,再对背景图进行语义分割,更有利于定位车辆的位置信息。

混合高斯背景模型可以克服图像抖动、噪声干扰、光线变化、运动目标移动等问题,从视频流中提取出干净的背景。混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息表示背景,然后使用统计差分进行目标像素判断,可以对复杂动态背景进行建模。

本文对一段两分钟左右的视频进行混合高斯背景模型训练,提取出了相对干净的背景图,再分别对视频截图和背景图做语义分割。如图5,上图为视频某一帧截图以及其语义分割图,下图为混合高斯背景模型提取的背景与其语义分割图,其过滤了所有运动中的车辆,生成的图片更适合做语义分割。在用卷积神经网络对图片进行语义分割之前先用混合高斯背景建模对图片预处理,能达到更好的分割效果。

图5 混合高斯模型背景图及其语义分割图

结合了混合高斯背景模型的实时检测网络结构图如图6 所示。在离线部分,对于一个固定的摄像头,首先将一段视频输入到混合高斯背景模型中,提取出一张干净的背景图,再对背景图送入DeepLabv3+进行语义分割,得到语义分割图。在实时部分,YOLOv3 实时检测监控视频中的车辆,并与语义分割图相比较,计算目标和区域的重合面积,最终输出人行道停车检测结果。

4 实验结果及分析

4.1 YOLOv3目标检测实验

城市管理任务中的车辆违停检测需要从城市监控摄像头中获取数据,目标类别包括小汽车、公交车、三轮车等。随着自动驾驶的不断发展,越来越多的包含城市道路的自动驾驶数据集被开源,例如Kitti[14]、Cityscapes[15]等。但是自动驾驶数据集并不适用于城管任务上。

图6 人行道停车实时检测网络结构图

首先,城管监控和自动驾驶数据集的拍摄角度不一样。自动驾驶数据集照片为平拍角度,而国内真实道路监控视频中车辆密集,多为俯视视角。除了传统的车辆正面、侧面及背面图像外,部分监控图像中还包含车顶视角,且存在大量的遮挡和截断车辆。其次,自动驾驶数据集场景大多为欧美地区的城市道路,道路情况和国内的道路有着较大的差别。最后,自动驾驶数据集没有三轮车类别,无法检测到人行道上违停的三轮车。

基于以上原因,本文所使用数据集为城管车辆数据集,数据集中的图片全部来自监控摄像头采集的照片,共10140 张。所有图片都有标签,可用于目标检测任务。数据集共有3 个类别,分别为城市道路中常见的汽车(car)、公交车(bus)和三轮车(tricycle)。每个类别及其标签数量如表1 所示。本文检测目标为人行道上的所有汽车和三轮车,公交车类别只是为了训练方便,不计入统计范围。如图7 所示,左边为Cityscapes[13]自动驾驶数据集,右边为城管车辆数据集,可以明显的看出其中的差距。

表1 城管车辆数据集

图7 Cityscapes数据集和城管车辆数据集

为了使模型更加鲁棒,可以适应不同尺寸和不同的天气、光线情况,本文对数据集做了增强,使用将图片水平翻转、随机裁剪、改变图片的色相饱和度、使用仿射变换、加入模糊噪声等图片增强方式,使训练结果更好。

训练的主要配置如下:CPU 为Intel Core i7 8700k,内存32GB,CPU 为NVIDIA GTX1080Ti。操作系统为Ubuntu 16.06,算法使用Python 语言和PyTorch 深度学习框架实现。

模型训练过程中将数据集随机分成两部分:训练集和验证集。其中训练集占80%,验证集占20%。YOLOv3 模型使用Darknet-53 网络,训练和微调网络的各项参数。首先使用在ImageNet 上训练的模型权重作为预训练权重,在预训练权重的基础上,用城管车辆数据集进行迁移学习,微调网络参数,使损失函数达到收敛。

在网络训练参数设置方面,由于显存大小的限制,batch size 设为16,共训练100 个epoch,前50 个epoch学习率为10-4,后50 个epoch 学习率为10-5。网络使用Adam 优化器,为了防止过拟合,weight decay 设置为10-3。

本文同时训练了使用ResNet101 作为主干网络(backbone)的Faster R-CNN 算法作为对比,同样将ImageNet 分类预训练的模型用于网络初始化,训练时使用城管车辆数据集,通过反向传播的方式进行微调(fine-tune)。同时修改Faster R-CNN 最后的全连接层,对应输出的类别,对模型进行迁移学习。本文对Faster RCNN 设置初始学习率为10-3,采用Adam 优化算法,batch size 设置为4,每过10 个epoch 学习率下降为原来的0.1 倍,训练直到损失函数达到收敛。

YOLOv3 模型在城管车辆数据集上的检测结果如表2 所示。本文参考VOC2007 数据集的评价指标,设置IOU 阈值为0.5,检测框与真实框的IOU 超过阈值则视作检测成功。每一类都可以用召回率(Recall)和准确率(Precession)来绘制一条曲线,AP 就是该曲线下的面积。mAP 是多个类别AP 的平均值。FPS 为网络在batch size 为1 的时候测试速度。检测结果如表2所示。

表2 YOLOv3 和FasterRCNN-ResNet101 对比

由表2 可以看出,本文的检测方法速度与准确率均高于以ResNet-101 作为主干网络的Faster R-CNN,可以满足实时检测任务的要求。

4.2 DeepLabv3+语义分割实验

Cityscapes 数据集中包含了大量的城市道路图片,每张图片都有语义分割的标签。对城市道路的语义分割数据集可以用Cityscapes 数据集进行训练,用其训练好的模型对监控摄像头的照片来进行分割。但是Cityscapes 原本是用于车辆自动驾驶,对于城管任务而言,其数据集的类别过多,效果也无法让人满意。

因此本文选取533 张天网摄像头照片并进行标注,分成训练集和测试集,训练集用于语义分割的训练,测试集用于验证语义分割的效果。对每张图片标注三个类别,分别为人行道(sidewalk)、马路(road)和汽车(car)。本文使用DeepLabv3+语义分割模型来进行训练,训练迭代30000 次,初始学习率为10-4。训练集裁剪尺寸为513×513,batch size 设置为4。经过测试,训练好的模型在测试集上的平均交并比(mIOU)为0.825。同时也在DeepLabv3+上训练了Cityscapes 数据集,作为对比。

本文对比了测试图片在城管车辆数据集下训练的模型和Cityscapes 模型下的分割结果,如图8 所示。左图为真实的监控摄像头拍摄的道路图片,中图为用Cityscapes 训练好的模型对左图语义分割的结果,右图为用城管数据集训练好的模型对左图语义分割的结果。可也看出城管数据集有更好的分割效果,其对人行道的分割结果更为准确,且没有其他类别的干扰,有利于对语义分割的结果进行进一步处理。

图8 语义分割在Cityscapes数据集和城管车辆数据集上的结果

4.3 人行道车辆违停检测实验结果

在本节中使用第三章提到的离线检测的方法并验证其有效性。本文选取83 张图片,其中有203 辆人行道违停汽车,61 辆违停三轮车,并对其进行人行道违停车辆检测。其中有175 辆违停汽车被检测了出来,准确率达到86.2%,同时有55 辆违停三轮车被检测出来,准确率达到90.2%。结果如表3 所示。

表3 车辆违停检测准确率

为了更加直观的感受算法结果,本文将目标检测和语义分割的中间结果分别保存下来。如图9,左上图为送入网络检测的原图,右上图为目标检测的检测结果,可见所有车辆都被检测出来。左下图为语义分割网络的分割结果。右下图为目标检测结合了语义分割的检测结果,图中只有停在了人行道上的车辆作为违停车辆被检测出来。

图9 车辆违停检测结果图

5 结语

本文将深度学习的目标检测和语义分割算法相结合,提出离线和实时的人行道违规停车检测算法,并通过实验证明了算法可用于解决人行道违规停车问题。同时引入了混合高斯背景模型来提高分割的准确率,并使检测算法能达到实时效果。本文中检测模型在各种天气条件、道路环境和光线条件下都具有很强的鲁棒性。

该算法的不足在于分割的准确率和速度还需要进一步提升。由于城市道路情况十分复杂,加上训练集有限,导致语义分割算法面对十分复杂的道路场景时表现一般。在之后的研究中,将对现有数据集进行扩充,进行更加深入的实验,并加快语义分割的推理速度,争取能够达到实时语义分割。

猜你喜欢
人行道卷积语义
基于全卷积神经网络的猪背膘厚快速准确测定
真实场景水下语义分割方法及数据集
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
跟踪导练(一)
世界最宽人行道:40米
汉语依凭介词的语义范畴
五个小段落组成的自传
人生五章