SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences

news2024/12/28 5:20:49

Paper name

SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences

Paper Reading Note

URL: https://arxiv.org/pdf/1904.01416.pdf

TL;DR

  • 2019 ICCV 论文,提出了一个大规模的真实场景 LiDAR 点云标注数据集 SemanticKITTI,标注 28 类语义,共 22 个 sequences,43000 scans

Introduction

背景

  • 基于 LiDAR 的语义分割数据集对于 3d 语义场景理解至关重要,而 3d 语义场景理解有助于帮助自动驾驶识别可行驶区域和非可行驶区域(比如停车区域与人行道)
  • 目前基于视觉的语义分割数据集较多,然而基于 LiDAR 的语义分割数据集一般数量级都很小
    在这里插入图片描述
  • 本文提出一个大规模的 LiDAR 点云标注数据集 SemanticKITTI,标注 28 类语义,共 22 个 sequences,43000 scans
  • 文章主要贡献
    • 提出了一个点云序列的逐点注释数据集
    • 支持对点云语义分割(semantic segmentation)的 SOTA 方法进行评估
    • 使用多次扫描来研究序列信息在语义分割中的应用
    • 基于移动汽车序列的注释,进一步引入了用于语义场景完成(semantic scene completion)的真实世界数据集,并提供了 baseline 效果
    • 开源了点云标注工具
    • 提供了 benchmark 评测网站

Dataset/Algorithm/Model/Experiment Detail

数据标注

整体概述

  • 在 KITTI odometry 数据集基础上进行标注,训练集与测试集划分与之前一致:00-10 训练、11-21 测试
  • 雷达型号: Velodyne HDL64E
  • 与 Paris-Lille-3D、Wachtberg 等点云数据集关系:
    • 这两个数据集也使用 Velodyne HDL64E 雷达,但分别仅提供整个采集序列的聚集点云或整个序列的一些单独扫描。本文提供了整个序列的单个扫描,还可以研究聚合多个连续扫描如何影响语义分割的性能,并使用这些信息来识别移动对象。
  • 标注的类别:
    • 与 Cityscapes、Mapillary Vistas 基本接近,不过考虑到点云的稀疏性与垂直视野,标注不区分乘坐车辆的人和车辆,而是将车辆和人员标记为骑自行车或骑摩托车的人
    • 区分运动与非运动行人与车辆,一共标注 28 类,其中 6 类被额外标注了运动或静止属性,另外有一类异常值类别表示由反射或者其他引起错误激光测量的点
  • 数据类别分布情况,其中 car、truck、other vehicle、person、bicyclist、motorcyclist 带有是否运动属性,可以看到车中静止的物体偏多,人是运动的更多
    在这里插入图片描述

标注流程细节

  • 为了使点云序列的标记切实可行,将多个扫描叠加在彼此之上,这反过来允许一致地标记多个扫描
    • 使用现成的 laser-based SLAM 算法生成汽车运动轨迹,有三个 sequences 数据集需要手动增加回环约束才能得到正确的轨迹
    • 基于上述产生的 pose 来将将多帧 scan 聚合到同一个位置上;多个 scan 聚合后的图中的运动车辆会有一个行驶轨迹显现出来
      在这里插入图片描述
  • 将点云序列细分为 100m 的片段进行标注,这能保证所有扫描之间的标注一致性;同时,为了保证不同片段之间重叠区域的标注一致性,标注工具将会显示相邻片段的重叠的小边界,从而可以从相邻的区域继续标注
    • 每个 100m 片段的标注时间平均是:住宅区 4.5 h,高速 1.5 h
    • 整个数据集中的片段数为 518,超过 1400 h 的标注才完成,包含交叉验证等时间后总标注耗时是 1700 h

语义分割评测

  • 算法输入为一个扫描周期的 LiDAR 点云,算法输出是每个点的类别
  • 评测指标 mIoU,排除 outlier, other-structure, and other-object 这三个类别(因为这些类别点不多或与另一个类别分布交叉严重)
    在这里插入图片描述

