本文由加州大学圣地亚哥分校与港科大机器人实验室共同发表,收录于ECCV2020。本文创新型地提出了表面法向估计器(SNE),并将其用于路面分割网络中,使得 SNE-RoadSeg 在不同的数据集中获得了很好的检测性能。

论文:http://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123750341.pdf
GitHub仓库:https://github.com/hlwang1124/SNE-RoadSeg

文章目录

  • 一、SNE-RoadSeg 简介
  • 二、表面法向估计器 SNE
  • 三、路面分割架构 RoadSeg
  • 四、SNE-RoadSeg 实验效果
  • 五、总结

一、SNE-RoadSeg 简介

自由空间检测是自动驾驶汽车视觉感知的重要组成部分。最近在数据融合卷积神经网络(CNNs)方面所做的努力已经显著地改善了语义驱动场景分割。可以将自由空间假设为一个地平面,在该地平面上的点具有相似的曲面法线。

因此,本文首先介绍了一种新的模型——表面法向估计器(SNE),它可以高精度、高效率地从密集的深度/视差图像中提取表面法向信息。此外,本文还提出了一种数据融合的CNN结构,称为RoadSeg,它可以从RGB图像和推断的表面法线信息中提取和融合特征,从而实现精确的自由空间检测。

为了达成研究目的,我们发布了一个在不同的光照和天气条件下收集的,大规模的自由空间检测数据集,命名为Ready-to-Drive(R2D)道路数据集。实验结果表明,我们提出的SNE模块可以使所有最先进的CNN都受益于自由空间检测,并且我们的SNE-RoadSeg在不同的数据集中获得了最好的整体性能。

二、表面法向估计器 SNE

SNE 的作用就是要将输入的深度图转换成表面法向量,并输入到网络中:


如何准确求取图像中的表面法向量就成为了一个重要的数学问题,下面就来详细介绍它的推到过程。

1、建立相机坐标系到图像像素坐标系之间的关系

其中,p=[x, y],表示像素坐标(x, y);P=[X, Y, Z],表示p在相机坐标系中对应的空间点位置;K是相机内参,由相机标定获得。

2、建立点P处的法向量方程

点P处的法向量为(nx, ny, nz),则法向量方程可表示为:

由(1)、(2)式联立可得:

分别对x, y求偏导:

3、表示法向量

由 (4) 式可以得到:
对于任意的 Qi∈NpQ_i \in N_pQi​∈Np​,其中Np=[Q1,Q2,...,Qk]N_p =[Q_1, Q_2, ... ,Q_k]Np​=[Q1​,Q2​,...,Qk​],是点 P 的 k 个临近点。将(5)代入(2)中,可以计算出其相应的nzin_{zi}nzi​:

由此可知,法向量可以表示为:

4、球坐标系法向量

由球坐标系性质可知,在点P处的法向量为:

其中,一个角度可以求出来:
通过建立如下关系式,其中k是点P的k个临近点,n^\hat{n}n^表示常规法向量,niˉ\bar{n_i}ni​ˉ​表示球坐标系下的法向量。


当E最小时,说明niˉ\bar{n_i}ni​ˉ​与n^\hat{n}n^无限接近,此时即可求得理想的 θ\thetaθ。即令:


可得 θ\thetaθ 的表达式:

综上所述,整个计算过程,表示可以如下图所示:

三、路面分割架构 RoadSeg

如下图所示,是 SNE-RoadSeg 的整体结构图。在整体结构上,仍然采用的是编码-解码器的结构。不同于 Unet 的是,本文借鉴DenseNet的跳过连接在解码器中实现了更加灵活的特征融合。并且,认为跳过连接仅在编码器和解码器的相同尺度特征图上强制聚合是一个不必要的约束。

从上图可知,提取的 RGB 和表面法线特征图通过逐元素求和进行分层融合。然后通过DenseNet的跳跃连接在解码器中再次融合已经融合的特征图以恢复特征图的分辨率。在RoadSeg的最后,使用sigmoid层生成语义驾驶场景分割的概率图。

我们使用 ResNet 编码器的主干网络。具体来说,初始块由卷积层、批量归一化层和 ReLU 激活层组成。然后,依次使用最大池化层和四个残差层来逐渐降低分辨率并增加特征图通道的数量。

ResNet 有五种架构:ResNet-18、ResNet-34、ResNet-50、ResNet-101 和 ResNet-152。我们的 RoadSeg 遵循与 ResNet 相同的命名规则。特征图通道的数量 cnc_ncn​ 根据采用的 ResNet 架构不同而变化。具体来说,对于 ResNet-18 和 ResNet-34,c0–c4 分别为 64、64、128、256 和 512;对于 ResNet-50、ResNet-101 和 ResNet-152 分别为 64、256、512、1024 和 2048。

解码器由两种不同类型的模块组成:(a) 特征提取器 Fi,j (b) 上采样层 Ui,j。它们紧密连接以实现灵活的特征融合。特征提取器用于从融合特征图中提取特征,并确保特征图分辨率不变。上采样层用于提高分辨率并减少特征图通道。特征提取器和上采样层中的三个卷积层具有相同的内核大小 3×3、相同的步长 1 和相同的填充 1。

四、SNE-RoadSeg 实验效果

