3D ShapeNet:一种体素形状的深度表示方法

  • 1.摘要
  • 2.引言
  • 3.相关工作
  • 4.3D ShapeNets
  • 4. 2.5D Recognition and Reconstruction
    • 4.1 View-based Sampling
    • 4.2 Next-Best-View Prediction
  • 5.ModelNet: A Large-scale 3D CAD Dataset
  • 6.实验
    • 6.1Classification and Retrieval
    • 6.2 View-based 2.5D Recognition
    • 6.2Next-Best-View Prediction
  • 7.总结

1.摘要

  1. 提出了一种将几何3D形状表示为3D体素网格中的二值变量概率分布方法,然后用卷积深度网络进行处理。
  2. 不仅可以对3D形状进行操作,2.5D的深度图也可以处理,可以使用单视图的方法,也可以使用Next-Best-View 优化识别率。
  3. 构造了ModelNet,一个规模很大的CAD模型3D数据集,用于3D深度训练。

2.引言

  1. 本文探寻一种能够用于目标识别和形状补全的通用3D形状表示方法。
  2. 当类别识别的第一个视角不充分时,识别系统还需要找到更优的观察视角。

3.相关工作

  1. Assembly-based approach
  2. Smooth interpolation-based approach
  3. Template-based approach
  4. Deep learning-based approach
  5. Next-Best-View problem

4.3D ShapeNets

3D voxel grid的构建可以参考此篇Blog。

Convolutional Deep Belief Network (CDBN)的构建具有以下特点:

  1. 通过卷积权值共享的方法减少模型参数。
  2. 不使用任何的池化操作(因为在形状重建的时候会导致很大的不确定性)。

3D shapeNet的整体架构

Convolutional Deep Belief Network (CDBN)的构建配置:

  1. 网格大小为30×30×30,在表示形状的时候,要在上下左右空出3个多余的格子,减少卷积边界的误差,所以目标形状的范围是24×24×24。
  2. 第一层:使用48个大小为6的卷积核,步数为2。
  3. 第二层:使用160个大小为5的卷积核,步数为2.
  4. 第三层使用512个大小为4的卷积核。
  5. 第四层:全连接,有1200个隐藏单元。
  6. 第五层:全连接,有4000个隐藏单元,输入为multinomial label variables和Bernoulli feature variables(不清楚说的是啥,看图是输入标签和第四层特征)
  7. 训练的时候采用一层一层的预训练模式,前四层的训练方式为standard Contrastive Divergence,后两层的训练方式为Fast Persistent Contrastive Divergence(FPCD)。
  8. 微调阶段使用wake sleep algorithm。第一层只学习感知域中非空的信号,还使用了sparsity regularization 。最后,we duplicate the label units 10 times to increase their significance.(不懂,有知道的小伙伴可以在评论区讨论一下)

4. 2.5D Recognition and Reconstruction

4.1 View-based Sampling

在训练完CDBN后,模型学习到了体素数据 x {\mathbf{x}} x和目标类别 y ∈ { 1 , ⋯ , K } y \in \{ 1, \cdots ,K\} y∈{1,⋯,K}的联合分布函数 p ( x , y ) p({\mathbf{x}},y) p(x,y)。尽管模型是在3D形状上训练的,但是能够识别2.5D的深度图。

View-based 2.5D Object Recognition. (1) 解释如何从3D真实世界的物体拍摄深度图。(2) 展示了从椅子后面拍摄到的深度图,切面用于可视化。(3) 展示了切面的轮廓和不同类型的体素,椅子表面的体素是红色的,遮挡住的体素是蓝色的。(4) 展示了识别和形状补全的结果。

将2.5D深度图转换为体素表示,分成free、surface和occluded三个部分。free和surface被认为是可见的 x o \mathbf{x}_o xo​,occluded是不可见的 x u \mathbf{x}_u xu​,整体表示为 x = ( x o , x u ) \mathbf{x}=(\mathbf{x}_o,\mathbf{x}_u) x=(xo​,xu​)。

