论文阅读笔记——DLT-Net: Joint Detection of Drivable Areas, Lane Lines, and Traffic Objects)_proc. ieee intell. veh. symp.-程序员宅基地

技术标签: 自动驾驶  计算机视觉  深度学习  

论文简介

这是发表在IEEE Transactions on Intelligent Transportation Systems上的一篇论文,将自动驾驶中的主要感知任务——可行驶区域、交通车道线和交通障碍物的检测——用一个统一的网络架构来完成,同时不同任务间可以share信息,从而提高both 准确性&计算效率。

论文链接:
DLT-Net: Joint Detection of Drivable Areas, Lane Lines, and Traffic Objects

1 引言

感知是自动驾驶的一个关键任务。其中,可行驶区域、车道线和交通障碍物是感知任务中的三个最重要的子任务。在大多数现有的多任务解决方案中,都是将不同的子任务独立地分别进行检测。但是事实上,这些子任务之间是有联系的,比如,车道线位于可行驶区域上,交通障碍物位于可行驶区域以外且距可行驶区域较近的地方。如果把这种联系增加到网络中,使得不同的子任务间可以互相提供信息和施加影响,就很可能会显著提升这些子任务的检测效果,从而更出色地完成自动驾驶的感知任务。
鉴于此,这篇文章提出了一个统一的神经网络——DLT-Net,以同时检测可行驶区域、车道线和交通障碍物。DLT-Net在传统多任务检测网络的基础上,引入了Context Tensors(上下文张量),通过这个上下文张量,可以在不同的子任务间共享信息,使得这些子任务不再相互独立,而是可以互相产生影响。
实验表明,使用具有挑战性的BDD数据集时,DLT-Net无论是在检测的准确性还是整体的计算效率方面都超过了传统的多任务检测网络,从而证明了共享信息对多任务检测网络的作用。

2 DLT-Net架构

DLT-Net的整体架构如Fig. 1. 所示。整个网络共享同一个encoder,并划分为三个decoders分别对应三个子任务。

Fig. 1. DLT-Net架构

2.1 Encoder

Encoder是用来提取特征的CNN结构(相当于Backbone),具体采用的是VGG16[2]+FPN(Feature Pyramid Structure, 特征金字塔结构)[3];
对于输入大小为(W,H,C)的输入图像,Encoder首先通过VGG16,经卷积和池化操作得到五个大小不同的特征图谱。考虑到浅层特征和深层特征都很重要,所以采用FPN将不同特征层进行融合。最终输出的大小为(W/4,H/4,256)的特征图谱将作为三个Decoders的输入。

2.2 Decoder

三个Decoders主要利用Encoder提取的特征信息,分别进行可行驶区域、车道线和交通障碍物的检测。

2.2.1 ‘D’ - Drivable areas

可行驶区域检测可以被看作是语义分割的二元分类问题。这篇论文采取[4]的思想,相应Decoder输入为(W/16,H/16,128)大小的特征图谱,输出为(W,H,2)的特征图谱,2个通道分别代表每个像素点是可行驶区域和背景的概率。

2.2.2 Context Tensors

Context Tensor: 与传统架构不同的是,这三个Decoders之间并不是相互独立的,而是通过Context Tensors将可行驶区域(‘D’)中的特征图谱与另两个分支中的特征图谱分别进行级联(concatenation),从而使车道线和交通障碍物的Decoders可以利用可行驶区域的信息。

2.2.3 ‘L’ - Lane lines

车道线检测与2.2.1类似,最终输出的2个通道分别代表每个像素点是车道线和背景的概率。

2.2.4 ‘T’ - Traffic objects

交通障碍物检测采用[5]的思路,用focal loss代替交叉熵损失函数,在保持检测速度的同时提高准确度。整个Decoder被划分为两部分,分别用于分类和边界框回归,通道数分别为2和4。

2.3 Loss Function and Training

公式(1)是总损失函数的计算公式,由四部分组成,分别表示可行驶区域的分类损失、车道线的分类损失、交通障碍物的分类损失和(bbox)回归损失。其中,L_c采用交叉熵函数,L_cf采用focal loss,L_r采用L1 loss。
在这里插入图片描述

3 实验结果

3.1 数据集和实验设置

3.1.1 数据集

TABLE 1列举了几种常用数据集的比较,这篇论文选择了较有挑战性的BDD数据集进行测试。
TABLE 1

3.1.2 指标

用mIoU(mean intersection over union)评估可行驶区域的检测结果;用mAP(Mean Average Precision)评估交通障碍物的检测结果;由于BDD数据集没有车道线的评价指标,所以这篇论文只做了定性分析。

3.1.3 比较对象

MultiNet[6]是当时在KITTI数据集上达到最好效果的多任务网络;ERFNet[7][8]和Faster R-CNN[9]分别在可行驶区域和交通障碍物的单任务检测上得到较好结果;Basic DLT-Net是未加入Context Tensors的DLT-Net,可以通过控制变量的方法用来证明Context Tensors的作用。
所以这篇文章选择了上述四个网络与DLT-Net进行比较。

