网格分割

2019-10-23 11:02:26 浏览数 (1)

原文链接

网格分割是什么

网格由顶点和面组成,我们对网格顶点或者面的进行分类,就是网格分割。它是一个分类问题,而分类问题是机器学习里的经典问题。

分割需要对数据进行特征建模,这个建模方法可以是人工的,比如各种几何相关的特征构建;建模方法也可以是自动的,比如深度学习的特征学习方法。

分类的方法,可以是自动分类,比如无监督学习里的各种分类方法;也可以是监督学习,因为分类是一个很主观的问题,我们可以从学习集里学习到分类的标准;还有最近用的比较多的深度学习。下面这张图很好的给网格分割方法做了个分类。


常见的几何特征
  • 曲率
  • 测地距离
  • 形状直径函数
  • 法线
  • 对称性
  • 凹凸性
  • 滑动分析
  • 图元属性

监督学习的方法

网格分割是一个分类问题,有时候分类结果是很主观的。比如这个图形,我们可以有不同的分割结果,每个结果都有道理。具体选择哪一个结果,可能要根据具体的应用来决定。而监督学习的训练集,就可以很好体现出这种主观性。

常见的几何特征有非常多的种类,到底选择哪一种或者哪几种来进行分类,是个很头疼的问题。监督学习的方法,可以从训练集里学习出这种特征选择。比如下面这个学习方法(Learning 3D Mesh Segmentation and Labeling - Siggraph2010),不同的物体的分类,其几何特征的选择是不同的,并且几何特征在分类过程中的权重也是不同的。

这类方法的讨论:

  • 虽然监督学习可以对特征进行选择,但是特征集合的创建对学习结果影响还是很大的。特征的创建需要有丰富领域知识经验的专家来创建。
  • 训练集的数量对训练结果影响很大。我们知道,三维数据集的数量级别是不大的。
  • 每次学习只能针对特定类型的模型进行分割,对于一般的模型分割,还是不行的。

交互式的分割方法

用户的分割意图,也可以通过交互来体现。比如这个例子,用户想分割出兔子的头,在兔头上画了一条蓝色的线,在兔子身上画了一条红色的线,得到了一个分割结果。这个结果不是很理想,于是用户再用红色的线标记了兔子身体,得到了期望的分割结果。

交互的方法,需要尽量的简单,并且分割结果要进来的准确。这类分割问题一般采用图割的方法来分出前景和背景区域。比如下面是一些不同的交互方式。


深度学习的方法

网格特征的建模,需要丰富的有经验的领域专家来设计。这其实是有一定的局限性的。深度学习可以直接进行端到端的学习,跨过领域特征建模这个模块。

深度学习在图像分割领域发展了很多年了,已经很成熟了。一个直观的想法是直接应用图像分割的方法来对网格进行分割。图像和网格的信息结构是有差异的,图像是规则的二维矩阵,网格是不规则的图结构。那么最简单的可以把网格转化未规则的信息结构,比如把网格映射到二维图像,或者网格体素化。早些时候的网格深度学习方法就是采用的这些方法。最近几年,开始有直接把深度学习应用到不规则的信息结构上,比如三维点云,三维网格。

下面这个方法(MeshCNN: A Network with an Edge – Siggraph2019),就是直接在不规则的网格上进行深度学习:

  • 网格的边类比图像的像素。这样边有稳定的四邻域结构,可以定义卷积算子和Pooling算子。
  • 边的特征信息为边的二面角 两个对角 两个边长比。这个特征信息类似图像像素的RGB值。
  • Pooling算子采用了网格简化的方法,边简化的顺序跟学习目标相关。比如下面这个例子,上面一排的简化顺序用于识别花瓶是否有把手;下面一排的简化顺序用于识别花瓶是否有瓶颈。
  • 下面是一个人体分割的例子

有兴趣的读者,欢迎参考视频版本

0 人点赞