PointConv论文阅读笔记

Abstract

本文发表于CVPR。 其主要内容正如标题,是提出了一个对点云进行卷积的Module,称为PointConv。由于点云的无序性和不规则性,因此应用卷积比较困难。

其主要的思路是,将卷积核当做是一个由权值函数和密度函数组成的三维点的局部坐标的非线性函数。通过MLP学习权重函数,然后通过核密度估计得到密度函数。

还有一个主要的贡献在于,使用了一种高效计算的方法,转换了公式的计算分时,使得PointConv的卷积操作变得memory efficient,从而加深网络的深度。

This paper first published on CVPR. In this paper, author proposed a novel convolution operation which can be directly used on point cloud. As we all know, unlike image whose pixels are fixed, point cloud is irregular and unordered. So directly extend convolution operation into 3D pointcloud can be difficult.

Author treat convolution kernels as nonlinear functions of the local coordinates of 3D points comprised of weight function and density function. The wight function is learned by multi-layer perceptron networks, the density function is learned through kernel density estimation.

Another main contribution of their work is that they reformulate the proposed convolution method to make it more memory efficient which significantly improves the depth of the network.

About PointConv

作者提出了一种全新的,考虑到非均匀采样,对三维点云进行卷积的途径。 我们知道,卷积操作可以被看做是连续意义上的卷积函数的离散化近似。 在三维空间中,我们将卷积算子的权重函数视为是在以某个三维点为参考点的局部坐标系下的连续函数。该函数可以使用多层感知机进行模拟。这部分工作在之前已经有人做过,但是全部没有考虑到非均匀采样的问题。

基于这个Motivation,我们进一步使用一个逆密度尺度来对MLP学到的权重函数进行重新计算,对应于原连续卷积函数的蒙特卡罗近似。我们将其称为PointConv。 PointConv以点云的位姿作为输入,通过MLP学习权重函数,然后再应用一个inverse density scale, 对权重函数进行重新计算,以弥补点云数据是由非均匀采样采得所带来的影响。

PointConv最简单的实现是很消耗内存的,当输出通道的维度很大时,会给训练带来很大难度。 为了减少PointConv的内存消耗,作者通过改变加和顺序对公式进行了重写,大大提高了效率。

此外,由于PointConv是卷积操作的完整近似,所以很容易就能从Conv推广到DeConv。DeConv层,也就是反卷积层,能够充分利用从粗糙层得到的信息,并将之传送到精细层去。而之前的很多卷积操作,不是full approxiamtion,所以就无法反卷积。对性能有很大影响。

Author proposed a novel approach to apply convolution operation on 3D point clouds with consideration on non-uniform sampling. Note that convolution operation can be viewed as a discrete approximation of a continuous convolution operator. In 3D space, we can treat the weights of this convolution operator to be a continous function of the local 3D point coordinates with respect to a reference 3D point. The continuous function can be approximated by a multi-layer perceptron(MLP). This work has be done before, but all of them didn’t take non-uniform sampling into consideration.

Based on this motivation, author used an inverse density scale to re-weight the continuous function learned by MLP, which correspond to the Monte Carlo approximation of the continuous convolution. PointConv involves taking the positions of point clouds as input and learning an MLP to approximate a weight function, as well as applying a inverse density scale on learned weights to compensate the non-uniform sampling.

The naive implementation of PointConv is memory inefficient when the channel size of the output features is very large and hence hard to train and scale up to large networks. In order to reduce the memory consumption of PointConv, author introduced an approach which is able to greatly increase the memory efficiency using a reformulation that changes the summation order.

PointConv is full approximation of the convolution, it’s natural to extend PointConv to a PointDeconv, which an fully untilize the information in coarse layer and propagate to finer layers while most state of art algorithm cannot perform deconvolution because they are not the full approximation.

Convolution on 3D Point Clouds

d维向量的卷积定义如下:
(f∗g)(x)=∬τ∈Rdf(τ)g(x+τ)dτ(f*g)(x) = \iint\limits_{\tau \in {\mathbb{R}^d}} {f(\tau )g(x + \tau )d\tau } (f∗g)(x)=τ∈Rd∬​f(τ)g(x+τ)dτ

二维图像image的像素点是固定的。每个像素点会固定在某个体素网格。而点云不同,一个点云可以被表示为一个三维点集,其中每个点都包含着一个位置向量,同时还有其特征如颜色,表面向量等。不同于图像,点云有着更加灵活的形状,一个点的坐标(x,y,z)不会位于某个确定的网格上,而是可以取一个任意的连续值。因此,局部区域内不同点之间的相对位置是十分多变的。传统的光栅图像离散卷积滤波器不能够直接应用于3D点云上。

为了得到一个能够应用于三维点云的卷积操作,首先回到连续的三维卷积:
Conv(W,F)xyz=∭(δx,δy,δz)∈GW(δx,δy,δz)F(x+δx,y+δy,z+δz)dδxδyδzConv{(W,F)_{xyz}} = \iiint\limits_{({\delta _x},{\delta _y},{\delta _z}) \in G} {W({\delta _x},{\delta _y},{\delta _z})F(x + {\delta _x},y + {\delta _y},z + {\delta _z})d{\delta _x}{\delta _y}{\delta _z}} Conv(W,F)xyz​=(δx​,δy​,δz​)∈G∭​W(δx​,δy​,δz​)F(x+δx​,y+δy​,z+δz​)dδx​δy​δz​

