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

简介: 高德地图联合阿里云天池平台举办的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

相关文章
|
27天前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
50 0
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
232 1
|
17天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
32 0
|
15天前
|
机器学习/深度学习 自然语言处理 算法
|
1天前
|
存储 安全 算法
构筑网络堡垒:洞悉网络安全漏洞与加密技术的融合之道
【4月更文挑战第25天】在数字时代的浪潮中,网络安全已成为维护信息完整性、确保数据流通安全的关键。本文深入探讨了网络安全领域内常见的安全漏洞及其成因,并分析了现代加密技术如何作为防御工具来弥补这些漏洞。同时,文章还强调了培养全民网络安全意识的重要性,以及通过教育与实践相结合的方式来提升整体社会的网络安全防护能力。
|
3天前
|
安全 JavaScript 前端开发
第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题—B模块安全事件响应/网络安全数据取证/应用安全
该内容描述了一次网络安全演练,包括七个部分:Linux渗透提权、内存取证、页面信息发现、数字取证调查、网络安全应急响应、Python代码分析和逆向分析。参与者需在模拟环境中收集Flag值,涉及任务如获取服务器信息、提权、解析内存片段、分析网络数据包、处理代码漏洞、解码逆向操作等。每个部分都列出了若干具体任务,要求提取或生成特定信息作为Flag提交。
5 0
|
3天前
|
安全 测试技术 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C安全事件响应/网络安全数据取证/应用安全
B模块涵盖安全事件响应和应用安全,包括Windows渗透测试、页面信息发现、Linux系统提权及网络安全应急响应。在Windows渗透测试中,涉及系统服务扫描、DNS信息提取、管理员密码、.docx文件名及内容、图片中单词等Flag值。页面信息发现任务包括服务器端口、主页Flag、脚本信息、登录成功信息等。Linux系统渗透需收集SSH端口号、主机名、内核版本,并实现提权获取root目录内容和密码。网络安全应急响应涉及删除后门用户、找出ssh后门时间、恢复环境变量文件、识别修改的bin文件格式及定位挖矿病毒钱包地址。
9 0
|
3天前
|
安全 Linux 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B
网络安全模块A,涉及Windows和Linux服务器的安全加固。任务包括:设置强密码和登录策略,如账户锁定和最小密码长度;禁止未加密密码传输和来宾账户访问;关闭系统时清除内存页面文件,禁止无登录关机,限制驱动器访问;确保流量完整性,如SSL访问和SSH证书登录;事件监控,如应用日志存档;服务加固,如SSH禁止root远程登录,VSFTPD超时设置,IIS防止文件枚举和关闭WebDAV;以及防火墙策略,如限制DNS转发,禁止ping,禁用端口和MAC地址,限制IP碎片和SSH连接。所有更改需截图并按指定格式保存提交。
6 0
|
3天前
|
安全 Linux 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A-CTF攻击与防御
模块C和D是CTF夺旗比赛,分别聚焦攻击和防御。攻击者需利用各种漏洞(如命令注入、文件上传、远程代码执行等)攻陷靶机,获取权限,但禁止攻击裁判服务器。防御者则需检测并加固堡垒服务器,确保服务可用性,发现并修补同样类型的漏洞。比赛分数依据靶机的flag值和加固报告,强调不提供补时。操作环境涉及Windows和Linux,选手需使用谷歌浏览器登录。注意提交清晰的截图和PDF报告至U盘。
6 0
|
3天前
|
安全 测试技术 Linux
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A模块安全事件响应/网络安全数据取证/应用安全
该内容描述了一个网络安全挑战,涉及Windows和Linux系统的渗透测试以及隐藏信息探索和内存取证。挑战包括使用Kali Linux对Windows Server进行服务扫描、DNS信息提取、密码获取、文件名和内容查找等。对于Linux系统,任务包括收集服务器信息、提权并查找特定文件内容和密码。此外,还有对Server2007网站的多步骤渗透,寻找登录界面和页面中的隐藏FLAG。最后,需要通过FTP获取win20230306服务器的内存片段,从中提取密码、地址、主机名、挖矿程序信息和浏览器搜索关键词。
6 0