baseline 方法(6个baseline 方法)

  • 点云网络类别

    • Voxel-based:将点云转换为 voxel-grid,然后基于 3d conv 做语义分割
      • 优点:能够利用到图像领域中的结构设计经验
      • 缺点:随着 voxel grid 增加内存占用显著变大
    • Point-based
    • 传统方案:Conditional Random Fields (CRF) 等
  • PointNet、PointNet++

    • 使用原始点云作为输入,这些方法的核心是 max pooling 来获得顺序不变的性质,使得在形状的语义分割上效果较好;其中 PointNet 无法获取特征之间的空间关系,PointNet++ 在局部领域内使用 PointNet,使用级联的方式汇总局部特征,使得能提取局部细粒度特征与全局上下文信息
  • Tangent Convolutions

    • 直接在曲面上应用卷积神经网络处理非结构化点云
  • SPLATNet

    • 与 voxel-based 方法类似,将点云转换为高维稀疏格(sparse lattice),缓解显存和计算量的消耗,然后使用 bilateral convolutions 来提取特征(仅对占用区域的 lattice 进行操作)
  • Superpoint Graph

    • 与 PointNet 类似,将几何一致的点云聚合为 superpoints 后送入 PointNet 提取特征,得到的特征更紧凑且语义信息更丰富
  • SqueezeSeg

    • 利用 LiDAR 的外参将点云离散化(球面投影)从而可以用 2d conv 提取特征;全卷积 + CRF 获得平滑的预测结果
  • 上述方法的精度与计算量等信息对比:基于投影的方法比 point-based 高;其中 SqueezeSeg 作者认为 backbone 容量较小导致精度低,替换 backbone 为 DarkNet21 和 DarkNet53 后涨点幅度很大(29.5->47.4/49.9)
    在这里插入图片描述
    在这里插入图片描述

  • 点稀疏时效果一般不好,一般距离 sensor 更远的区域点更稀疏,其中 SPGraph 受到稀疏的影响较小

在这里插入图片描述

  • 多 scan 实验:利用当前的时间 t 帧 scan 与之前帧 t-1,…,t-4 帧 scan 作为输入,输出当前时间 t 帧的分割结果
    在这里插入图片描述

语义场景完成(SSC)评测

  • SSC:基于之前帧的 LiDAR 输入补全场景中的缺失 3d 信息,因为存在遮挡,需要模型有脑补能力
  • 数据生成:
    • 通过叠加未来帧的 LiDAR 点云可以得到当前帧的监督 GT
    • 使用体素来表达 3d 场景:0.2m分辨率,范围为 51.2mx51.2mx6.4m,体素大小为 256x256x32,每个体素的类别为该体素内雷达点最多的类别
    • 为了计算哪些体素属于遮挡空间,通过跟踪光线来检查汽车的每个 pose,哪些体素对传感器可见。一些体素,例如物体内部或墙后的体素永远不可见,因此在训练和评估期间忽略它们
    • 19130 train;815 val;3992 test
  • 评测指标
    • SC IoU:是否占用的分类
    • SSC mIoU:语义分类

Baseline 方法

  • SSCNet:去除 flipped TSDF 后训练时间变快且精度基本一致

  • TS3D:two stream 方法,除了 LiDAR 输入额外利用 RGB 输入,先用 2d 分割网络(DeepLabv2)处理 RGB 输入,将图像的类别和 LiDAR 信息在 early stage 进行融合

  • TSDF+DarkNet53Seg:使用 lidar 分割结果替换 rgb 分割

  • TSDF+DarkNet53Seg + SATNet:将 3d cnn backbone 替换为 SATNet

  • baseline 结果如下:
    在这里插入图片描述

  • 基于 LiDAR 点云进行 SSC 的两个难点

    • 体素占用内存大,训练测试需要采用分块策略
    • 远处 LiDAR 点云稀疏,需要结合图像输入信息解决
      在这里插入图片描述

Thoughts

  • 提出了一个真实场景下的点云语义分割和场景语义补全数据集,并且提出了相应的 baseline,具有重要价值
  • 使用纯图像输入的 ppl 可以参考 monoscene
  • 没有 instance 的 seg 标注及不同 scan 上的物体 id 标注对于一些时序应用可能有限制,不过理论上还是有探索价值的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字信号处理第六次试验:数字信号处理在双音多频拨号系统中的应用

数字信号处理第六次试验:数字信号处理在双音多频拨号系统中的应用前言一、实验目的二、实验原理和方法1.关于双音多频拨号系统2.电话中的双音多频(DTMF)信号的产生与检测3.检测DTMF信号的DFT参数选择4.DTMF信号的产生与识别仿真实验三、实验内…

菜鼠的保研总结

1.个人基本情况 本科学校:山东某双非 本科专业:网络工程 成绩排名:1/46 英语成绩:四级529,六级502 科研竞赛:美国大学生数学建模比赛特等奖提名、全国英语翻译比赛三等奖、山东省蓝桥杯java大学生B组三等奖…

C++基础:KMP

让我们先看一个问题:给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。输入格式第一行输入整数 N&#…

【Python】杨辉三角中的排成一列编号的问题

