PointCloudSegmentation

点云分割 PointCloudSegmentation测试笔记_AI视觉网奇的博客-CSDN博客

代码地址:https://github.com/LiyaoTang/contrastBoundary

1、背景

对点云进行语义分割是对3D世界理解的前提,鲁棒的3D分割对于各种应用非常重要,包括自动驾驶、无人机和增强现实。过往几期的分享中,大家往往关注于不同目标的分离,但很少关注3D点云的边界。目前的3D点云分割方法通常在场景边界上表现不佳,这会降低整体分割的性能。场景边界上的准确分割非常重要。首先,清晰的边界估计可能有利于整体分割性能。例如,在2D图像分割中,边界上的准确分割是生成准确mask的关键。另一方面,对于占据场景中大部分3D点的对象类别,例如建筑物和树木,错误的边界分割可能会在更大程度上影响对具有更少点的对象类别的识别(例如,行人和柱子分割),这个现象在实际应用是更加凸显。这对于自动驾驶等应用尤其危险,例如,如果自动驾驶汽车无法准确识别边界,则会撞到路边。

大多数以前的3D分割方法通常忽略了场景边界的分割。尽管一些方法考虑了边界,但它们仍然缺乏明确和全面的研究来分析边界区域的分割性能。它们在整体分割性能上的表现也不尽如人意。特别是,当前流行的分割指标缺乏对边界性能的具体评估,这就使得现有方法无法更好的展示边界分割的质量。为了更清楚地了解边界的性能,本文中作者分别计算了边界区域和内部(非边界)区域的mIoU。通过比较不同区域类型的表现以及整体表现,直接揭示边界区域的不理想表现。

此外,为了更全面地描述边界上的性能,作者考虑了GT中边界与模型分割结果中的边界之间的对齐。提出了一种新颖的对比边界学习(Contrastive Boundary Learning,CBL)框架,以更好地将模型预测的边界与真实数据的边界对齐。如图1所示,CBL优化了边界区域点的特征表示模型,增强了跨场景边界的特征识别。此外,为了使模型更好地了解多个语义尺度的边界区域,作者设计了一种子场景边界挖掘策略,该策略利用子采样过程来发现每个子采样点云中的边界点。具体来说,CBL在不同的子采样阶段进行操作,并促进3D分割方法来学习更好的边界区域周围的特征表示。

图1 对比边界学习(顶部)通过子采样过程从每个子采样点云(即子场景)中发现边界。通过在多个尺度上对边界区域进行对比优化,CBL增强了跨边界的特征识别(中)。在没有明确的边界预测的情况下,CBL改进了边界分割并获得了更好的场景分割结果(下)。

本文主要贡献如下:

(1) 探索了当前3D点云分割中存在的边界问题,并使用考虑边界区域的指标对其进行量化。结果表明,目前的方法在边界区域的准确性比它们的整体性能差得多。

(2) 提出了一种新颖的对比边界学习(CBL)框架,它通过对比场景边界上的点特征来改进特征表示。因此,它提高了边界区域周围的分割性能,从而提高了整体性能。

(3) 通过全面的实验证明CBL可以在边界区域以及所有baseline的整体性能上带来显着且一致的改进。这些实验结果进一步证明了CBL对提高边界分割性能是有效的,准确的边界分割对于鲁棒的3D分割很重要。

2、核心思想

A.边界分割:

由于当前大部分工作都集中在改进一般指标,例如mean intersection over union(mIoU)、overall accuracy(OA)和mean average precision(mAP),点云分割中的边界质量通常被忽略。与最近的边界相关工作仅给出边界的定性结果不同,作者引入了一系列用于量化边界分割质量的指标,包括mIoU@boundary、mIoU@inner和来自2D实例分割任务的边界IoU(B-IoU)分数。

基于ground-truth数据,如果在其邻域中存在具有不同注释标签的点,作者将其视为边界点。类似地,对于模型预测,如果附近存在具有不同预测标签的点,也将这个点视为边界点。这里将点云记为X,第i个点记为xi,其局部邻域为Ni=N(xi),对应的GT标签为li,模型预测标签为pi。将GT中的边界点集定义为Bl,预测分割中的边界点集定义为Bp,有:

这里按照惯例将Ni设置为半径为0.1的半径邻域。

为了检查边界分割结果,一种直观的方法是计算边界区域内的mIoU,即mIoU@boundary。为了进一步比较模型在边界和非边界(内部)区域的性能,作者进一步计算了内部区域的mIoU,即mIoU@inner。拟定mIoU在整个点云X上计算为:

