3D Shape Segmentation

3D Shape Segmentation with Projective Convolutional Networks

原文地址:3D Shape Segmentation with Projective Convolutional Networks

数据和代码:Data and code

Abstract

这篇文章介绍了一种分割3D物体的深度架构,此架构结合了Fully Convolutional Networks (FCNs)和Conditional Random Fields (CRFs)。FCN将多视角和多尺度的图像投影到3D物体对应的不同部分,然后一个基于表面特征的CRF结合投影出的3D物体不同部分表面的特征将他们在3D物体上进行分割。同样这个架构也用到了一些预训练的图像识别的模型。表现远好于state-of-the-art的方法,最后还展示了在消费级深度相机中进行分割的结果。

Introduction

这篇文章主要的任务是见3D物体分割成为带标注的部分。这个问题很基础,但也很有挑战性:

  1. 物体的每一部分有着多种多样的形态,而不同形态的物体必须被分配到有着相同含义的标注中。
  2. 每一部分之间精确的边界难以划分
  3. 局部和全局的特征需要联系在一起
  4. 要处理噪声和干扰问题还有采样不充分

另外此方法还必须解决以下问题:

  1. 视图必须尽可能的覆盖物体的表面,并且减少阻塞(occlusion,不是很懂,或者应该是遮挡的意思)。
  2. 每一部分必须再度个视图中出现以便巩固特征。
  3. 必须保证3D物体被分割完全并且一致。

贡献点:介绍了一种用于3D形状分割并推断识别各个部分的深度架构,这个架构是端对端进行训练的并且使用了图像识别的预训练模型,没有使用任何的人工调整的特征,对于一些复杂的物体,相比state-of-the-art的方法,这种方法的识别率提高了接近8%。

架构

Related work

这篇论文与图像(包括RGB-D图像)和3D形状分割有关。

Image-based segmentation

图像分割的主要方法有:随机森林和卷积网络,一般用于图像分类的卷积网络在这里也可以被用作图像分割,有一些提高准确率的策略包括:基于区域自上而下推理,CRFs,atrous convolutional layers,解卷积网络,循环网络,多尺度分析等。

Learning 3D shape representations from images

目前有些研究试图通过使用特殊层对图像进行形状投影建模的卷积网络,从图像中学习形状的体积表示;另一些基于网格的表示也可以通过假设固定数目的网格顶点来从图像中学习。本文的3D-2D投影机制是可微的,无参数的,稀疏的,因为它只对形状表面而不是体积,也没有假定顶点个数是固定的。这个方法有点类似于这篇文章,但是本篇文章的方法着眼于通过自适应地选择视图来推断3D物体的各个部分。它也使用CRF来解决视图表示中表面信息的不一致或缺失。

3D geometric shape segmentation

与其它方法相比,这篇文章所用的方法有以下四个优点:

  1. 此架构可以使用二维数据集进行训练,二位数据集的数据量比三维数据集要多很多,并且二位数据中训练出的特征可以在三维形状识别中使用。
  2. 没有用到人工产生的几何描述子。
  3. 使用了适应性的视图选择机制
  4. 采用端对端的机制。

Method

先简介了架构的工作流程,下面将详细讲述这个网络的输入,各个层以及训练过程。

Input

输入是一个多边形网络,用1024个均匀分布在物体表面的点进行采样。采集视图时首先overcomplete采集,使得每个点至少能够被三个不同的视图采集到。对于每个视角,在每个采样点的法线上放置,从三个距离采集多尺度的视图(0.5,1和1.5倍最小外接球半径的距离)。然后需要找到一个更为简洁的视角集合用来描述3D形状的表面。首先将我们采样的点投影一个视角上,用一个二值图来表示,二值图上置一的点就是采样点上距离他最近的点(我觉得就是把采样点垂直投影到一个平面上有采样点的地方就置一),那么这个视角的覆盖面积就可以用投影到这个二值图上的点来表示,因为只有能看到的点才能被投影上。然后对于不同的尺度,覆盖面积最大的那个视角会被放进一个表中,然后忽略掉这个视角捕捉到的所有可视点,然后找下一个覆盖面积最大的视角,直到在这个尺度中所有的点都被捕捉到。在实验中,大约每个尺度20个视角就可以将绝大部分的采样点记录。

