《3D Recurrent Neural Networks with Context Fusion for Point Cloud Semantic Segmentation》论文笔记

一、论文摘要

基于3D点云的语义分割是一个非常开放的话题,基于神经网络的3D语义分割很难实现是因为3D点云所包含的内容信息太少。该论文作者构建了一个新的3P-RNN来实现点云的语义分割(之所以叫3P是因为其中有一个关键的步骤叫作Pointwise Pyramid Pooling)。首先,论文构建了一个高效的金字塔池化模型(pyramid pooling module)来提取3D点云的局部信息,再通过一个双向的RNN提取空间的点云全局依赖性。两个RNN通过不同的方向扫描3D空间提取信息,最终达到良好的3D语义分割的效果。

二、模型概述

以往的3D语义分割都现将3D点云体素化(voxelization),但是由于3D点云的稀疏性,体素化往往会导致很大的计算量。但自从Pointnet的出现,点云数据可以直接放入网络进行训练。Pointnet首先通过多层网络将原本三维的点云数据扩充到1024维,再通过一个对称函数max pooling使得其提取到全局的信息。但Pointnet同样在进行复杂点云的语义分割时具有许多的局限性:第一,其在max pooling的时候只考虑到了全局的信息(虽然后面Pointnet++中有部分解决这个问题,但是繁杂的步骤使其计算量很大);第二,其没有考虑到邻近点云的相互关系。(例如椅子总是贴近桌子等)作者针对第一个问题建立了一个金字塔池化模型(其利用的多步长的单窗口池化),而面对第二个问题其利用了一个双向RNN捕捉邻近点之间的关系(即对堆叠的feature map以x和y两个方向构建RNN网络)。

三、3P模型

作者在点云数据的处理上依然沿用了Pointnet的方法。简要来说,pointnet就是对点云数据逐个点的提取特征,经过了一系列的MLP(多层网络感知器),将本来三维的点云数据 ( n , x i , y i , z i ) (n,x_i,y_i,z_i) (n,xi​,yi​,zi​)(n是点云中点的个数)映射到1024维的空间中 ( n , 1024 ) (n,1024) (n,1024),再通过一个对称的运算maxpooling提取其点云的全局信息将其压缩至 ( 1 , 1024 ) (1,1024) (1,1024)。其具体的公式可以由下述公式表示:

F ( p 1 , p 2 , . . . , p N ) = M L P i = 1 , . . . , N ( C ( m a x p o o l ( M L P i = 1 , . . . , N ( p i ) ) , M L P i = 1 , . . . , N ( p i ) ) ) F (p_1 ,p_2 ,...,p_N ) =\mathop{MLP}\limits_{i=1,...,N}(C(maxpool(\mathop{MLP}\limits_{i=1,...,N}(p_i )),\mathop{MLP}\limits_{i=1,...,N}(p_i ))) F(p1​,p2​,...,pN​)=i=1,...,NMLP​(C(maxpool(i=1,...,NMLP​(pi​)),i=1,...,NMLP​(pi​)))

其中C是channel通道的拼接操作,从1:N也能看出逐点计算特征。

在Pointnet出现后,有很多的网络试图改善其没有办法获取局部特征的缺陷——例如Pointnet++,首先选取一些比较重要的点作为每一个局部区域的中心点,然后在这些中心点的周围选取k个近邻点(欧式距离的近邻),再将k个近邻点作为一个局部点云采用pointnet网络来提取特征。其虽然有作用,但是却十分地繁杂并很耗费计算量,而本篇作者提出了一个逐点的金字塔池化模型(Pointwise Pyramid Pooling,简称3P)。

3P的表达式如下:

P ( p 1 , p 2 , . . . p N ) = [ m a x p o o l p = p 1 , . . . , p N ( f , k 1 ) , . . . , m a x p o o l p = p 1 , . . . , p N ( f , k m ) ] P (p 1 ,p 2 ,...p N ) = [\mathop{maxpool}\limits_{p=p_{1} ,...,p_N}(f,k_1 ),..., \mathop{maxpool}\limits_{p=p_1 ,...,p_N}(f,k m )] P(p1,p2,...pN)=[p=p1​,...,pN​maxpool​(f,k1​),...,p=p1​,...,pN​maxpool​(f,km)]

其中 k i k_i ki​表示步长为1的不同尺寸的maxpooling的窗口大小, f f f表示经过MLP的高维点云特征

作者认为以往stride大于1的pooling其主要目的在于压缩特征,故会损失掉很多有用的信息。作者的处理方法简单却有效,就是用了不同尺寸的步长为1的maxpooling来进行这一步对称运算。然后将其得到的特征再拼接起来形成新的特征输入后面的网络中(在实验中作者采用的pooling size是N,N/8和N/64)。其主要的优点在于没有在这些pooling操作中不需要训练参数,因此速度非常得快,效果也不错。

这里还需要解释一下其pyramid pooling和Pointnet中pooling的区别,可以先看下图(Pointnet的结构图),在Pointnet中,池化的作用实际上是将N个点云中的点的高维特征 ( N , D ) (N,D) (N,D)在N的维度上进行了max pooling,输出的结果是 ( 1 , D ) (1,D) (1,D),其作用是归纳全局特征;而在3P模型中,由于步长是1,其max pooling是在D的维度上进行的,输出的结果是 ( N , F 1 + F 2 + F 3 ) (N,F_1+F_2+F_3) (N,F1​+F2​+F3​),其中 F i F_i Fi​是经过了第 i i i个尺寸的步长为1的max pooling后的某个点的高维特征的长度,最后再将这些不同尺寸的pooling的结果拼接起来,就形成了一个新的3D数据。因此它的作用对应的是Pointnet++中利用不同尺寸的k近邻归纳局部特征的那一步,而并非全局特征。

