整个“开四停四”限行判定系统主要涉及三大功能模块:


广州“开四停四”交通限行,技术上是如何实现的?_java

图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

以上,为大家剖析了一种“开四停四”交通限行管理的实现技术方法,希望对大家解决实际场景问题时如何应用技术有所帮助。