一种基于深度学习的方法来检测摩托车头盔的使用

背景

据统计使用摩托车头盔可以将道路交通事故中摩托车驾驶员致命伤害的可能性降低42%,尽管如此,遵守摩托车头盔还是较少,尤其是在发展中国家,为了有效开展针对性的头盔使用运动,政府必须收集有关头盔法律遵守程度的详细数据。但40%的国家尚未估算出这一关键的道路安全指标。

而且即使有数据可用,头盔使用的观察也常常受到样本量和区域范围的限制,是从相对较短的时间框架中得出的数据,或仅在学术研究范围内单独收集。缺乏全面连续数据的主要原因在于头盔使用数据收集的普遍方式,该方法利用人类观察员对交通中摩托车头盔使用情况的直接观察。在路边调查中进行这种直接观察会占用大量资源,因为它既费时又费钱。尽管使用摄像机可以进行间接观察,从而减轻了直接观察的时间压力,但通过人类观察者使用头盔进行的分类限制了可以处理的数据量。

鉴于此,对开发可靠且及时有效的智能系统的需求不断增长,该系统可检测不依赖人类观察者的摩托车骑手的头盔使用情况。实现这种自动检测摩托车头盔使用情况的有前途的方法是机器学习。机器学习已应用于许多与道路安全相关的检测任务,并已实现了对行人,自行车,摩托车和汽车的常规检测的高精度。

尽管自动摩托车头盔使用检测的首批实施前景广阔,但尚未充分发挥其潜力。当前的方法依赖于数据集,这些数据集仅限于观察到的骑手总数,在少数观察点接受训练或无法检测到骑手在摩托车上的位置。在本文中,提出了一种基于深度学习的自动头盔使用检测,该检测依赖于在一天的不同时间从多个观察点提取的,观察到的骑手数量差异较大的综合数据集。

数据集的创建和注释

  • 数据收集与预处理

作者从缅甸7个城市的13个观察点获得254小时的源视频,并从中采样了1,000个视频剪辑(每个10秒/ 100帧)以作进一步注释

一种基于深度学习的方法来检测摩托车头盔的使用_第1张图片

选择缅甸作为收集算法开发资料的基础,因为缅甸的道路使用者聚集和快速机动化是世界上发展中国家的代表,摩托车骑行者占缅甸道路使用者的80%以上,并且近年来摩托车的数量一直在迅速增加。

在整个缅甸,交通都是用两台分辨率为1920 × 1080像素,帧率为每秒10帧的摄像机拍摄的。在七个城市中,将摄像机放置在高度约2.5 m的多个观察点,并从上午6点至下午6:30连续两天记录了流量(表 1)。由于曼德勒市是缅甸摩托车骑行人数最多的城市,因此在这里安装了两台摄像机,历时7天。仰光是缅甸最大的城市,它在市中心积极禁止摩托车行驶,因此,在这里的郊区放置了一个摄像头。由于摄像机的技术问题以及到达选定观察点的问题,因此每个观察点记录的小时数都不相同。在由于多云的天气或雨水而删除了模糊的视频之后,可以使用254个小时的视频数据作为本研究的原始资料。视频数据被分成10秒的视频剪辑(每个100帧),这构成了训练,验证和测试该算法的基础。表1显示了每个观察点可获得的视频数据的持续时间 。观测地点代表高度多样化的数据集,包括多车道高交通密度的道路环境(例如,曼德勒)以及更多的农村环境(例如,Pathein)。观察点的静止帧如图所示

一种基于深度学习的方法来检测摩托车头盔的使用_第2张图片

一种基于深度学习的方法来检测摩托车头盔的使用_第3张图片

  • 对视频片段进行采样

由于没有足够的资源来注释所有254小时的已记录流量,因此采样了1000个视频片段,这些视频片段最能代表源材料。将原始资料分割成10秒长(100帧)的非重叠视频片段后,我们将对象检测算法YOLO9000 (Redmon和Farhadi,2017年)应用了预先训练的权重,以检测每帧中的摩托车数量,提取其中包含最多摩托车的片段。

与每个站点的可用视频数据成比例,从每个观测站点采样了多个剪辑。表1中显示了1,000个采样的视频剪辑的结果分布 。观察站Pathein_urban(47个视频剪辑)被追溯排除在分析之外,原因是在摄像机初次筛选视频数据期间未检测到相机上的大量雾气(第2.1节)。此外,由于YOLO9000算法(Redmon和Farhadi,2017年)已识别出停放的摩托车,因此不包含43个视频剪辑,因为它们不包含活动的摩托车。

  • 注释

