为 AI 交通速度检测设置开发环境





5.00/5 (1投票)
在本文中,我们将在Windows 10上设置一个开发环境,用于在我们的Pi设备上运行跨平台计算机视觉和机器学习项目。
引言
交通速度检测是一个大生意。世界各地的市政当局利用它来阻止超速行驶并通过超速罚单创收。但传统的测速仪,通常基于 RADAR 或 LIDAR,价格昂贵。
本系列文章将向您展示如何仅使用深度学习构建一个相当准确的交通速度检测器,并在像树莓派这样的边缘设备上运行它。
欢迎您从 TrafficCV Git 仓库 下载本系列文章的代码。我们假设您熟悉 Python,并具备 AI 和神经网络的基础知识。
在上一篇文章中,我们讨论了在Raspberry Pi上安装操作系统、保护它,并通过SSH、RDP和X从Windows 10机器远程访问它。在本文中,我们将重点介绍在Windows 10上为跨平台计算机视觉和机器学习项目设置开发环境,以便在我们的Pi上运行。我们还将探讨TrafficCV程序的主要元素及其基本用法。
我们将使用Visual Studio Code及其远程开发功能,并结合其Python语言支持,在熟悉的Windows环境中为Pi上的应用程序进行编码和调试。尽管我们的目标是运行Linux的Raspberry Pi,但我们开发的Python代码是跨平台的,可以在Linux和Windows上无需修改即可运行。
环境设置
假设您的$PATH或%PATH%中有一个Python 3.7+解释器,那么在Pi和Windows 10上设置TrafficCV Python环境的步骤是:
- 创建一个名为cv(或trafficcv)的虚拟环境并激活它:
python -m venv cv
。 - 在Python虚拟环境中,从https://github.com/allisterb/TrafficCV克隆TrafficCV仓库。
- 在Pi上,首先使用apt-get安装OpenCV原生依赖项。然后,在Pi和Windows上,通过运行
pip install -r requirements.txt
安装TrafficCV Python依赖项。默认情况下,Pi 4使用piwheels.org作为OpenCV等原生ARM库的仓库,因此我们无需从源代码编译任何内容。 - 在Pi和Windows上,都使用
pip
安装PythonTensorFlow Lite运行时库。 - 如果您想使用Coral USB加速器,请在Pi或Windows上安装Edge TPU运行时。
- 要从Windows在Pi上运行GUI应用程序,请允许从Pi设备连接到我们位于6000端口的X服务器,但仅限于私有子网。这篇文章描述了如何在需要时添加Windows防火墙规则,以及使用VcXsrv选项允许来自Pi的远程连接。
- 所有依赖项安装完成后,在Windows上的TrafficCV项目文件夹中运行
tcv --test
。这将测试OpenCV是否安装正确。在Pi或任何Linux计算机上,您必须将TrafficCV将连接到的X服务器显示作为tcv脚本的第一个参数传递。例如:./tcv MYCOMP:0.0 --test
将使用位于MYHOST:0.0
的X服务器运行测试函数,而./tcv $DISPLAY --test
将在本地显示上运行它。在Windows机器上不使用此参数,因为OpenCV将始终使用本地桌面显示。
如果一切顺利,当您在Pi上运行测试函数时,您应该会在开发计算机上看到一个X显示,显示来自ArduCam摄像机的视频流。
一旦我们的TrafficCV Python环境设置好,我们就可以使用VS Code的远程SSH功能连接到我们的Pi并处理TrafficCV。我们将使用Windows机器开发应用程序,并通过git fetch && git pull
将其部署到Pi进行测试。我们需要记住的一点是,在进行任何开发工作之前,务必在Pi或Windows上激活我们的cv Python虚拟环境,因为我们所有的包依赖项都隔离在该环境中。
TrafficCV
TrafficCV是一个跨平台的Python程序,它在实时交通流或视频上运行目标检测模型,以计算和提取交通信息,例如车辆速度、车辆类别以及通过感兴趣区域(ROI)的车辆数量。您可以使用--model
参数指定要运行的模型,使用--video
参数指定视频源,以及一个可选的--args
参数,该参数以key=value形式指定逗号分隔的模型和检测器参数集。
TrafficCV可以使用VLC在YouTube和其他视频托管网站上运行交通视频的模型,VLC默认安装在Pi上。vlc-stream
脚本接受文件或URL作为参数,然后在当前计算机的18223端口上创建一个Multipart-JPEG(MPJPEG)流。MPJPEG是一种在HTTP上流式传输Motion-JPEG(M-JPEG)编码视频的简单方法,OpenCV可以对其进行处理。任何可以被VLC解码的视频源都可以被转码并流式传输到OpenCV,从而使TrafficCV能够分析各种格式和位置的视频。
下一步
现在我们的开发环境已经设置好了,我们可以针对各种视频源运行神经网络模型。在下一篇文章中,我们将详细介绍TrafficCV的实现以及用于检测车辆和计算其速度的各种目标检测模型。敬请关注!