《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》
论文:https://arxiv.org/abs/2002.06604
代码:https://github.com/koyeongmin/PINet
这是篇关于自动驾驶中车道检测技术的研究论文,标题为“Key Points Estimation and Point Instance Segmentation Approach for Lane Detection”,作者包括Yeongmin Ko、Younkwan Lee、Shoaib Azam、Farzeen Munir、Moongu Jeon和Witold Pedrycz。论文提出了一种名为Point Instance Network (PINet)的车道检测方法,该方法基于关键点估计和实例分割方法。
摘要:
基于关键点检测和实例分割技术提出一个Point Instance Network(PINet)来检测车道线。网络中包含几个同时训练的stacked hourglass networks,可裁切后不用再训练直接使用来减小模型运算量。自动驾驶的感知技术需要适应各种环境,车道检测是自动驾驶中的一个重要感知模块,需要考虑交通线的数量和目标系统的计算能力,PINet通过堆叠的沙漏网络(hourglass networks)进行训练,可以根据目标环境的计算能力选择模型大小,PINet将预测关键点的聚类问题视为实例分割问题,可以处理不同数量的交通线,网络可适应不同数量的车道线,在公共车道检测数据集TuSimple和Culane上,PINet实现了竞争性的准确性和低误报率。
框架示意图
所提出的框架可以预测交通线上的关键点,并区分单个实例,而不管交通线的数量如何。此外,如果用户希望在计算能力较弱的系统(如嵌入式板)上运行经过训练的模型,则无需额外训练即可对网络进行裁剪和传输。
研究背景与动机
自动驾驶需要准确理解周围环境,其中车道检测是一个重要的感知模块。传统的车道检测方法在复杂场景下存在局限性,而深度学习方法在复杂场景中表现出色。主要包括驾驶辅助系统需求、道路安全和交通规则、自动驾驶技术以及计算机视觉研究的推动。通过有效的车道线检测技术,可以提高驾驶安全性、交通效率和自动驾驶系统的可靠性。
驾驶辅助系统:车道线检测是现代驾驶辅助系统(ADAS)的关键组成部分之一。通过准确地检测和跟踪车道线,车辆可以实时了解自身在道路上的位置和方向,从而提供驾驶员警示和辅助驾驶功能,如车道保持辅助、自动转向等。道路安全和交通规则:车道线是道路交通中的重要标志和指示物。它们定义了车辆行驶的轨迹和限制,帮助驾驶员保持车辆在正确的车道上行驶,避免偏离道路或与其他车辆发生碰撞。因此,准确地检测和识别车道线对于提高道路安全性和遵守交通规则至关重要。自动驾驶技术:随着自动驾驶技术的发展,车道线检测成为实现自动驾驶的基础之一。自动驾驶车辆需要实时感知和理解道路环境,包括车道线的位置、形状和类型等信息,以便做出相应的决策和控制。车道线检测技术为自动驾驶系统提供了关键的环境感知能力。计算机视觉研究:车道线检测是计算机视觉领域的一个重要研究方向,它涉及图像处理、特征提取、目标检测和图像分割等技术。通过研究车道线检测算法和方法,可以推动计算机视觉领域的发展,提高图像理解和场景理解的能力,并为其他相关任务(如道路识别、车辆跟踪等)提供基础技术支持。
PINet方法
【PINet】(Progressive and Iterative Network)车道线检测模型。PINet是一种用于车道线检测的深度学习模型,在2018年被提出。PINet采用了渐进迭代的方法来逐步提高车道线检测的准确性。它由一个主干网络和多个分支网络组成。主干网络用于提取图像特征,而每个分支网络则用于生成车道线的不同部分,例如车道线的中心线和边界线。PINet的训练过程包括两个阶段:渐进训练和迭代训练。在渐进训练阶段,模型首先使用较低分辨率的图像进行训练,然后逐渐增加分辨率,以适应不同的场景。在迭代训练阶段,模型通过多次迭代来进一步提高检测精度。PINet在车道线检测任务上取得了较好的性能,能够准确地检测出图像中的车道线,并且对于复杂的场景和光照条件也具有一定的鲁棒性。在本篇论文中PINet通过堆叠的沙漏网络(hourglass networks)来预测车道上的关键点,并将这些点作为实例进行分割。这种方法可以根据目标系统的计算能力选择训练模型的大小。
hourglass networks经常用于关键点检测领域,如位姿估计和物体检测,该网络使用一系列的下采样和上采样操作实现不同尺度层级的信息。stacked hourglass network中包含了数个使用相同损失函数训练的hourglass module,使得可以方便的裁切来控制网络的参数量。有关hourglass net的引入可参考Hourglass Network 沙漏网络。
网络架构
PINet包括多个沙漏模块,每个模块都包含编码器、解码器和三个输出分支(置信度分支、偏移分支和嵌入分支)。网络可以端到端训练,并且可以根据目标系统的计算能力进行裁剪,无需额外训练。作者认为这项研究在以下四个方面做出了主要创新:1.网络输出的是关键点而不是区域,从而显著减小了输出的尺寸;2.通过使用堆叠的hourglass模块,可以直接裁剪模型以减小网络参数量,而无需重新训练;3.对车道线的数量和朝向没有限制;4.在公开数据集上具有更低的误检率和令人满意的精度。
交通线检测框架
框架由三个主要部分组成。512 × 256 大小输入数据由调整大小网络压缩;压缩的输入被送到预测网络,该网络包括四个沙漏模块。在每个沙漏块的末端应用三个输出分支;即它们预测置信度、偏移量和嵌入特征。损失函数可以从每个沙漏块的输出中计算出来。通过剪裁多个沙漏模块,可以调整所需的计算资源。
该框架的优点:1.采用关键点估计方法,提出了一种新的交通线路检测方法。与其他基于语义分割的方法相比,它产生的尺寸预测输出更紧凑。2.由几个沙漏模块组成,因此我们可以通过简单的裁剪获得具有不同大小的各种模型,因为每个沙漏模块都使用相同的损失函数同时训练。3.可以应用于包括交通线任意方向的各种场景,例如垂直或水平交通线,以及任意数量的交通线。4.具有较低的误报率和显著的准确率。它保证了自动驾驶汽车的稳定性。
体系结构
Details of hourglass block
Resizing Network
输入RGB图像大小为512×256;它被馈送到调整大小网络。该图像通过调整大小网络中的卷积层序列压缩到更小的尺寸(64 × 32);调整大小网络的输出将馈送到预测网络。预测网络中可以包含任意数量的沙漏模块;本研究使用了四个沙漏模块。所有沙漏模块都通过相同的损失函数同时训练。训练步骤结束后,用户可以根据计算能力选择使用多少个沙漏模块,无需任何额外训练。
DETAILS OF RESIZING NETWORK
Predicting Network
调整大小的网络输出被馈送到预测部分,这将在本节中描述。本部分预测交通线上的确切点和实例分割的嵌入特征,网络由多个沙漏模块组成,每个模块包括一个编码器、解码器和三个输出分支,如图 3 所示。一些跳跃连接将各种尺度的信息传递到更深的层。
DETAILS OF PREDICTING NETWORK
损失函数
PINet使用了四种损失函数来训练网络,包括置信度损失、偏移损失、嵌入特征损失和蒸馏损失。这些损失函数帮助网络更好地预测关键点的位置和区分不同的车道实例。
置信度损失
置信度输出分支用于预测每个单元格的置信度值。如果单元格中存在关键点,则其置信度值接近于1,如果不存在,则置信度值为0。置信度分支的输出通道为1,该通道被馈送到下一个沙漏模块。置信度损失由两部分组成,即存在损失和不存在损失。存在损失仅应用于包含关键点的单元格,而不存在损失用于降低每个背景单元格的置信度值。不存在损失是在预测置信度值高于0.01的单元格上计算的。由于远离关键点的单元格会较快收敛,因此该技术有助于训练模型集中在靠近关键点的单元格上。下面展示为置信度分支的损失函数:
置信度分支损失函数
偏移损失
在PINet中,通过从偏移分支预测,可以确定每个输出单元的关键点的确切位置。每个单元格的输出值介于0和1之间;这个值表示与相应单元格相关的位置。
偏移损失函数
嵌入特征损失
灵感来自 SGPN,一种 3D 点云实例分割方法,如果嵌入特征在此实例中相同,则对分支进行训练以使每个单元的嵌入特征更接近。
嵌入特征损失函数
蒸馏损失
当堆叠更多的沙漏模块时,性能会更好。因此,最深的沙漏模块可以是教师网络,我们预计,如果应用知识蒸馏方法,比教师网络轻的剪裁短网络将表现出更好的性能。
实验细节
数据增强方法
在训练和测试中将数据馈送到建议的网络之前,将所有输入图像的大小调整为 512 × 256 的大小,并从 RGB 值 0 ∼ 255 归一化为 0 ∼ 1 值。用于评估所提方法的两个公共数据集TuSimple 和CULane根据固定的y轴值提供交通线的x轴值。由于标注方法的原因,一些靠近水平线的交通线被稀疏地标注。为了解决这个问题,通过对原始数据进行线性回归,在x轴上每10个像素进行额外的注释。还应用了各种数据增强方法,如阴影、添加噪声、翻转、平移、旋转和强度变化,如图所示:
数据增强
(a)是原始图像,(b)、(c)、(d)、(e)、(f)和(g)显示了应用的数据增强方法的示例。代码如下:
def Generate(self):
#定义cuts列表来确定每个训练批次的起始索引和结束索引
cuts = [(b, min(b + self.p.batch_size, self.size_train)) for b in range(0, self.size_train, self.p.batch_size)]
for start, end in cuts:
self.inputs, self.target_lanes, self.target_h, self.test_image = self.Resize_data(start, end)
self.actual_batchsize = self.inputs.shape[0]#表示当前批次的实际样本数量
self.Flip()#水平翻转图像
self.Translation()#对图像进行平移变换
self.Rotate()#对图像进行旋转变换
self.Gaussian()#向图像添加高斯噪声
self.Change_intensity()#改变图像的亮度
self.Shadow()#在图像上添加阴影效果
# 使用yield语句生成一个训练批次的数据
yield self.inputs/255.0, self.target_lanes, self.target_h, self.test_image/255.0
数据集
TuSimple和CULane数据集都是用于车道线 detection(车道线检测)的研究领域中的重要数据集。它们提供了大量的图像数据,用于训练和评估车道线检测算法的性能。
TuSimple
- 场景:TuSimple数据集主要收集自高速公路的稳定照明条件下。
- 数据量:难度相对较低,场景多为高速公路。
- 图像内容:TuSimple数据集中只有30%的图像包含弯道。
- 特点:这个数据集的图像质量较高,但由于场景较为单一,可能不足以覆盖所有实际驾驶情况
准确度是TuSimple数据集的主要评价指标,由以下公式根据平均正确点数定义:
其中 C表示训练模块为给定图像剪辑正确预测的点数,S 表示剪辑中的真值点数。假阴性率 (FN) 和假阳性率 (FP) 也由以下公式提供:
其中 F 表示错误预测的车道数,N 表示预测的车道数,M表示错过的车道数,N 表示地面实况车道数。
CULane
- 场景:CULane数据集由九个不同的场景组成,包括正常、人群、曲线、炫目的灯光,夜间、无线、阴影和城市地区的箭头。
- 数据量:场景多为城区,难度高于TuSimple。
- 图像内容:CULane数据集中仅仅只有约2.1%的图像包含弯道。
- 特点:CULane数据集的场景多样性更高,能够提供更复杂的检测挑战,更接近实际城市驾驶环境。
在CULane数据集中,F1-measure是主要的评价指标;被定义为以下等式 :
这里Precision = T P /T P +F P,Recall = T P/ T P +F N
实验结果
TuSimple数据集实验结果
TuSimple 数据集的结果,第一行是基本事实;第二行是PINet的预测结果:
CULane数据集实验结果
CULane数据集的结果,第一行是基本事实;第二行是PINet的预测结果:
总结
在这项研究中,作者提出了一种新的车道检测方法PINet,结合点估计和点实例分割方法,这种方法可以实时进行工作。此外,PINet可以根据目标系统的算力进行裁剪,无需任何额外的培训。PINet 实现了高性能和更低的误报率;低误报率保证了自动驾驶汽车的安全性能,因为错误预测的车道很少发生。特别是PINet在夜间、阴影和眩光等困难的光线条件下表现出比其他方法更好的性能。
PINet的缺点与不足
-
局部遮挡和不清晰的交通线:PINet基于关键点估计方法,当遇到局部遮挡或不清晰的交通线时,性能可能会受到影响,因为关键点的准确预测对于这些情况较为敏感。
-
复杂场景的挑战:尽管PINet在困难光照条件下(如夜间、阴影和眩光)的表现优于其他方法,但在一些复杂场景下,例如交通线密集或有大量障碍物的场景,可能仍然面临挑战。
-
依赖深度学习模型:PINet作为一种基于深度学习的模型,可能需要大量的标注数据进行训练,这可能限制了其在某些情况下的应用,尤其是在数据稀缺的环境中。
-
模型大小和计算资源:虽然PINet可以通过裁剪来适应不同的计算环境,但完整的网络可能需要较多的计算资源,这可能限制了其在资源受限的设备上的应用。
PINet改进策略
增强数据增强技术:通过更多样化的数据增强技术,如模拟不同天气条件、光照变化、遮挡情况等,可以提高PINet在复杂场景下的泛化能力和鲁棒性。
多模态数据融合:结合雷达、激光雷达(LiDAR)等其他传感器数据,可以提供更丰富的环境信息,帮助PINet在复杂场景中更准确地检测车道线。
上下文信息利用:引入更多的上下文信息,如道路类型、交通标志、其他车辆行为等,可以帮助PINet更好地理解交通场景并提高检测准确性。
注意力机制:应用注意力机制可以让PINet专注于图像中的关键区域,从而在复杂场景中更准确地识别车道线。
模型融合和集成学习:通过将PINet与其他类型的车道检测模型进行融合或使用集成学习方法,可以提高整体性能,特别是在处理复杂场景时。
自适应学习率调整:在训练过程中动态调整学习率,可以使PINet更快地适应复杂场景的变化。
域自适应技术:使用域自适应技术减少模型对训练数据分布的依赖,提高PINet在不同交通场景中的适应性。
异常检测机制:集成异常检测机制来识别和处理异常交通情况,如施工区域、临时交通管制等,这些情况可能会影响车道线的常规检测。
模型压缩和优化:通过模型压缩和优化技术,如知识蒸馏、网络剪枝等,可以减少PINet的模型大小和计算需求,使其更适合在资源受限的环境中运行。
持续学习和在线更新:实现PINet的持续学习或在线更新机制,使其能够根据新的驾驶经验不断改进车道检测性能。