论文学习笔记(三) 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

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue: