《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》翻译

本文主要是介绍《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《车道线检测的关键点预测和点实例分割方法-PINet》

  • 一、摘要
    • 1、体系结构
    • 2、方法概述
    • 3、方法优点
  • 二、研究现状
  • 三、实现方法
    • 1、车道线点实例网络
    • 2、后处理方法
  • 四、实验结果
    • 1、评价标准
    • 2、实验

一、摘要

1、体系结构

包含共享的特征提取层和多个分支,用于检测和嵌入到车道线集群中。

2、方法概述

该方法能在车道线上生成精确的点,针对这些点,将聚类问题投射为点云实例分割问题。

3、方法优点

(1)该方法利用深度神经网络,能检测任意数量的车道线,
(2)错误率更低。
(3)轻量模型,生成点的数量比原始图片像素点少得多。
(4)消除离群值

二、研究现状

大部分传统的的车道线检测方法首先提取低级特征,手工标注出颜色,边缘信息等。这些低级特征通过霍夫变换和卡尔曼滤波连结起来,利用这些联合特征就可以将车道线分割出来。这些方法简单,且不用做大的修改就能适应不同的环境,但是会极度依赖光照、遮挡等条件。

深度学习在应对复杂环境时表现很好。在诸多的深度学习方法中,深度神经网络(CNN)专一用于计算机视觉领域。近期有许多研究运用CNN来做特征提取。语义分割方法经常应用于车道检测问题,以推断车道的形状和位置. 这些方法可以区分整个图像上的像素的实例和标签。由于它们采用多类方法来区分每个车道,因此只能将它们应用于包含固定数量的车道的场景。Neven et al.将该问题转化为实例分割。他们提出了LaneNet模型,该模型包含1个用于特征提取的编码器,2个解码器。其中一个解码器用于灰度图的车道线提取,另一个嵌入分支用于实例分割。由于LaneNet模型应用了实例分割方法,因此可以检测任意数量的车道线。Chen et al提出了一种网络,在每个车道线上,给定y坐标值可以直接预测出对应的x坐标值,但是该方法只能预测垂直的车道线。

我们提出的模型能预测比输入图像尺寸更小的车道线的精确点,并能分辨出每个实例的每一个像素。沙漏网络通常用于区域关键点估计,例如姿态估计和物体检测.沙漏网络模型通过先下采样再上采样,可以提取不同尺寸的目标信息。如果将一些沙漏网络堆叠在一起,则损失函数可以应用于每个堆叠的网络,可以使训练更加稳定。在计算机视觉领域,实例分割可以生成每个实例的像素簇。

漏检不会突然改变控制值,可以通过其他车道线的检测来修改控制值。而错捡会迅速改变控制值。信度、偏置和特征。置信度和偏置能预测车道线上的点,特征值能分辨出每个预测点属于哪个实例。最后,通过应用后处理模块消除离群值,生成平滑车道线。

总结来说,本文提出的框架有以下几个优点:
(1) 该方法的输出图像尺寸比实例分割方法小,紧凑的尺寸可以节省模块的内存。
(2) 加入应用后处理模块,消除离群值。
(3) 可以用于各种场景,可以预测垂直或水平的任意方向的、任意数量的车道线。
(4) 评价结果显示,该方法的误检率比其他方法低。

三、实现方法

网络名称PINet(Point Instance Network),能产生所有车道线上的点,并分辨每个实例包含的点。损失函数来自SPGN(Similarity Group Proposal Network),它是对3D点云进行实例分割的框架。本文提出的方法仅对于预测点而不是所有像素都需要嵌入,因此3D点云实例分割方法很适合我们的任务。

1、车道线点实例网络

网络训练流程。输入图片尺寸512*256,先经过缩放层压缩(一系列的卷积层和池化层),通过特征提取层。每个沙漏模块有3个输出分支,分别预测置信度,偏置值和每个网格的实例特征。每个沙漏模块都会计算损失函数。
本实验中,将输入图片压缩为6432和3216两种情况。特征提取层使用了堆叠沙漏网络,它在关键点预测任务中效果很好。PINet包括2个沙漏模块。每个沙漏模块有3个输出分支,并且输出网格的尺寸与经过压缩后输入的尺寸相同。堆叠沙漏网络的详细解释见此篇blog
沙漏模块架构。蓝色框表示向下采样的瓶颈层,绿色框表示相同的瓶颈层,橘色框表示向上采样的瓶颈层。将输出分支应用于沙漏层的末尾,并将置信度输出转发到下一个块。
在这里插入图片描述
批量归一化和Relu层在每个卷积层之后应用,除非它们在输出分支的末尾应用。输出分支中的过滤器数量由输出值确定。 例如,置信度分支为1,偏移分支为2,特征分支为4。

置信度分支:预测每个网格的置信度值。置信度分支的输出有1个通道,并被转发到下一个沙漏模块。以下是置信度分支的损失函数:
在这里插入图片描述
Ne,Nn代表有点存在和没有点存在的网格数量,G表示网格的集合,gc表示一个网格的输出置信度,gc*表示真实值,r表示各自的参数。