拿到不同视角的采样后,然后将图像渲染成512*512阴影图和深度图像,阴影图像根据Phong反射模型产生(文中的two-channel image应该指的是这两种图像分别作为一个channel)。除了阴影和深度图像之外,对于每个选定的相机设置,我们将形状栅格化为另一个图像,其中每个像素存储投影距离像素中心最近的多边形的ID(可参见图1)。

FCN module

使用FCN产生 L 个置信图, L 是3D形状子部分的种类数,使用了这篇文章中建议的FCN架构(以后研究一下),另外还作了两点改进:第一,使用双通道的filter;第二,使用步幅是8的解卷积层将FCN的输出上采样为512*512的置信图。

Image2Surface projection layer

该层的目标是在多个视图中整合置信图信息,并将结果投影到3D表面。我们注意到,最佳视点的位置和数量可能因形状而异,而且它们不是以任何方式排序的。即使不同形状的最佳视点是相同的,视图也不一定是有序的,因为我们不假设形状是一致的。假设一共有 M s 个输入图像(视图),那么考虑到 L 种部分,那么输入这个投射层的数据就是一个 M s × 512 × 512 × L 的4D图像,同时他还要将之前提到的保存有多边形ID信息的 M s × 512 × 512 的图像当作输入。输出则是 F s × L 的矩阵, F s 是3D形状总共包含的多边形数量,意思就是把每个多边形属于那种部分的置信度当作输出。这个投射的过程是通过一个叫view-pooling的过程实现的,可以由下面的公式表示:

viewpooling

上面的公式就是说找出所有 M s 个图像中所有像素点对应的多边形每一个种类的部分的置信度,所以才能出来 F s × L 个结果。(后面作者说在形状的轮廓附近不使用取最大值的操作,而是使用平均操作,不太懂)

Surface CRF

有一些多边形(其实就是三角形)没有被贴上标签,可能因为遮挡或其他原因,那么这些多边形的标签应该被置零,然后使用附近的标签来决定他们的类别。另外,由于FCN中采用了上采样,因此在可能是分割边缘的凸点或凹点上会有bleeding(暂时没看明白)。

在这里作者使用了三个因子去构建这个条件随机场,分别是:
factor1

factor2

factor3

分别代表着置信度因子,法线差角因子和距离因子。根据这三个因子,CRF公式如下:

CRF

Training procedure

FCN使用了预训练的模型,由于输入数据是灰度图像,因此将预训练的卷积层三通道的卷积核进行平均处理,变成单通道,然后进行复制以便处理包括阴影和深度两通道的图像。CRF权值初始化为1.

加入正则项后要优化的是log极大似然函数:

loss

正则化的系数 λ 被设为 10 3 ,然后对FCN层的输出求梯度:

gradient

CRF的梯度也能比较方便地求出。

每个模型随机取出24幅视图进行训练,训练中使用了DropConnect技巧用来避免过拟合。

Implementation

用C++语言和Caffe框架写的程序,随机梯度下降做优化learning rate是 10 3 ,还使用了momentum,另外还添加了Image2Surface层用来投影二维图像中的信息到三维物体表面。

Evaluation

下面展示实验验证和分析。

Datasets

主要使用ShapeNetCore,PSB和COSEG中数据很少,而且好多不能用的。

Prior methods

主要和ShapeBoost以及Guo的方法对比。

Dataset splits

目前找不到标准的训练集测试集的划分。作者选一半来训练一半来测试。但是如果一种形状的数据很多,那么就只选出来500个来训练。

Result

见论文中的图表。

Analysis

在这一部分作者进行了横向的对比,发现还是最终的架构准确度最高。

Generalization to RGB-D sensor data

相比之前的方法,这种方法对现实中采样的数据表现更为健壮。

Conclusion

最后作者做出展望,第一,要找到更加鲁棒的边界,以分层的方式将对象进一步分割成细粒度的部分会有所帮助;第二,研究不同类型的网络输入,目前的输入是相对视图方向的法线和深度,将来可以尝试HHA编码,或者原始的位置数据;第三,使用半监督或者非监督的方式。

猜你喜欢

转载自blog.csdn.net/qq_25011449/article/details/81064950
今日推荐