识别物体类别的任务可以表示为 p ( y ∣ x o ) p(y|{\mathbf{x}_o}) p(y∣xo​),通过Gibbs sampling进行求解,具体可以参考此篇Blog。步骤如下:

  1. 将 x u \mathbf{x}_u xu​初始化为随机值,并将数据样 x = ( x o , x u ) \mathbf{x}=(\mathbf{x}_o,\mathbf{x}_u) x=(xo​,xu​)自底向上传播,以从 p ( y ∣ ( x o , x u ) ) p(y|({\mathbf{x}_o}, {\mathbf{x}_u})) p(y∣(xo​,xu​))中获取标签 y y y的样本。
  2. 然后,High level signal向下传播到体素 x \mathbf{x} x的采样。
  3. 对 x {\mathbf{x}} x中可见的体素 x o {\mathbf{x}_o} xo​进行截断,再进行自底向上的传播。

50次上下采样迭代应足以获得补全后的形状 x \mathbf{x} x,以及对应的值 y y y。上述步骤可以并行运行,从而产生与潜在不同类别相对应的各种补全结果。最后一个类别标签对应于采样频率最高的类别。

4.2 Next-Best-View Prediction

只从一个角度进行目标识别不太稳定,会识别出其他的类型,如果能够给定当前视角,模型能够预测下一个视角将会对鉴别目标类别产生巨大作用。

输入:

  1. 未知目标的单副可见体素 x o {\mathbf{x}_o} xo​
  2. 有限个下一个视角的可选列表 { V i } \{ {{\mathbf{V}}^i}\} {Vi}(相机的旋转和平移)

输出:

  1. 从列表中选出最优的视图减少识别不稳定性

原始识别不确定度 H H H由 y y y的熵给出,该熵以观测到的 x o \mathbf{x}_o xo​为条件:

H = H ( p ( y ∣ x o = x o ) ) = − ∑ k = 1 K p ( y = k ∣ x o = x o ) log ⁡ p ( y = k ∣ x o = x o ) \begin{aligned} H &=H\left(p\left(y \mid \mathbf{x}_{o}=x_{o}\right)\right) \\ &=-\sum_{k=1}^{K} p\left(y=k \mid \mathbf{x}_{o}=x_{o}\right) \log p\left(y=k \mid \mathbf{x}_{o}=x_{o}\right) \end{aligned} H​=H(p(y∣xo​=xo​))=−k=1∑K​p(y=k∣xo​=xo​)logp(y=k∣xo​=xo​)​
其中,条件概率 p ( y ∣ x o = x o ) p(y \mid \mathbf{x}_{o}=x_{o}) p(y∣xo​=xo​)可以通过从 p ( y , x u ∣ x o = x o ) p(y, \mathbf{x}_{u} \mid \mathbf{x}_{o}=x_{o}) p(y,xu​∣xo​=xo​)中取样并将 x u \mathbf{x}_{u} xu​边缘化来近似。

当照相机被移动到另一个视图 { V i } \{ {{\mathbf{V}}^i}\} {Vi}时,就会有一些以前未被观察到的体素 x u \mathbf{x}_{u} xu​就会根据它的实际形状被观察到。不同的视图 { V i } \{ {{\mathbf{V}}^i}\} {Vi}将导致这些未观察到的体素 x u \mathbf{x}_{u} xu​的可见性不同。

Next-Best-View 预测. [行1,列1]:从单个视角得到的可见体素(红色)和未知体素(蓝色)。[行 2-4,列1]: 在(x_o, x_u)条件下生成的三种可能的补全样本。[行1, 列2-4]:三个可能的相机位置。[行2-4,列2-4]:在给定可能的形状和相机位置下,得到新的可视化目标图案。

在上图中,以 ( x o , x u ) (\mathbf{x}_o,\mathbf{x}_u) (xo​,xu​)为条件,可以采样出很多可能的形状,然后根据每一种假设可以获得 { V i } \{ {{\mathbf{V}}^i}\} {Vi}视角下的深度图。通过这种方式,我们可以仿真出不同样本在不同视角下新的深度图。