偏置分支:可以得出每个点的准确位置。偏置分支的输出是一个0~1之间的数字,表示与一个网格的相对位置。根据输入和输出尺寸的比率,1个网格对应8个或16个像素。偏置分支有2个通道以预测x坐标和y坐标的偏移。下面是偏移分支的损失函数:
在这里插入图片描述
特征分支:此分支来源于3D点云实例分割法SGPN。该特征意味着有关实例的信息,并且训练了分支以使同一实例中的网格特征更加接近。以下是特征分支的损失函数:
在这里插入图片描述
Cij表示点i和点j是否属于同一个实例,Fi表示网络预测的点i的特征,常数K>0。如果Cij=1,表示i和j是同一个实例,如果Cij=2表示i和j位于不同的车道线。当训练的时候,损失函数会使属于同一个实例的点特征更加接近,使不同实例的点被区分出来。我们可以通过基于距离的简单聚类技术辨认出每个实例的点。特征尺寸设置为4,经检测该尺寸对检测结果没有太大影响。

总损失函数是以上3个损失函数线性求和,整个网络通过端到端方法进行训练。
在这里插入图片描述
训练阶段初始化所有系数为1,在最后几个epochs,将a和rn加0.5.该损失函数可以适应端到端的沙漏模块,以使训练过程稳定。

2、后处理方法

网络的直接输出会存在一些错误,比如一个实例只能包含一条平滑的车道线。但是,有些离群值或其他车道线可以从视觉上区分。
应用后处理的结果。(a)是输入图片,(b)是原始输出图片,蓝色车道线包含一些离群值,其他车道线可以被区分。(c)是应用后处理的结果,离群值被消除,只有平滑的最长的车道线留了下来。
应用后处理的流程如下:
步骤1:找6个起始点。起始点就是3个位于图片最下方的点和3个最左边或者最右边的点。如果预测的车道线位于图片中间偏左的位置,那么最左边的点就被选作起始点。
步骤2:选出3个距离起始点最近的且位置比起始点高的点。
步骤3:考虑一条直线,该直线连接在步骤1和2中选择的两个点。
步骤4:计算直线和其他点之间的距离。
步骤5:计算边缘以内点的数量,本文中边缘r设为12.
步骤6:选择数量大于阈值的最大数量的点作为起始点,考虑该点与起始点属于同一个实例。本文设置阈值为剩余点的20%。
步骤7:重复步骤2~步骤6,直到在步骤2中找不到点。
步骤8:对所有起始点重复步骤1~7,考虑将宽度最大的簇作为最终车道线。
步骤9:对所有预测的车道线重复步骤1~8.

四、实验结果

在tuSimple训练数据集上使用Adam优化器进行训练,初始学习率0.0002.在开始的1000个epochs里使用初始化的设置,在最后的200个epochs里,设置学习率0.0001,a=1.5,rn=1.5.其他超参数比如应用后处理中的边缘尺寸由实验方法决定。超参数的优化要根据训练结果做适当修改。实验中没有用到其他的数据集和训练好的权重,两种输出尺寸6432和3216都做了评估。测试硬件为NVIDIA RTX 2080Ti。

1、评价标准

精确率:
在这里插入图片描述
Cclip表示在给定的图片中,正确预测的点数量,Sclip表示图片中的真实点数量。

错误的正样本率和错误的负样本率:
在这里插入图片描述
Fpred表示预测错误的车道线数量,Npred表示预测的车道线总数量,Mpred表示没有检测到的车道线数量,Ngt表示真实的车道线数量。

2、实验

tuSimple数据集包含3626张标记训练图片,2782张标记测试图片。我们使用简单的数据扩容方法,比如翻转,平移,旋转,增加高斯噪声,改变亮度,增加阴影等方法来训练更加健壮的模型。tuSimple数据集根据场景中显示的车道数量具有不同的场景分布。
在这里插入图片描述
测试集中包含5个车道线的场景图片是训练集的2倍多,为了平衡这两种分布,我们在数据扩充步骤中设置了包含五个泳道的数据的生成比例,该车道线比其他车道线大。

评价时需要知道给定的y坐标对应的精确的x坐标值,我们使用简单的线性插值法来寻找y对应的x坐标。由于预测的点之间的距离很近,因此不需要使用复杂的曲线拟合算法。

详细的评价结果见表3.三种情况下我们的方法都得到了最低的FP率。这说明PINet的误检率比其他方法低很多。
在这里插入图片描述
表四表示每种方法的参数数量,PINet是最轻量级的方法之一。PINet几乎所有的部分都是瓶颈层构建的,这种架构可以节省大量的内存。不经过应用后处理时,可以达到30FPS,使用应用后处理,帧率为10FPS。
在这里插入图片描述
第一行是实际的车道线,第二行是原始的输出图片,第三行是经过后处理的输出图片。
在这项研究中,我们提出了一种新颖的车道线检测方法,它结合了点预测和点实例分割,可以达到实时性要求。该模型的FP率是最低的,保证了自动驾驶车辆的安全性。后处理显著地提高了检测效果,但是目前的执行版本耗费大量的计算资源,今后需要并行计算架构或者其他的优化方法来解决这一问题。

这篇关于《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289927

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

OpenStack实例操作选项解释:启动和停止instance实例

关于启动和停止OpenStack实例 如果你想要启动和停止OpenStack实例时,有四种方法可以考虑。 管理员可以暂停、挂起、搁置、停止OpenStack 的计算实例。但是这些方法之间有什么不同之处? 目录 关于启动和停止OpenStack实例1.暂停和取消暂停实例2.挂起和恢复实例3.搁置(废弃)实例和取消废弃实例4.停止(删除)实例 1.暂停和取消暂停实例

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和