四、双向RNN

经过了3P模块后,输入3P前的全局特征先通过拼接的方法和3P模块的输出结果(局部特征)进行拼接,这一步其实相当于在3P模块中加入了一个尺寸为1的步长为1的max pooling。

输入RNN的其实是一个2D的数据(不要被图中的cubic误导了,垂直方向并没有一个维度),其分别有两个方向的维度 ( L x , L y ) (L_x,L_y) (Lx​,Ly​),其中 L x L_x Lx​是经过不同尺寸的池化后的局部特征与全局特征拼接的那个维度,维度是 F 1 + F 2 + F 3 + D F_1+F_2+F_3+D F1​+F2​+F3​+D; L y L_y Ly​是不同点云点拼接的那个维度,其长度为N,然后作者首先将X维度的每个X(一个点的全局加局部特征总和的sequence)作为一个输入,Y维度作为time step方向训练一次LSTM,再将结果用同样的方法在垂直方向上训练一次。最后的输出再与一开始的全局特征拼接一次,然后输入进MLP去预测N个点每一个点的类别,进行场景分割。

五、实验结果

从实验结果看了,在所有数据集上都表现良好,远超原版的Pointnet和Pointnet++:


【3D计算机视觉】3P-RNN实现点云场景分割相关推荐

  1. 【3D计算机视觉】PRIN——基于点云的旋转不变性网络

    PRIN: Pointwise Rotation-Invariant Network 一.论文摘要 二.模型概述 2.1 相关工作 2.2 网络结构 2.3 Rotation-Invariant Po ...

  2. 【3D计算机视觉】A-CNN——点云上的环状卷积神经网络

    A-CNN-Annularly Convolutional Neural Networks on Point Clouds 阅读笔记 一.贡献点 二.模型结构 2.1 Regular and Dila ...

  3. Cylinder3D :3D环境下的Lidar 点云分割

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 导读:在自动驾驶中,3D感知相较于2D感知能够提供更加准确的位置信息.随着3D激光雷达传感器 ...

  4. 十九.在ROS系统基于点云和视觉图像数据融合构建3D点云场景

    一. 背景介绍 现在很多智能导航场景都涉及到激光(毫米波,固态等)雷达和相机视觉信息融合,这里激光雷达一般都是指多线激光雷达,16线,64线,甚至更多线数. 但多线激光雷达动不动数万的价格,让很多技术 ...

  5. 三维点云语义分割【综述】 ——Deep Learning for 3D Point Clouds: A Survey

    3D POINT CLOUD SEGMENTATION 3D Semantic Segmentation Projection-based Networks Point-based Networks ...

  6. NeurIPS | 3D-BoNet:3D 点云实例分割的新框架

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文对牛津大学.DeepMind 等单位合作完成的论文<Le ...

  7. 免费送书啦!《3D计算机视觉:原理、算法及应用》一本全搞定

    1966年,人工智能学家Minsky在给学生布置的作业中,要求学生通过编写一个程序让计算机告诉我们它通过摄像头看到了什么,这也被认为是计算机视觉(Computer Vision,CV)最早的任务描述. ...

  8. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元(AI_era)   新智元报道   来源:投稿 编辑:元子 [新智元导读]本文提出了一种基于边界框回归的高效点云实例分割算法,通过最小 ...

  9. CVPR 2022 | 腾讯优图实验室30篇论文入选,含场景文本语义识别、3D人脸重建、目标检测、视频场景分割和视频插帧等领域...

    关注公众号,发现CV技术之美 本文转载自腾讯优图 近日,CVPR 2022官方公布了接收论文列表(CVPR 2022 接收论文公布! 总计2067篇!),来自腾讯优图实验室共计30篇论文被CVPR收录 ...

最新文章

  1. 图的算法专题——最小生成树
  2. C#播放flash动画即swf文件
  3. SpringCloud Config简介
  4. shiro教程(2)- shiro介绍
  5. phoenix Explain Plan 翻译
  6. 飞利浦css6530b评测,带多种输入模式 无线接收器很方便_飞利浦 CSS6530B/93_音频评测-中关村在线...
  7. golang垃圾回收MySQL_Go语言垃圾回收和SetFinalizer
  8. 【clickhouse】ClickHouse表引擎 MergeTree 数据生命周期
  9. 【JAVASCRIPT】javascript获取屏幕,浏览器,网页高度宽度
  10. 压箱底的Android UI开源库(一)
  11. ffmpeg 解复用视频文件
  12. RHEL4-VNC服务(二)vnc服务器的配置
  13. 给一个网址传递参数,并接收返回的参数
  14. 中国知名个人站长排行TOP91
  15. β-VAE:学习具有约束框架的基本视觉概念--附件
  16. 2021WSB-day2-4: Raffaele教授演示利用OpenCV和Python实现一个指纹识别系统 (含代码) part6
  17. 【架构设计】简单设计原则(Kent Beck)
  18. 友盟集成微信授权登录,切换微信账号,登录无法切换微信信息问题
  19. 使用python创建NBA Shotchart
  20. 7. Mayavi入门

热门文章

  1. NNDL 实验三 线性模型
  2. HTML笔记——④css样式表、选择器、常用属性
  3. JavaScript03
  4. npm ERR! errno ECONNRESET npm ERR! network This is a problem related to network connectivity.解决方法和步骤
  5. Python 绘制中国地图并标上国家名
  6. java 数组 未初始化_Java数组未保持初始化状态
  7. 热门软件中文在线文档
  8. PTA c#PTA第五章循环练习答案I【程序设计基础】
  9. Go语言的依赖解决方案Go modules(go.mod、go mod)、Goland使用Go mod模式创建工程、GO111MODULE
  10. 北京 春暖花开沙拂面