基于车牌识别大数据的伴随车辆组发现方法

时间:2020-10-03 10:51:03 数学毕业论文 我要投稿

基于车牌识别大数据的伴随车辆组发现方法

  摘要:基于对车牌识别大数据的处理与分析,可以完成伴随车辆组的发现,在涉案车辆追踪等方面具有广泛的应用。然而当前单一机器模式下伴随车辆组发现算法存在时间和空间上处理性能低下等问题。针对此问题,提出了一种伴随车辆组发现方法――FPDTC方法。该方法将传统的FPGrowth算法利用分布式处理框架Spark进行了并行化,并作了相应的改进和优化来更加高效地发现伴随车辆组。实验结果的分析表明,提出的方法能够很好地解决车牌识别大数据上的伴随车辆组发现问题,性能相比采用同样方法的Hadoop实现提升了近4倍。

基于车牌识别大数据的伴随车辆组发现方法

  关键词:智能交通系统;伴随车辆组;FPGrowth算法;Spark并行框架;车牌识别

  引言

  随着科技的发展,通过使用传感器、位置捕获和跟踪设备等技术产生了大量的位置相关方面的数据,智能交通系统(Intelligence Transportation Systems, ITS)领域的应用程序开始利用这些交通数据,来记录车辆移动和交通轨迹的动态生成情况[1]。车牌自动识别(Automatic Number Plate Recognition, ANPR)数据是对交通摄像头捕捉到的道路交通数据进行处理生成的数据。ANPR 数据每时每刻都在不停地产生,形成了庞大的数据规模。

  现代社会道路监控技术发展的同时,违法犯罪行为与车辆、交通系统的联系也越来越密切。伴随车辆是一个交通术语,是指在一定时间内与追踪车辆以一定概率存在伴随关系的车辆。如果事先知道涉案车辆的车牌号,可以直接通过查询ANPR数据找出其伴随车辆,然而实际情况中往往并不知道涉案车辆的车牌号,在这种情况下就需要通过伴随车辆组发现方法从海量的ANPR数据中寻找出经常一起出现的伴随车辆,提供给公安机关进行排查。

  在涉案车辆追踪服务应用中,可以对海量ANPR数据进行分析处理,为公安部门办案中的犯罪嫌疑车辆排查分析提供参考。本文的主要贡献是:1)提出了一种基于并行FPGrowth算法的伴随车辆组发现方法――FPDTC方法。该方法对关联分析中的FPGrowth算法作了并行化的改进和优化,解决了车牌识别大数据处理中涉及到的频繁子集挖掘问题;2)利用云计算环境下的分布式并行处理框架Spark,实现了该算法。经过实验验证该方法能够很好地处理海量ANPR数据,解决了单机模式下的内存不足等问题,在伴随车辆组分析发现上的性能得到了提升。

  一、问题的提出

  伴随车辆组的发现是从ANPR数据集中的不同车辆之间的联系来分析车辆的行驶习惯,通过了解哪些车辆频繁地在多个监测点共同出现来分析它们之间的相互关系,本质上就是寻找不同车辆之间的关联性或相关性,因此可以使用关联分析方法来解决。点伴随是指在一定的时间范围内共同经过同一监测点的车辆所具有的一种伴随关系,具有点伴随关系的车辆共同组成点伴随组。前面提到伴随车辆是在一定时间内与追踪车辆以一定概率存在伴随关系的车辆,实际场景中这个概率通常指设定的监测点值与点伴随车辆共同经过的监测点数目的比值。因此可以通过对点伴随组进行关联分析,找出满足这一概率的频繁子集车辆,即可求解出伴随车辆组,作为涉案车辆重点追踪和排查的对象。

  当前的车辆数据越来越多,据统计,中国一个大型城市部署的带车牌识别功能的摄像头可达到5000个,高峰期每个摄像头车牌识别数据的采集频率可达每秒1条,每天的交通高峰折算率按0.33统计,则一天的车辆识别数据记录数将达到1.44亿条,数据量约12GB[2]。面对如此大量的ANPR数据,利用关联分析方法在单台机器上分析求解伴随车辆组存在大量的计算和存储负担,效率偏低。

  目前一些先进的伴随车辆组发现方法及技术被用于全球定位系统(Global Positioning System, GPS)的数据分析[3],而本文所研究的ANPR数据与GPS数据不同,其记录的位置由于摄像头固定等原因一般都是有限制的,其方法和技术并不完全适用于ANPR数据。文献[4]提出的伴随车辆查询(Accompany Vehicle Discovery, AVD)方法虽然可以适用于ANPR数据的分析,但其采用的滑动时间窗口技术仅在求解点伴随组上提升了效率,最后利用关联分析算法求解伴随车辆时摆脱不了单台机器的计算能力限制。

  基于以上两个原因,需要考虑一种新的高效的方法来解决伴随车辆组的发现问题。本文提出的FPDTC方法,通过使用分布式处理框架Spark实现的并行FPGrowth算法来从车牌识别大数据中更加高效地发现伴随车辆组。

  二、伴随车辆组发现方法――FPDTC方法

  计算伴随车辆组,需要综合数天的车牌识别数据进行分析处理,本文采用一种基于多过程并行模式的处理方法(简称为FPDTC方法)。首先,需要对ANPR数据集进行预处理,过滤掉不符合要求的数据,仅保留计算过程中需要的字段值;然后,将过滤后的数据集按时间先后排序,根据车牌号生成每辆车的车辆轨迹;再根据所得的车辆轨迹计算各监测点下的点伴随组;最后,根据点伴随组求得伴随车辆组。在这一章中将具体介绍这些过程的实现方法。

  2.1交通数据的预处理

  ANPR数据集中的每一条记录均包含多个字段,由于所捕获的监测点数据有限导致某些字段的值缺失或者某些字段对于当前的数据分析处理没有任何意义,这样的数据在车辆轨迹判定中很难发挥作用。因此本文方法通过Spark中的过滤函数将数据集并行的处理成只包含〈车牌号,监测点,时间点〉(简写为〈v, s, time〉)3个字段的数据集,从而降低参与后续计算的数据规模,提高处理速度。

  2.2车辆轨迹和点伴随组的生成

  车辆轨迹是一段时间内车辆所经过的监测点位置序列。对过滤后的数据集先按照车牌号分组,然后根据监测时间先后排序,最终得到在一定日期时间范围内的车辆轨迹。步骤如图1所示。

  1) 使用textFile方法读取ANPR数据集并将其转换为相同格式的弹性分布式数据集(Resilient Distributed Dataset,RDD)形式,具体为HadoopRDD,其包含〈v,s,time〉 3个字段的信息;2) 通过mapToPair方法以车牌号作为键,监测点和时间作为值将RDD从DRDD转换为PairRDD的形式,其格式为〈v,s+time〉;3) 然后通过groupByKey方法将PairRDD按照键v进行分组,将具有相同键值v的数据放在一起,形成另一种形式的PairRDD,格式为〈v, Iterable〈s+time〉〉,其中键v不变,值为具有相同键v的一组数据;4) 再通过mapValues方法实现对PairRDD中的数据排序的功能,该方法将对同一车牌号下的数据按照时间先后排序。5) 最后使用collect方法得出车辆轨迹数据,其格式为List〈v, Iterable〈s+time〉〉。