当前位置: 首页 > news >正文

车道线检测之LaneNet

论文:Towards End-to-End Lane Detection: an Instance Segmentation Approach

Github:https://github.com/MaybeShewill-CV/lanenet-lane-detection?tab=readme-ov-file

论文提出一种车道线检测网络LaneNet,该网络以enet为主干网络结构,分别输出二分类结果(lane segmentation branch)和像素聚类结果(lane embedding branch),最终输出实例化的道路线分割结果。然后作者训练了一个H-Net,基于该网络可以得到不同图片的变换为鸟撖图的变换矩阵,得到鸟撖图后,基于3次曲线拟合就可以得到相应的车道线,从而得到坐标点,最后通过逆变换矩阵还原回原图,得到最终的车道线关键点坐标。该算法速度可以达到50fps,在tuSimple dataset数据集上取得了不错的结果。

主要贡献:

(1)提出一个多分支多任务的网络结构LaneNet将车道线检测问题转化为实例分割问题处理,该方法可以处理任意数量的车道线。分割分支输出像素级别的2分类结果,聚类分支则将不同车道线的像素区别开。

(2)提出一个获取不同透视变换参数的网络结构H-Net,相比于使用固定参数的鸟撖图变换,有助于使得车道线拟合过程更加鲁棒,同时解决了固定参数对于上下坡的点无法拟合的问题。

网络结构:

LaneNet以Enet作为主干网络结构,使用encoder-decoder的U型设计思路。网络输入图像大小为1*256*512*3。

传统的基于多目标分割的车道线方法,只能训练固定个数的车道线,难以做到自适应不同条数的车道线路面。为了解决这样的问题,论文提出了分割分支(lane segmentation branch),聚类分支(lane embedding branch)双分支输出的网络结构。其中分割分支输出2分类分类结果,车道线为前景,其余为背景。聚类分支负责将同一车道线的像素汇聚,不同车道线的像素拉开,输出聚类图。在实验中,该聚类数目为4,实际使用中,之需要修改该数目的个数,即可适用于不同车道数路面。分割分支的输出维度为1*256*512,聚类分支的输出维度为1*256*512*4。

得到分割分支和聚类分支的结果后,需要进行后处理操作,对分割结果进行几何形态学处理从而去除孔洞,对去除孔洞的图像进行连通域处理,得到不同的连通域,对不同连通域图像基于聚类分支结果进行赋值,然后基于dbsan聚类,得到最终的实例分割结果。

基于实例分割图,通过预先训练好的H-Net转化为鸟撖图,再基于曲线拟合得到车道线的曲线方程,从而得到像素点,将鸟撖图的像素点通过H-Net的逆变换矩阵还原到原图上,最终得到最终的车道线像素点。

binary segmentation:

标签制作过程中,将被车辆遮挡的车道线、看不见的或者褪色的车道线都进行了视觉延伸的标注。训练过程使用加权的交叉熵损失函数。

instance segmentation:

该分支训练过程使用了距离度量学习(distance metric learning),聚类的损失函数为Lvar和Ldist,Lvar负责将一个车道线内的像素距离拉近到距离中心点δv以内,Ldist负责将不同车道线的中心点推开到δd距离外。其中µc表示聚类的中心,Nc表示像素数目。

聚类过程通过dbsan迭代式进行,最终保证δd > 6δv。聚类过程首先使用均值漂移找到每个簇的中心点,然后将中心点附近2δ距离内的像素进行聚类。
 

CURVE FITTING USING H-NET:

H-Net生成的6自由度矩阵如上图所示。通过该自适应的矩阵,可以获得比固定矩阵更好的效果。

H-Net的损失函数,

H-Net网络结构,

实验结果:

总结:

  1. LaneNet可以解决任意车道实例分割的问题,运行速度快,达到50FPS。
  2. H-Net可以解决任意图像鸟撖图变换的问题
http://www.lryc.cn/news/321046.html

相关文章:

  • MySQL连接数不足导致服务异常GetConnectionTimeoutException
  • 软考76-上午题-【面向对象技术3-设计模式】-创建型设计模式01
  • Matlab 双目相机标定(内置函数)
  • 【博客7.4】缤果Qt5_TWS串口调试助手V2.0 (高级篇)
  • CSS案例-4.padding导航栏练习
  • 5.1.4.2、【AI技术新纪元:Spring AI解码】Llama2 Chat
  • 后台发送GET/POST方法
  • 计算机考研|双非一战135上岸,408经验分享+复盘
  • 低代码与数字化工具:重塑软件开发的新范式
  • 如何使用 ArcGIS Pro 生成TIN
  • 你真的会做抖音小店吗?你做抖店的方法是正确的吗?教学分享
  • ssh免密登陆更换目标主机后无法连接
  • Java获取视频封面图,利用FFmpegFrameGrabber获取视频封面图
  • pycharm @NotNull parameter ‘module‘ of ...
  • Python使用pynput模块后台监控鼠标及按键
  • C语言 扫雷游戏
  • HTML学习:图片格式——超链接
  • 工业级5g路由器使用案例(5g智慧安防解决方案)
  • sentinel熔断降级
  • Redis的安装和部署教程(Windows环境)
  • MNN Session::resize 之流水线编码(五)
  • 2. IS-IS 基础实验
  • Rust 并行库 crossbeam 的 Channel 示例
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级的理解
  • springcloud gateway
  • JAVA八股day1
  • 探索拓展坞的奥秘:提升电脑接口的无限可能
  • Linux中执行脚本报错(脚本乱码问题)
  • el-table按钮获取当前行元素
  • MySQL数据导入的方式介绍