可视数据是通过先绘制围绕个人的摩托车及其骑手(所谓的一个矩形框标注的边框),进入上乘客的数量,他们使用头盔和位置信息之前。在多个框架中包含单个摩托车的所有包围盒形成摩托车轨道,即单个摩托车将出现在多个框架中,但只有一个摩托车轨道。为了方便视频的注释,我们测试并比较了三种图像和视频注释工具BeaverDam (Shen,2016),LabelMe (Russell 等人,2008)和VATIC (Vondrick)等。,2013)。我们选择BeaverDam进行数据注释,因为它允许在视频中逐帧标记,易于安装且具有出色的可用性。注释由两名自由工作者进行。图 2给出了通过多个框架(摩托车轨道) 注释单个摩托车的示例。

一种基于深度学习的方法来检测摩托车头盔的使用_第4张图片

对于每个边界框,工作人员对骑手的数量(1至5),头盔使用情况(是/否)和位置(驾驶员(D),乘客(P0-3);图3)进行编码 。骑手编码的示例在图3中显示

一种基于深度学习的方法来检测摩托车头盔的使用_第5张图片

表中将910个带批注的视频剪辑根据各个观察点随机分为训练集,验证集和测试集,拆分率为70%,10%和20%

一种基于深度学习的方法来检测摩托车头盔的使用_第6张图片

  • 带注释数据的组成

910个带批注的视频剪辑被随机分为三个不重叠的子集:

一个训练集(70%),一个验证集(10%)和一个测试集(20%)(表2)。

表3中列出了所有910个视频剪辑中带注释的摩托车数量的数据。

总共标注了10,180个摩托车轨道(即单个摩托车)。

由于每个单独的摩托车都显示在多个框架中,因此在框架级别上有339,784个带注释的摩托车,即,数据集中有339,784个包含摩托车的边界框。根据骑手的位置和头盔使用情况,所有摩托车均按类别进行编码。这产生了36个类,如表3所示。每类摩托车的数量不平衡,范围从仅观察到的12个车架(例如,对于有5个没有头盔的骑手的摩托车)到140,886个观察到的车架(一个戴着头盔的驾驶员)。带注释的视频剪辑中未观察到某些类别,例如,没有4名骑手全部戴着头盔的摩托车。

头盔使用检测算法

  • 方法

数据集的创建完成后,我们将最新的对象检测算法应用于带注释的数据,以方便在框架级别检测摩托车头盔的使用。在此过程中,训练集中的数据用于训练对象检测算法。在训练过程中,将验证集用于找到最佳的泛化模型,然后再根据算法之前未见的数据(即所谓的测试集)对算法预测头盔使用的准确性进行测试。

通常,最新的对象检测算法可以分为两种类型:两阶段方法和单阶段方法。两阶段方法首先确定图像中可能放置对象的许多潜在位置。第二步,使用对象分类器(使用卷积神经网络)来识别这些位置的对象。而两阶段方法(例如Fast R-CNN)

Girshick(2015)达到的精度比单阶段方法更高,它们非常耗时。

相反,单阶段方法同时进行对象定位和对象识别。YOLO Redmon和Farhadi(2017)和RetinaNet Lin 等人的单阶段方法。(2018)因此比两阶段方法要快得多,尽管在准确性上有一个小的权衡取舍。在本文中,我们使用了RetinaNet Lin 等。(2018年)用于我们的头盔使用检测任务。尽管它是单阶段方法,但它使用多尺度特征金字塔和焦点损失来解决单阶段检测器精度的一般限制。

下图表示RetinaNet的框架,首先将给定图像输入到主干卷积神经网络中以生成多尺度特征图,从中生成多尺度特征金字塔。在金字塔的每个级别中,都有两个子网。一种用于从锚定框回归到真实的对象框,另一种用于分类锚定框。在跨多尺度特征金字塔进行非最大抑制(NMS)之后,RetinaNet得出检测结果。

一种基于深度学习的方法来检测摩托车头盔的使用_第7张图片

  • 训练

由于检测摩托车骑士头盔使用情况的任务是经典的对象检测任务,因此我们对RetinaNet进行了微调,而不是从头开始进行培训。即,我们使用RetinaNet模型https://github.com/fizyr/keras-retinanet,该模型已经受过一般物体检测的培训,并对其进行了微调,以专门检测摩托车,骑手和头盔。

