题目:CondLaneNet:a Top-to-down Lane Detection Framework Based on Conditional Convolution

论文:https://arxiv.org/pdf/2105.05003.pdf

代码:https://github.com/aliyun/conditional-lane-detection

作者单位:阿里巴巴,Simon Fraser University

0

动机

近年来,基于深度学习的车道线检测技术取得很大进展,但仍有挑战。

挑战之一为车道线的实例检测,通常做法是将不同的车道线检测为不同的类别,但该方法通常需要预定义最多能检测到的车道线条数;另外一种做法是对语义分割的结果进行聚类,得到不同的车道线,该方法无法解决车道线交叉、密集的场景。如下图所示:

作者借鉴了分割领域中的conditional instance segmentation策略,参考CondInst和SOLOv2,将其适配到车道线检测任务中,提出了新的车道线检测算法CondLaneNet,来解决车道线的实例检测问题。

CondLaneNet能够解决交叉线等复杂场景,且具有端到端和推理速度快的优势。

1

网络整体结构

给定输入图像作为输入,CondLaneNet输出车道线集合,记作,其中表示车道线数量。

每条车道线使用有顺序的点集表示,即:

上式中表示车道线的索引,表示第条车道线中点的数量。

CondLaneNet的整体结构如下图所示:

使用ResNet系列网络做为Backbone,Backbone中还包含用于提取多尺度特征的FPN模块。为了增强Backbone提取全局特征的能力,Backbone中还有一个Transformer Encoder模块,其结构如下图所示:

上图中的表示矩阵加法,表示矩阵的点乘,表示元素乘法操作。

网络结构图中的Proposal head用于检测车道线实例,并为每个实例生成动态的卷积核参数;Conditional shape head利用Proposal head步骤生成的动态卷积核参数和conditional卷积确定车道线的点集。

2

Proposal head

Proposal head的输出之一是维度为的heatmap。

对于通用的conditional instance segmentation方法,通常检测每个目标的中心点。对于细长的车道线来说,检测中心点是有难度的。因此作者检测每个车道线实例的起始点。作者参考CenterNet和CornerNet,预测heatmap用于表示车道线的起始点,使用focal loss损失函数,表示如下:

上式中的表示位置处的标签,为该位置处的预测值,是proposal point的个数。

Proposal head的另外一个输出是维度为的feature map,用于表示动态卷积核参数。对于位置处的proposal point,取该feature map中位置的个元素作为卷积核参数。

在实际使用时,存在同一proposal point对应2个车道线实例的情况,比如交叉线。作者提出了RIM(Recurrent Instance Module)来解决该问题,RIM结构如下图所示:

RIM基于LSTM结构实现,RIM输出一个二值的状态来表示“continue”和“stop”,还会输出向量表示卷积核参数。

在推理时,RIM会循环执行,为同一proposal point对应的多个车道线实例预测动态卷积核参数,直到输出的状态为"stop"。从而解决单个proposal point对应多个车道线实例的问题。

在训练时,使用交叉熵损失函数约束输出状态,损失函数表示如下:

上式中的表示第个状态的softmax输出,表示第个状态的真值,表示一个batch中的输出状态数量。

需要特别指出的是,只在使用CurveLanes这种包含交叉线的数据集上使用了RIM,其他数据集并未使用RIM。

3

Conditional shape head

Conditional shape head使用Proposal head输出的车道线实例(用proposal point表示)和动态卷积参数,预测每个车道线实例所包含的点集。

Conditional shape head对每个车道线实例会输出三部分:(1)点在每一行中的位置;(2)纵向取值范围;(3)offset。如下图所示:

上图中没有画出offset相关的内容。

3.1 点在每一行中的位置

依据上图所示,将输入图像分为尺寸为的网格,Conditional shape head将Backbone的输出特征作为conditional convolution的输入特征。

对于每个车道线实例,Conditional shape head会输出尺寸为的feature map,通过输出feature map每一行的值,确定该行中车道线像素点所在的网格,这可以抽象成个类别的分类问题,这个类别对应的概率可以表示为:

上式中的表示feature map中第行特征,表示第行中个类别的概率分布,概率最大的类别即为车道线像素所在的网格。

有时候会出现车道线像素点横跨多个网格的情况,因此使用横坐标的期望值来表示车道线像素点的位置:

上式表示第行中车道线像素所在的位置,表示车道线像素位于网格处的概率值。

在训练时,使用L1损失回归车道线像素位于网格的位置,损失函数表示如下:

上式中的表示车道线的纵向范围,表示车道线纵向跨的行数。

3.2 纵向范围

在上文所述的输出feature map中增加全连接层,对feature map中的每一行进行二分类,判断该行是否存在车道线像素,从而得到车道线的纵向范围。

使用softmax和交叉熵损失函数,表示如下:

上式中的表示第行是否存在车道线像素点的预测值,为真值。

3.3 offset

为了进一步提高车道线位置的预测精度,作者在3.1中“网格粗预测”的基础上,又增加了偏置信息,该偏置信息由网络预测得到。

在训练时,使用L1损失函数,表示如下:

上式中的表示车道线的宽度,表示网络输出的预测offset,表示offset的真值。表示中的像素个数。

3.4 车道线表示

最终检测到的车道线使用一系列有顺序的点集来表示。对于第条车道线,第行的像素点位置表示如下:

上式中,和分别表示纵向范围的最小值和最大值;为横坐标期望的取整,表示offset。

4

一些细节

在训练时,Proposal head和Conditional shape head的总体损失函数为:

上式中的用于Proposal head中实例关键点预测,、和用于Conditional shape head中车道线形状预测;用于预测RIM的状态,用于处理同一实例关键点对应2条车道线实例的现象。

