1. 引言
随着市场经济的飞速发展,人民物质水平逐渐提高,势必会迎来道路交通的迅速发展。根据2022年2月国家统计局发布的《中华人民共和国2021年国民经济和社会发展统计公报》分析,截至2021年末全国民用汽车保有量30151万辆,比上年末增加2064万辆 [1]。人均汽车保有量的增加虽然方便了人民的出行,但是也产生了诸多交通问题,例如车辆闯红灯、不按车道行驶、超速等问题。根据2021年发布的《中国统计年鉴》分析可知,2020年中国交通事故发生数244674起,死亡人数高达61703人,受伤人数250723人,直接财产损失高达131360.6万元 [2]。2022年《“十四五”国家安全生产规划》中明确提出要强化交通运输安全智慧监管平台的设计与建设,提升公路建设与运营安全风险智慧感知和预警能力 [3]。目前,道路交通问题越来越受到社会群众的重视,构建智能电子警察系统、实现智能化道路交通监测变得越来越重要。
2. 现状分析
我国早期的交通电子警察系统普遍采用的技术都是通过道路上预先铺设好的地感线圈监测机动车的信号,同时在摄像头的前端部分进行图像采集和车牌识别。该方法不仅成本高昂,而且对系统的可维护性也较差。随着科技的进步和互联网的发展,基于视频流检测的智能交通电子警察系统逐渐成为主流。该系统能够减少线圈监测模式的系统实施时不可避免的需要进行道路封锁,以及因道路结构改变导致后期维护难等问题 [4],同时也降低了系统的成本。
3. 需求分析
如何改善交通状况和提升交通治理水平等方面的问题引起了城市交管部门的高度重视。智能电子警察系统作为交通治理的重要组成部分,在规范行车人员正确的驾车意识,杜绝违章行为,打击被盗抢和违规车辆等方面具有重要作用。
3.1. 功能需求
本文根据现有的智能电子警察系统 [5] 并结合实际应用场景对系统功能需求进行分析,如下所示:
1) 个人中心:对个人信息进行查看和修改。
2) 车辆捕获:能够对视频画面中车辆信息和违章行为进行快速准确地捕获。
3) 动态检测展示:实时观测到车辆信息、违章记录和流量等视频检测数据。
4) 违章现场录入:识别出车牌车辆同时,记录下车辆的违章视频和照片。
5) 告警通知:查询检测车辆,及时通过报警联动装置告警值班人员违章车辆通过情形。
6) 交通流量:能够以图表的形式展现路段的交通流量信息。
7) 违章历史管理:了解所有经系统判断且出现违章行为的车辆信息与情况。
8) 车辆管理:对系统中检测到的车辆信息进行维护和管理。
9) 事件管理:对系统中所有违章事件的信息进行维护和管理。
3.2. 性能需求
系统在满足上述功能需求的同时,根据实际应用场景需满足以下的性能需求。
1) 精确性:在精度需求上,违章行为检测的准确率要求达到99%以上,同时根据实际需要,数据在输入、输出及传输的过程中也要满足各种精度的需求。
2) 实时性:系统响应时间应在人的感觉和视觉范围内(<1 s),系统响应时间足够迅速(<5 s),能够满足用户要求。车辆检测、跟踪及违章行为的数据查询、统计、更新做到及时、准确,查询统计不影响业务系统同时运行。
3) 易用性:考虑到用户使用时需要关注大量的车辆信息,系统要求使用简便,支持较高的灵活性操作。
4. 系统设计
4.1. 功能设计
本系统的服务对象为交通警察,智能电子警察系统的核心业务是对车辆行驶情况进行捕获并分析其是否存在违章行为,为交警违章执法提供依据。系统功能模块设计见图1,具体功能设计如下:
1) 个人中心模块:用户查看自己的个人信息,对个人信息进行修改并提交意见反馈。
2) 违章检测模块:违章检测模块是该系统的核心模块。提供选择视频所属路段及路段的具体摄像头功能,展示摄像头视频信息,通过开关按钮对检测参数进行设置,实时改变监测视频锚线。动态更新违章记录、车辆信息、流量统计等检测数据。
3) 流量统计模块:提供路段及时间区间筛选,通过给定参数设置,展示对应部分的交通流量及其变化趋势,通过可视化图表及地图的形式展示交通拥堵信息。
4) 违章记录模块:提供事件频次等数据统计服务。同时,可以筛选记录,展示事件发生现场的图像、视频信息及事件地点,对历史违章再确认。
5) 车辆管理模块:本模块可对车辆数据进行统一管理与监测,对黑名单中的车辆集中显示,并进行车辆相关信息修改。
6) 事件管理模块:交警管理员对系统中产生的违章数据进行统一管理与修改。
本系统前端部分采用Vue2.0渐进式框架。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。后台部分使用SpringBoot框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。在算法开发部分,本系统使用Pytorch和Tensorflow框架进行神经网络的搭建与训练。算法部署使用轻量级的Web应用框架Flask框架,便于算法的灵活高效的部署。
4.2. 数据库设计
系统采用MySQL数据库,数据实体有用户信息、车辆信息、违章事件、违章视频、抓拍图片。前端使用axios组件发送HTTP异步请求调用后台接口,后端分别利用MyBatis框架和Flask框架与数据库和算法交互。用户信息表用于保存交警的个人信息,见表1;车辆信息表用于保存已检测车辆的相关信息,见表2;违章事件表用于保存所有已检测到的车辆的违章记录,见表3;违章视频表用于保存车辆违章时的视频,见表4;抓拍图片表则用于保存车辆违章时的抓拍图片,为交警后续处罚提供证据,见表5。其中违章事件表中的涉事车辆id (外键),必须依赖于车辆信息表中的车辆id (主键)存在。违章视频表和抓拍图片表中的对应事件id (外键),必须依赖于违章事件表中的违章事件id (主键)存在。
4.3. 算法设计
本系统基于YOLOv5s + DeepSort神经网络建立车辆检测与跟踪的预测模型,使用开源的Hyperlpr项目实现车车辆车牌识别,结合CDNet神经网络 [6] 进行斑马线检测以及Ultra Fast Structure-aware Deep Lane Detection神经网络 [7] 进行车道线检测,同时使用Inception-v3网络模型 [8] 实现车辆类型实时快速识别。将检测出的目标结果结合opencv实现9种违章违章行为检测。算法流程图见图2。
4.3.1. 斑马线与车道线检测
传统斑马线检测采用消失点法 [9] 和双极系数法 [10] 进行人行横道检测。这些方法不仅计算量大,而且对斑马线条纹的直线性要求很高,误检率较大。为此,我们采用CDNet神经网络来进行斑马线的检测。CDNet网络是基于YOLOv5s的人行横道检测网络,网络中嵌入了sequence-and-excitation (SE)注意力机制模块 [11],使用负样本训练(NST)方法提高准确率,区域利用兴趣(ROI)算法进一步提高检测速度,在Jetsonnano上能达到33.1FPS。
在车道线检测方面,我们摒弃了传统的基于边缘特征和图像分割的车道线检测算法,该方法容易受光照变化,行驶车辆,道路破损等干扰,导致效果欠佳。本文采用Zequn Qin等人提出的Ultra Fast Structure-aware Deep Lane Detection的车道线检测神经网络 [7]。该网络以Resnet-18为骨干网络,根据车道线在道路中分布的特点,采用基于全局图像特征,基于行的检测选择方法,极大地加快了运算速度,实现复杂环境下车道线的实时检测。
4.3.2. 车辆检测及跟踪
由于传统的RCNN网络模型 [12] 为双阶段检测模型,在速度上不符合电子警察系统的实时检测要求,本文选择了在速度和精度方面均有良好表现的Yolov5模型。同时对比YOLOv5系列模型,本文使用检测速度最快的YOLOv5s模型作为检测器,并结合DeepSORT目标跟踪算法实现端到端的车辆实时检测及跟踪 [13]。
YOLOv5s为单阶段检测模型,在检测时无需生成候选区域,直接对目标类别和边界进行回归,将检测问题视为回归问题,加快了检测的速度。同时YOLOv5s提供了三个Head检测头,保证了多尺度目标检测。在数据处理方面,鉴于道路交通情况复杂多变,本文选择了包含复杂天气情况的UA-DETRAC开源数据集,如图3所示,并结合coco开源数据集中的车辆和行人数据集联合训练Yolov5s模型。在数据增强上,本文采用透视变换、亮度变换、对比度变换等方式进行数据的增强,使模型具有较好的泛化能力。本文根据自构建数据集利用k-means聚类算法,更新了YOLOv5s中的9个先验框。普通的非极大抑制算法(NMS)会导致重叠目标漏检测问题。为解决这一问题,本文使用Soft-NMS [14],通过权重来降低检测框原有的置信度,检测重叠目标。采用线性加权的Soft-NMS各检测框的得分公式如公式(1)所示。
(1)
其中,
为各个建议框得分,
当前得分最高的建议框,
为检测到的所有待处理的建议框,
是指手动设置的阈值,
为两个建议框的交并比。
4.3.3. 违章行为检测
违章行为的检测为规范机动车驾驶人起着至关重要的作用,基于上述目标检测的结果,我们结合OpenCV对车辆的违章行为进行判定。
1) 车辆超速检测
超速检测模块将采集到的图像信号输入到目标识别与跟踪算法中,对所有图像进行实时监测,利用车辆车牌特征点在摄像机视野范围的运动轨迹,采用光学畸变校正算法、速度测定算法,能准确计算出车辆的实际运动速度。当目标车辆的速度超过限定的速值时,则将其定为超速车辆。
2) 车辆压线检测
车辆压线模块将采集到的图像信号经过车辆目标检测与跟踪算法,车道线检测算法后,分别得到锚好框的车辆和已经标定的车道线,然后判断车辆行驶趋势构成的曲线与车道线是否有交集以及与车道线构成的直线在同一高度时,x坐标的值是否在车辆框之间。只有这两个条件同时满足时系统才判定该车辆为压线车辆。
3) 车辆闯红灯检测
车辆闯红灯依托于斑马线检测算法检测出的斑马线框,将斑马线框作为中间框,标为2,同时在其上方和下方分别画出两个等长的矩形框,并将其分别标为1和3。只有检测出来的车辆在红灯的时候同时经过1,2,3矩形框时系统才将其判定为闯红灯车辆。
4) 车辆逆行检测
车辆逆行模块首先需要根据检测出的车道箭头规定车道线内的车辆的行驶方向,然后判断检测出来的车辆的朝向以及行驶的速度。系统规定,沿着车道线方向的速度为正,反之为负。当车辆的行驶速度为负数,同时车辆的朝向与摄像头拍摄的朝向不一致时,系统才将其判定为逆行车辆。
5) 车辆礼让行人检测
车辆礼让行人模型需要检测出斑马线,行人和车辆。系统利用行人与车辆锚出的框在斑马线框内的比例是否大于阈值来判断行人与车辆是否位于斑马线内。然后再根据行人的位移变化,判断行人的移动方向。若行人是从视频的左边向右边移动,且车辆与行人同时位于斑马线中,如果车辆的x轴横坐标的值大于此时行人x轴横坐标的位置,则系统认定该车辆不礼让行人。反之,若行人是从视频的右边向左边移动,且车辆与行人同时位于斑马线中,如果车辆的x轴横坐标的值小于此时行人x轴横坐标的位置,则系统认定该车辆不礼让行人。
6) 车辆违章掉头检测
车辆违章掉头我们依据已检测出的车辆的车速方向、车辆的横向位移来判断。如果车辆的车速方向发生了反转,同时车辆的横向位移发生了较大的变化,系统就将其认定为违章掉头车辆。
7) 车辆不按车道行驶检测
不按车道行驶的定义是:在通过有导向车道的路口时,应该按照导向指示标线提前变道。不按导向车道行驶的违法行为主要有三种,一是直行时借道左转弯车道;二是左转弯时借道直行车道;三是在左转弯和直行车道随意右转弯。
系统首先根据检测出的车道线画出车道线的延长线,然后根据检测车辆压虚拟线的情况判断车辆在经过路口时的行驶方向。若车辆压的是左虚拟车道线,则该车辆为左转;如果车辆压的右车道线则判定该车辆为右转;不压线则为直行。检测出车辆通过路口后行驶的方向再结合车道路口的导向标来判断车辆是否存在不按车道行驶。如果车辆通过路口后行驶的方向与路口导向标规定的方向不一致,系统就将其认定为不按车道行驶的车辆。
8) 行人闯红灯检测
行人闯红灯模块是通过在红灯状态下,处于斑马线上的行人时候有移动来判断行人是否闯红灯,如果在红灯状态下,行人有较大的位移变化,则认定该行人闯红灯。
9) 车辆违停检测
车辆违停的实现是根据禁止违停的位置画出禁止违停框,如果检测到的车辆在该违停框内停留的时间超过所设置的阈值则认定其为违停车辆。
5. 系统实现
5.1. 违章检测模块
图4为实时违章检测界面。用户选择路段、摄像头及视频参数后,画面中会出现实时检测视频流。点击导航栏伸缩,可放大视频区域。检测到的车辆信息、违章行为、及车流量会在右侧对应区域实时展示。当视频检测出存在于黑名单的车辆时,页面会弹出告警提示,便于用户及时发现并处理。
5.2. 流量统计模块
图5为系统交通流量统计界面。选择更换路段,系统会直观展示对应路段近一周的交通流量。用户可根据该路段的车流量、交通工具、拥堵情况的变化趋势及时做出相应的交通决策。
5.3. 流量统计模块
违章记录模块分为两大界面:
5.3.1. 事件监控预警界面
该界面可查看所有监控路段近两小时内的违章数量变化趋势,并可通过环形图直观了解不同违章类型发生频次。如图6所示,界面还统计了各路段违章频次,点击查看详情,可调出对应路段的视频数据,以便后期相关部门对发生频次较高的路段安装警示牌。
Figure 6. Event monitoring and warning interface
图6. 事件监控预警界面
5.3.2. 历史违章界面
该界面可查看系统检测到的所有违章数据,并可按照违章类型和车牌号,查询特定的违章行为。如图7所示,点击现场记录列,可查看违章事件的抓拍图片和视频,并通过地图定位快速掌握事件发生地点。同时提供违章事件再确认功能,对已检测出的违章结果再判断,避免系统误判。
5.4. 车辆管理模块
车辆捕获界面如图8所示,通过检测视频,实时更新车辆捕获记录和车辆违章记录。同时还提供了多种类型的车辆模糊查询,方便用户快速定位车辆。
6. 结语
本文基于智能电子警察系统在违章检测过程实时性和高精度的需求,采用CDNet神经网络进行斑马线检测以及Ultra Fast Structure-aware Deep Lane Detection神经网络进行车道线检测;使用YOLOv5s + DeepSort神经网络建立车辆检测与跟踪的预测模型,同时根据自建数据集更新YOLOv5s的先验框以及使用Soft-NMS代替NMS解决重叠目标漏检测问题;使用在车牌识别中具有良好表现的Hyperlpr开源项目进行车牌识别以及使用Inception-v3神经网络进行车辆类型识别,最后利用检测出的交通标线和车辆实现了超速检测、压线检测、闯红灯检测、逆行检测、礼让行人检测、违章掉头检测、不按车道行驶检测、行人闯红灯检测、违停检测等9种违章行为检测。经实践,本系统可满足违章检测高精度、及时性的需求,在规范行车人员正确的驾车意识、杜绝违章行为、打击违规车辆等方面具有促进作用。