使用预训练模型,在Jetson NANO上预测公交车到站时间

2022-09-13 13:49:24 浏览数 (1)

没有人喜欢站在那里等公共汽车到达,尤其是当你需要准时到达某个地方时。如果您能预测下一班公共汽车何时到达,那不是很好吗? 

今年年初,亚美尼亚开发人员 Edgar Gomtsyan 有一些空闲时间,他就对这个问题感到困惑。他没有等待政府实体实施解决方案,也没有打电话给公交车调度员确认公交车到达时间,而是开发了自己的解决方案。基于机器学习,它可以高度准确 地预测公交车到达时间。

碰巧的是,埃德加的公寓正对着公交车站所在的街道。为了跟踪公交车的进出,他在阳台上安装了一个小型安全摄像头,该摄像头使用图像识别软件。“就像任何复杂的问题一样,为了找到有效的解决方案,问题被分成更小的部分,”埃德加说。 

他的解决方案使用了大华网络摄像机。对于视频处理,他最初使用Vertex AI,可用于图像和物体检测、分类等需求。由于担心可能出现的网络和电力问题,他最终决定使用NVIDIA Jetson Nano在本地处理视频流细节。您可以在 GitHub 上 的jetson-inference 存储库中访问各种库和经过训练的模型。

实时流协议 (RTSP) 将来自相机视频流的细节连接到 Jetson Nano。然后,使用imagenet进行分类和 GitHub 存储库中的预训练模型之一,Edgar 能够立即获得流的基本分类。

使用预训练模型,Edgar 使用他的设置在每次检测到公共汽车时从视频流中截取屏幕截图。他的第一个模型准备好了大约 100 张照片。 

但是,正如埃德加承认的那样,“说事情一开始就完美是错误的。” 对他来说很明显,他需要更多的图片来提高模型输出的精度。一旦他有 300 张照片,“系统就会变得越来越好,”他说。 

当他第一次分享这个项目的结果时,他的模型已经接受了 1300 多张图片的训练,它可以检测到站和出发的公共汽车——即使是在不同的天气条件下。他还能够区分定时巴士和随机到达的巴士。他的模型现在包括三类图像检测:到达的公共汽车、背景(所有非预定公共汽车)和离开的公共汽车。 

例如,如果“到达巴士”类别预测在 15 帧内大于或等于 92%,则它将到达时间记录到本地 CSV 文件中。

为了改进收集的数据,他的系统在每次检测到公共汽车时都会从流中截取屏幕截图。这有助于未来的模型再训练和发现误报检测。 

此外,为了克服在本地存储 CSV 文件数据的限制,Edgar 选择使用Google IoT服务将数据存储在BigQuery中。正如他所指出的,将数据存储在云中“提供了一种更灵活、更可持续的解决方案,以适应未来的改进。”  

他使用收集到的信息创建了一个模型,该模型将使用 Vertex AI 回归服务预测下一班车何时到达。Edgar 建议观看下面的视频以了解如何设置模型。

随着工作模型的启动和运行,Edgar 需要一个界面来让他知道下一班车应该何时到达。他选择使用基于物联网的语音助手,而不是网站。他原本打算为此使用谷歌助手,但比预想的更具挑战性。他改用了Alexa Skill,这是亚马逊的语音助手工具。他创建了一个 Alexa Skill,它根据他公寓里的 Alexa 扬声器发出的命令查询相应的云功能。 

图 2. Edgar 模型的最终架构

虽然预测并不完美,但 Edgar 对未来的改进提出了一些想法,这些改进可能有助于提高预测公交车到达时间的准确性,包括公交路线沿线的交通拥堵数据。他还在考虑使用太阳能电池板为系统供电并使其自主化,并引入 DevOps 实践。 

Edgar 开发这个项目是为了学习和挑战自己。使用他的项目文档,其他开发人员可以复制——也许还可以改进——他的工作。最后,他希望这个公共汽车预测项目能够鼓励其他人追求他们的想法,“无论它们听起来多么疯狂、困难或不可能。”  

0 人点赞