Pointwise-CNN: Pointwise Convolutional Neural Networks

  • 摘要
  • 相关工作
  • Pointwise Convolution
  • 实验

摘要

  • 问题: 3D数据的深度学习领域吸引了很多人的注意,但是基于CNN的点云学习还没人注意到
  • 方法: 本文提出一种用于点云语义分割和目标识别的卷积神经网络
  • 技术细节: point-wise convolution操作可以被用于每个点 & fully convolutional network
  • 代码: https://github.com/hkust-vgd/pointwise TensorFlow版本

相关工作

equivariance 与 invariance有什么区别吗?

Pointwise Convolution

Convolution

一个convolution kernel以点云中的每个点为中心。kernel中的neighbor points可以对center point产生影响。每个kernel都有一个size或radius,可以根据每个卷积层中neighbor points的数量进行调整。pointwise convolution可以表示为:
x i ℓ = ∑ k w k 1 ∣ Ω i ( k ) ∣ ∑ p j ∈ Ω i ( k ) x j ℓ − 1 x_{i}^{\ell}=\sum_{k} w_{k} \frac{1}{\left|\Omega_{i}(k)\right|} \sum_{p_{j} \in \Omega_{i}(k)} x_{j}^{\ell-1} xiℓ​=k∑​wk​∣Ωi​(k)∣1​pj​∈Ωi​(k)∑​xjℓ−1​
其中, k k k遍历kernel support中的所有sub-domains。 Ω i ( k ) \Omega_{i}(k) Ωi​(k)是以点 i i i为中心的kernel的第 k k k个sub-domain。 p i p_{i} pi​是点 i i i的坐标。 ∣ ⋅ ∣ |\cdot| ∣⋅∣是sub-domain中所有点的数量。 w k w_{k} wk​ 是第 k k k个sub-domain中的kernel权重, x i x_{i} xi​ 和 x j x_{j} xj​表示点 i i i 和 点 j j j处的值, ℓ − 1 \ell-1 ℓ−1 和 ℓ \ell ℓ是输入和输出层的索引。

结合图1更好理解,把中心点附近的区域分成栅格,每个栅格内的特征先相加然后用密度归一化,最后再乘以栅格内的卷积权重得到一个栅格的特征,多个栅格的特征相加得到新的特征。

Gradient backpropagation

为了保证pointwise convolution可训练,有必要计算输入数据和kernel权重相关的梯度。令 L L L 为损失函数,与输入相关的梯度可以定义为:
∂ L ∂ x j ℓ − 1 = ∑ i ∈ Ω j ∂ L ∂ x i ℓ ∂ x i ℓ ∂ x j ℓ − 1 \frac{\partial L}{\partial x_{j}^{\ell-1}}=\sum_{i \in \Omega_{j}} \frac{\partial L}{\partial x_{i}^{\ell}} \frac{\partial x_{i}^{\ell}}{\partial x_{j}^{\ell-1}} ∂xjℓ−1​∂L​=i∈Ωj​∑​∂xiℓ​∂L​∂xjℓ−1​∂xiℓ​​
其中给定点 j j j,我们遍历所有的neighbor points i i i。遵循着chain rule, ∂ L / ∂ x i ℓ \partial L / \partial x_{i}^{\ell} ∂L/∂xiℓ​是反向传播中向上到一层 ℓ \ell ℓ的梯度, ∂ x i ℓ / ∂ x j ℓ − 1 \partial x_{i}^{\ell} / \partial x_{j}^{\ell-1} ∂xiℓ​/∂xjℓ−1​可以写成:

∂ x i ℓ ∂ x j ℓ − 1 = ∑ k w k 1 ∣ Ω i ( k ) ∣ ∑ p j ∈ Ω i ( k ) 1 \frac{\partial x_{i}^{\ell}}{\partial x_{j}^{\ell-1}}=\sum_{k} w_{k} \frac{1}{\left|\Omega_{i}(k)\right|} \sum_{p_{j} \in \Omega_{i}(k)} 1 ∂xjℓ−1​∂xiℓ​​=k∑​wk​∣Ωi​(k)∣1​pj​∈Ωi​(k)∑​1
相似地,与kernel权重相关的梯度可以通过遍历所有的点 i i i进行定义:
∂ L ∂ w k = ∑ i ∂ L ∂ x i ℓ ∂ x i ℓ ∂ w k \frac{\partial L}{\partial w_{k}}=\sum_{i} \frac{\partial L}{\partial x_{i}^{\ell}} \frac{\partial x_{i}^{\ell}}{\partial w_{k}} ∂wk​∂L​=i∑​∂xiℓ​∂L​∂wk​∂xiℓ​​
其中:
∂ x i ℓ ∂ w k = 1 ∣ Ω i ( k ) ∣ ∑ p j ∈ Ω i ( k ) x j ℓ − 1 \frac{\partial x_{i}^{\ell}}{\partial w_{k}}=\frac{1}{\left|\Omega_{i}(k)\right|} \sum_{p_{j} \in \Omega_{i}(k)} x_{j}^{\ell-1} ∂wk​∂xiℓ​​=∣Ωi​(k)∣1​pj​∈Ωi​(k)∑​xjℓ−1​

本文使用的convolution kernels大小为 3 × 3 × 3 3 \times 3 \times 3 3×3×3,每个kernel单元里的点的权重都是一样的。

与在volumes中的卷积不同,本文中的网络没有pooling,不使用pooling的原因为:

  • 不用再对点云进行下采样和上采样,当点云被映射到高维空间时,下采样和上采样操作是很麻烦的
  • 相邻点的搜寻操作只需要建立一次就行

Point order

在PointNet中,输入点云是无序的,后续处理过程会学习对称函数进行处理。
在我们的方法中,输入点云是有特定顺序的,XYZ或是Morton curve。在object recognition任务中,点的顺序会影响最终的全局特征向量。在semantic segmentation,顺序就无所谓了。

`A-trous convolution

引入stride参数,可以扩展kernel大小,从而扩展感知域,而无需在卷积中处理太多的点。这在不牺牲我们实验中所证明的精度的情况下显著地提升了速度。

Point attributes

为了更容易地实现convolution operator,分别存储了点的坐标和其他 attributes (颜色、法向量、或者其他从前面一层输出的高维度特征)。无论层数有多深,点的坐标都可以被用于相邻点的搜索。

实验

Semantic segmentation

S3DIS dataset:

SceneNN dataset:

Object recognition

Convergence

Ablation experiments

Point order & Neighborhood radius

Morton curve 方法会使得点在内存上的存储离得很近

Deeper networks

Running time

Intel Core i7 6900K with 16 threads:

  • forward convolution 1.272 seconds
  • backward propagation 2.423 seconds

NVIDIA TITAN X speed up 10%

Layer visualization

【点云处理之论文狂读经典版9】—— Pointwise Convolutional Neural Networks相关推荐

  1. 【点云处理之论文狂读前沿版3】——Point Transformer

    Point Transformer 摘要 1. 引言 2. 相关工作 3. Point Transformer 3.1 Background 3.2 Point Transformer Layer 3 ...

  2. 【点云处理之论文狂读前沿版7】—— Masked Autoencoders for Point Cloud Self-supervised Learning

    Masked Autoencoders for Point Cloud Self-supervised Learning 摘要 1.引言 3. Point-MAE 3.1 Point Cloud Ma ...

  3. 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds

    用Surface表示点云 摘要 1.引言 2.相关工作 2.1. Learning on Point Clouds 2.2. Detection on Point Clouds 2.3. Graphi ...

  4. 【点云处理之论文狂读前沿版11】—— Unsupervised Point Cloud Pre-training via Occlusion Completion

    OcCo:Unsupervised Point Cloud Pre-training via Occlusion Completion 摘要 引言 方法 Generating Occlusions T ...

  5. 经典DL论文研读(part4)--ImageNet Classification with Deep Convolutional Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 ImageNet Classification with Deep Convolutional Neural Networks 摘要 Introduction ...

  6. 【读点论文】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks网络结构要像身材一样匀称且体量和处理能力匹配

    EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks Abstract 卷积神经网络(ConvNets)通常 ...

  7. 【论文详读】Overcoming catastrophic forgetting in neural networks

    摘要 为了缓解神经网络灾难性遗忘,作者们提出了一种类似于人工神经网络突触巩固的算法(EWC).该方法通过选择性地放慢对那些任务重要权重的学习来记住旧任务,即该方法会根据权重对之前看到的任务的重要性来减 ...

  8. 论文笔记 - 《ImageNet Classification with Deep Convolutional Neural Networks》 精典

    基于卷积神经网络的图像分类(经典网络) 作者:Alex Krizhevsky(论文中第一作者的名字为网络名字AlexNet) 单位:加拿大多伦多大学 发表会议时间:NIPS 2012 (NIPS:机器 ...

  9. AlexNet论文翻译《ImageNet Classification with Deep Convolutional Neural Networks》

    摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC-2010竞赛的120万高分辨率的图像分到1000不同的类别中.在测试数据上,我们得到了top-1 37.5%, top-5 1 ...

最新文章

  1. linux c之用命名管道实现进程通信
  2. Python自动化运维工具fabric的安装
  3. Depth-first Search深度优先搜索专题2
  4. android 查找所有dialog_android 布局文件layout分组的简单使用
  5. 获取pycharm 2016.1.4 注册码 (window系统) 2016.3注册码(Ubuntu系统)
  6. (二十六)java版spring cloud+spring boot 社交电子商务平台-Eureka介绍
  7. prestashop后台如何删除订单
  8. 367.有效的完全平方数
  9. Win10升级到最新版本
  10. 汇编语言c标志位减法,5.2.3-2减法指令 - 汇编语言教程
  11. 像素和厘米怎么换算_像素 amp;amp; 分辨率的那段剪不断理还乱的关系
  12. SQL Server上月同期 日期的计算
  13. 【我的OpenGL学习进阶之旅】学习OpenGL ES 3.0 的实战 Awsome Demo (上)
  14. python模拟太阳系_模拟太阳系8大行星运行图:matplotlib实现
  15. 升级笔记本CPU的常见知识汇总
  16. 【附源码】计算机毕业设计java在线教学系统设计与实现
  17. Dell 服务器错误代码
  18. 售价五万,4.6升/百公里,它们是国内油耗最低的车
  19. 转载:图像滤波概念知识解释
  20. 会计们,擦亮眼睛,不要因为不能报销的发票让自己成为背锅侠!

热门文章

  1. 人口只有北京的 1/3,这个国家创立了全球一半的科技公司
  2. [家里蹲大学数学杂志]第389期中国科学院大学2014-2015-1微积分期中考试试题参考解答...
  3. 如何在自己的所擅长的领域简历优势
  4. CSS中的块级元素、行内元素和行内块元素
  5. 2019天猫双十一活动--自动逛店领猫币
  6. zcu102出现运行可执行程序时出现的错误
  7. 解决MATLAB中0与o,1与l难以分辨
  8. 怎样剪切视频中的一段音频
  9. html中正确给table加边框
  10. 任意角度旋转图片的ground truth目标检测框