在具体应用时,上式中的和值为1,的值为0.4,的值为1。

在训练和测试时,输入图片分辨率为。

5

实验结果

FPS的测试均是在2080Ti机器上进行。

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

在CULane数据集上的测试结果如下:

从上表中可以看出,CondLaneNet能够在CULane数据集中的多个场景下取得最好的性能;CondLaneNet的轻量级版本能达到220FPS的速度,且有着不错的性能。

在TuSimple数据集上的测试结果如下:

一个可视化的结果如下图所示:

上图中第一行为CurveLanes中的图片,第二行为CULane中的图片,第三行为TuSimple中的图片。

6

总结

作者借鉴了分割领域中的conditional instance segmentation策略,提出了CondLaneNet算法用于车道线检测任务,来应对车道线实例检测、交叉线的挑战。

CondLaneNet中包含Proposal head和Conditional shape head,其中Proposal head用于预测车道线实例和实例级别的卷积核动态参数,Conditional shape head用于预测每个车道线实例的形状信息。CondLaneNet能够很好地解决车道线实例分割、交叉线检测问题,并且有很好的实时性。

备注:车道线

车道线交流群

车道线检测等技术,

若已为CV君其他账号好友请直接私信。

在看,让更多人看到  

CondLaneNet | 使用动态卷积核预测每个车道线实例相关推荐

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

    论文:https://arxiv.org/abs/2103.12040 开源代码:https://github.com/sel118/LaneAF 0 动机 车道线检测对于辅助驾驶.自动驾驶至关重要. ...

  2. VIL-100视频车道线实例数据集格式转换

    VIL-100车道线数据集 数据集简介及下载路径 数据集格式转换 支持的标签转化格式:1.车道线实例分割标签; 2.车道线实例点集标签(Tusimple标注形式) 数据集相关示例图 - 原图标签可视化 ...

  3. 车道线检测CondLaneNet论文和源码解读

    CondLaneNet: a Top-to-down Lane Detection Framework Based on Conditional Convolution Paper:https://a ...

  4. 基于实例分割方法的端到端车道线检测 论文+代码解读

    Towards End-to-End Lane Detection: an Instance Segmentation Approach 论文原文 https://arxiv.org/pdf/1802 ...

  5. 3.1.1 车道线检测

    更多内容,请关注: github:Autopilot-Updating-Notes gitee: Autopilot-Updating-Notes 车道线检测是一种环境感知应用,其目的是通过车载相机或 ...

  6. 2023最新车道线综述!近五年文章全面盘点(几何建模/机器学习/深度学习)

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[车道线检测]技术交流群 后台回复[车道线综述]获取基于检测.分割.分类.曲线拟合等近几 ...

  7. 基于视觉的车道线识别技术在智能车导航中的应用研究

    密级:公开 摘  要 摘  要 室外移动机器人的研究是机器人研究领域的重要分支,同时也是备受关注的热点领域.面向高速公路等结构化道路的室外移动机器人研究已成为现阶段民用交通运输领域移动机器人研究的主流 ...

  8. 计算机视觉——车道线(路沿)检测

    目录 系列文章目录 一.实验内容与方法 二.视频的导入.拆分.合成 1.视频时长读取 2.视频的拆分 3.视频的合成 三.图像处理/边缘检测 0.尝试 1.图像处理->边缘检测(原理) 2.Ca ...

  9. VIL-100: 一个新的车道线检测数据集和基线模型(ICCV2021)

    作者丨StrongerTang@知乎 来源丨https://zhuanlan.zhihu.com/p/411156533 编辑丨3D视觉工坊 之前写过一篇车道线检测的综述,得到了一些朋友的认可,也因此 ...

最新文章

  1. 去除icon图标特效,阴影,反光
  2. ScrollView中的LinearLayout不能使用android:layout_heig...
  3. OpenCASCADE绘制测试线束:几何命令之Intersections
  4. 【GDAL】GDAL栅格数据结构学习笔记(一): 关于Metadata
  5. Mozilla发布最大公共语音数据集Common Voice
  6. 邮政银行贷款迟还4个小时就造成信用逾期,如何解决?
  7. Jmeter 获取、读取token 供其他 HTTP 请求调用
  8. MATLAB中的命令行输出
  9. 在软件开发者灵魂深处的三种角色
  10. 2021.12月电脑浏览器推荐-cent浏览器内存占用只有Google谷歌Chrome的68%
  11. 100 个常见的 PHP 面试题和答案分享
  12. 对抗样本(一)以综述入门
  13. 安卓开发:医院预约挂号app
  14. 以太坊源码系列之miner解析(1)
  15. 悟空CRM在保险行业的应用
  16. 【C语言练习4】根据公式计算π的值,π=4-4/3+4/5-4/7+4/9+... 打印出一个表格来显示,用公式中的1项、2项、3项...计算出来π的近似值
  17. Proxy与Reflect详解
  18. 2021-2027全球与中国家庭影院AV接收器市场现状及未来发展趋势
  19. 信息安全概论(第3版)课后习题答案 牛少彰 崔宝江 李剑编著
  20. python爬取股票代码_Python爬取百度股市通股票详细信息

热门文章

  1. 方法重载与重写,返回类型
  2. redis入门——安装篇
  3. opencv摄像头速度慢_c++ - 从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。 - SO中文参考 - www.soinside.com...
  4. legend函数_ggplot的图例(legend)管理
  5. linux 将程序链接到 usr bin,Linux / usr / bin文件在重新启动后消失
  6. sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
  7. stm32关定时器_STM32F103ZET6的基本定时器
  8. 李大勇matlab视频解压密码,13.4 环境控制、手动开关模块
  9. python例题代码_python26个练习题及代码-789
  10. pythonbyte转int_Python将byte数组转换为int详解