其中K是类的总数,1[·]表示一个布尔函数,如果[·]中的条件为真,则输出1,否则输出0。将mIoU@boundary和mIoU@inner定义为:

其中X-Bl是内部区域中的点集。然而,mIoU@boundary和mIoU@inner没有考虑模型预测分割中的错误边界。受2D实例分割的边界IoU的启发,为了更好地评估,作者考虑了分割预测中的边界与GT数据中的边界之间的对齐。通过B-IoU进行评估。

B.对比边界学习(CBL)框架:

对比边界学习(CBL)框架,如图2所示。通过对比学习来增强跨边界的特征的辨别能力。然后,为了深入提高模型在边界上的性能,作者通过子场景边界挖掘在子采样点云(即子场景)中使用CBL。

图2 对比边界学习的详细说明。

作者遵循广泛使用的InfoNCE损失及其泛化来定义边界点的对比优化目标函数。对于边界点xi∈Bl,作者希望学习后的表示结果更类似于来自同一类别的相邻点,并且明显不同于来自不同类别的其他相邻点,即:

其中fi是xi的特征,d(·;·)是距离测量,τ是对比学习中的温度。上式仅关注边界点(图2中红色的虚线圆圈)。通过对比学习增强了跨场景边界的特征识别,这对于改进边界区域的分割非常重要。

C.子场景边界挖掘

为了更好地探索场景边界,作者在多个尺度上检查子采样点云的边界,这使得在backbone模型的不同子采样阶段能够进行对比边界学习。然而,在二次采样之后,很难得之前边界点集B的正确定义。因此,为了在子采样点云中启用CBL,作者提出了子场景边界挖掘方法,它在每个子采样阶段确定一组真实边界点。具体来说,作者使用上标来表示阶段。在子采样阶段n,将其子采样点云表示为Xn。对于输入点云,我们有X0=X。在第n个阶段采集一组边界点Bln∈Xn时,需要确定子采样点xni∈Xn的标签lin,即子场景标注。由于每个子采样点xni∈Xn是从其先前点云Xn-1中的一组点聚合而成的。因此,可以利用子采样过程来迭代确定标签。将l0i作为点x0i=xi的GT标签,有以下公式:

其中Nn-1(xni)表示前一阶段xni的局部邻域(图2中灰色虚线圆圈),即从Xn-1聚合的点组将由单个点xni∈Xn表示,AVG表示平均池化。最后,通过子场景边界挖掘,在所有阶段都应用了CBL,最终损失为

其中LnCBL是第n阶段的CBL损失,λ是损失权重

3、主要实验结果展示:

本文的实验主要在室内S3DIS、ScanNet数据集和室外场景Semantic3D、NPM3D数据集上进行CBL性能的评估和分析。

A.边界问题:

实验比较了mIoU、mIoU@boundary、mIoU@inner以及B-IoU计算出的分数。如表1中所示。通过对最近的3D点云分割方法进行评估,可以发现得到的mIoU@boundary远低于mIoU@inner分数。另外整体性能介于这两个分数之间,这表明边界区域的分割效果会降低整体分割性能。B-IoU也与mIoU@boundary一致,计算出的分数远远落后于mIoU分数。因此,实际数据表明边界区域的分割质量确实不令人满意。

表1 S3DIS数据集测试集Area5上获得的结果。*表示该方法也考虑边界

B.性能对比:

如表2和3中所示,所提方法针对不同的数据集都有所提升,证明了对不同的局部聚合模块的有效性。

表2 S3DIS Area5数据集上的定量结果。红色表示对baseline的改进,粗体或红色粗体表示最佳性能。*表示该方法也考虑边界。

表3 S3DIS上的定量结果,经过6层交叉验证。红色表示对基线的改进,粗体或红色粗体表示最佳性能。

作者在图4中进一步定性地证明,CBL通过改进边界区域的分割有效地提高了整体性能。与同样考虑边界的方法相比,CBL获得了更好的表现。

图4作者在几个不同的场景上比较了ConvNet baseline方法与CBL的结果

通过在室外点云数据Semantic3D上的CBL评估,也证明了该方法对不同类型场景的通用性。

表4 Semantic3D上的定量结果

4、总结

在本文中,作者提出了一种专注于场景边界的分割方法,该方法通过创建的场景边界指标“对比边界学习(CBL)”来评估分割性能。解决了分割中边界上出现的问题。具体来说,所提出的CBL通过在多个尺度的场景上下文的帮助下对比它们的表示来增强跨边界点之间的特征区分。通过在三种不同的baseline方法上应用CBL,证明了CBL可以提升了这些方法在边界上的性能以及整体性能。实验结果证明了所提方法的有效性以及边界对3D点云分割的重要性。

