代码:https://github.com/Yochengliu/Relation-Shape-CNN

文章:https://arxiv.org/abs/1904.07601

作者直播:https://www.bilibili.com/video/av61824733

作者维护了一个收集一系列点云论文、代码、数据集的github仓库:https://github.com/Yochengliu/awesome-point-cloud-analysis

这篇paper是CVPR 2019 Oral & Best paper finalist

Abstract & Introduction

在点云中,由于不规则点中隐含的形状很难捕捉,使得点云分析非常具有挑战性。在本文中,作者针对点云数据提出了RS-CNN,即Relation-Shape Convolutional Neural Network,其核心思想是从几何拓扑中学习点云关系信息。RS-CNN在多个数据集中都取得了SOTA的表现。
主要贡献如下:

  • 提出了一种新型的从关系中学习的卷积算子关系形状卷积。它可以显式地对点的几何关系进行编码,从而在很大程度上提高了对形状的感知能力和鲁棒性。即,RS-Conv
  • 提出一个具有关系形状卷积的深层层次结构,即,RS-CNN。将规则网格CNN扩展到不规则配置,实现点云的上下文形状感知学习。即,基于RS-Conv设计的RS-CNN
  • 在三个任务中对具有挑战性的基准进行广泛的实验,以及深入的经验和理论分析,证明RS-CNN达到了SOTA的水平。即,精度高效果好(modelnet40 93.6)

Shape-Aware Representation Learning

首先,作者归纳了一个通用的卷积公式
\[
f_{P_{sub}}=\sigma(\mathcal{A}(\{\tau(f_{x_{j}}),\forall x_j\})),d_{ij}<r\forall(x_j) \in \mathcal{N}(x_i)
\]
其中,\(x\)表示3D点,\(f_{x_j}\)表示\({x_j}\)的特征向量,\(d_{ij}\)是\(x_i\)和\(x_j\)之间的欧式距离Euclidean distance,\(\tau\)用于转化单点特征,\(\mathcal{A}\)表示聚合函数,\(\sigma\)为激活函数。在这个公式中,\(\mathcal{A}\)和\(\tau\)的定义很关键,也就是这篇paper的创新所在。

首先,如果将这个公式套用在2D图像当中,则\(\tau(f_{x_{j}})=W_j \cdot f_{x_j}\),其中\(w_j\)为learnable weight(可以理解为卷积核),“\(\cdot\)”表示点乘,\(\mathcal{A}\)表示求和,其实就是一个卷积操作。而传统卷积有两个问题,1是不具备置换不变性,2是没有学习到形状信息。因此,作者对\(\mathcal{A}\)和\(\tau\)进行了修改,使其处理点云信息时,具有置换不变性,以及能够学习到形状信息。置换不变性在pointnet中已经实现,就是用max来表示\(\mathcal{A}\),那么剩下的就是学习形状信息,那么如何学习形状信息?就是通过这个\(\tau\)实现的。
为了捕获形状信息(或者关系信息),作者将\(\tau\)定义为:
\[
\tau(f_{x_{j}})=W_{ij} \cdot f_{x_j}=\mathcal{M}(h_{ij})\cdot f_{x_j}
\]
\(\mathcal{M}\)用于将两个点的关系映射为high-level的信息(\(\mathcal{M}\)实际上就是MLP,将低维特征映射成高维特征,而低维特征就是点的位置关系,比如两个点间的距离,相对坐标等),而\(h_{ij}\)就是低维特征。
RS-Conv的流程图如下:

  1. 首先通过FPS进行采样,得到质心\(X_i\)
  2. 在球形领域寻找近邻,\(X_j\)
  3. 对于每个邻居点j,计算j和i的low-level信息,即\(h_{ij}\),\(h_{ij}\)的表示方法很多,作者在论文中将其定义为\(h_{ij}=[3D-Ed,x_i-x_j,x_i,x_j]\),即将两点间的欧式距离(1维),相对坐标(3维),i的坐标(3维)和j的坐标(3维)进行拼接,得到一个10维的low-level信息。
  4. 使用MLP将\(h_{ij}\)映射成高维信息,即\(\mathcal{M}(h_{ij})\),得到\(W_{ij}\),注意,这边映射成高维信息的\(W_{ij}\)的维度要和\(f_{x_j}\)的特征维度相同,才可以进行点乘操作
  5. 将得到的\(W_{ij}\)和\(f_{x_j}\)进行点乘。
  6. max操作,聚合所有近邻的信息作为质心\(x_i\)的新特征,接着为了实现更强大的形状感知表示,将\(x_i\)进行进一步的通道提升映射。即上图中的channel-raising mapping

以上就是RS-Conv的操作过程。有点复杂,类比成2D图像的卷积的话,一个明显的区别是RS-Conv的卷积核\(W_{ij}\)是通过\(h_{ij}\)(即低维关系信息)学习来的,这也是本文的最大创新点,但实际上,这个操作在其他论文中也有出现,比如GACnet,DGCNN只是他们定义\(h_{ij}\)的方式不同。
网络结构如下

比较简单,不赘述,具体如何实现需要看代码。

实验

Shape classification.

Shape part segmentation

Normal estimation

消融实验


