基于深度学习的交通速度检测器

在许多城市,交通速度检测器是收取超速罚款和减少因超速导致的事故的重要手段。然而,传统的基于雷达或激光雷达的速度检测器非常昂贵。本文系列将向展示如何仅使用深度学习技术构建一个相对准确的交通速度检测器,并在像树莓派这样的边缘设备上运行。

可以从TrafficCV Git仓库下载本系列文章的代码。假设熟悉Python,并且对人工智能和神经网络有基本的了解。

到目前为止,已经看到了如何使用各种计算机视觉和深度学习模型,通过Python实现车辆“速度陷阱”,并校准物理常数以将距离和时间间隔转换为速度。这为提供了一种自动估算车辆通过相机视野时速度的方法。使用树莓派4 + ArduCam相机硬件,以及可选的Coral USB AI加速器,可以跟踪多辆车辆并估算它们的速度。

在本文中,将讨论如何改进创建的程序。还将比较系统与基于激光雷达或雷达的其他自动速度执法(ASE)系统,以及像VASCAR这样的半自动或手动速度检测系统。

在TrafficCV Python程序开发过程中,一直限制在单个线程上进行视频处理和推理。这意味着从Pi的SD卡读取视频数据、在视频帧上运行目标检测和目标跟踪,以及显示视频数据都发生在单个Pi核心上的同一线程上,而其他核心则处于空闲状态。之前已经看到,当通过网络流式传输视频数据时,这会负面影响性能。

可以通过将视频数据读取和视频数据输出移动到单独的线程,并利用FIFO队列来提高检测器的性能。数据输入线程从存储中读取视频数据,解码它,并将视频帧写入队列。检测器循环线程从这个队列读取数据——而不是直接从存储——并在输出帧上叠加边界框和速度估计。然后,检测器线程将这些输出帧放入另一个队列,数据输出线程从这个队列中取出它们并显示它们,或将它们发送到网络上,或将它们写入存储。通过这种方式,可以使用三个Pi核心,第四个核心保留用于额外的任务(如运行车辆牌照识别)。

ArduCam相机可以在较低的640x480分辨率下以90 FPS运行。可以利用这个更高的FPS视频源来提高测量时间间隔的准确性,假设多线程Python软件足够快,可以跟上。

假设dlib目标相关跟踪器在计算上比模型推理更便宜。这就是每帧更新目标位置的原因,而运行目标检测推理则每10帧运行一次。但这个假设可能是错误的!事实上,看到——当使用像Coral USB设备这样的AI加速器时——CPU的使用率被限制在100%,而且FPS被限制在13,无论否在CPU上运行推理。在CPU上每帧运行的dlib跟踪器是一个主要的瓶颈,限制了整个系统的性能。

需要在检测器中添加一个选项,禁用目标跟踪,而是每帧运行目标检测推理。这可能会产生更高的FPS速率,特别是对于多线程程序。

许多市政当局将ASE和其他速度执法系统视为从发放罚单和罚款中获取收入的重要来源,同时减少因超速导致的事故数量。最便宜的手动VASCAR系统只需要一个质量上乘的秒表,成本可能低至60美元,但这使得操作者手动执行所有任务,包括准确测量距离和在正确的时间切换秒表。VASCAR系统一次只能跟踪一辆车。此外,基于VASCAR的超速罚单最容易出错,也最容易在法庭上受到挑战。

VASCAR系统的局限性导致许多市政当局转向雷达或激光雷达测速枪。执法级别的测速枪可以从大约1000美元开始——但它们一次只能跟踪一辆车,仍然需要一个人类操作者。完全自动化的独立ASE系统仅硬件就从几千美元开始,高端系统能够跟踪多辆车。在考虑培训和人员成本时,部署传统的激光雷达和雷达ASE系统的成本可能从几十万到几百万美元不等。此外,有许多司法管辖区禁止基于雷达和激光雷达的车辆速度跟踪。

在基于Pi的系统中,硬件成本不到200美元。系统使用普通硬件,并运行标准的Debian "Buster" Linux版本。因此,可以预期部署和服务以及培训人员管理此类系统的成本将远低于传统ASE系统中使用的专用硬件和软件的成本。TrafficCV是GPL许可的免费软件,可以轻松扩展到实时传输监控车辆的视频,或将车辆数据和视频发送到中央服务器,并自动化发放罚单的大部分过程。系统可以一次跟踪多辆车,同时保留执行额外计算机视觉任务的能力,如使用Coral USB AI加速器进行车牌识别。

速度检测系统是完全自动化的,不需要人类操作者在任何时候进行干预。如果仔细校准用于从相机视频计算车辆速度的常数,这可以显著减少错误或偏见的主张。它也不依赖于雷达或激光雷达,这消除了实施的任何法律障碍。

在人类操作的车辆速度检测系统中可能存在的错误

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485