作者也指出本文方法的缺陷之一是过多关注场景边界,而忽略了点云的内部区域。未来会进一步探索边界在点云分割中的作用及其与内部区域的关系。

点云分割学习笔记2022相关推荐

  1. 尚硅谷云原生学习笔记(1-75集)

    笔记列表: 尚硅谷云原生学习笔记(1-75集) 尚硅谷云原生学习笔记(76~143集) 尚硅谷云原生学习笔记(144~172集) 尚硅谷云原生学习笔记(173~XXX集) 目录 1.什么是云计算 1. ...

  2. 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记

    使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记 https://www.bilibili.com/video/BV1rq4y1w7xM?spm_id_from=33 ...

  3. 云平台学习笔记(三)-实践

    一.实验目的 本实验目的: 1.熟练克隆虚拟机: 2.熟练配置域名解析 3.学会配置 Chrony: 4.学会安装 OpenStack 基础框架: 5.学会安装 Mariadb 数据库 6.熟练为虚拟 ...

  4. 尚硅谷云原生学习笔记(76~143集)

    笔记列表: 尚硅谷云原生学习笔记(1-75集) 尚硅谷云原生学习笔记(76~143集) 尚硅谷云原生学习笔记(144~172集) 尚硅谷云原生学习笔记(173~XXX集) 目录 76.为什么用kube ...

  5. C4前端云原生学习笔记——vue

    C4前端云原生学习笔记 文章目录 C4前端云原生学习笔记 一.vue知识点 1.vue简介 2.开发工具 3.初识vue 一.vue知识点 1.vue简介 官网:cn.vuejs.org 渐进式框架: ...

  6. ida pro学习笔记2022.3.19

    2022.3.19学习笔记 基本块:是一个不包含分支,从头执行到尾的最大指令序列.每个基本块,都有唯一的入口点(块中的第一条指令)和退出点(块中的最后一条指令). 基本块的第一条指令通常是分支指令的目 ...

  7. Vue.js学习笔记 2022 04 17

    Vue.js学习笔记 1 Vue.js基础 Vue.js介绍 vuejs 渐进式 JavaScript 框架 Vue.js 如何应用 1 在普通html项目中,引入VUE.JS Hb 的项目 生成的 ...

  8. 点云综述学习笔记(一)

    论文链接:Deep Learning for 3D Point Clouds: A Survey 参考博客http://www.huangli.com/?d 作者及团队:Yulan Guo∗, Han ...

  9. 点云PCL学习笔记-分割segmentation-RANSAC随机采样一致性算法欧式聚类提取

    随机采样一致性算法RANSAC 程序实例参考网址: https://pcl.readthedocs.io/projects/tutorials/en/latest/random_sample_cons ...

最新文章

  1. [C]计算某一天是该年中的第几天
  2. 用户配置,用户组管理,用户管理
  3. python输出所有素数_Python实现输出某区间范围内全部素数的方法
  4. Maven中settings.xml的配置项说明
  5. CentOS7.5实践快速部署LAMP+Tomcat成功运行阿里云或者腾讯云
  6. 小师妹学JavaIO之:NIO中Channel的妙用
  7. linux的mutex状态查询命令,如何断言std :: mutex是否已锁定?
  8. junit测试线程_一个在自己的线程中运行测试的JUnit规则
  9. 今天完成了share memory的测试
  10. 实现前后端分离的心得
  11. 英国政府采用开源办公套件“GovOffice”
  12. 【Codecs系列】X265编码器(六):lookahead模块分析
  13. Secondary NameNode工作机制
  14. win10专业版和企业版的区别
  15. 导出word文档生成docx格式 添加水印
  16. 当谈判处于下风怎么办?五大策略助你逆势翻盘
  17. 处理Elasticsearch集群yellow和red状态
  18. SolidWorks2020每次新建零件图时提示默认模板无效的解决办法
  19. 2020计算机考研复试
  20. java-php-python-汽车销售系统计算机毕业设计

热门文章

  1. db2数据库备份与恢复命令
  2. Arduino配合电位计和oled液晶屏显示波形 Processing联动
  3. 如何批量将PDF转换为图片?
  4. 为什么镜面成像是左右反而不是上下反(从前置摄像头说起)
  5. 如何选择高防服务器。
  6. mapgis10-10.25
  7. linux内核污染tainted
  8. 【Linux】defunct 僵尸进程排查
  9. 微信小程序引入promise报错
  10. 物联网工程RFID第一次作业(第三周)