0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

车道线检测Ultra Fast Deep Lane Detection V2讲解

jf_pmFSk4VX 来源:GiantPandaCV 2023-01-05 11:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ultra Fast Deep Lane Detection V2

【GiantPandaCV 导语】Ultra Fast Deep Lane Detection 是个比较有特点的车道线检测模型,把检测转化成分类来实现。现在出了 V2,有了几个创新点,于是又来研究一下。之前参考 Ultra Fast Deep Lane Detection V1 设计了一个全新的车道线检测网络,把模型压缩了80%,并部署使用了。另外还把 v1 和 yolov4 合并实现了多任务:https://github.com/Huangdebo/YOLOv4-MultiTask

1 介绍

这篇文章提出了一个超快车道线检测,区别于之前基于分割和回归的模型,该模型把车道线检测看车是分类问题,而且使用了全连接层,加强了模型的全局感知能力。另外,本文还设计了一个混合锚点机制,对不同的车道使用不用的锚点,很好地解决了两侧车道检测性能不佳的问题。该模型在兼顾了速度的前提下,还很好地处理了遮挡和暗光等情况,取得了不错的性能。

7cbfdda8-8c5d-11ed-bfe3-dac502259ad0.png

2 模型设计

2.1 使用锚点来表示车道线

7cd0bf74-8c5d-11ed-bfe3-dac502259ad0.png

为了表示车道线,首先引入了横向锚点,把车道线看车横向锚点的一组关键点。但当两侧的车道线的水平角度比较小时,便会引起定位问题,也就是一定宽度的车道线会覆盖到多个关键点,导致定位错乱,而且角度越小,问题越严重:

7cda8f18-8c5d-11ed-bfe3-dac502259ad0.png

为了解决上述的定位错误问题,文章便提出一种混合锚点机制,中间水平角度大的车道线使用横向锚点来表达,两侧水平角度小的车道线用纵向锚点来表达。每条车道线都用一组归一化坐标来表示

7ce13160-8c5d-11ed-bfe3-dac502259ad0.png

2.2 基于锚点的网络设计

因为每条车道线都用一组归一化坐标来表示,而且是把车道线检测看成分类任务,于是可以通过类别数目来映射出每个车道线关键点的类别:

7ce75c7a-8c5d-11ed-bfe3-dac502259ad0.png

另外,网络还添加了一个分支,用来判别车道线在该处是否存在。该分支的目标就只有两个值:1和0,分别代表存在和不存在:

7cf11918-8c5d-11ed-bfe3-dac502259ad0.png

7cfaf08c-8c5d-11ed-bfe3-dac502259ad0.png

2.3 序列分类的损失函数

既然是分类任务,那自然就会想到使用基本的分类损失函数,相当于把关键点的不同位置看成不同的类别,直接用 CE loss 来表达:

7d038f76-8c5d-11ed-bfe3-dac502259ad0.png

于基本的分类不一样的是,这个位置的类别是有序的,也就是可以把这个位置的预测值看成是各个位置的投票 均值,越靠近 groundtruth 的地方投票值越大,可以缓解预测偏移的问题:

7d0bca2e-8c5d-11ed-bfe3-dac502259ad0.png

7d149f46-8c5d-11ed-bfe3-dac502259ad0.png于是,可以这个期望损失可以表达成:

7d1ff9a4-8c5d-11ed-bfe3-dac502259ad0.png

另外,对于网络另一个用以判别车道线是否存在的分支,就是一个二分类问题,其损失函数可以表达成:

7d282106-8c5d-11ed-bfe3-dac502259ad0.png

所以整个模型的损失函数便可以组成:7d31e3a8-8c5d-11ed-bfe3-dac502259ad0.png

3 消融实验

3.1 混合锚点机制的作用

混合锚点机制中包含了横向锚点策略和纵向锚点策略,针对不同的车道线,使用不同的策略。为了对比混合锚点机制的作用,作者分别单独使用横向锚点策略和纵向锚点策略以及混合锚点来进行对比:

7d37de2a-8c5d-11ed-bfe3-dac502259ad0.png

3.2 序列分类的作用

相比于基本的分类任务,文章中所用的序列分类还利用了车道线关键点位置的有序性。为了对比序列分类的作用,作者还使用了传统分类和回归的方式来比对。对于回归方式,则是把网络的分类头换成回归头,并用 smooth L1 los 来训练。实验表明,利用了关键点有序性的序列分类的性能明显优于一般的分类和回归方式:

7d3ec15e-8c5d-11ed-bfe3-dac502259ad0.png

3.3 序列分类损失的消融

序列分类的损失函数包含了两部分,一个是基本的分类损失和一个期望损失。作者也进行了消融实验来对比它们的作用:

7d47b7fa-8c5d-11ed-bfe3-dac502259ad0.png

3.4 类别的个数和锚点数量的影响

因为是把车道线的位置检测看成是关键点位置的分类,那久必须要设定一个类别数目,作者通过调整类别数目来做对比实验,发现随着类别数目的增加,模型的性能显示提升然后再下降,说明类别数目并不是越多越好。同样,锚点的数量也需要预先设定,原则上讲,锚点数量越多,对车道线的检测就越精细,但也意味着计算量也更大,所以必须要在模型速度和性能上做一个权衡。

7d579cce-8c5d-11ed-bfe3-dac502259ad0.png

4 结论

