当前位置:网站首页>【点云处理之论文狂读前沿版10】—— MVTN: Multi-View Transformation Network for 3D Shape Recognition
【点云处理之论文狂读前沿版10】—— MVTN: Multi-View Transformation Network for 3D Shape Recognition
2022-07-03 08:53:00 【LingbinBu】
MVTN: Multi-View Transformation Network for 3D Shape Recognition
摘要
- 问题: 在众多的点云处理方法中,Multi-view projection 方法的视角往往是启发式地设置或者是对所有形状都是相同的设置。
- 方法: 提出了一种方法,学习如何更好地设置这些视角。
- 细节: 引入了 Multi-View Transformation Network (MVTN),用于寻找用于3D形状识别的最优视角,整个网络的设计都是可导的。MVTN可以通过端到端的形式进行训练,并搭配任意的多视角网络用于3D形状识别。本文将MVTN和一个新的适应性多视角网络进行整合,该网络不仅可以处理3D mesh,还可以处理点云。
- 代码:https://github.com/ajhamdi/MVTN Pytorch版本

相关工作
- MVTN学习输入数据的空间变换,学习的过程中不使用额外的监督,也不调整学习过程。
方法
Overview of Multi-View 3D Recognition
多视角网络的训练可以表示为:
arg min θ C ∑ n N L ( C ( X n ) , y n ) = arg min θ C ∑ n N L ( C ( R ( S n , u 0 ) ) , y n ) \begin{aligned} & \underset{\boldsymbol{\theta}_{\mathbf{C}}}{\arg \min } \sum_{n}^{N} L\left(\mathbf{C}\left(\mathbf{X}_{n}\right), y_{n}\right) \\ =& \underset{\boldsymbol{\theta}_{\mathbf{C}}}{\arg \min } \sum_{n}^{N} L\left(\mathbf{C}\left(\mathbf{R}\left(\mathbf{S}_{n}, \mathbf{u}_{0}\right)\right), y_{n}\right) \end{aligned} =θCargminn∑NL(C(Xn),yn)θCargminn∑NL(C(R(Sn,u0)),yn)
其中 L L L 是具体任务的损失函数, N N N是数据集中3D形状的数量, y n y_{n} yn是第 n n n个3D形状 S n \mathbf{S}_{n} Sn的label。 u 0 ∈ R τ \mathbf{u}_{0} \in \mathbb{R}^{\tau} u0∈Rτ是整个数据集的 τ \tau τ个场景参数集合,这些参数表示了影响渲染图片的性质,包括视点、光线、颜色和背景。 R \mathbf{R} R是渲染器,以形状 S n \mathbf{S}_{n} Sn和参数 u 0 \mathbf{u}_{0} u0作为输入,得到每个形状的 M M M个多视角图像 X n \mathbf{X}_{n} Xn。在MVCNN中, C = MLP ( max i f ( x i ) ) \mathbf{C}=\operatorname{MLP}\left(\max _{i} \mathbf{f}\left(\mathbf{x}_{i}\right)\right) C=MLP(maxif(xi)), f : R h × w × c → R d \mathbf{f}: \mathbb{R}^{h \times w \times c} \rightarrow \mathbb{R}^{d} f:Rh×w×c→Rd是一个2D CNN backbone;在ViewGCN中, C = MLP ( c a t G C N ( f ( x i ) ) ) \mathbf{C}=\operatorname{MLP}\left(\right. cat \left._{\mathrm{GCN}}\left(\mathbf{f}\left(\mathbf{x}_{i}\right)\right)\right) C=MLP(catGCN(f(xi))), c a t G C N cat _{\mathrm{GCN}} catGCN是从图卷积网络中学习到的视图特征聚合。 θ C \boldsymbol{\theta}_{\mathbf{C}} θC是多视图网络 C \mathbf{C} C的参数。在实验部分,场景参数 u \mathbf{u} u表示成指向目标中心的相机视角的方位角(azimuth) 和仰角 (elevation) angles,因此 τ = 2 M \tau=2M τ=2M

Multi-View Transformation Network (MVTN)

之前的多视图方法都是以图像 X \mathbf{X} X作为3D形状的唯一表示,其中 X \mathbf{X} X是使用固定的场景参数 u 0 \mathbf{u}_0 u0得到的。相反,本文考虑一个更通用的情况,将 u \mathbf{u} u设置成边界为 ± u bound \pm \mathbf{u}_{\text {bound }} ±ubound 内的变量,其中 u bound \mathbf{u}_{\text {bound }} ubound 是正数,定义了场景参数的允许范围。将每个方位角和仰角的 u bound \mathbf{u}_{\text {bound }} ubound 分别设置为 18 0 ∘ 180^{\circ} 180∘ 和 9 0 ∘ 90^{\circ} 90∘。
Differentiable Renderer
渲染器 R \mathbf{R} R以3D形状 S \mathbf{S} S(mesh or point cloud)和场景参数 u \mathbf{u} u作为输入,输出是对应的 M M M个图像 { x i } i = 1 M \left\{\mathbf{x}_{i}\right\}_{i=1}^{M} { xi}i=1M。由于 R \mathbf{R} R可导,梯度 ∂ x i ∂ u \frac{\partial \mathbf{x}_{i}}{\partial \mathbf{u}} ∂u∂xi可以从每个图像反向传播到整个场景参数,因此能够构造一个端到端的学习框架。
当 S \mathbf{S} S表示为3D mesh时, R \mathbf{R} R有两个分量:rasterizer 和 shader。首先,在给定相机视角和将face分配给像素后,rasterizer将mesh从世界坐标系变换到视图坐标系中。然后shader根据face的分配对每个像素创建多个值,并将这些值进行融合。
当 S \mathbf{S} S表示为点云时, R \mathbf{R} R可以使用alpha-blending mechanism。

