首页 > 其他分享 >[论文笔记] Line-CNN: End-to-End Traffic Line Detection With Line Proposal Unit

[论文笔记] Line-CNN: End-to-End Traffic Line Detection With Line Proposal Unit

时间:2023-07-18 11:14:09浏览次数:33  
标签:right End Detection 索引 车道 LP Line Anchor left

IEEE TITS 2019 YangJian

last update: 2023/07/17

简介

作者受Faster-RCNN启发, 提出Line-CNN, 提出了一种新颖的车道线Anchor的表示方法,解决了车道线检测中表征的难点, 实现了端到端的车道线检测.

车道线是一条曲线, 所以无法使用常规检测中矩形bbox作为Anchor, 为了用Anchor来表示车道线, 本文提出了候选线(line proposal, LP), 即Anchor不是矩形框, 而是从左,下,右边界发出的不同角度的射线, 通过这种Anchor将每条车道线划分正负样本(计算LP和GT的距离), 计算loss并更新模型参数.

名词解释:

  • line proposal (LP) 候选线(作用和检测任务中的Anchor一样) , 用于确定正负样本和车道线位置回归
  • line proposal unit (LPU), 用来生成LP的模块, 作用类似RPN

网络结构

网络结构分为特征提取检测头, 特征提取用ResNet, 检测头中实现了输出设定好的模型输出(包括是否为线的置信度, 长度, x方向上的偏移量)如下图右下的表格中的数据;

LPU

在车道线检测中使用线Anchor代替RPN中的Anchor box, 这里的线Anchor就称为LP.

LP 如何生成的?

先验知识: 车道线都是从图片的左侧,右侧或者底部出现, 失在灭点消失, 所以只需在特征图的三个边界(左,右,下)生成大量的LP;
的每个点生成一簇LP, 分别用$k_l$, $k_r$, $k_d$ 表示

  • 如果特征图高H,宽W, 则特征图共生成line proposal个数为 $H(k_l + k_r ) + Wk_d$
  • LPU直接在三个边界上的每个滑窗预测k条直线(直接预测车道线), k中的每个直线都有两个是否为车道线的置信度分数, S+1坐标,用于描述车道线位置
  • 一点区别: RPN: Anchor box -> region proposal -> 最终检测框; LPU(射线)->车道线

在这里插入图片描述

  • 用三个1x1的卷积分别在三个边界进行滑动, 每个位置生成了1024维的特征向量, 将该向量输入进全连接层, 分别为回归层和分类层
  • 由于迷你网络以滑动窗口的方式运行,完全连接的层分别在每个边界的所有空间位置上共享
  • 网络设计成了三个并行的1x1的卷积层, 每个卷积层之后分别连接一个回归层和一个分类层

车道线参数化表示

在这里插入图片描述

  • 原始图片用S条水平线均匀分割成S-1份, 水平分割线索引用1,2,3, ... S表示, 注意: 是从图像底部->图像顶部顺序!!
  • 参数化表示一条车道线原始表示方式为一条曲线, 参数化表示为这条曲线和水平分割线的交点, 所以是点集
  • 车道线长度可以由起始索引s和结束索引e包含的点的数量可以直观的确定车道线的长度
  • 车道线$l$ 表示如下, $l=\left{x_{s^{l}}, x_{s^{l}+1}, \cdots, x_{e^{l}}\right}$, $s^l$ 是车道线$l$的起始索引, $s^e$为结束索引; LP表示为 $L=\left{X_{s}^{L}, X_{s^{L}+1}, \cdots, X_{i n f}\right}$ $X_{inf} = inf$

车道线距离计算

$$D\left(L_{i}, l_{j}\right)= \begin{cases}\frac{\sum_{p=s{c}}{e{c}}\left|X_{p}-x_{p}\right|}{e-s^{c}+1}, & e^{c} \geq s^{c} \ i n f, & e{c}<s\end{cases}$$

车道线$l_i$ 和 LP $L_i$之间的距离用上述公式计算;

  • 起始索引选车道线和LP最大的索引, $s^{c}=\max \left(s^{L_{i}}, s^{l_{j}}\right)$ 注意: 由于索引是从下往上递增的, 所以两者中的大的值是离边缘较远的那个索引.

  • 结束索引选车道线和LP最小的, LP索引结束索引会是无穷大, 即为车道线结束索引 $e^{c}=\min \left(\right.$ inf,$\left.e{l_{j}}\right)=e{l_{j}}$

    该距离度量公式可以计算两个车道线的距离, 可以做线的聚类

Line-CNN损失函数

  • 首先将LP $L_i$ 设置正负标签, 如果满足1. $D\left(L_{i}, l_{j}\right)=d$ 是最小的, 2. $d<t_{pos}$ 即小于阈值 设置该$L_i$为正标签

  • 由于一条车道线可能将多个LP设置为正标签, 所以将一个非正的LP设置为负标签如果该LP对于所有的车道线的距离都大于$t_{neg}$

  • 没有标签的LP不会参与模型训练

$\mathcal{L}\left(p_{i}, \mathbf{r}{i}\right)=\lambda \sum \mathcal{L}{c l s}\left(p, p_{i}^{}\right)+\sum_{i} p_{i}^{} \mathcal{L}{r e g}\left(\mathbf{r}, \mathbf{r}_{i}^{*}\right)$

  • $i$是LP的索引
  • $p_i$是$L_i$ (LP)预测为车道线的概率; $p^*_i$是车道线的GT, 取值为1或0
  • $r_i$ 是预测的S+1个坐标向量; $r^*_i$ 是与$L_i$距离最小的$l_i$的坐标向量
  • 分类损失为log损失; 回归损失是smoothL1, 回归损失只有正标签才有响应

