论文学习笔记(三) SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation

本文主要是介绍论文学习笔记(三) SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

『写在前面』

无意间看到了《深度学习在点云分割中的应用》干货总结,原视频为SGPN原作者的技术分享,便搜来仔细研读一番~ SGPN是首个使用原始点云作为输入的实例分割网络,本篇blog为方便自己回忆要点用,建议参照原版paper使用。欢迎各位指正纰漏。

论文出处:CVPR 2018

作者机构:Weiyue Wang等,University of Southern California

原文链接:https://arxiv.org/abs/1711.08588v1

作者repo:https://github.com/laughtervv/SGPN


目录

摘要

1 介绍

2 相关工作

3 方法

3.1 SGPN网络设计

SGPN网络框架如下图所示,大致流程描述如下:

相似度矩阵计算&理解

Double-Hinge Loss 

Similarity Confidence Network 

Semantic Segmentation Map

3.2 推荐点组合并

4 实验

5 结论


摘要

  • SGPN通过一个单独网络去预测点组推荐并为各个推荐组分配相应标签。
  • 提出深度相似矩阵表征特征空间中每对点之间的相似性,从而帮助产生点分组建议。
  • SGPN是首个用在点云数据上的3D实例分割网络。

 

1 介绍

  • 受常见2D场景理解任务启发,作者的目标是构建一种end-to-end的3D实例分割网络。
  • SGPN大体框架:首先使用PointNet/PointNet++提取深层特征;然后基于度量学习的思想,引入深度相似矩阵,目的是通过学习使得相同类别的点在特征空间中距离更近。
  • SGPN有3个输出分支:
  1. 相似度矩阵(similarity matrix):用于产生点组推荐,点组推荐其实就是2D分割生成的每个instance的mask
  2. 置信度映射图(cofidence map):用于对产生的点组推荐进行剪枝,因为相似度矩阵的维度是与点集大小规模相当的
  3. 语义分割映射(semantic segmentation map):用于预测类别标签

 

2 相关工作

  • 2D目标检测与实例分割方面:
    • R-CNN/Faster R-CNN
    • YOLO v1-v3
    • DeepMask
    • Mask R-CNN
  • 3D深度学习方面:
    • 3D CNN
    • Octree-based CNN
    • PointNet/PointNet++
  • 度量学习方面:
    • 本文以一种特殊的方式使用度量学习。作者视图回归两个点属于相同group的可能性,同时基于相似度矩阵还可以产生点组推荐,以适配不同数量的实例

3 方法

3.1 SGPN网络设计

SGPN网络框架如下图所示,大致流程描述如下:

  • 输入原始点云:N_{p}\times C, C \geqslant 3 (个人认为,Fig.2输入点云维度描述有误,按文中描述,N_{f}应该是通过多层PointNet/PointNet++后映射到的特征维度)
  • 分为三个分支,每个分支会计算得到一个特征矩阵:
    • F_{SIM}: Shape(N_{p}\times N_{p})
    • F_{CF}: Shape(N_{p}\times 1)
    • F_{SEM}: Shape(N_{p}\times N_{c})
  • 因为相似度矩阵提供了N_{p}个点组推荐,但实际中可能并没有那么多instance,其中有很多点组对应的是同个instance,所以在三个分支的输出后,加了一步Group Merging(点组合并)操作
  • 最后,就得到了点云实例分割的结果。训练过程中,loss计算考察三个分支loss的总和。

相似度矩阵计算&理解

计算方法:

  • 相似度矩阵S尺寸为N_p \times N_p,点S_{ij}表示点P_i和点P_j属于同一个object instance的概率
  • S的每一行可以视作一个点组推荐
  • S的计算方法为S_{ij}=\left \| F_{SIM_i}-F_{SIM_j} \right \|_2,即两点对应特征向量差的L2范数

为什么要使用相似度矩阵?

  • 对图像或体素网格数据这种space-centric结构来说,二进制mask是最自然的实例分割表示,因为它们的特征主要由网格中的高响应区域给出。
  • 与之相反,点云数据可以被看做是一种shape-centric结构,它的信息通过点之间的相关性给出。
  • 所以,作者认为应该更多关注在点之间相关性上,通过点之间的关系定义实例分割输出是一种更加自然的表示。 