3.2 实验结果

3.2.1 可行驶区域

在这里插入图片描述

DLT-Net的准确度(mIoU)略高于MultiNet和Basic DLT-Net,明显高于ERFNet;
DLT-Net的速度高于MultiNet,略低于Basic DLT-Net,明显低于ERFNet,但是考虑到ERFNet是单任务网络,所以其速度与DLT-Net无可比性。

3.2.2交通障碍物

在这里插入图片描述

DLT-Net的召回率和mAP均是最高的,速度仅略低于Basic DLT-Net(因为Basic DLT-Net没有加Context Tensors)。

3.2.3 车道线

在这里插入图片描述

从定性结果看,DLT-Net可以区分路缘和车道线,检测效果优于Basic DLT-Net

综合准确度和实时性两方面因素,增加了Context Tensors的DLT-Net确实提升了检测效果。

3.3 DLT-Net的缺点分析

(1)不能很好地区分Jersey Barriers 和可行驶区域;
(2)难以适应有严重反射的场景;
(3)对不连续的车道线的检测效果欠佳。

4 Personal Comments(个人的一点看法)

这篇文章最大的亮点就是Context Tensors的引入,使车道线和障碍物的检测可以用到可行驶区域特征图谱的信息。至于具体的网络实现,原文作者并未详细阐述,也没有提供源码。但是可以根据原论文推测,作者仅是将Context Tensors引入而并未做过多设定,“车道线属于可行驶区域”以及“障碍物位于不可行驶区域中距可行驶区域较近处”都是网络自己通过数据训练出来的,而不是人为指定。原文中”With the benefit of the context tensor, therefore, the vehicles which are far away from the drivable area will receive lower confidence”就表明了这一点。

另外,除了原文列出的一些缺点,DLT-Net还有一些可以改进的地方,比如:
(1)在原本架构的基础上,将Encoder和Decoder的算法更换成双目检测算法,可以实现立体多任务检测网络,从而进一步提高检测的准确度;
(2)如果对Context Tensors增加一些超参,人为初步设定可行驶区域、车道线和交通障碍物的关系,可能会提高检测效果;
(3)从图像识别(静止的角度)来看,交通障碍物属于不可行驶区域是合理的;但若从视频检测(动态的角度)来看,考虑到障碍物(车)是运动的,这一帧的交通障碍物在下一帧可能就是可行驶区域了。因此在实际应用或视频流检测中,需要重新考虑交通障碍物和可行驶区域的关系;
(4)原文对三个子任务的分类任务均只有两类。而在实际应用中,车道线有虚实之分、单双线之分,交通障碍物也包括汽车、行人、非机动车、静止路障等多个类别。若要考虑这些实际因素,则需要更加复杂网络结构,相应的代价会是实时性和计算效率等降低。
总的来说,尽管有一些不足,但这篇论文提出了新颖且有效的思路,即引入Context Tensors,提出一个统一的多任务网络,实现了不同Decoders间共享信息,同时提升了多任务网络的准确度和实时性。

参考文献

[1] Y. Qian, J. M. Dolan and M. Yang, “DLT-Net: Joint Detection of Drivable Areas, Lane Lines, and Traffic Objects,” in IEEE Transactions on Intelligent Transportation Systems, vol. 21, no. 11, pp. 4670-4679, Nov. 2020, doi: 10.1109/TITS.2019.2943777.
[2] K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” Sep. 2014, arXiv:1409.1556. [Online].
Available: https://arxiv.org/abs/1409.1556
[3] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dollár, “Learning to refine object segments,” in Proc. Eur. Conf. Comput. Vis. New York, NY, USA: Springer, 2016, pp. 75–91.
[4] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in Proc. IEEE Conf. Comput. Vis. Pattern Recognit., Jun. 2015, pp. 3431–3440.
[5] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollár, “Focal loss for dense object detection,” IEEE Trans. Pattern Anal. Mach. Intell., to be published.
[6] M. Teichmann, M. Weber, M. Zöellner, R. Cipolla, and R. Urtasun, “MultiNet: Real-time joint semantic reasoning for autonomous driving,” in Proc. IEEE Intell. Veh. Symp., Jun. 2018, pp. 1013–1020.
[7] E. Romera, J. M. Álvarez, L. M. Bergasa, and R. Arroyo, “Efficient convnet for real-time semantic segmentation,” in Proc. IEEE Intell. Veh. Symp., Jun. 2017, pp. 1789–1794.
[8] E. Romera, J. M. Álvarez, L. M. Bergasa, and R. Arroyo, “ERFNet: Efficient residual factorized ConvNet for real-time semantic segmentation,” IEEE Trans. Intell. Transp. Syst., vol. 19, no. 1, pp. 263–272, Jan. 2018.
[9] S. Ren, K. He, R. Girshick, and J. Sun, “Faster R-CNN: Towards realtime object detection with region proposal

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44039488/article/details/111960116

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签