View-Points Conditioned on 3D Shape
通过学习Multi-View Transformation Network (MVTN) G ∈ R P × 3 → R τ \mathbf{G} \in \mathbb{R}^{P \times 3} \rightarrow \mathbb{R}^{\tau} G∈RP×3→Rτ和参数 θ G \boldsymbol{\theta}_{\mathbf{G}} θG,将 u \mathbf{u} u设计成3D形状的函数,其中 P P P是从形状 S \mathbf{S} S采样得到点的数量。MVTN的训练可以表示为:
arg min θ C , θ G ∑ n N L ( C ( R ( S n , u n ) ) , y n ) s. t. u n = u bound ⋅ tanh ( G ( S n ) ) \begin{aligned} \underset{\boldsymbol{\theta}_{\mathbf{C}}, \boldsymbol{\theta}_{\mathrm{G}}}{\arg \min } & \sum_{n}^{N} L\left(\mathbf{C}\left(\mathbf{R}\left(\mathbf{S}_{n}, \mathbf{u}_{n}\right)\right), y_{n}\right) \text { s. t. } \quad \mathbf{u}_{n}=\mathbf{u}_{\text {bound }} \cdot \tanh \left(\mathbf{G}\left(\mathbf{S}_{n}\right)\right) \end{aligned} θC,θGargminn∑NL(C(R(Sn,un)),yn) s. t. un=ubound ⋅tanh(G(Sn))
其中 G \mathbf{G} G对3D形状进行编码,预测具体任务多视图网络 C \mathbf{C} C的最优视点。由于 G \mathbf{G} G的目标仅仅是预测视点所以 G \mathbf{G} G的结构很简单,并且很轻量。与此同时,在 G \mathbf{G} G中还使用了简单的点编码器(比如PointNet中的shared MLP),用于处理从 S \mathbf{S} S得到的 P P P个点,并且生成维度为 b b b的coarse形状特征。然后shallow MLP从这个全局形状特征中回归出场景参数 u n \mathbf{u}_n un,为了将预测参数 u \mathbf{u} u的数值强制放入 ± u bound \pm \mathbf{u}_{\text {bound }} ±ubound 范围内,使用了tanh函数将 u \mathbf{u} u缩放到 ± u bound \pm \mathbf{u}_{\text {bound }} ±ubound 内。
MVTN for 3D Shape Classification
为了对MVTN进行训练,用于3D形状分类,我们定义了一个交叉熵损失函数,但是其他的损失函数和正则项也可以用。多视角网络( C \mathbf{C} C)和MVTN( G \mathbf{G} G)使用相同的损失函数共同训练。我们的网络结构的优点在于能够处理3D点云。当 S \mathbf{S} S是一组点云时,简单地将 R \mathbf{R} R定义为一个可导地点云渲染器。
MVTN for 3D Shape Retrieval
我们考虑 C \mathbf{C} C中分类器前面最后一层的特征表示,使用LFDA reduction将这些特征投影到其他空间,并且将处理后的特征作为signature描述一个形状。在测试阶段,形状signature被用于在测试集中检索最相似的形状。
实验
3D Shape Classification


3D Shape Retrieval


Rotation Robustness

Occlusion Robustness


Ablation Study
Number of Views

Choice of Backbone and Point Encoders

Choice of Multi-View Network

Time and Memory Requirements

边栏推荐
- 22-06-28 Xi'an redis (02) persistence mechanism, entry, transaction control, master-slave replication mechanism
- Deep parsing JVM memory model
- 精彩回顾|I/O Extended 2022 活动干货分享
- Basic knowledge of network security
- I made mistakes that junior programmers all over the world would make, and I also made mistakes that I shouldn't have made
- 低代码前景可期,JNPF灵活易用,用智能定义新型办公模式
- createjs easeljs
- How to delete CSDN after sending a wrong blog? How to operate quickly
- Memory search acwing 901 skiing
- Gaussian elimination acwing 883 Gauss elimination for solving linear equations
猜你喜欢
随机推荐
[concurrent programming] concurrent security
20220630 learning clock in
Divide candy (circular queue)
Vscode connect to remote server
Markdown learning
LeetCode 241. 为运算表达式设计优先级
AcWing 785. 快速排序(模板)
Six dimensional space (C language)
高斯消元 AcWing 883. 高斯消元解线性方程组
The difference between if -n and -z in shell
PIC16F648A-E/SS PIC16 8位 微控制器,7KB(4Kx14)
Concurrent programming (III) detailed explanation of synchronized keyword
剑指 Offer II 091. 粉刷房子
使用dlv分析golang进程cpu占用高问题
常见渗透测试靶场
I made mistakes that junior programmers all over the world would make, and I also made mistakes that I shouldn't have made
too many open files解决方案
LeetCode 438. 找到字符串中所有字母异位词
On a un nom en commun, maître XX.
Use of sort command in shell