令 x n i = Render ⁡ ( x u , x o , V i ) \ x o \mathbf{x}_{n}^{i}=\operatorname{Render}\left(\mathbf{x}_{u}, \mathbf{x}_{o}, \mathbf{V}^{i}\right) \backslash \mathbf{x}_{o} xni​=Render(xu​,xo​,Vi)\xo​表示下一个视角下的新的可见体素, x n i ⊆ x u {\mathbf{x}}_n^i \subseteq {{\mathbf{x}}_u} xni​⊆xu​,是未知变量,将在以下等式中被边缘化。不确定度表示为:
H i = H ( p ( y ∣ x n i , x o = x o ) ) = ∑ x n i p ( x n i ∣ x o = x o ) H ( y ∣ x n i , x o = x o ) \begin{aligned} H_{i} &=H\left(p\left(y \mid \mathbf{x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right)\right) \\ &=\sum_{\mathbf{x}_{n}^{i}} p\left(\mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right) H\left(y \mid \mathbf{x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right) \end{aligned} Hi​​=H(p(y∣xni​,xo​=xo​))=xni​∑​p(xni​∣xo​=xo​)H(y∣xni​,xo​=xo​)​

上式中的条件熵可以通过下述步骤计算:

  1. 从 p ( x u ∣ x o = x o ) p({{\mathbf{x}}_u}|{{\mathbf{x}}_o} = {x_o}) p(xu​∣xo​=xo​)中采样出足够的 x u \mathbf{x}_u xu​
  2. 做3D rendering,得到深度图,从 x u \mathbf{x}_u xu​中得到 x n i \mathbf{x}_{n}^{i} xni​
  3. 利用 x n i \mathbf{x}_{n}^{i} xni​计算 H ( p ( y ∣ x n i = x n i , x o = x o ) ) H\left(p\left(y \mid \mathbf{x}_{n}^{i}={x}_{n}^{i}, \mathbf{x}_{o}=x_{o}\right)\right) H(p(y∣xni​=xni​,xo​=xo​))

根据信息论, H − H i = I ( y ; x n i ∣ x o = x o ) ≥ 0 H-H_{i}=I\left(y ; \mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right) \geq 0 H−Hi​=I(y;xni​∣xo​=xo​)≥0是以 x o \mathbf{x}_{o} xo​为条件, y y y和 x n i \mathbf{x}_{n}^{i} xni​之间的相互信息。

因此,视角优化算法便是最大化这个相互信息:
V ∗ = arg ⁡ max ⁡ V i I ( y ; x n i ∣ x o = x o ) \mathbf{V}^{*}=\arg \max _{\mathbf{V}^{i}} I\left(y ; \mathbf{x}_{n}^{i} \mid \mathbf{x}_{o}=x_{o}\right) V∗=argVimax​I(y;xni​∣xo​=xo​)

5.ModelNet: A Large-scale 3D CAD Dataset

数据来源:

  1. 3D Warehouse
  2. 3D模型搜索引擎 Yobi3D
  3. SUN database
  4. Princeton Shape Benchmark
  5. 打标签工具 Amazon Mechanical Turk

共有660类,151128个3D模型。

6.实验

ModelNet40:40类,每类100个模型
ModelNet10:10类

每个模型沿着重力方向旋转12次(一次30°)
——应对旋转不变性

共有48000 CAD 训练

one Intel XEON E5-2690 CPU
one NVIDIA K40c GPU
训练了两天

6.1Classification and Retrieval

Classification,将第五层看作特征,再加一层线性SVM作为输出层,取每一类的平均值,对比的算法包括Light Field descriptor (LFD, 4,700 dimensions)、Spherical Harmonic descriptor (SPH, 544 dimensions)。

Retrieval,L2 distance被用于两种模型间的相似性。评价指标为recision-recall curve (AUC) 和mean average precision (MAP)。

38,400模型进行训练,9600个模型用于测试。

6.2 View-based 2.5D Recognition

NYU RGB-D dataset:10类, 4899个模型

先直接把在ModelNet上训练好的模型用在NYU数据集上

然后再微调

6.2Next-Best-View Prediction

主要看形状重建的性能 p ( x u ∣ x o = x o ) p\left(\mathbf{x}_{u} \mid \mathbf{x}_{o}=x_{o}\right) p(xu​∣xo​=xo​)。

按理说,一个好的视图选择方案应该可以产生更高的识别精度。

7.总结

所提出的模型既可以识别,又能重建。

【点云处理之狂读论文经典篇1】——3D ShapeNets: A Deep Representation for Volumetric Shapes相关推荐

  1. pointnet分割自己的点云数据_细嚼慢咽读论文:PointNet论文及代码详细解析

    论文标题:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 标签:有监督 | 特征学习.点云分类 ...

  2. 读论文11——Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks

    目录 Abstract Introduction Background CNN Basis A Real-Life CNN the Roofline Model Accelerator Design ...

  3. unix程序员手册_推荐几本实惠电子书,程序员读的经典书都有,比如deep learning...

    小编挑了几本大家耳熟能详的经典电子书,希望您能喜欢.四折的价格小编都用红框标注出来喽!!!祝您阅读愉快!以下推荐的9本电子书均由异步社区出品,如需要请移步https://www.epubit.com/ ...

  4. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  5. 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法

    排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...

  6. 【读论文】点云信息提取研究进展和展望(2017)

    [读论文]点云信息提取研究进展和展望(2017) 张继贤,林祥国,梁欣廉 DOI:10.11947/j.AGCS.2017.20170345 文章目录 1.该论文研究了什么? 1.1点云信息提取基元类 ...

  7. 【读论文】点云智能研究进展与趋势(2019)

    [读论文]点云智能研究进展与趋势(2019) 杨必胜 doi: 10.11947/j.AGCS.2019.20190465 文章目录 摘要: 关键词: 点云大数据采集装备 点云场景:从可视化量测到智能 ...

  8. 4月24日云栖精选夜读 | 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?...

    [点击订阅云栖夜读周刊] 轻松筹首创了"大病救助"模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题.而在轻松筹这样全球5.5亿用户信赖的大病筹款平台 ...

  9. 大咖来信 | 张亚勤@2018:终日“闭关”读论文,思考终极算法

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI 张亚勤是1998年决定回国的,距今已过20年. 这20年中,技术变革天翻地覆,中国发展也日新月异.他见证了互联网在中国的从弱到强,也看到了 ...

最新文章

  1. Java Swing 树状组件JTree的使用方法【图】
  2. 删除git commit 的 UserInterfaceState.xcuserstate 文件
  3. Java内存模型深度解析:锁--转
  4. 随机组卷python_关于随机自动组卷的算法,二维数组
  5. pwa 问题_您真的需要PWA吗? 这里有四个问题可以帮助您做出决定。
  6. vc6 设置静态文本框透明_微信还能这么玩?半透明的微信背景主题用起来!
  7. 【蓝桥杯单片机】红外接收及NEC红外通信协议
  8. linux mysql导出乱码问题_[MYSQL]将数据从5.0版本导入到4.1.7版本中出现乱码问题解决方案...
  9. 《Algorithms》Comparable 实现希尔排序
  10. SVNQuery–如何创建更新索引并查询
  11. 解决fake_useragent报错
  12. 线性规划的对偶性和最大流最小割定理
  13. CSS文本框里的字_把网站搬进PPT里是种怎样的体验?
  14. vue微信公众号开发h5授权登录
  15. HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript)
  16. 服务器怎么使自己的文件夹加密,NAS中如何创建和使用加密文件夹
  17. 单片机课程设计---篮球记分牌
  18. java全能速查宝典_Java全能速查宝典_IT教程网
  19. 成都理工大学计算机考研经历,09计算机考研的小小体会~
  20. 谈谈客户关系管理系统的应用与发展

热门文章

  1. 扩展欧几里得算法( 数学问题 + 扩展欧几里得算法 + 裴蜀定理 )
  2. 闭包的概念,作用,和优缺点
  3. 散户投资者如何成为“七亏二平一赚”中的一赚?
  4. 计算机系统监控 PerformanceCounter
  5. 【APP 测试】APP 性能测试工具:MobileRunner 安装
  6. python爬虫项目——豆瓣Top250
  7. Python之父强烈推荐,Python3网络爬虫开发实战,爬虫入门必看书籍,豆瓣评分9.2
  8. 解决Endnote插入的是{作者,年份}不是序号[1]问题
  9. JavaScript案例:实现对象的深拷贝
  10. 功能游戏介绍--欧式几何