当前位置:网站首页>【点云系列】 A Rotation-Invariant Framework for Deep Point Cloud Analysis
【点云系列】 A Rotation-Invariant Framework for Deep Point Cloud Analysis
2022-04-23 06:11:00 【^_^ 晅菲】
文章目录
1. 概要
TVCG 2021期刊
代码:https://github.com/nini-lxz/Rotation-Invariant-Point-Cloud-Analysis
2. 动机
现阶段方法的共同问题就是:旋转不变性没有被保证
所以所提出的方法就是保证了这一点。
使用一个低层语义的 旋转不变性的表达 来替代 3D笛卡尔坐标输入,有点类似使用手工设计的具有旋转不变性的特征拿给网络学最优的过程。
3. 方法
3.1 常用方法特征提取 A A A
基于全局特征 G i G_i Gi+局部特征 L i j L_{ij} Lij + 非线性函数 h θ h_{\theta} hθ
其中 A A A是对称函数。
3.2 旋转不变性
一个框架具有旋转不变性 = 网络输入具有旋转不变性(其实是对输入点云提取了具有旋转不变性的表达来代替原始点云作为输入) + 操作子具有旋转不变性
网络输入设计
考虑一下4点:
- 亦即无论输入点云 S S S如何变换,提取到的具有旋转不变性的表达是保持不变的。设提取旋转不变性的函数为 Φ \Phi Φ,那么需要满足:
这里的R指的是在3D坐标当中进行任意旋转。 - 满足公式(2)中简单使用L2距离或相对角度作为输入太过于粗糙,且信息有所丢失;
- 不会产生歧义性,也即不同局部区域都有各自的旋转不变性表达;
- 需要抗噪;
网络架构设计
考虑一下两点:
- 网络框架不能包含任何的旋转变性的操作,例如不可以指定顺序
- 网络框架不包括点云坐标,而只是相关几何信息,例如距离角度等作为输入;
3.3 卷转不变性表达
-
预处理:
首先对输入点云 S S S进行归一化,在单元球体。
然后使用PointNet++li d query ball 来定义临近点 { p i j } j = 1 K \{ p_{ij}\}^K_{j=1} { pij}j=1K,如下图2(a)与(b)。 -
计算:
提取特征 G i G_i Gi与 p i p_i pi的局部特征 { L i j } j = 1 K \{L_{ij}\}^K_{j=1} { Lij}j=1K。整体特征如图3所示:
全局特征 G i G_i Gi: 包含5个部分,如图2 (a)&(b)所示
1). d p i = ∣ ∣ p i ∣ ∣ 2 d_{pi}=||p_i||^2 dpi=∣∣pi∣∣2: p i p_i pi简单的全局且具有旋转不变性的特征
2). d p m i d_{pm_i} dpmi : p i p_i pi与 p i ′ p_i' pi′的局部距离为 m i m_i mi,选用几何中值。
3)–5): d s m i d_{sm_i} dsmi作为最后三个部分。其中,定位 s i s_i si +临近点与原点 p i p_i pi延伸线的交集 + 三角形 p i − m i − s i p_i-m_i-s_i pi−mi−si。在本文的设置中,半径大小随着网络层级而增加。局部特征:7个部分,如图2中所示
3.4 整体网络框架
总共3层,
黄色框:提取的旋转不变性特征
绿色框:点云坐标
紫色框:最远距离采样
蓝色框:嵌入到网络里的特征
第一层:
- 使用PointNET++的方式,采样并分组。使用最远点采样,每个子集 N 1 个 点 N_1个点 N1个点
- 使用query ball找 K 1 K_1 K1个近邻,构建大小为 N 1 × K 1 × 3 N_1 \times K_1\times 3 N1×K1×3的体素,作为 S 1 G S^G_1 S1G
- 同步做两件事情:
(1)提取旋转不变性特征 I 1 I_1 I1(黄色框),
(2)计算其全局关联矩阵 R 1 R_1 R1(黄色方框)。 - 同时将3中的 I 1 I_1 I1和 R 1 R_1 R1都输入给区域关系卷积(橘色框)来获取特征 F 1 F_1 F1(蓝色框)
第二层:
5. 继续采样分析到更小的区域 S 2 G S_2^G S2G
6. 将第一层的特征与采样后的点进行拼接,形成第特征 F 2 G F^G_2 F2G;这里 N 2 < N 1 N_2<N_1 N2<N1, K 2 > K 1 K_2>K_1 K2>K1可以允许渐进扩大感受野。
7. 然后拼接 F 2 G F_2^G F2G 与 F 2 I F_2^I F2I,是为了消除信息损失, I 2 I_2 I2是多层感知器获得的高层语义特征;
8. 最后生成拼接的特征 F 2 C F^C_2 F2C。,最终联合关联性矩阵 R 2 R_2 R2得到第二层特征 F 2 F_2 F2。
第三层:
9. 继续采样分组,得到 S 3 G S^G_3 S3G
10.类似第二层的操作得到特征 F 3 C F^C_3 F3C
11. 使用多层感知器,然后maxpooling到最终的特征 F 3 F_3 F3
其中, Region Relation Convolution计算如图5:本质上也就类似一个attention操作吧。
4. 实验
分类准确率:看上去还是不错的
表2:
z/SO3: 训练集有z轴旋转增强,测试集是任意旋转;
z/z: 训练与测试都有关于z轴的旋转增强
SO3/SO3: 训练与测试都是任意旋转;
说明了提出方法的稳定性?
表3:
NR/NR:训练测试都是旋转
NR/AR:训练:无旋转;测试:任意旋转
两者效果无差,为什么呢?其实是因为提出方法本来就是针对旋转不变性的,所以提取的特征具有这个性能,即使训练集没有针对不同旋转的,理应也有旋转不变性。也说明了该方法具有这个性能。
可视化的效果:
分割效果图:
消融实验:
5. 局限性
方法简单,效果欠佳;
其实针对噪声的处理有限;
还是依赖于手工设计的这个具有旋转不变性的特征,是否针对所有物体都有效,存疑。
版权声明
本文为[^_^ 晅菲]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43882112/article/details/121828719
边栏推荐
- 【2021年新书推荐】Enterprise Application Development with C# 9 and .NET 5
- 【动态规划】杨辉三角
- 【动态规划】最长递增子序列
- [recommendation of new books in 2021] enterprise application development with C 9 and NET 5
- face_recognition人脸检测
- Migrating your native/mobile application to Unified Plan/WebRTC 1.0 API
- org. xml. sax. SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type. 2.4. a: Found element 'B
- this. getOptions is not a function
- Android暴露组件——被忽略的组件安全
- 三子棋小游戏
猜你喜欢
随机推荐
Easyui combobox 判断输入项是否存在于下拉列表中
Kotlin征途之data class [数据类]
Exploration of SendMessage principle of advanced handler
MySQL笔记1_数据库
BottomSheetDialogFragment 与 ListView RecyclerView ScrollView 滑动冲突问题
[dynamic programming] different binary search trees
Android暴露组件——被忽略的组件安全
去掉状态栏
【动态规划】三角形最小路径和
[recommendation of new books in 2021] enterprise application development with C 9 and NET 5
第2章 Pytorch基础2
第1章 NumPy基础
Three methods to realize the rotation of ImageView with its own center as the origin
免费使用OriginPro学习版
Keras如何保存、加载Keras模型
机器学习笔记 一:学习思路
[Andorid] 通过JNI实现kernel与app进行spi通讯
MySQL5.7插入中文数据,报错:`Incorrect string value: ‘\xB8\xDF\xAE\xF9\x80 at row 1`
MySQL notes 2_ data sheet
【2021年新书推荐】Red Hat Certified Engineer (RHCE) Study Guide