本文主要介绍一篇关于雷达数据语义分割的文章。这篇文章将点云通spherical projection投到2D平面后,先通过高效的CNN网络得出segmentation结果,然后还原出点云的segmentation结果,最后用一个精巧的knn-search算法,对结果进行优化。论文、代码地址:

RangeNet++: Fast and Accurate LiDAR Semantic Segmentation​www.ipb.uni-bonn.dePRBonn/lidar-bonnetal​github.com

1. 总体流程

如上图所示,总体流程分为4步:

  • A:球映射(Spherical projection)
  • B:语义分割(Segmentation)
  • C:点云重建(Point cloud reconstruction)
  • D:点云后处理(Post-processing)

2. 球映射(Spherical projection)

这步主要将3D点云映射为2D的range image,即将

映射为
。映射公式如下:

其中:

  • 为2D range image的宽和高;
  • 分别为雷达垂直方向的上、下视角范围
  • 垂直方向总的视角范围
  • 表示一个点到雷达的3D距离

映射完位置后,接着给每个2D位置设置feature。这里,根据每个

点对应的3D点,选取一下信息:
  • 3D坐标

  • 反射率(remission)
  • 距离(range)

每个坐标对应以上5个数值,所以最后可以得出一个

的向量。

这种映射方式可能会丢失一些点。因此,为了后面后处理时对结果进行优化,将丢失的点补上,把所有3D点对应的

座标组成一个list保存起来,后面会用到。

3. 语义分割(Segmentation)

这步主要对range image进行语义分割。具体使用如下图所示的沙漏形状的网络:

从图中可以看出,网络在进行downsample和upsample时,只在宽度上进行操作,保持高度不变。只要原因是,使用的数据集是用Velodyne HDL-64E激光扫描仪采集的,垂直方向只能采集64个值,相对于水平方向可以任意旋转360度采集数据来说(2048左右),数据量少很多。因此,为了防止垂直方向的信息步丢失,所以,只在水平方向进行downsample和upsample。

训练时的loss,使用加权的cross-entropy:

其中,

表示特定的类别出现的频率。这里主要是为了处理各个类的点数不均匀的情况。可以看出,加上
后,出现率低的类对应的点,相比出现率高的类对应的点,惩罚更大一些。

4. 点云重建(Point cloud reconstruction)

这步主要是把2D range image 图片segmentation的结果,映射到每个3D点上。这里需要注意的是,2D range image上的一个

点, 可能对应多个实际的3D点,比如为了考虑计算速度,2D range image的尺寸尽可能小而需要下采样时,多个3D点可能就映射到了同一个2D点。

具体操作是用之前保存的所有3D点对应的2D座标,找出其对应的segmentation结果。

5. 点云后处理(Post-processing)

如上图所示,2D range image经过segmentation后,结果看上去还不错。但是把结果投回到3D点云后,一些物体边缘部位的点出错的效果就很明显了。因此,后处理的目的就是对这些边缘点的结果进行修正。整体思路比较直观:通过每个点的一些邻居点的类别,来决定该点的类别。一个边缘点如果出错了,那么在3D点云中,这个点和它的大部分邻居点的类别应该会不一致。反过来,一个点大概率会和它的大部分邻居点的类别保持一致。

基于这种想法,论文提出了一种kNN search的操作。算法流程如下:

  1. 在2D range image上,定义一个大小为

    的窗口,分别用每个2D点作为窗口中心点,用该窗口取出其邻居点(落在窗口内的其他点,视为邻居点)。这步操作可以参考matlab里面的im2col。im2col后,可以得到每个点的邻居点,组成一个矩阵,尺寸为:
    ,每列即为对应点的所有邻居点的索引。
  2. 前面说到,一个2D的点,可能对应多个3D点,所以,实际的3D点数可能比
    要多。通过3D点到2D点的对应关系,还原出每个3D点的在2D图片上的邻居点,得出一个矩阵,尺寸为:
  3. 每个2D邻居点,包含了其对应的3D点的座标、类别。所以,可以从这些邻居点中,用KNN算法找出距离跟目标点最近的前k个点作为邻居点。论文中使用的距离,是两个点的range差的绝对值,而不是3D距离。这样做,是为了提高效率。此外,论文还使用了一个inverse Gaussian Kernel,来对距离进行调整,即:距离越近,权重越小;距离越远,权重越大。
  4. 接着,用一个距离阙值(cutoff threshold)对k个邻居点进行过滤,去掉距离大于阙值的邻居点。
  5. 对于剩下的邻居点集,哪个类的点数比较多,目标点就属于哪个类。

6. 总结

这篇论文提出了一种很直观的后处理方式kNN search。从实验结果看,对性能有明显帮助。

labelme 语义分割数据集_RangeNet++: 快速精确的雷达数据语义分割(IROS 2019)相关推荐

  1. labelme 语义分割数据集_labelme安装以及使用教程——自制语义分割数据集(保姆级示范)...

    前言: 这次我们要做的是一个物堆(也可以是沙.矿堆之类)的数据集,用于语义分割.我们的工作,就是要使用labelme工具,利用原图1.jpg生成它的标签图片1.png,得到的最终结果像下面这样: 1. ...

  2. 基于深度学习的点云分割网络及点云分割数据集

    作者丨泡椒味的泡泡糖 来源丨深蓝AI 引言 点云分割是根据空间.几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征.点云的有效分割是许多应用的前提,例如在三维重建领域,需要对场景内的物 ...

  3. 前沿丨基于深度学习的点云分割网络及点云分割数据集

    众所周知,点云的有效分割是许多应用的前提,例如在三维重建领域,需要对场景内的物体首先进行分类处理,然后才能进行后期的识别和重建.传统的点云分割主要依赖聚类算法和基于随机采样一致性的分割算法,在很多技术 ...

  4. 大盘点 | 基于深度学习的点云分割网络及点云分割数据集

    编辑 | 深蓝前沿 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 后台回复[数据集下载]获取计算机视觉近30种数据集! 引言 点云分割是根据空间.几何和纹理 ...

  5. 从零开始的图像语义分割:FCN快速复现教程(Pytorch+CityScapes数据集)

    从零开始的图像语义分割:FCN复现教程(Pytorch+CityScapes数据集) 前言 一.图像分割开山之作FCN 二.代码及数据集获取 1.源项目代码 2.CityScapes数据集 三.代码复 ...

  6. 快速制作自己的VOC语义分割数据集

    语义分割数据集制作与转换方法 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 基于PS的语义分割标注 第二章 构建VOC语义分割数据集 文章目录 语义分割数据集制作与转换方法 ...

  7. 【语义分割数据集制作】使用labelme制作自己的U-net语义分割数据集

      最近有一个工作需要使用Unet的语义分割结果作为上游任务,语义分割数据集需要自己制作,特此记录一下. 1.下载labelme   第一步当然是下载labelme工具,主要有两种方式:   1. 系 ...

  8. labelme 语义分割数据集_labelme自定义语义分割数据集 Python文件调用labelme_json_to_da...

    labelme自定义语义分割数据集 Python文件调用labelme_json_to_da labelme自定义语义分割数据集 Python文件调用labelme_json_to_dataset 批 ...

  9. 图像分割数据集制作matlab,制作自己的图像语义分割数据集

    本文教你如何正确制作自己的图像语义分割数据集.假设我当前目录下有500张图片,命名从1.jpg开始,一直往上递增,我事先已经调整好了图像的大小. 首先下载Labelme工具:https://githu ...

最新文章

  1. Gym 101845(2018 ACM-ICPC, Universidad Nacional de Colombia Programming Contest)
  2. android在控制台签名apk
  3. 关闭SQLite3中的journal暂存档
  4. 应用:Xbox 360无线大屏幕控制器“WP 7”
  5. C++工程通过opencv找到自己定义的矩形中的两平行线的距离
  6. Spring Boot 1.5.2.RELEASE中文版
  7. 微信小程序客服消息配置 token 验证失败 微信无请求记录 问题现象的解决办法
  8. 多媒体视频开发_(30)使用ffmpeg在视频中进行抽帧
  9. KPI and evaluation decouple verification
  10. Citespace安装【Version Check】Your version‘s status cannot be verified due to a network connection issue
  11. C++与UMG的交互
  12. 考虑单用户计算机上的下列I O操作,操作系统概论自考2016年10月真题
  13. 松果在线报名系统网站源码
  14. 作为高校老师,该如何兼顾教学与科研?
  15. throughput(吞吐量)
  16. PhotoShop JavaScript 批处理 学习二
  17. 随身WiF刷机救砖+刷入debian系统即可安装宝塔面板
  18. [转载]scanf()函数释疑[作者]------knocker
  19. 收藏,国自然摘要400字符,如何浓缩出精华?(附空白申请模板)
  20. 纯记录,没干货,Mac 的 iterm2 远程链接 中文乱码 问号?正确的解决方案

热门文章

  1. Leetcode--837. 新21点(java)
  2. xshell 上下左右键乱码和退格键失效
  3. python交叉验证函数_python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型...
  4. wcf获取MySQL中午乱码,如何启用WCF日志记录,以便它写入数据库?
  5. CNN中的卷积操作与权值共享
  6. OpenCV学习笔记(十七):图像修补:inpaint()
  7. MFC中单选按钮的特点总结
  8. MFC基于单文档制作吹彩色泡泡程序
  9. opencv图像处理中的一些滤波器+利用滤波器提取条形码(解析二维码)+公交卡倾斜矫正+物体尺寸丈量
  10. 吴恩达作业11:残差网络实现手势数字的识别(基于 keras)+tensorbord显示loss值和acc值