LaneAF | 利用Affinity Field聚类进行车道线实例分割

article/2025/10/1 15:33:16

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达


论文:https://arxiv.org/abs/2103.12040

开源代码:https://github.com/sel118/LaneAF


0

动机

车道线检测对于辅助驾驶、自动驾驶至关重要。全球范围内多种多样的车道线以及复杂的道路场景均对车道线检测算法提出了很大的挑战。

使用逐像素二分类的方法是检测车道线的主流方法,然而,二分类的输出结果并不能将不同的车道线分开;虽然有一些聚类或者实例分割的方法能够区分不同的车道线,但是它们都有最大车道线检测数量的限制。上述原因阻碍了车道线检测算法的落地。

作者提出了LaneAF算法,该方法利用Affinity Field结合二分类分割的方法进行车道线检测和实例分割,该方法性能好,且能检测数量变化的车道线。

01

算法结构

网络整体结构如下图所示:

使用DLA-34作为Backbone,网络输出二值的分割结果、Vertical Affinity Field(VAF)和Horizontal Affinity Field(HAF)。

使用HAF、VAF,结合二值分割结果,能够在后处理中对任意数量的车道线进行聚类,得到多个车道线实例。


02

Affinity Field

给定图像中的每个位置 ,HAF和VAF为每个位置分配一个向量,将HAF记作 ,将VAF记作

2.1 如何构建Affinity Field

使用ground truth构建HAF和VAF,将ground truth到HAF和VAF的映射函数分别记作

对于图像第 行中车道线 所包含的每个点 ,HAF由下式得到:

上式中的 表示第 行中属于车道线 的所有点的横坐标平均值。求解HAF的过程如下图所示:

上图中绿色框表示属于车道线 的点,蓝色框表示属于车道线 的点。箭头表示某个位置处HAF中的向量。

对于图像第 行中属于车道线 的每个点 ,VAF由下式得到:

上式中的 表示第 行中属于车道线 的所有点的横坐标平均值。求解VAF的过程如下图所示:

需要注意的是,VAF中每行的向量指向上一行中属于该车道线实例的点的平均位置。

2.2 推理时利用Affinity Field聚类

当网络训练完成后,在推理时利用HAF和VAF、结合二值分割结果进行聚类以得到车道线实例。

推理时的聚类流程如下图所示:

表示HAF的预测结果,对于第 行,上图中 的计算公式如下:

上式中的 分别表示索引为 的聚类中心, 表示像素点 属于哪个聚类中心。

上式表示的含义如下图所示:

上图中红色框内的点属于同一聚类。

上述算法流程图中 的计算公式为:

用来衡量车道线 与聚类中心 的距离,公式如下:

上式中的 表示网络预测的VAF, 表示属于该聚类中心的点的数量。

上式可以用下图表示:

算法流程图中的 表示与车道线 匹配的聚类中心,即:


03

损失函数

对于二值分割分支,使用带权重的二值交叉熵损失函数,权重用来解决前景和背景的类别不均衡问题,损失函数表示如下:

上式中的 表示真值, 为网络输出的结果,该值通过sigmoid函数进行归一化, 为用于平衡类别的权重。

对于分割分支,还使用了IoU损失,表示如下:

对于affinity field分支,使用L1损失函数进行回归,表示如下:

综上,整体的损失函数表示为:

04

实验结果

在具体实现时,将交叉熵损失函数中的权重 设置为9.6。LaneAF在TuSimple数据集上的测试结果如下表所示:

LaneAF在CULane数据集上的测试结果如下表所示:

在推理时,HAF和VAF的表示如下图所示:

上图中不同的颜色表示不同的车道线实例,从上图中可以看出,即使是远处相邻很近的车道线实例,也能够通过Affinity Field聚类的方法分开。

可视化的车道线检测结果如下图所示:



05

总结


这篇论文提出了LaneAF车道线检测方法,该方法在传统二值语义分割的基础上结合了Affinity Field,通过聚类实现了任意数量的车道线实例分割;通过实验证明,LaneAF具有很好的性能。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  


http://chatgpt.dhexx.cn/article/aWsccaWH.shtml

相关文章

机器学习 --- 聚类性能评估指标

第1关:外部指标 任务描述 本关任务:填写 python 代码,完成 calc_JC 函数、calc_FM 函数和 calc_Rand 函数分别实现计算 JC系数、FM 指数 和 Rand 指数 。 相关知识 为了完成本关任务,你需要掌握: JC 系数; FM 指数&…

如何用 DBSCAN 聚类算法做数据分析?

DBSCAN属于无监督学习算法,无监督算法的内涵是观察无标签数据集自动发现隐藏结构和层次,在无标签数据中寻找隐藏规律。 聚类模型在数据分析当中的应用:既可以作为一个单独过程,用于寻找数据内在规律,也可以作为分类等…

激光点云的物体聚类

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 文章导读 本文针对自动驾驶中三维点云的道路目标聚类进行讲解,从聚类算法的原理出发,介绍几种常用的点云障碍物聚类算法,并对比分析算…

K-means聚类算法