Double-Hinge Loss 

        在训练深度相似矩阵过程中,我们其实并不需要准确地回归矩阵中的数值,只是想通过优化,使得相似的点在特征空间中距离更近。点与点之间的关系可以归为以下三类:1. 属于同一个实例;2.属于同一个类别,但不属于同一个实例;3.属于不同类别。相似度矩阵中元素数值越大,说明其对应的两点在特征空间中距离越远(差的L2范数越大)。

        计算公式如下,其中\alpha > 1, K_2 > K_1.

         一方面,尽管对于实例分割而言,第2类和第3类点属于同一种情况(不属于同一个实例),但作者在设计Loss时将它们分开来考虑。这样做的好处是,便于手动控制不同分支准确率的增长速度和收敛速度;

        另一方面,第二类点会增加实例分割的难度,sem-seg分支会错误地拉近第二类点之间在特征空间中的距离,所以作者加了一个权重因子α > 1以提高其在计算Loss中的权重。

在做Inference时,设置一个小于K_1的阈值T_{h_S},如果S_{ij}<T_{h_S},则认为这两个点属于同一个instance。

Similarity Confidence Network 

        相似度置信网络(对应第二分支)表征的是一个候选点组是一个真实的目标的置信度。因为相似度置信矩阵给出的推荐很多,这一分支的主要任务其实就是剪枝

        先说ground truth groups(G)的计算方法,如果一个点P是背景点,则其对应的那一行都为0;如果它是前景点,则与其属于同个实例的点所处位置置为1,其余为0;

        再说Confidence map(CM)的计算方法:对于相似度矩阵S的每一行,计算其与矩阵G的IOU值,这样就可以得到一个N_p \times 1的特征向量。

        所以,在训练时,Confidence map的计算会依赖于相似度矩阵分支的计算。但是在预测时可以并行计算,只选择CM中置信度大于一定阈值的点组推荐,作为有效的点组推荐。

Semantic Segmentation Map

        尺寸:N_p \times N_C

        其中,对于每个元素ij,表示点i属于类别j的概率。

        在计算Loss时,进行median frequency balancing,目的是为了平衡大类和小类点数上的差异。

举个例子:设有3类点,各类别点数分别为:100、50、10,则中位数为50。在计算SEM Loss时,对于第1类点,赋予50/100的权重;第2类点,赋予50/50的权重;第3类点,赋予50/10的权重。这样就能减轻Loss计算受含点数较多的类的影响。

        在做Inference时,只需根据每个点对应的属于不同类别的概率,取argmax即可。 

3.2 推荐点组合并

        点组推荐数量因为和点集总数相当,其中存在大量的冗余和噪声,所以作者设计了推荐点组合并环节。首先,最容易想到的,如果某个推荐点组的置信度过小,或该推荐点组包含的点数过少,都应被当成一个无效的推荐。进一步,通过NMS去掉重复的推荐点组。

        实际中,经过合并以后,可能会有少部分点会被指定到多个类别,这些点往往处于实例的边界。可以理解为基于 网络预测结果,这些点被分配给不同类别的概率差不多,这时候一般的处理办法也是损失最小的处理办法是随机指定其中一个类别。

4 实验

        作者在S3DIS、NYUV2、ShapeNet等数据集上都进行了实验,值得一提的是,在NYUV2数据集上,作者提出了一种结合2DCNN和SGPN的思路,体现了SGPN的灵活性。

        具体做法如Fig.6所示,彩色图像经过CNNs提取到的特征,与PointNets提取的特征进行拼合,而后继续进行SGPN后续的3个分支计算。其中,点云输入通过对原始数据下采样得到。

5 结论

        SGPN是首个使用原始点云作为输入的实例分割网络。SGPN中的相似度矩阵随点数的平方增长,相比voxels来说节省了内存空间,但仍然无法适用于大规模点云数据上。

 

这篇关于论文学习笔记(三) SGPN: Similarity Group Proposal Network for 3D Point Cloud Instance Segmentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545147

相关文章

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

Sentinel 断路器在Spring Cloud使用详解

《Sentinel断路器在SpringCloud使用详解》Sentinel是阿里巴巴开源的一款微服务流量控制组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、... 目录Sentinel 介绍同类对比Hystrix:Sentinel:微服务雪崩问题问题原因问题解决方案请

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]