本文提出的方法与 KITTI 道路基准上发布的五个最先进的 CNN 进行了比较。实验结果示下图所示:

如下表所示,给出了定量的比较,表明本文提出的 SNE-RoadSeg 实现了最高的 MaxF、AP 和 PRE,而 LCCRF实现了最好的 REC。本文的自由空间检测方法在 KITTI 道路基准测试中排名第二。

五、总结

简而言之,本文的主要贡献包括:

  • 提出了 SNE 模块,能够从深度/视差图像中以高精度和高效率推断表面法线信息;
  • 提出了名为 RoadSeg 的数据融合 CNN 架构,能够融合 RGB 和表面法线信息以进行准确的自由空间检测,并且在检测可行驶道路区域时优于所有其他 CNN。
  • 发布了一个用于语义驾驶场景分割的公开可用合成数据集。

【SNE-RoadSeg 解读】结合表面法向量的路面分割网络(ECCV2020)相关推荐

  1. matlab练习程序(点云表面法向量)

    思路还是很容易想到的: 1.首先使用KD树寻找当前点邻域的N个点,这里取了10个,直接调用了vlfeat. 2.用最小二乘估计当前邻域点组成的平面,得到法向量. 3.根据当前邻域点平均值确定邻域质心, ...

  2. PCL估计点云的表面法向量

    PCL估计点云的表面法向量 估计点云表面法向量的方法 理论基础 法线确定方法 法线方向确定 选择合适的邻域尺度 PCL估计表面法线代码实现 用OpenMP加速法线估计 参考资料 估计点云表面法向量的方 ...

  3. ECCV2020 | SNE-RoadSeg:一种基于表面法向量提取的道路可行驶区域分割方法

    精选作品,第一时间送达 这篇文章收录于ECCV2020,是一篇关于无碰撞空间区域分割的文章,整体效果很不错.最主要的核心思想是在表面发现估计器的设计,在得到表面法线后将其用于分割网络的编码器环节,并在 ...

  4. 光度立体(一)- 基于先验信息的快速表面法向量求解

    基于先验信息的快速表面法向量求解 一.光度立体法简介 二.经典光度立体法求解法向量 三.基于先验信息快速求解法向量 一.光度立体法简介 光度立体法(Photometric Stereo)是一种使用多个 ...

  5. 《用两天学习光线追踪》3.球体和表面法向量

    本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...

  6. YOLOP三合一:车辆检测+道路面分割+道路线分割

    [前言] 原本想写AdderNet的,但这东西有点难顶,GPU训练显存用量明显不对劲,我的小显卡练个resnet20炸显存了,换成CPU炼,炼到天黑都跑不了多少个epoch,不折腾了.中间折腾的时候看 ...

  7. faster rcnn源码解读(五)之layer(网络里的input-data)

    转载自:faster rcnn源码解读(五)之layer(网络里的input-data) - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u010668 ...

  8. SSRNet:用于大规模点云表面重建的深度学习网络(CVPR2020)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理人:袁赣张秦,付前程,张琛,廖新耀 论文: [1] Zhengxin Mi#, Yiming Lu ...

  9. PCL之估计整个点云表面法向量

    代码展示: #include <string> #include <iostream> #include <pcl/io/pcd_io.h> #include &l ...

  10. 报告解读|远程银行:从扎根网络到加速上云

    「云信说」 近日,中国银行业协会发布了<中国银行业客服中心与远程银行发展报告 (2020)>,从多个方面介绍了2020年客服中心与远程银行的整体发展情况,彰显了金融科技化进入加速期的趋势. ...

最新文章

  1. Android全屏,隐藏状态栏和标题栏
  2. node.js入门系列(一)--Node.js简介
  3. python 调用c++
  4. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
  5. 《.NET内存管理宝典》在京东上架销售啦!
  6. 【渝粤教育】电大中专新媒体营销实务 (13)作业 题库
  7. 计算机网络(十九)-IEEE802.11无线局域网
  8. CMM已经落伍了,敏捷才是王道
  9. 职场上,领导更愿意提拔什么样的下属?
  10. Mysql优化(出自官方文档) - 第三篇
  11. thymealf 高级用法_mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存...
  12. 打造自己的 PTM!新词挖掘+预训练
  13. Linux工具之htop命令
  14. windows scrip host报错代码:800A00D
  15. C语言 输出字母倒三角形
  16. OEL6.5+11GR2安装(超级详细版)
  17. Android 自定义注解处理器
  18. 如何去掉PDF文档中的水印?
  19. mysql数据库实体_关系型数据库中实体之间的关系
  20. vue自定以鼠标样式cursor

热门文章

  1. 在windows下安装 Ruby on rails 的血泪史
  2. 哈夫曼编码(Huffman Coding)多图详细解析
  3. 什么是Smartdrv程序
  4. centos下smartctl安装配置(硬盘S.M.A.R.T信息及坏块检测命令)
  5. vfp python_2018年VisualFoxPro
  6. phpdesigner 8 注册码
  7. python脚本注册服务+pyinstaller打包exe开机自启动服务
  8. PSP伊苏VS空之轨迹 游戏ISO文件和完美通关全要素存档
  9. dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器
  10. c 程序设计语言试卷,C语言程序设计试题及答案