小言_互联网的博客

高德算法大赛冠军战队经验分享:端到端分类网络、多模型融合...

445人阅读  评论(0)

高德地图联合阿里云天池平台举办的AMAP-TECH算法大赛已经落幕。本次大赛以“基于车载视频图像的动态路况分析”为赛题,赛题来源于高德真实的业务场景。路况信息不仅影响用户选择出行路线、出行方式、预估到达的时间,对于交通管理部门和城市规划部门也有重要的价值。

相关内容

来自15个国家和地区的880支战队经过数轮激烈角逐后,五强战队杀入决赛。最终,1996年出生的北京邮电大学博士三年级学生朱奕达带领的“会飞的猪”战队夺得冠军。

我们将把五强战队的解题思路和方案分享给大家,本次要分享的是冠军战队的技术方案。

高德地图技术委员会主席聪云为获奖团队颁奖

赛题分析

本次大赛的赛题是通过车载摄像头拍摄的视频图像来对道路路况状态进行判断。评价指标为加权F1。初赛部分是一个三分类问题,包含拥挤,缓行,畅通三种道路路况。而到了复赛部分新增了封闭的道路路况。

赛题的难点在初赛部分中包括以下几点,前车遮挡视野内道路情况,从而影响对道路的判断;对向车道和路边车辆对行驶车道的影响;数据众包导致相机安装存在角度偏差,从而导致图像角度不一致。

复赛部分赛方进一步提高了难度,首先移除了GPS时间信息,此外封闭路况的增加使得图片中道路信息更加复杂,对模型的识别能力和鲁棒性有了更高的要求。

算法框架

首先,宏观介绍一下初赛与复赛的方案设计。

初赛:特征工程+LGB

分车道目标检测

初赛中使用的两种方案,第一种是基于分车道车辆目标检测结果进行特征工程后使用LGB模型分类,我们的目标检测使用的是Faster RCNN模型。

初赛时,确定了数据集之后,我们在数据处理部分做了两部分的工作,在初赛的是目标检测部分,针对前方车辆遮挡,对向车道和周边停车路况的难点,我们提出分车道车辆目标检测的思路,将道路车辆分成5个类别进行标注,分别是:当前车辆前方行驶车道车辆,同向行驶车道左侧车辆,同向行驶车道右侧车辆,对向车道行驶车辆,街边侧向停车车辆。通过这样的标注对当前道路环境的车辆进行细致区分,后续将通过目标检测结果提取不同车道的车辆信息特征。

我们基于目标检测模型结果提取了60维特征,其中包含GPS时间特征,key_frame中不同行驶车道车辆数目,面积,距离等特征,不同帧之间的检测框动态特征比如车辆相似度匹配,数目,面积变化等特征。下式为检测框中心点计算方式:

下式为距离计算公式:

对于动态特征,我们还分车道人为设计了两个加权算式:

box数量与时间间隔关系:数量增加(变化率为正)分数降低,数量减少(变化率为负)分数增加

box大小变化与时间间隔关系:大小增加(变化率为正)分数降低,大小减少(变化率为负)分数增加。

最后,在LGB分类模型中引入Focal Loss损失函数处理样本不平衡问题,这个方案在初赛A榜中取得了第6名的成绩。

在切换到初赛B榜时,GPS时间特征出现了和A榜特征分布不一致的问题,这使得很多团队都翻车了,我们一开始考虑到这个问题时,下图为我们利用violin对A/B榜的GPS特征与目标检测框特征的分布对比。

同时,也训练了只利用车辆相关特征的LGB模型,这个模型在B榜上的分数为0.6108。我们可以看到基于目标检测和特征工程的方案在A/B榜上差距很大。

DenseNet

我们当初在设计解决方案时,考虑到道路情况不止和车辆信息有关,还和道路及场景相关,考虑到基于分车道目标检测模型只对图像中的车道信息进行提取,而忽略了图片中的其他场景细节。并且目标检测模型本身存在一些误差,将目标检测结果特征再训练一个LGB模型可能会对误差进行传递,我们将思路转移到基于端到端分类模型的方案,我们的想法是训练一个考虑图片中全局信息的序列检测模型。

我们的图片输入窗口大小是3,采用基于DenseNet121先对每张图片提取全局特征后,将图片特征按照时间顺序输入到GRU模型中得到最后的分类结果,在初赛中B榜上我们并没有使用数据增强的方法,最后取得了第一名的成绩0.6614。

复赛

我们团队的方案亮点在以下几点:

  • 端到端分类网络;

  • 滑动窗口+数据扩充;

  • 数据增强;

  • 多模型融合。


