城市骑行者的安全挑战
随着城市化进程的加快,越来越多的人选择自行车作为出行工具。然而,自行车骑行者在城市中面临着诸多挑战,如街道上的车辆、其他骑行者以及不完善的自行车道。近年来,骑行者和车辆的数量不断增加,使得城市规划者在设计城市区域时面临巨大挑战。这些挑战带来的后果包括:骑行事故数量的增加、骑行者在城市区域骑行时感到不舒适,以及驾驶员对道路上的骑行者感到不适。
计算机视觉在城市交通中的应用
利用计算机视觉技术,特别是物体检测技术,可以在街道上实现危险预测和避免的新机遇。本项目提出了一种低成本的原型危险监测应用程序,该程序能够检测汽车和自行车,并通过LED灯向骑行者发出警告。该原型由以下部分组成:用于不同危险状态的LED交通灯、连接到Raspberry Pi 4的LED灯、用于物体检测的摄像头、连接到充电宝的Raspberry Pi,以及连接到Google Coral TPU Stick以加速推理时间的Raspberry Pi。
数据预处理与收集
为了训练危险监测系统,使用了三个不同的数据集。所有数据集都包含汽车和自行车的标签作为边界框。第一个图像数据集是使用Raspberry Pi摄像头拍摄的,这些410张图像是通过在街上使用头盔应用程序收集的,代表了骑行者视角的真实生活数据,并使用LabelImg进行了标记。接下来的数据集包括从Google Open Images下载的6000张预标记的汽车和自行车图像。第三个数据集是Raspberry Pi摄像头数据集和Google Open Images数据集的混合。在数据收集过程中,Roboflow自动将图像分割成训练集、验证集和测试集。使用他们的数据集健康检查来显示每个标签的频率,并查找数据中的错误。还使用Roboflow对数据进行了预处理,包括调整图像大小。在训练过程中,Google Open Images数据集中的一个问题减缓了进度——许多边界框缺失或超出界限。Roboflow向展示了所有边界框坐标错误的图像,以便可以修复它们。一旦数据准备就绪,就将图像导出为TFRecords。使用Roboflow进行数据准备和生成TFRecords大大加快了项目进度。
模型与训练
使用了预训练的MobileNetSSD模型,因为该模型以其快速的推理时间和在嵌入式和低功耗应用中的使用而闻名。所有模型都使用相同的数据集进行训练,以比较它们之间的性能。在评估中,使用COCO评估板比较了模型之间的精度和召回率。训练完成后,将模型转换为TFlite文件,并与Coral Stick的Edge TPU一起编译。使用Python和OpenCV,每个检测到的物体都有一个边界框围绕它,并且有一个置信度级别描述模型对该预测的置信程度。LED交通灯根据危险的程度切换颜色。具体来说,每个物体的距离、大小和预测标签控制LED交通灯的逻辑。(例如,预测一个远离的汽车会将LED灯变为“绿色”,表示低危险,但预测一个更近的汽车会产生“黄色”,表示危险增加。)
在街上测试原型和结果
要使用这个应用程序,骑行者必须将LED交通灯固定在他们的手腕上。这使能够测试应用程序!在通过比较平均精度和召回率来评估模型时,适合Raspberry Pi摄像头数据集的模型表现最佳。像汽车这样的大型物体很容易被检测为危险;像自行车这样的小型物体则不太经常被检测到。多亏了Roboflow,数据预处理大大加快,使有更多的时间来构建目标检测应用程序。
原型仍然存在缺陷,主要是检测错误和功能不足。为了解决检测错误,将继续收集数据,特别是在模型目前表现不佳的小型物体(如自行车)上。还将探索额外的模型。在功能方面,随着Raspberry Pi等小型单板计算机在未来几个月和几年的稳步发展,将应用程序缩小到更小的尺寸并以低成本实现将变得可能。展望未来,希望看到危险监测在智能城市中得到应用——也许骑行者可以交换特定区域的危险状态等数据——以使城市和城市区域的生活更安全。