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

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

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


相关内容


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


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


image.png

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

赛题分析

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


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


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


算法框架

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


初赛:特征工程+LGB


分车道目标检测

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


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


image.pngimage.gif


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

image.pngimage.gif

下式为距离计算公式:

image.pngimage.gif

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

image.gifimage.png

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

image.gifimage.png

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


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

image.pngimage.gif

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

image.png

image.gif

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


DenseNet

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

image.png

image.gif

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


复赛

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

  • 端到端分类网络;
  • 滑动窗口+数据扩充;
  • 数据增强;
  • 多模型融合。


数据分析与预处理

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

image.png

image.gif

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


数据扩充与增强

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


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

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

image.pngimage.gif


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

image.pngimage.gif

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


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


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


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


image.pngimage.gif


算法设计:时空特征提取

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


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


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


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


模型落地与展望

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


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


image.pngimage.gif

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

image.gif

相关文章
|
9天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
30 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
9天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
47 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
20天前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
21天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
25天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 数据采集 算法
如何在一夜之间成为模型微调大师?——从零开始的深度学习修炼之旅,让你的算法功力飙升!
【10月更文挑战第5天】在机器学习领域,预训练模型具有强大的泛化能力,但直接使用可能效果不佳,尤其在特定任务上。此时,模型微调显得尤为重要。本文通过图像分类任务,详细介绍如何利用PyTorch对ResNet-50模型进行微调,包括环境搭建、数据预处理、模型加载与训练等步骤,并提供完整Python代码。通过调整超参数和采用早停策略等技巧,可进一步优化模型性能。适合初学者快速上手模型微调。
97 8
|
1月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
28 4
|
1月前
|
数据采集 监控 安全
厂区地图导航制作:GIS技术与路径导航算法融合
在智能化、数字化时代,GIS技术为厂区的运营管理带来了革命性变化。本文探讨了如何利用GIS技术,通过数据采集、地图绘制、路径规划、位置定位和信息查询等功能,打造高效、精准的智能厂区地图导航系统,提升企业的竞争力和管理水平。
50 0
厂区地图导航制作:GIS技术与路径导航算法融合
|
1月前
|
算法 安全 Shell
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
94 1
|
1月前
|
边缘计算 安全 5G

热门文章

最新文章