题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯ 给定一个正整数 N,请你输出数列中第一次出现 N是在第几个数? …

Go语言设计与实现 -- 内存管理器

不同的编程语言选择不同的方式管理内存,本节会介绍Go语言内存分配器。 Go内存分配的设计思想是: 内存分配算法采用Google的TCMalloc算法,每个线程都会自行维护一个独立的内存池,进行内存分配时优先从该内存池中分配,…

第十八章Vue的学习

文章目录什么是VueVue.js的官网介绍环境配置基本语法声明式渲染绑定元素属性双向数据绑定条件渲染列表渲染事件驱动侦听属性Vue对象生命周期什么是Vue 对于Java程序来说,我们使用框架就是导入那些封装了**『固定解决方案』的jar包,然后通过『配置文件』…

CSS3 之选择器

文章目录1、关系性选择器:EFE~F2、属性选择器3、伪元素选择器4、伪类选择器(被选中的元素的一个种状态)calc1、关系性选择器:EFE~F 2、属性选择器 E[attr~“val”]E[attr|“val”]E[attr^“val”]E[attr$“val”]E[attr*“val”]3、伪元素选择器 E::pl…

CesiumLab对BIM模型的输入格式要求 CesiumaLab系列教程

BIM 模型和手工模型最大的区别在于几点: 1.建模目标不同,手工模型的目的是为了可视化,就是为了看的见,看不见的东西能省则省。BIM 完全是按照一些工程标准去创建的,比如路面可能有多个层代表了不同的物理层。手工模型…

windows编译Paraview源码

目录一. 环境准备二. 编译1. CMake2. Visual Studio一. 环境准备 下载基本所需: paraview官方给了编译文档:https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md 所需要的基础有: 如图:(进入…

2022我的年度总结-- AI遮天之路

我是一个普普通通的大学生,我的博客记录了我学习编程以来共计1年多的水平,我希望能把自己大学的经历、选择、困惑等与同样身处大学,选择AI方向不知如何发展的人进行分享,因此写了这篇年终总结。另外,对于一些刚刚开始写…

重磅!华为更新职业认证架构刷新和重认证规则

尊敬的各位朋友,感谢您一直以来对华为认证的支持! 为匹配华为公司未来长期战略,紧随ICT技术演进趋势,自2023年1月1日起,华为职业认证将启用全新的架构体系和重认证规则,请您关注。 华为职业认证架构刷新 …

新年新希望--爱摸鱼的美工(12)

年近了,上班途中依然匆忙 看女孩子们渐渐开始倒腾 做了新发型,做了美美的指甲 换上了新衣服,买了新包 电话里讨论着 去哪里过年,买什么年货 好像以前的我也这样 今年挣得少了,不想添新衣(不能) …

【条理清晰】在 Windows 上安装 MySQL

下载 MySQL 安装程序安装 MySQL 数据库安装示例数据库下载 MySQL 安装程序 在本教程中,我们展示如何在 Windows 平台上下载和安装 MySQL 的详细步骤。 在 Windows 平台上安装 MySQL 很简单,并不需要太复杂的步骤。按照本文的步骤操练起来就可以了。 我…

一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(下)

内容介绍了一体化低压伺服Ethercat通信的电机在汇川H5UPLC上的使用,一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(上)主要讲解环境的搭建以及使用AutoShop软件的在线调试功能,简单控制电机位置、速度模式运行。那么本篇我们就来讲解下使用汇…

【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )

文章目录一、手动空安全管理二、空安全调用操作符 ?三、let 函数结合空安全调用操作符使用一、手动空安全管理 Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下 , 变量是 非空类型 的 , 如果使用 类型? 将变量声明为 可空类型 , 那么就需要使用 手动安…

【C语言进阶】动态内存管理

1. 为什么存在动态内存分配我们已经掌握的内存开辟方式有:int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:1. 空间开辟大小是固定的。2. 数组在申明的时候,…

JavaWeb复习

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

【迅为iMX6Q】开发板 u-boot 2022.04 SD卡 启动

相关参考 【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动 开发环境 win10 64位VMware Workstation Pro 16ubuntu 22.04【迅为imx6q】开发板, 2G DDR uboot-imx 下载 使用 NXP 官方提供的 uboot-imx,代…

TreeList-关闭默认显示的右击菜单

需要给控件添加自定义的右击菜单,所以就造成了冲突,导致右击时只弹出控件自带的菜单而没弹出我自定义的菜单,现在把关闭默认菜单的方法记录一下

数据库,计算机网络、操作系统刷题笔记27

数据库,计算机网络、操作系统刷题笔记27 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle…