【点云处理之狂读论文经典篇2】——Multi-view Convolutional Neural Networks for 3D Shape Recognition

本文主要是介绍【点云处理之狂读论文经典篇2】——Multi-view Convolutional Neural Networks for 3D Shape Recognition,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MVCNN:一种用于3D形状识别的多视图卷积神经网络

  • 摘要
  • 1. 引言
  • 2. 相关工作
  • 3. 方法
    • 3.1 Input: A Multi-view Representation
    • 3.2 Recognition with Multi-view Representations
    • 3.3 Multi-view CNN: Learning to Aggregate Views
  • 4. 实验
    • 4.1 3D Shape Classification and Retrieval
        • 4.2 Sketch Recognition: Jittering Revisited
    • 4.3 Sketch-based 3D Shape Retrieval
  • 5. 结论
  • 论文写作亮点

摘要

  1. 本文通过一组视角投影下的2D渲染图来学习识别3D形状。
  2. 首先提出一个标准的CNN架构用于独立训练3D形状的渲染图,实验结果表明,单张渲染图的的识别效果已经很好了。
  3. 增加渲染图的数量,识别效果会更好。
  4. 还提出了一个新的CNN框架,能够结合3D形状的多个视角图为一个紧凑的特征向量,识别效果更好。
  5. 相同的框架可以被用于识别人画的形状轮廓。
  6. 代码详见http://vis-www.cs.umass.edu/mvcnn.

1. 引言

  1. 本文以3D ShapeNets为基础,探究非体素表示的方法。
  2. 本文使用的多视图的处理方法效果要比直接处理3D形状好太多了,这是因为用2D表示的方法要比3D更加高效。
  3. 体素表示方法在处理的过程中耗时长、占用内存大、分辨率低、几何信息损失严重
  4. 可以用于classification和retrieval。
  5. 在将3D形状投影为2D图像后,可以对2D图像进行数据增强,实验效果更好。

2. 相关工作

特征提取器

  1. 3D表示方法:polygon meshes, voxel-based discretizations, point clouds, or implicit surfaces
  2. 多视图表示方法
  3. 传统3D表示方法:histograms or bag-of-features(surface normals and curvatures [15], distances, angles, triangle areas or tetrahedra volumes gathered at sampled surface points [25], properties of spherical functions defined in volumetric grids [16], local shape diameters measured at densely sampled surface points [4], heat kernel signatures on polygon meshes [2, 19], or extensions of the SIFT and SURF feature descriptors to 3D voxel grids [17].)
  4. 传统多视图表示方法:若干

CNN
与本文最相近的工作是对两个拼接的视图作为输入。而本文是以多个视图为输入聚合信息特征,不需要排序,输出的是一个紧凑的特征,利用图像和3D形状进行训练。

大多数的方法都是通过比较、拼接多个视图的特征进行处理,而本文是通过view-pooling layer聚合特征的。

3. 方法

本文的核心思想就是开发一个基于视图的3D形状特征提取方法,得到一个可训练、信息丰富的3D形状表示,可以在recognition 和 retrieval任务中进行应用。

简单地对每个视图进行单独处理,或者是拼接处理很不科学,需要找到一种可以处理多个视图特征的方法。本文使用了包含view-pooling layer的通用CNN从多个视角图中结合信息。

3.1 Input: A Multi-view Representation

使用Phong reflection model[27]生成polygon mesh形状(顶点)的视角图。

视点(虚拟相机位置)的选择很重要,本文有两种配置方法:

  1. 假设3D形状垂直放置,围绕着mesh,每30°放置一个虚拟相机,共12个位置,相机指向3D形状的质心。
  2. 假设3D形状的方向未知,那就用更多的图片去覆盖3D形状的表面。通过在包围形状的二十面体的20个顶点处放置20个虚拟相机生成视角图,所有的相机都指向形状的质心。每个相机从4个视角拍摄图片,分别以通过质心和相机的直线为轴旋转0°,90°,180°和270°,共生成80张图片。

生成视角图所耗费的时间很少。

3.2 Recognition with Multi-view Representations

在本小节中,直接使用现有的特征提取方法分别对每个视图进行特征提取,然后将这些特征进行整合。

  1. Hand-crafted descriptors(Fisher vectors with multi-scale SIFT)——PCA + Gaussian kernel升维
  2. CNN activation features(VGG-M)——pre-trained + fine-tuned

Classification

使用one-vs-rest线性SVM,在得到12视图的结果后,进行相加,取最高的结果。

Retrieval

多对多的特征相似性计算:

d ( x , y ) = ∑ j min ⁡ i ∥ x i − y j ∥ 2 2 n y + ∑ i min ⁡ j ∥ x i − y j ∥ 2 2 n x d(\mathbf{x}, \mathbf{y})=\frac{\sum_{j} \min _{i}\left\|\mathbf{x}_{i}-\mathbf{y}_{j}\right\|_{2}}{2 n_{y}}+\frac{\sum_{i} \min _{j}\left\|\mathbf{x}_{i}-\mathbf{y}_{j}\right\|_{2}}{2 n_{x}} d(x,y)=2nyjminixiyj2+2nximinjxiyj2

其中,形状 x \mathbf{x} x n x n_{x} nx个图像特征,形状 y \mathbf{y} y n y n_{y} ny个图像特征。特征之间的距离用 ℓ 2 \ell_{2} 2计算, i.e. ∥ x i − y j ∥ 2 \left\|\mathbf{x}_{i}-\mathbf{y}_{j}\right\|_{2} xiyj2

  1. 首先计算一个2D图像特征 x i \mathbf{x}_{i} xi y \mathbf{y} y的最短距离 d ( x i , y ) = min ⁡ j ∥ x i − y j ∥ 2 d\left(\mathbf{x}_{i}, \mathbf{y}\right)=\min _{j}\left\|\mathbf{x}_{i}-\mathbf{y}_{j}\right\|_{2} d(xi,y)=minjxiyj2
  2. 然后给出所有2D图像 x i \mathbf{x}_{i} xi y \mathbf{y} y的距离 ∑ \sum
  3. 最后取平均值
  4. 使用双向保证对称性

3.3 Multi-view CNN: Learning to Aggregate Views

上一节中使用的聚合方法不方便,效率也不高。在本节中,要找到一种既综合所有视图的特征信息又紧凑的表示形式。

Multi-view CNN(MVCNN)

如图1所示:

  1. 多视图分别进入网络的第一部分CNN 1 _1 1,CNN 1 _1 1所有分支的参数相同,
  2. 再在view-pooling layer进行聚合,该层取元素最大化操作(注意取最大值的维度与最大池化不一样),这个层可以放在主干网络的任意位置。但是,通过实验证明,放在第5层效果最好。
  3. 最后通过网络的剩余部分CNN 2 _2 2

这样性能佳,速度快。

Low-rank Mahalanobis metric

主要是针对Retrieval任务。训练一个权重 W W W ,可以将原先的特征向量 ϕ ∈ R d \phi \in \mathbb{R}^{d} ϕRd投影到 W ϕ ∈ R p W \phi \in \mathbb{R}^{p} WϕRp空间中,其中 p < d p<d p<d,便于计算特征间的 ℓ 2 \ell_{2} 2距离,实验中 p = 128 p=128 p=128

4. 实验

4.1 3D Shape Classification and Retrieval

数据集:ModelNet,包含127,915和3D模型,属于662个类别。其中40个类别已经被标注好了,包含12,311个形状,训练集和测试集的划分与3D ShapeNet保持一致。

对比方法:

  1. 3D ShapeNets
  2. pherical Harmonics descriptor (SPH)
  3. LightField descriptor (LFD)
  4. Fisher vectors

结论:

  1. 使用3D形状的投影视图的2D表示还是很有效的。
  2. 使用在ImageNet上预训练的主干网络能够提高任务的精度。
  3. MVCNN更强,没得说。
  4. low-rank Mahalanobis的使用对于retrieval任务来说更是锦上添花。
  5. view pooling layer放在第5层效果最好。

Saliency map among views

对于每个3D形状 S S S,其表示都对应着 K K K个2D视图 { I 1 , I 2 … I K } \left\{I_{1}, I_{2} \ldots I_{K}\right\} {I1,I2IK}。我们想要对2D视图中的像素进行排名,看看他们对网络的输出分 F c F_{c} Fc的影响(第八层,相对于 c c c类别)。Saliency maps被定义为对 F c F_{c} Fc求导:

[ w 1 , w 2 … w K ] = [ ∂ F c ∂ I 1 ∣ S , ∂ F c ∂ I 2 ∣ S … ∂ F c ∂ I K ∣ S ] \left[w_{1}, w_{2} \ldots w_{K}\right]=\left[\left.\frac{\partial F_{c}}{\partial I_{1}}\right|_{S},\left.\left.\frac{\partial F_{c}}{\partial I_{2}}\right|_{S} \ldots \frac{\partial F_{c}}{\partial I_{K}}\right|_{S}\right] [w1,w2wK]=[I1FcS,I2FcSIKFcS]

对于MVCNN而言, w w w可以在所有网络参数固定的情况下使用反向传播进行计算,然后可以重新排列以形成单个视图的Saliency maps。

4.2 Sketch Recognition: Jittering Revisited

就是2D图像的数据增强。

数据集:human sketch dataset,包含了20000个手工绘制的草图,250种类型。

4.3 Sketch-based 3D Shape Retrieval

数据集:

  1. SketchClean, 193个草图,10类
  2. ModelNet40,790个CAD模型,10类

3D模型的处理过程:

然后和手工画的草图进行特征比较,根据公式1排序。

最后得到的精度为36.1%

5. 结论

  1. 对多视图的特征结合来说,哪些视图的信息最多?多少张视图最适合?可以实时选择最合适的视图吗?
  2. 对于真实3D形状来说,多维视图方法还管用吗?

论文写作亮点

  1. A large corpus of
  2. silhouette n. 轮廓

这篇关于【点云处理之狂读论文经典篇2】——Multi-view Convolutional Neural Networks for 3D Shape Recognition的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/yuanmiyu6522/article/details/124523023
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/394373

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos