车道线检测(一)——PINet论文阅读

目录

摘要

简介

方法

网络结构

Resizing Network

Predicting Network

Loss Function

实现细节

实验

结论


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

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

代码:https://github.com/koyeongmin/PINet_new

摘要

        2020年的一篇论文,基于关键点检测和实例分割技术提出一个Point Instance Network(PINet)来检测车道线。网络中包含几个同时训练的stacked hourglass networks,可裁切后不用再训练直接使用来减小模型运算量。网络可适应不同数量的车道线,在TuSimple数据集和Culane数据集上获得不错的精度和较低的false postitve。网络的框架示意图如下。

简介

        车道线检测是自动驾驶系统中一项基础且重要的能力,作者提出一种网络,可从RGB输入图中检测得到车道线的关键点,然后使用网络输出的嵌入特征将关键点进行分类。同时该网络具有可裁切的特性,即裁切后无需训练即可使用,可应对运算平台算力吃紧的情况。

        很多方法基于CNN和语义分割,但数据标注复杂、网络输出大小等于输入使得输出包含很多无用信息且计算量大;同时后处理时点数多导致计算量也很大,整体巨大的计算量限制了工程落地。

        hourglass net经常用于关键点检测领域,譬如位姿估计和物体检测,该网络使用一系列的下采样和上采样操作实现不同尺度层级的信息。stacked hourglass network中包含了数个使用相同损失函数训练的hourglass module,使得可以方便的裁切来控制网络的参数量。

        有关hourglass net的引入可参考Hourglass Network 沙漏网络 (pose estimation姿态估计)_hxxjxw的博客-CSDN博客_沙漏网络,我认为是多尺度+resnet的一种形式,单个模块中引入了多尺度/层级的特征;多个模块并联则通过加深网络来提高表现

        作者认为误检测对下游的影响更大,而当时很多sota方法的误检率都相对较高,因此作者将false positive也作为一项对比测试指标。

        下图是网络结构,作者认为有四点主要创新:1)网络输出的是关键点而不是区域,输出大小极大减小;2)使用堆叠的hourglass module,可以直接裁切来减小网络参数并无需重新训练直接使用;3)对车道线数量、朝向没有限制;4)在公开数据集上具有更低的误检率和不错的精度

方法

        网络有三路输出,分别是置信度、偏移信息、嵌入特征。置信度和偏移信息用于车道线关键点定位,YOLO中的损失函数将应用其中;嵌入特征用于后处理中的关键点分类,其损失函数借鉴了SPGN中的实例分割方法。

网络结构

Resizing Network

        输入RGB尺寸为512X256,送入resizing network,变为64x32;这部分网络模型如下

Predicting Network

        之后是预测网络,包括4个hourglass模块,每个模块包括编码、解码和三个输出分支,组成如下图所示。

        上图中的每个色块代表一个bottle neck,具体组成如下图所示,其中使用转置卷积实现上采样。

        下表详细给出了一个hourglass module的输入输出尺寸信息,输出的三路branch中,置信度通道数为1,offset通道数为2,embedding为4。hourglass module堆叠的数量增加可以提高检测效果,因此可以作为一个teacher network,使用知识蒸馏的方法提升包含较少数量hourglass module的网络效果。

Loss Function

        网络输出一个64x32大小的cell,每个cell的通道数为7,包括置信度、偏移、嵌入特征,相应的各有一个loss function;同时在训练中使用了蒸馏方法,对应的有一个distillation loss。具体定义参考论文,这里简单介绍如下。

对于confidence的loss func如下

对于offset的loss func如下

        对于embedding feature的loss func,其设置的目标为属于同一实例时feature要尽量接近,不属于同一实例时feature要尽量远离

        引入一个蒸馏的loss func,尝试将每个hourglass module的输出都尽量接近最后一个hourglass module的输出,达到将hourglass network裁切后不需训练直接使用的效果。

实现细节

        输入图尺寸为512x256,bgr格式(读代码后确认),归一化为(0,1);

        数据集中对接近水平的车道线标注数据点过少,作者做了插值增加数量处理

        作者认为数据集中的场景数据数量分布不均匀,在训练中标记那些表现不好的数据,在后续训练中提高对这些数据的选取概率,类似于hard negative mining technique

实验

        使用TuSimple和CULane数据集,每个数据集对应的评价指标不同;结果表明PINet的精度相当不错,同时具有较低的false positive。

        验证distillation模块具有减小前面三个hourglass module和最后一个hourglass module输出差异的能力。

结论

        提出一种全新的车道线检测网络,通过提取关键点和实例分割实现,可处理任意方向的车道线且不限制数量。使用堆叠的hourglass module并在训练中应用蒸馏学习策略,使得模型在部署时可根据平台算力做裁切,不用重新训练权重而直接使用。通过实验验证其具有不错的精度和较低的误检率。

猜你喜欢

转载自blog.csdn.net/lwx309025167/article/details/126694916