使用了混合锚点机制和序列分类损失,缓解了 V1 中两侧车道线检测性能不足的问题,而且还能保持一样的高效率。但锚点的数目和序列分类的数目丢等参数都需要手动设定,可能存在一定的数据相关性。而且网络最后一层使用的是全连接层来提升网络的感知能力,导致参数比较大,对工程部署不太友好,这些都是可优化的点。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4926

    浏览量

    94284
  • 模型
    +关注

    关注

    1

    文章

    3816

    浏览量

    52265
  • 机制
    +关注

    关注

    0

    文章

    24

    浏览量

    10045

原文标题:车道线检测 Ultra Fast Deep Lane Detection V2 讲解

文章出处:【微信号:GiantPandaCV,微信公众号:GiantPandaCV】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    uM-FPU V2 浮点协处理器:功能特性与应用指南

    uM-FPU V2 浮点协处理器:功能特性与应用指南 引言 在电子设计领域,浮点运算能力对于许多应用至关重要。Micromega Corporation 的 uM-FPU V2 浮点协处理器为
    的头像 发表于 04-11 15:15 470次阅读

    AA Boost Module V2:便捷的电源解决方案

    AA Boost Module V2:便捷的电源解决方案 在电子设计中,电源供应是一个关键问题。今天要给大家介绍的是DFRobot的独家产品——AA Boost Module V2(SKU
    的头像 发表于 03-27 12:50 191次阅读

    如何在 VisionFive v2 上使用外部 GPU?

    如果旧的 amd gpu 在 VisionFive V2 上运行,我想使用带有开源 amd 驱动程序的 amd gpu。我需要什么以及如何将 GPU 连接到 VisionFive v2
    发表于 03-13 06:38

    RDMA设计44:RoCE v2原语功能验证与分析

    它是RoCE v2协议进行信息及数据交换的核心机制,也是DUT需要实现的核心机制之一,对该功能的仿真验证需要考虑指令的提交数据包的组装及发送、数据的DMA处理等。
    的头像 发表于 02-25 09:26 308次阅读
    RDMA设计44:RoCE <b class='flag-5'>v2</b>原语功能验证与分析

    RDMA设计37:RoCE v2 子系统模型设计

    本博文主要交流设计思路,在本博客已给出相关博文160多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 RoCE v2 子系统模型是用来模拟 RoCE v2 功能
    发表于 02-06 16:19

    RDMA设计30:RoCE v2 发送模块2

    当 RoCE v2 发送模块检测到发送队列非空时,则从发送队列中读取一个发送队列条目,并判断请求类型。根据不同的请求类型和请求长度进入不同的包生成流程,这一过程由请求状态机实现。
    的头像 发表于 01-27 11:56 813次阅读
    RDMA设计30:RoCE <b class='flag-5'>v2</b> 发送模块<b class='flag-5'>2</b>

    RDMA设计29:RoCE v2 发送及接收模块设计2

    本博文主要交流设计思路,在本博客已给出相关博文约100篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 (1)RoCE v2 发送模块 RoCE v2 发送模块
    发表于 01-26 16:47

    RDMA设计28:RoCE v2 发送及接收模块设计

    本博文主要交流设计思路,在本博客已给出相关博文约100篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 RoCE v2 发送及接收模块负责将用户指令组装为 RoCE
    发表于 01-25 10:45

    RDMA设计19:RoCE v2 发送及接收模块设计

    本博文主要交流设计思路,在本博客已给出相关博文约100篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 RoCE v2 发送及接收模块负责将用户指令组装
    发表于 01-06 08:08

    AURIX™ Audio Application Kit for AURIX™ lite Kit V2 深度解析

    AURIX™ Audio Application Kit for AURIX™ lite Kit V2 深度解析 在音频技术不断发展的今天,一款功能强大且灵活的音频应用套件对于电子工程师来说至关重要
    的头像 发表于 12-20 20:35 1445次阅读

    uIO-Stick v2 用户指南:设计、应用与安全要点

    uIO-Stick v2 用户指南:设计、应用与安全要点 在电子工程领域,接口设备对于连接不同系统和实现功能交互起着至关重要的作用。uIO-Stick v2 作为一款用于 MOTIX™ MCU 设备
    的头像 发表于 12-20 11:10 857次阅读

    【Milk-V Duo S 开发板免费体验】5 - 使用YOLOv11进行目标检测

    引言 前面已经完成了Milk-V Duo S开发板的基本功能测试,今天来尝试一下使用YOLOv11进行目标检测。 TDL-SDK Cvitek 所提供的 TDL(Turnkey Deep
    发表于 07-24 14:57

    RDMA over RoCE V2设计1:为什么要设计它?

    基于PC-PC或GPU-GPU之间RDMA设计已有较多厂商投入,虽然有的大厂投入几年后折羽而归,但不影响PC领域成熟应用产品的推广。这里主要讨论在FPGA上设计RDMA over RoCE V2,虽然已有xilinx的ernic应用,但是性价比以及国产化需求还是有其发展空间。
    的头像 发表于 07-15 10:58 812次阅读
    RDMA over RoCE <b class='flag-5'>V2</b>设计1:为什么要设计它?

    3-521057-2 Ultra-Fast 快速断开连接器现货库存

    3-521057-2 Ultra-Fast 快速断开连接器现货库存3-521057-2是由 TE Connectivity 生产的一种Ultra-Fast快速断开连接器。设计精巧,具备
    发表于 06-04 09:08

    CYPD4266+TUSB1064实现USB3.0 UFP 2lane +DP 2lane传输遇到的问题求解

    我们在使用CYPD4266+TUSB1064 实现USB3.0 UFP 2lane +DP 2lane 传输, 1.当DP mode Parameters ->Modes
    发表于 05-21 06:15