$\mathbf{r}{i}{*}=\left{e{l{j}}-s^{l_{j}}+1, x_{s}^{l_{j}}-X_{s} L_{i}, x_{s^{l_{j}}+1}-X_{s} L_{i}+1, \cdots\right}$

  • 第一个位置为点的数量
  • 区域位置为车道线到LP的偏移量
  • 实际计算过程中将 $s{l_{j}}=s{L_{i}}$, 将真实车道线的起点等于LP的起点, 为了正确计算回归损失

特征图上提取的LP如何映射回原图

网络输入原始图像尺寸为288x512, 假设特征图为原来的1/16, 特征图大小为18x32; 特征图上的每个像素生成的k($k_l$,或$k_r$,或$k_d$)个LP会映射到原始图像中, 和RPN的Anchor映射会原图的原理是一样的, 这个是我猜的, 毕竟论文中也没写实怎么映射的, 需要看代码了FC.

总结

为了解决车道线检测问题, 提出了LPU来提取LP用于车道线的位置回归和类别判断, 思路挺朴素但是效果挺好; 文章不足, 特征图提取的LP如何映射回原图没有写, 还是我自己猜的, 应该和RPN差不多; 数据集代码都没有, 简直太坑了, 数据集可以没有, 代码不开源都不知道细节怎么实现的, 好在LaneATT是开源的, 从这里应该能够知道这篇文章的实现细节吧, 但愿如此.

标签:right,End,Detection,索引,车道,LP,Line,Anchor,left
From: https://www.cnblogs.com/icesquirrel/p/17562229.html

相关文章

  • hive kerberos beeline 指定用户名
    使用HiveKerberosBeeline指定用户名的流程在这篇文章中,我将向你解释如何使用HiveKerberosBeeline指定用户名的流程。我们将使用一些必要的代码来完成这个任务。整体流程下面是使用HiveKerberosBeeline指定用户名的整体流程,我们将使用以下步骤来实现。步骤描述1.......
  • Unified Conversational Recommendation Policy Learning via Graph-based Reinforcem
    图的作用:图结构捕捉不同类型节点(即用户、项目和属性)之间丰富的关联信息,使我们能够发现协作用户对属性和项目的偏好。因此,我们可以利用图结构将推荐和对话组件有机地整合在一起,其中对话会话可以被视为在图中维护的节点序列,以动态地利用对话历史来预测下一轮的行动。由四个主要组......
  • 题解 Friendly Spiders
    FriendlySpiders带有技巧的最短路。如果\(u\)能到\(v\),说明\(\gcd(u,v)>1\),也就是有相同因子。所以我们考虑对于每个数\(u\),向他的所有质因子连一条长度为\(1\)的边,这样我们从\(u\)到\(v\)需要走两步,最终答案除以\(2\)即可。每次遇到一个新的因子,都要新建节点。......
  • Baseline实验环境准备
    实验Baseline环境搭建准备为了尽快地写成论文初稿,首先需要把实验完成。先将待做实验按几个方面分类:数据集GLUE数据集任务SST模型TransformerBert评价指标BLEUBERTSimilarityBitRate对于GLUE数据集以及其对应的相关任务,我还有点懵逼,在网上也找不到Tra......
  • 粗读Multi-Task Recommendations with Reinforcement Learning
    论文:Multi-TaskRecommendationswithReinforcementLearning地址:https://arxiv.org/abs/2302.03328摘要Inrecentyears,Multi-taskLearning(MTL)hasyieldedimmensesuccessinRecommenderSystem(RS)applications[41].However,currentMTL-basedrecommendati......
  • jquery video ended
    如何实现"jqueryvideoended"简介在这篇文章中,我将向你介绍如何使用jQuery来实现"jqueryvideoended"功能。这个功能可以用来监测当一个视频播放结束时触发的事件。整体步骤下面是实现"jqueryvideoended"的整体流程:步骤描述步骤1引用jQuery库步骤2......
  • Scrapy在pipeline中集成mongodb
    settings.py中设置配置项MONGODB_HOST="127.0.0.1"MONGODB_PORT=27017MONGODB_DB_NAME="bang123"pipelines.py:fromscrapy.pipelines.imagesimportImagesPipelinefromitemadapterimportis_item,ItemAdapterclassBang123Pipeline:......
  • Mac环境下 罗技 Logi Options+ Backend Connection Problem
    m1芯片MacBook,安装LogiOptions+。打开后一直提示Backendconnectionproblem-clickheretolaunchbackend。报错图片如下 查询后得知,是一个启动程序没有打开。解决方案如下:下载一个AppCleaner&Uninstaller,软件官网:(AppCleaner&Uninstaller-DownloadfromOffic......
  • Jenkins 系列3 --- pipeline
    一、概要1.承上启下Jenkins系列2.概念Pipeline用于顺序执行应用部署所需的任务,比如Build(编译)、Test(编译)和Deploy(部署)等。Pipeline是Jenkins的核心组成部分。Pipeline定义在Jenkinsfile中,它支持两种语法定义,一种是DeclarativePipelinesyntax(声明式管道语法),另一种......
  • mysql begin end 用法
    MySQL中begin...end的用法在MySQL中,begin...end是一种用于定义事务(transaction)的语法结构。事务是数据库操作的逻辑单元,可以将多个操作当作一个原子操作来执行,即要么全部成功,要么全部失败回滚。1.事务的概念事务是数据库操作的最小逻辑单位,它是由一系列的SQL语句组成的逻辑操作......