网格分割
Posted threepark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网格分割相关的知识,希望对你有一定的参考价值。
网格分割是什么
网格由顶点和面组成,我们对网格顶点或者面的进行分类,就是网格分割。它是一个分类问题,而分类问题是机器学习里的经典问题。
分割需要对数据进行特征建模,这个建模方法可以是人工的,比如各种几何相关的特征构建;建模方法也可以是自动的,比如深度学习的特征学习方法。
分类的方法,可以是自动分类,比如无监督学习里的各种分类方法;也可以是监督学习,因为分类是一个很主观的问题,我们可以从学习集里学习到分类的标准;还有最近用的比较多的深度学习。下面这张图很好的给网格分割方法做了个分类。
常见的几何特征
- 曲率
- 测地距离
- 形状直径函数
- 法线
- 对称性
- 凹凸性
- 滑动分析
- 图元属性
监督学习的方法
网格分割是一个分类问题,有时候分类结果是很主观的。比如这个图形,我们可以有不同的分割结果,每个结果都有道理。具体选择哪一个结果,可能要根据具体的应用来决定。而监督学习的训练集,就可以很好体现出这种主观性。
常见的几何特征有非常多的种类,到底选择哪一种或者哪几种来进行分类,是个很头疼的问题。监督学习的方法,可以从训练集里学习出这种特征选择。比如下面这个学习方法(Learning 3D Mesh Segmentation and Labeling - Siggraph2010),不同的物体的分类,其几何特征的选择是不同的,并且几何特征在分类过程中的权重也是不同的。
这类方法的讨论:
- 虽然监督学习可以对特征进行选择,但是特征集合的创建对学习结果影响还是很大的。特征的创建需要有丰富领域知识经验的专家来创建。
- 训练集的数量对训练结果影响很大。我们知道,三维数据集的数量级别是不大的。
- 每次学习只能针对特定类型的模型进行分割,对于一般的模型分割,还是不行的。
交互式的分割方法
用户的分割意图,也可以通过交互来体现。比如这个例子,用户想分割出兔子的头,在兔头上画了一条蓝色的线,在兔子身上画了一条红色的线,得到了一个分割结果。这个结果不是很理想,于是用户再用红色的线标记了兔子身体,得到了期望的分割结果。
交互的方法,需要尽量的简单,并且分割结果要进来的准确。这类分割问题一般采用图割的方法来分出前景和背景区域。比如下面是一些不同的交互方式。
深度学习的方法
网格特征的建模,需要丰富的有经验的领域专家来设计。这其实是有一定的局限性的。深度学习可以直接进行端到端的学习,跨过领域特征建模这个模块。
深度学习在图像分割领域发展了很多年了,已经很成熟了。一个直观的想法是直接应用图像分割的方法来对网格进行分割。图像和网格的信息结构是有差异的,图像是规则的二维矩阵,网格是不规则的图结构。那么最简单的可以把网格转化未规则的信息结构,比如把网格映射到二维图像,或者网格体素化。早些时候的网格深度学习方法就是采用的这些方法。最近几年,开始有直接把深度学习应用到不规则的信息结构上,比如三维点云,三维网格。
下面这个方法(MeshCNN: A Network with an Edge – Siggraph2019),就是直接在不规则的网格上进行深度学习:
- 网格的边类比图像的像素。这样边有稳定的四邻域结构,可以定义卷积算子和Pooling算子。
- 边的特征信息为边的二面角+两个对角+两个边长比。这个特征信息类似图像像素的RGB值。
- Pooling算子采用了网格简化的方法,边简化的顺序跟学习目标相关。比如下面这个例子,上面一排的简化顺序用于识别花瓶是否有把手;下面一排的简化顺序用于识别花瓶是否有瓶颈。
- 下面是一个人体分割的例子
有兴趣的读者,欢迎参考视频版本
以上是关于网格分割的主要内容,如果未能解决你的问题,请参考以下文章