虽然在modelnet40上取得了93.6的结果,但是看消融实验可知,作者加入了很多trick才得到这样的精度,比如Pointnet++中的多尺度,以及voting test(具体是啥暂不明了),如果去除多尺度和voting test只能达到92.2的精度。虽说创新点少,但论文中那么多的分析也需要大量的积累才能做到。

聚合函数,即\(\mathcal{A}\)的消融实验

对于low-level信息,即\(h_{ij}\)的消融实验

总结

在这项工作中,作者提出了RS-CNN,即 Relation-Shape Convolutional Neural Network,它将规则的网格CNN扩展到不规则的配置来进行点云分析。 RS-CNN的核心是一种从低维信息中学习relation的新型的卷积运算器。通过这种方式,可以对点的空间布局进行明确的推理,从而获得判断形状的意识。此外,还可以获得良好的几何关系支撑,如对刚性变换的鲁棒性。因此,RS-CNN可以实现上下文感知的形状学习,具有很高的学习效率。

想法:
其实这篇paper的创新不大,除去多尺度和voting test,其精度只有92.2。目前看了一些点云分类的paper,感觉这些paper都有点类似。而对于modelnet40,其40个类别数量分布差异很大,实际上当我们不断训练,提高0点几个点的时候,有些类别应该已经严重过拟合,我们在玩什么啊,令人深思啊。

Relation-Shape Convolutional Neural Network for Point Cloud Analysis(CVPR 2019)的更多相关文章

  1. 论文笔记:(CVPR2019)Relation-Shape Convolutional Neural Network for Point Cloud Analysis

    目录 摘要 一.引言 二.相关工作 基于视图和体素的方法 点云上的深度学习 相关性学习 三.形状意识表示学习 3.1关系-形状卷积 建模 经典CNN的局限性 变换:从关系中学习 通道提升映射 3.2性 ...

  2. Tensorflow - Implement for a Convolutional Neural Network on MNIST.

    Coding according to TensorFlow 官方文档中文版 中文注释源于:tf.truncated_normal与tf.random_normal TF-卷积函数 tf.nn.con ...

  3. tensorflow MNIST Convolutional Neural Network

    tensorflow MNIST Convolutional Neural Network MNIST CNN 包含的几个部分: Weight Initialization Convolution a ...

  4. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

    Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...

  5. 卷积神经网络(Convolutional Neural Network,CNN)

    全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...

  6. Convolutional Neural Network in TensorFlow

    翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...

  7. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  8. HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL DEEP CONVOLUTIONAL NEURAL NETWORK阅读笔记

    HYPERSPECTRAL IMAGE CLASSIFICATION USING TWOCHANNEL  DEEP  CONVOLUTIONAL NEURAL NETWORK 论文地址:https:/ ...

  9. A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记

    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...

随机推荐

  1. Spring Cloud Alibaba(三)Sentinel之熔断降级

    本项目演示如何使用 Sentinel 完成 Spring Cloud 应用的熔断降级调用. Sentinel 是阿里巴巴开源的分布式系统的流量防卫组件,Sentinel 把流量作为切入点,从流量控制, ...

  2. C#解析深浅拷贝

    前言 前面我们学习完了设计模式,在其中我们有了解到原型模式.这里涉及到了克隆自身对象.那么也就是对对象进行拷贝.这里就涉及到了这么一个概念.深浅拷贝.何为深拷贝何为浅拷贝呢?我们一起来看看吧. 浅拷贝 ...

  3. React Ref 和 React forwardRef

    Ref 和Dom,Ref是reference(引用)的简写. 能力:大多数情况下,props前递可以解决一切问题,但是依然有需要触达React实例或者Dom节点的情况,这时候应该使用React Ref ...

  4. Cannot read property 'forEach' of undefined

    在singer-detail组件中,有一个_normalizeSongs()方法,遍历数组 _normalizeSongs(list) { let ret = []; list.forEach(ite ...

  5. Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)

    最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱 ...

  6. Python文件处理:创建、打开、追加、读、写

    在Python中,不需要导入外部库来读取和写入文件.Python为创建.写入和读取文件提供了内置的函数. 在本文中,我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 ...

  7. CSPS模拟 83

    紧张起来,集训已过半! 稍微有点惆怅.. T1 什么玩意,神仙树形dp? 没思路,先去T2. (遇到难题就绕过去是真的爽啊) T2 $n^2$暴力很好打 组合数是不是有规律? 找一下规律,发现十分眼熟 ...

  8. Asp.net Core 系列之--2.ORM初探:Dapper实现MySql数据库各类操作

    ChuanGoing 2019-09-10 距离上一篇近一个月时间,断断续续才把本篇码完,后面将加快进度,争取年度内把本系列基本介绍完成,同时督促本人持续学习. 本篇学习曲线: 1.初识Dapper ...

  9. P3521 [POI2011]ROT-Tree Rotations(线段树合并)

    一句话题意(不用我改了.....):给一棵n(1≤n≤200000个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. ......这题输入很神烦呐... 给你一棵二叉树的dfs序 ...

  10. CDQ分治学习笔记(三维偏序题解)

    首先肯定是要膜拜CDQ大佬的. 题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai​.b_ibi​.c_ ...