实训目标 本实训项目介绍无监督学习中,使用最广泛的 K-means 聚类算法。 先修知识 本实训项目假设,你已经掌握了初步的 Python 程序设计的基础知识。学习者若有一些 numpy 的使用经验,则可更快速地通过实训。 实训知识点 欧几里得距离 估算簇…

一文详解激光点云的物体聚类

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 文章导读 本文针对自动驾驶中三维点云的道路目标聚类进行讲解,从聚类算法的原理出发,介绍几种常用的点云障碍物聚类算法,并对比分析算法的优劣和适用场景,从工程…

[计算机毕业设计]模糊聚类算法

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

51nod-1548:欧姆诺姆和糖果

1548 欧姆诺姆和糖果 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 一天,欧姆诺诺姆来到了朋友家里,他发现了许多糖果。有蓝色和红色两种。他知道每颗…

android自动导入包快捷键,Android studio 自动导入(全部)包 import

http://blog.csdn.net/buaaroid/article/details/44979629 1 Android studio 只有import单个包的快捷键:Alt+Enter。没有Eclipse下的快速导入包的快捷键Ctrl+Shift+O。 2 但Android studio设置里有一项Auto Import自动导入功能。设置过程如下: Android studio --> File--&…

舍友打一把游戏的时间,我实现了一个selenium自动化测试并把数据保存到MySQL

文章目录 前言最终效果开发环境selenium元素定位方法页面分析思路分析实现步骤运行结果以下是全部代码 前言 很久没有玩selenium自动化测试了,近日在学习中都是在忙于学习新的知识点,所以呢今天就来写个selenium自动化测试的案例吧。有没有人疑惑&#…

51nod P1381 硬币游戏【数学】

题目 思路 比较简单. 参考代码 #include<iostream> #include<cstdio> using namespace std; int T,n; int main() {scanf("%d",&T);while(T--){scanf("%d",&n);printf("%d\n",2*n);}return 0; }

51nod3061 车

题目 题目链接 解题思路 提一种不需要生成树的解法。 我们将询问挂到点上&#xff0c;使用启发式合并的并查集。当询问的两边合并到一起时&#xff0c;我们就得到了答案。 整体复杂度 O ( n l o g 2 n ) O(nlog_2n) O(nlog2​n)。 代码 #include <cstdio> #include &…

51nod 1279 扔盘子

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279 题目: 有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。 盘子有几种命运:1、掉到…

51nod 1352:集合计数

1352 集合计数 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 20 难度&#xff1a;3级算法题 收藏 关注 给出N个固定集合{1&#xff0c;N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足&#xff1a;第一个元素是A的倍数且第二个元素是B的倍数…

51nod 1266 蚂蚁

题目链接&#xff1a;https://www.51nod.com/onlineJudge/questionCode.html#!problemId1266 题目&#xff1a; n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细&#xff0c;两只蚂蚁相遇时&#xff0c;它们不能交错通过&#xff…

51nod3155 跳房子

3155 跳房子 小华正在和她的小伙伴玩跳房子游戏。这是一个加强版的跳房子&#xff0c;每一行的格子数量可能超过 2 个。 这个游戏需要在地面上画了n排格子&#xff0c;其中第i排包含a[i]个格子。&#xff08;保证两端的这两排仅有一个格子&#xff09; 之后规定两端的这两个格…

Pycharm中用Appium框架编写第一个自动化脚本

一.环境依赖 Node.js appium python jdk Android SDK Appium-Python-Client Appium-doctor 二.环境搭建 提醒&#xff1a;安装路径如果要自定义的话尽量不要出现中文&#xff0c;不然很容易出现各种报错&#xff01; cmd尽量用管理员身份运行 1.Node.js 下载地址&am…

软件行为(五)之数据存储

笔者愚见&#xff1a;数据的存储方式是软件行为中的重中之重。 存储数据大约有4个地方&#xff1a;寄存器、高速缓存、内存及硬盘等。其中cpu对数据的访问速度也是依次降低&#xff0c;如下图 上图从上到下也是cpu访问数据的顺序&#xff0c;CPU的数据去寄存区去拿&#xff0c…

探究业界云存储平台(1):开源的软件定义存储—CoprHD

在接下来的两章中&#xff0c;我将分别为大家介绍与分析三款软件定义存储解决方案&#xff1a;CoprHD、Ceph与ScaleIO&#xff0c;并对后两者进行性能比较分析。 一、开源的软件定义存储—CoprHD 了解开源的CoprHD&#xff08;CoprHD&#xff09;&#xff0c;需要先了解EMC V…

软件定义存储2.0,谁领风骚?

关注我们牛年牛气冲天 中国的软件定义存储&#xff08;SDS&#xff09;市场就像是早上八九点钟的太阳&#xff0c;那样耀眼&#xff0c;生机勃勃&#xff0c;富有朝气。IDC的报告显示&#xff0c;2020年全年&#xff0c;中国SDS市场规模同比增长51.7%&#xff0c;相比2019年&am…

软件定义存储

在一个生成的数据和数据种类都空前大量的时代&#xff0c;软件定义的存储赋予了企业有效应对此爆炸式增长的途径。 当然&#xff0c;随着营销机器在过去几年的大肆渲染&#xff0c;我们越来越难以了解软件定义的存储的确切含义。因此&#xff0c;为了更好地了解软件定义的存储可…