其中F(x+δx,y+δy,z+δz)F(x+\delta_x,y+\delta_y,z+\delta_z)F(x+δx​,y+δy​,z+δz​)是以(x,y,z)(x,y,z)(x,y,z)为中心的局部区域GGG中点的特征。点云可以被看做是从连续空间R3\mathbb{R}^3R3中非均匀采样得到的。δx,δy,δz{\delta _x},{\delta _y},{\delta _z}δx​,δy​,δz​是局部区域内的任意位置的三维坐标。

那么PointConv定义如下:
PointConv(S,W,F)xyz=∑(δx,δy,δz)∈GS(δx,δy,δz)W(δx,δy,δz)F(x+δx,y+δy,z+δz)PointConv{(S,W,F)_{xyz}} = \sum\limits_{({\delta _x},{\delta _y},{\delta _z}) \in G} {S({\delta _x},{\delta _y},{\delta _z})W({\delta _x},{\delta _y},{\delta _z})F(x + {\delta _x},y + {\delta _y},z + {\delta _z})} PointConv(S,W,F)xyz​=(δx​,δy​,δz​)∈G∑​S(δx​,δy​,δz​)W(δx​,δy​,δz​)F(x+δx​,y+δy​,z+δz​)

对连续函数的离散化近似从上可窥一见。 其中S(δx,δy,δz)S({\delta _x},{\delta _y},{\delta _z})S(δx​,δy​,δz​)是点(δx,δy,δz)({\delta _x},{\delta _y},{\delta _z})(δx​,δy​,δz​)处的逆密度inverse density。由于点云采样的非均匀性,S(δx,δy,δz)S({\delta _x},{\delta _y},{\delta _z})S(δx​,δy​,δz​)是十分有必要的。直觉上讲,点云内不同局部区域内的点的个数是很不相同的。

如上图,因为点p3,p5,p6,p7,p8,p9,p10p_3,p_5,p_6,p_7,p_8,p_9,p_{10}p3​,p5​,p6​,p7​,p8​,p9​,p10​之间离得都很近,所以它们每一个的贡献度应该更小。inverse density的原因。就是采样密度越大,这里点的人均贡献度应该越小。

PointConv的公式如上。

PointConv的具体实现

我们使用MLP来从三维坐标(δx,δy,δz)({\delta _x},{\delta _y},{\delta _z})(δx​,δy​,δz​)中近似得到权重函数W(δx,δy,δz)W({\delta _x},{\delta _y},{\delta _z})W(δx​,δy​,δz​). 而逆密度函数S(δx,δy,δz)S({\delta _x},{\delta _y},{\delta _z})S(δx​,δy​,δz​) 则由一个核密度估计及紧随其后的一个由MLP实现的非线性转换实现。

计算权重函数的MLP的参数是在所有点上共享的,以达到扰动不变性的目的。 而逆密度函数首先需要估计点云在某点处的密度(kernel density estimation(KDE)),然后将这个估计出来的密度送入一个MLP来进行一个一维的非线性变换。其目的是在于让网络决定,是否去使用密度估计。

首先得明确上图这个网络的输入和输出。

输入是FinF_{in}Fin​,shape是K×CinK \times C_{in}K×Cin​, 也就是说要对某个点进行卷积,那么它的输入是k个邻居的feature(当前维的feature是CinC_{in}Cin​). 此外输入还有Plocal,DensityP_{local}, DensityPlocal​,Density,一个是k近邻的局部坐标,K×3{K \times 3}K×3, 一个是k近邻处的密度, K×1K \times 1K×1。

输出是FoutF_{out}Fout​,shape为1×Cout1 \times C_{out}1×Cout​。

Cin,CoutC_{in}, C_{out}Cin​,Cout​是输入输出feature的通道数。k,cin,coutk, c_{in}, c_{out}k,cin​,cout​分别指第kkk个邻接点,输入feature的第cinc_{in}cin​个通道, 输出feature的第coutc_{out}cout​个通道。

因为每个点的权重函数不同,且其用于将CinC_{in}Cin​变换到CoutC_{out}Cout​, 所以weight function的shape应该为K×(Cin×Cout)K \times (C_{in} \times C_{out})K×(Cin​×Cout​), 即 W∈RK×(Cin×Cout)W \in \mathbb{R}^{K \times (C_{in} \times C_{out})}W∈RK×(Cin​×Cout​). 那么第k个点处应用于第cinc_{in}cin​个通道上的weight function应该是一个向量: W(k,cin)∈RCoutW(k,c_{in}) \in \mathbb{R}^{C_{out}}W(k,cin​)∈RCout​