数据分析与预处理

首先,我们先将构建线下训练集和验证集,构建合理的验证集更容易使我们在线下对模型进行完善。赛方给出的数据中包含一些重复采样的视频序列(如:id:1540 与 1761),因此我们使用Hash编码对重复的图片进行检测,过滤掉重复的图片序列

我们发现大部分重复的序列都是封闭类型的图片,而封闭类型本身在F1评价指标中占据很大的权重。如果不对这些重复采样的视频序列去重,很容易使得线下存在数据泄露导致线上线下分数差距很大。我们将去重的数据按照4:1的比例在线下构建交叉训练的数据集。

数据扩充与增强

赛题方在给出的复赛训练数据中不同类别的图像序列存在数据不均衡的问题,缓行只有100多个序列,而封闭路段有2000多个序列。针对类别数量的差异性,我们对缓行和拥堵类别做了数据扩充。因为我们是对序列建模,每个序列的原始观测包含3到5张图片,我们按照采样顺序选择3张图片作为之后模型的输入。这样的选择可以带来的好处:

  1. 我们对齐了模型的输入,保证了每个样本都是可用的。

  2. 在缺少了GPS时间信息后,我们并不知道每两帧图片之间的时间差,从5张图片中随机选择3张能够最大限度丰富道路随时间变化的情况。

直接将原始序列图片输入到模型中,很容易过拟合。为了提高数据的多样性,在复赛时我们上了数据增强的方法,首先要说明的是因为我们的图像是从视频序列采样得到的,所以在对同一个序列中的图片,我们对每一帧图像都做了相同的数据变化,保证序列图片所处的相对环境是一致的。这样的话在使用序列模型时,使其输入更符合实际情况。

  • 针对相机安装存在角度偏差的问题,我们使用了平移,尺度加旋转变换的数据增强方法。

  • 考虑到视频在采集时包含了一天中的不同时间节点,光照强度和天气条件也对我们的图片造成了较大的影响, 我们加入了对比度,亮度和颜色增强的方法尽可能贴合实际数据。

  • 从赛方给的数据中我们发现图片的清晰度和质量在不同序列之间存在差异,为此我们引入了运动模糊,中值滤波,高斯滤波,高斯模糊等方法进行数据增强。

  • 此外图像中还存在一些脱敏信息,比如马赛克或者黑色条,我们也引入了一些cutof操作,减少模型对图像特定部分的依赖。


算法设计:时空特征提取

在复赛中,赛题发生了变化,新增了封闭这个类别后,基于特征的方案中需要根据障碍物标注进一步提高目标检测模型的鲁棒性,而实际障碍物标注数据质量并不高,在当时尝试建模后发现效果并不如意。

为了减少误差的传递并考虑图片中更多的信息,我们将优化目标放在了端到端序列检测模型上,提取了不同frame的特征后,我们使用特征融合模块挖掘图片序列之间的时序特征关系。

在特征融合模块中我们仍然使用双向GRU模型挖掘时间序列特征。首先将backbone替换成resnest101和SE_ResNext,在空间特征挖掘中,使用了位置注意力模块和通道注意力模块的双注意力网络。通道注意力模块校准序列图片中的特征图通道之间的关系,位置注意力模块对特征图中不同position进行关系强度的计算,从而挖掘序列图片中的局部关系变化和全局关系变化。

对于端到端序列分类模型,我们采用了之前所说的数据增强和样本扩充的方法后进行5折交叉验证的训练。最后选择了5个模型进行基于概率的融合。我们的方案最后在B榜上得到了第二名的成绩0.7237,比第一名低了万分之9个点。

模型落地与展望

在实际场景下,不仅仅有图片序列信息,还有道路等级数据,GPS时间,POI点等信息,我们的模型具备较强的扩展性,可以将这些路网和时间信息通过embedding等方式处理成相应的特征融合到我们的模型中,更丰富的感知源丰富了我们的时空信息特征空间。

除此之外,我们可以不断优化障碍物和车辆目标检测模型识别精度,从而制定更多的约束规则进行前处理和后处理的规则约束。

在模型落地时,可以通过模型蒸馏、优化加速等方式将模型下放到边缘节点进行分布式计算。交通路况状态在局部区域是互相影响的,所以我们还可以根据路网信息对城市进行栅格化处理,将众包得到的数据分栅格进行管理,这样我们可以得到该路段信息的临近路况辅助修正模型结果。


转载:https://blog.csdn.net/amap_tech/article/details/113533015
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场