剖析广州“开四停四”交通限行的实现技术
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~
为缓解广州城区的道路交通紧张状况,广州已于2018年7月1日起进行管控区域的“外地牌车”实施“开四停四”管理措施通行规则,执法部门已于8月1日起正式依据规则进行非广州市籍车辆通行的拍摄取证工作。今天我们就从技术的角度,来剖析一下如何技术上实现“开四停四”的判定执法。
整个“开四停四”限行判定系统主要涉及三大功能模块:
图1:“开四停四”限行判定系统主要模块
一、电子警察影像采集及存储
电子影像采集及存储是非常成熟的系统,目前已形成多套解决方案:电子警察抓拍、卡口抓拍、治安监控、流量监控等。采集数据主要为图片或视频资料。
涉及到广州的外地车牌“开四停四”限行,由于是新法规,这里很大可能是一整套专门的拍摄采集系统,布局在管控区域内。据网上信息披露,广州2018-7-10新增启用 “170”套设备用于“开四停四”的说法。不过理论上,任何一个交通监控摄像头都可采集用于“开四停四”数据分析处理的影像数据。
由于这块技术最成熟,我们这里只列出技术架构图(见下图:电子卡口设置示意图及电子“卡口”抓拍系统架构):
图2-1:电子卡口设置示意图
图2-2:电子“卡口”抓拍系统架构
在图像或视频资料的存储方面,由于数据量巨大,可以考虑使用腾讯云的文件存储(CFS)来满足,确保弹性扩展与共享访问。
二、外地车牌识别入库
在卡口由电子警察采集的图片资料,将通过采用机器学习的“图片识别”/ “视频关键帧”技术,将外地车牌的信息抽取出来,存放于外地限行数据库(LimitedPassDB)的originalInfoTable中。
这里图片资料识别的技术也很成熟,目前已广泛用于停车场、高速关卡等场景。系统架构图如下:
图3:车牌识别系统示意图
关于车牌识别的编程代码(python)实现,可以参考文章《用PaddlePaddle进行车牌识别》:https://cloud.tencent.com/developer/article/1065786
腾讯云也提供了“智能钛机器学习”平台服务,可以帮助用户进行模型型训练、评估与预测。
图4:腾讯云TI机器学习平台架构图
图片从服务器上传到 COS 对象存储后,您可以通过 TI 调度 CPU 和 HPC 集群对图片数据进行裁剪、格式转换等数据预处理;接下来采用 Faster R-CNN 或其他算法进行图象识别的模型训练,并优化参数直至最优;训练完毕的模型即可用于其他图片的图像识别预测,以判断图像物品的基本属性。
TI 的图片识别结果可广泛应用于公安领域的网络鉴黄,反恐的高危行为检测、嫌疑人特征检测,广告推荐领域的新商品识别、相似商品推荐,智能交通领域的车辆识别、行人识别、自动驾驶等场景。
三、违法识别判定
“开四停四”违法车辆识别判定,是我们文章重点要介绍的模块。实现方法如下:
1、符合条件的通行进行编码
首先,我们先要对符合外地车通行的措施与条件进行编码。广州外地车限行的措施见下图所示:
图5:“开四停四”管理措施
如果我们将通行标识为“1”,停驶标识为“0”,依图我们可以得出合规的通行标识码有8种:
100001
1100001
11100001
10100001
111100001
101100001
110100001
100100001
这8种符合条件的bitmap通行码,可以大大减少我们判定的复杂性。
2、记录跟踪外地车在管制区域内的行驶
在管制区域内任一点拍摄识别外地车(非粤A牌车辆),即入库1条uin为车牌号的记录addTraceRec到traceInfoTable表中。当天再有同一辆车的信息不再入库。显然,记录必须包括有字段-标识串flagStr,还可以有时间timestamp、违法标记isIllegal等字段。首次写入时:flagStr置为1。
第二天开始,拍摄到有记录的外地车牌,即update其标识串字段:flagStr=flagStr.’1’;
另外,还需要起一个定时任务(如每天23:59:00):对于之前已有记录,但其他该天未拍摄到的,进行标识串字符补齐,flagStr=flagStr.’0’
3、外地车限行违法判定
使用定时任务来完成(如每天00:00:00);针对flagStr.length>=5,执行判定,判定条件:
1)是否满足“停四”,是则清除记录;
If ‘0000’ in flagStr:
//flagStr=‘’
//isIllegal=0
deleteTraceRec() //清除traceInfoTable中记录
2)在上述1)的条件下,判断是否满足“开四”,不是则违法
else:
if flagStr not in (11110,11000,11100,10100,10010,10110,11010,111100,111000,101000,100100,101100,110100,1111000,1001000,1011000,1101000):
isIllegal=1
addIllegalRec() //在违法信息illegalInfoTable中增加1条记录
sendBill() //发送违法罚单
flagStr=flagStr[1:] //截去第1位标识串
endif
endif
以上,为大家剖析了一种“开四停四”交通限行管理的实现技术方法,希望对大家解决实际场景问题时如何应用技术有所帮助。
问答
相关阅读
此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1179758?fromSource=waitui
欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~
海量技术实践经验,尽在云加社区! https://cloud.tencent.com/developer?fromSource=waitui