所以有:
Fout=∑k=1K∑cin=1CinS(k)W(k,cin)Fin(k,cin){F_{out}} = \sum\limits_{k = 1}^K {\sum\limits_{{c_{in}} = 1}^{{C_{in}}} {S(k)W(k,{c_{in}}){F_{in}}(k,{c_{in}})} } Fout​=k=1∑K​cin​=1∑Cin​​S(k)W(k,cin​)Fin​(k,cin​)

上图中有tile的操作,相当于人为广播broadcast.

PointConv通过网络学习得到权重函数W的离散化模拟,对于每个输入点,通过MLP使用其相对坐标来计算权重。下图(a)举了一个连续的权重函数用于卷积的例子,而点云是对连续输入(i.e.空间)的离散化处理(i.e.采样),我们通过图(b)类似的方式进行离散化卷积来抽象出局部特征(对于不同的采样会输出不同的W和S,所以其效果也不同)。 需要说明的是,对于光栅图像,其某个局部区域内的相对坐标都是固定的(体素化网格),所以经过PointConv时,对于整个图像,会输出相同的权重函数W和密度函数S,会变为传统的离散卷积。(所以作者还在后文专门进行了实验,将二维图像升维到三维空间中,通过PointConv,结果确实和二维一致。所以证明了PointConv确实是三维连续卷积的full approximation。

PointDeConv

Efficient PointConv

这两个part搁置一下。因为我感觉论文的核心Part就是如何理解三维点云上的卷积操作。核心部分已经记录了。

而且这篇论文我私以为存在一些问题,作者文中提到more details can be found in supplementary materials, 但是在哪都找不到他的补充材料,并且github上公开的源码并没有efficient realization of PointConv. 作者也不回答这些问题。

PointConv论文阅读笔记相关推荐

  1. 全卷积(FCN)论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation

    论文阅读笔记:Fully Convolutional Networks forSemantic Segmentation 这是CVPR 2015拿到best paper候选的论文. 论文下载地址:Fu ...

  2. DnCNN论文阅读笔记【MATLAB】

    DnCNN论文阅读笔记 论文信息: 论文代码:https://github.com/cszn/DnCNN Abstract 提出网络:DnCNNs 关键技术: Residual learning an ...

  3. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  4. FCGF论文阅读笔记

    FCGF论文阅读笔记 0. Abstract 从三维点云或者扫描帧中提取出几何特征是许多任务例如配准,场景重建等的第一步.现有的领先的方法都是将low-level的特征作为输入,或者在有限的感受野上提 ...

  5. DCP(Deep Closest Point)论文阅读笔记以及详析

    DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...

  6. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  7. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记

    背景 <SSA-CNN Semantic Self-Attention CNN for Pedestrian Detection>是2019 的工作,其作者来自于南洋理工.这篇文章主要是做 ...

  8. ResNet 论文阅读笔记

    ResNet 论文阅读笔记 #机器学习/深度学习 文章介绍 论文地址:https://arxiv.org/pdf/1512.03385.pdf 原文题目:Deep Residual Learning ...

  9. LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记)

    LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记) 环形扫描骨干网络.动态漂移.一致性驱动的融合 一.重点内容 ...

最新文章

  1. stream filter 用法_JDK1.8新特性Stream和Collectors19个常用示例总结
  2. tcp协议不具备的功能是_TCP协议的状态深度解析,你知道的和不知道的都在这篇文章(干货)...
  3. Linux的常用的命令
  4. 1071. Speech Patterns (25)
  5. 单体 soa 微服务 区别_漫谈何时从单体架构迁移到微服务?
  6. 常用Git命令和配置
  7. 原:PHP内核研究 函数的定义
  8. python end用法_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)
  9. 【codeforces 340B】Maximal Area Quadrilateral
  10. 【layui】省市区的三级联动
  11. 2019 中科院 信工所二室 夏令营 笔试面试经验
  12. libcurl 使用方法简介
  13. 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
  14. 7能进安全模式但正常启动黑屏_铅锤哥:十五种电脑开机黑屏的原因与解决思路...
  15. linux samba yum,CentOS7下yum安装SAMBA全命令过程
  16. git 删除git管理_使用Git管理多媒体文件
  17. 悦读(小程序)~~~~~~青龙脚本
  18. 汇编程序设计-11-AX、BX、CX、DX寄存器
  19. 【论文阅读】Domain Adaptation for Deep Entity Resolution
  20. [含论文+源码等]基于HTML5,DIV CSS实现的宠物狗个性化服务网站前端(静态网页毕业设计)web前端毕设

热门文章

  1. ASP.NET MVC 4 视图页去哪里儿
  2. HDUOJ --2523
  3. MDOP 2011 R2 DaRT 7.0 创建包含诊断和恢复的图形化PE
  4. NGINX内容缓存配置
  5. 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
  6. 容器编排技术 -- Kubernetes Pod 优先级和抢占
  7. Windows上设置Docker共享盘符
  8. 如何设计一个良好的接口
  9. java的URLEncoder.encode() 疑问与解惑
  10. C#LeetCode刷题之#521-最长特殊序列 Ⅰ​​​​​​​(Longest Uncommon Subsequence I)