在我们的实验中,我们使用ResNet50 (He et al。,2016)

作为骨干网,使用ImageNet的预训练权重进行初始化等。

骨干网为卷积神经网络提供了特定的架构。

在学习过程中,我们使用亚当优化器Kingma和Ba(2014),学习率为α = 0.00001,批次大小为4,并在加权平均平均精度(加权mAP,如下所述)中停止训练。验证集由于2的耐心而停止了改进。为了评估算法的准确性,我们使用Everingham 等人的平均精度(AP)值。(2010)。该AP集成多个变量以产生对象检测任务中算法准确性的度量,包括并集, 精度和召回率的交集。并集上的交集描述了算法生成的和人工注释的边界框之间的位置关系。算法生成的边界框必须与人工注释的边界框至少重叠50%,否则会将其注册为错误检测。该精密礼物通过算法所做的所有检测的正确检测的次数(精密 = 真阳性真阳性+假阳性%)。该召回多少可用的正确的实例是由算法检测可变措施(召回 = 真阳性真阳性+假阴性%)。有关AP的更详细说明,请参见Everingham 等。(2010年)以及Salton和McGill(1983年)。由于我们的数据集中每个类别的帧数非常不平衡(表3),因此所有类别的最终性能都将按每个类别的AP加权平均值来计算,定义为:

一种基于深度学习的方法来检测摩托车头盔的使用_第8张图片

其中所有C类的权重w i的总和为1,并设置为与实例数成比例。图 5显示了训练损失,验证损失和加权mAP

在学习过程中的训练和验证集中。可以观察到训练损失不断减少,即预测误差越来越小,而深度模型从训练集中学习了有关头盔使用检测的有用知识。因此,训练集的加权mAP不断增加。同时,验证损失(即验证集上的预测误差)在前9个时期变得越来越小。相应地,验证集在前几个时期内增加,然后在9个时期后停止改善,这意味着算法开始对训练集过度拟合。因此,我们停止训练并在9个时期后选择了最佳模型,在验证集上获得了72.8%的加权mAP。

一种基于深度学习的方法来检测摩托车头盔的使用_第9张图片

a

一种基于深度学习的方法来检测摩托车头盔的使用_第10张图片

b

RetinaNet用于头盔使用检测的学习过程。(a)训练和验证损失,(b)训练和验证集的加权mAP。在9个星期后,该算法在验证集上获得了72.8%。

结果

在文中,作者使用在验证集上开发的最佳模型(在该模型中获得了72.8%的加权mAP)报告了该算法在测试集上的头盔使用检测结果。

我们在测试集上获得了72.3%的加权mAP,处理速度为14帧/秒。表中显示了每个类别的AP 。可以观察到,由于培训实例数量很少,RetinaNet在普通课程上效果很好,但在代表性不足的课程上效果不佳。仅考虑普通班(最多两名骑手),我们训练有素的RetinaNet的加权平均mAP达到76.4%。考虑到许多因素,例如遮挡,摄像机角度和不同的观察点,这个识别性能还是非常不错的。

一种基于深度学习的方法来检测摩托车头盔的使用_第11张图片

一种基于深度学习的方法来检测摩托车头盔的使用_第12张图片

一种基于深度学习的方法来检测摩托车头盔的使用_第13张图片

带注释的数据的组成。在框架级别上注释了339,784辆摩托车。最后一列显示了通用头盔使用检测精度(mAP =平均平均精度)

下图使用RetinaNet对采样帧进行头盔使用检测的结果。边界框颜色对应于不同的预测类别

一种基于深度学习的方法来检测摩托车头盔的使用_第14张图片

一种基于深度学习的方法来检测摩托车头盔的使用_第15张图片

结论

改善基于机器学习的摩托车头盔使用检测的软件方面的性能,首先有必要在代表性不足的类中收集更多数据,以提高具有两个以上骑手的摩托车的骑手,位置和头盔检测的准确性。其次,应收集有关摄像机角度的各种视频数据。这样可以防止由于具有异常摄像机角度的摄像机设置中的漏检而导致的检测错误。第三,似乎有希望在现有方法中增加一种简单的摩托车跟踪方法。跟踪将允许在多个后续帧中识别单个摩托车。通过对单个摩托车框架进行基于框架的质量评估以及跟踪,可以使算法为头盔使用和骑手位置检测选择最合适的框架,从而提高整体检测精度。

论文源码下载地址:关注“图像算法”微信公众号 回复“头盔检测”

你可能感兴趣的:(图像算法)