MVCNN:Multi-view Convolutional Neural Networks for 3D Shape Recognition

原文链接:https://blog.csdn.net/u010167269/article/details/51498927
ICCV 2015:《Multi-view Convolutional Neural Networks for 3D Shape Recognition》,简称:MVCNN。
创新点:
物体的三维数据从不同“视角”所得到的二维渲染图,作为原始的训练数据。用经典、成熟的二维图像卷积网络进行训练,训练出的模型,对三维物体的识别、分类效果之好,比那些用三维数据直接训练出的模型好很多。
借鉴之处:
用多张多角度人脸图作为原始数据输入,用二维CNN进行训练,识别分类。

Introduction

Although the simple strategy of classifying views independently works remarkably well (Sect. 3.2), we present new ideas for how to “compile” the information in multiple 2D views of an object into a compact object descriptor using a new architecture called multi-view CNN (Fig. 1 and Sect. 3.3).
尽管这个想法很简单,但是如何将一个物体的多视角下图像的特征信息进行“compile”(融合),也是个问题。由此,作者提出了Multi-view CNN(MVCNN)。
Our multi-view CNN is related to “jittering” where transformed copies of the data are added during training to learn invariances to transformations such as rotation or translation. In the context of 3D recognition the views can be seen as jittered copies. The multi-view CNN learns to combine the views instead of averaging, and thus can use the more informative views of the object for prediction while ignoring others.
这地方,作者解释说,Multi-view CNN的思路类似于经典CNN网络训练前,对数据进行“jittering”(抖动)。即对训练图像进行旋转、缩放、对称映射、平移等“copy”操作,一方面可以增加数据的量,另一方面可以CNN网络会自动去学习获得变换不变性(如旋转不变性、平移不变性)。
在3D识别分类的过程中,其Multi-view操作获得的**多视角数据可以看成这种数据“jitter”**的操作。但是呢,MVCNN网络要去学习怎样去combine(结合)这些多视角的数据,而不是以前那样,仅仅在网络过程中对数据进行“averageing”,通过多视角图片的学习,可以获得更多的特征信息。作者也通过实验证明了上述想法,MVCNN这种多视角与精心设计的学习比经典CNN的“数据抖动”,在sketch recognition benchmark上的表现,前者更优异。

Convolutional neural networks

In contrast our multi-view CNN architecture learns to recognize 3D shapes from views of the shapes using image-based CNNs but in the context of other views via a view-pooling layer.
As a result, information from multiple views is effectively accumulated into a single, compact shape descriptor.

这段突出作者本文的特殊之处,一是作者研究的这个Multi-view based三维形状描述算子,目前研究较少;二是在将同一件三维形状的**不同视角下的图,结合起来提取三维形状描述算子,怎么结合?作者提出了一个叫做“view-pooling layer”的结构,**经过实验,发现三维形状数据经过多视角的图结合,经过CNN网络训练后,能够提取到单一、简单的形状描述算子。

Method

该如何使用这些多视角的2D图像呢?一个简单的思路就是,由这些2D图像每张得到一个图像特征描述算子,再用某种投票或者排序机制对这些描述算子排序,以此使用这些独立的描述算子来做图像识别任务。
如,一个简单直接的思路就是取对每张独立的描述算子取平均,等同的看待这些算子。但是,该如何“排列安置”3D形状呢?某些很简单,如上面的椅子,直接按照平时的那样摆放,但是很多这种放置方向是很难定义的。因此,若有一种能够结合多视角的表示方法是非常必要的。

Our approach is to learn to combine information from multiple views using a unified CNN architecture that includes a view-pooling layer (Fig. 1). All the parameters of our CNN architecture are learned discriminatively to produce a single compact descriptor for the 3D shape. Compared to exhaustive pairwise comparisons between singleview representations of 3D shapes, our resulting descriptors can be directly used to compare 3D shapes leading to significantly higher computational efficiency.
我们的方法是通过一个叫做“view-pooling layer”的CNN架构去“自动学习”来结合多视角的特征,产生一个单一的、简洁的3D形状描述子。
Input: Multi-view Representation
为了产生3D形状的多视角渲染图,我们需要设定一个“视角”(虚拟相机)来产生网格的渲染图。
我们试验了两种视角初始化。
第一种,我们假设输入的3D形状是按照一个
恒定的轴(Z-轴)正直的摆放
的。这种情况下,我们每个3D形状产生了12张不同视角下的渲染图,也就是没30度,产生一个2D视角渲染图。如图1那样,相机“拍摄”时,是与水平面有30度的水平角(30 degrees from the ground plane)的,且径直指向3D网格数据的“中心”(centroid),这个中心的计算方法是,所有的网格面中心的权重加和,这个权重是各个网格面的面积。
图一
对于第二种视角初始化,此时就不假设3D形状沿着恒定的Z轴放置了。
在这种情况下,我们就需要从更多的“视角点”来“拍摄”3D形状,因为我们不能够确定哪一个视角点能够产生出好的2D渲染图。
我们通过围绕3D形状生成20面体(icosahedron),将**“相机”放在20面体的“vertices”上。这地方很疑惑,20面体,就只有12个“顶点”,但有20个面,这地方难道指的是每个面(等边三角形)的中心么。之后,每个相机在其“点位上”,有前后左右四个方向,也就是文章中所说的旋转0,90,180,270度方向再“拍摄”,每个“点位上”能够得到4个视角图。因此,最后共有80个视角图。
Recognition with Multi-view Representations
每一张视角图可以提取以此图像描述子(特征),但是问题来了,每一个3D形状产生12张或者80张图,怎么把这么多张图像的特征“整合”,来描述3D形状特征呢,这样下一步才能进行各种识别任务。
Image descriptors
我们考虑两类2D图像描述算子,一种最新的
基于Fisher Vector与multi-scale SIFT的人工设计描述算子,另一种则是CNN特征。
Fisher vector图像描述算子是用VLFeat实现的。对于每一张图像,先用multi-scale SIFT提取特征。再用PCA投影成80维,之后就是Gaussian mixture model with 64 components,square-root与l2l2normalization的的Fisher vector。
这一段描述了所用
CNN的网络结构**及其训练方法。这个CNN网络结构主要先是有5层卷积层(Conv1,2,3,4,5Conv1,2,3,4,5),随后就是3个全连接层(fc6,7,8fc6,7,8),最后是Softmax分类层。倒数(penultimate)层,fc7fc7层(随后由一个ReLU激活层,4096维),被用作图像描述算子。整个网络先在ImageNet图像集上进行预训练,之后用之前采集到的多视角图像进行微调。通过我们的实验,微调能够显著的改善性能。Fisher vectors与CNN features都能在分类与检索任务上取得不俗的表现,相比较于先在流行的3D形状描述算子(如:SPH、LFD)以及3D ShapeNets。
Classification.
我们使用线性核SVM,一对多的方式去训练图像特征,来分类3D形状。在测试阶段,我们看一个3D形状的12个多视角图像的测试结果,返回最高值的类别。代替的方案是,求12个多视角图像的描述子的平均值,但效果不好。
Retrieval
在这里插入图片描述
Retrieval任务需要定义一种距离、相似度的“度量”方式。对于3D形状xx,其图像描述子为:nxnx,对于3D形状yy,其图像描述子为:nyny,这两者之间的“距离”定义如等式1。注意,两者之间的距离度量是用它们的特征向量的l2l2距离定义来计算的(||xi−yj||2||xi−yj||2)
解释一下上面的公式,我们可以首先定义一下2D图像(xixi)与3D形状(yy)的距离为:d(xi,y)=minj||xi−yj||2d(xi,y)=minj||xi−yj||2
那么,给出所有的(nxnx个)xx的2D投影与yy之间所有的距离,这两种形状之间的距离就是对nxnx求平均。我们还试了其他的距离定义,但效果都不行。
Multi-view CNN: Learning to Aggregate Views
虽然对于3D形状,上面的多重的描述子相比较于现存的3D形状特征描述子,效果要好,但是在许多情况下,这种算法是低效的。因为如等式1中,我们要衡量两个3D形状之间的距离,需要计算nx×ny个距离(在3D形状对应的视角2D图像下计算),这本身需要大量的计算。
如前面所说,简单的求一个3D形状的多视角图像的特征描述子的平均值,或者简单的将这些特征描述子做“连接”(这地方可以想象成将特征简单的“串联”),会导致不好的效果。所以,这一部分,我们集中于融合多视角2D图像产生的特征,以便综合这些信息,形成一个简单、高效的3D形状描述子。
在这里插入图片描述
因此,我们设计了Multi-view CNN(MVCNN),放在基础的2D图像CNN之中。如图所示,同一个3D形状的 每一张视角图像 各自独立地经过第一段的CNN1卷积网络,在一个叫做View-pooling层进行“聚合”。之后,再送入剩下的CNN2卷积网络。整张网络第一部分的所有分支,共享相同的 CNN1里的参数。在View-pooling层中,我们逐元素取最大值操作,另一种是求平均值操作,但在我们的实验中,这并不有效。
这个View-pooling层,可以放在网络中的任何位置。经过我们的实验,这一层最好放在最后的卷积层(Conv5),以最优化的执行分类与检索的任务。View-pooling优点类似于max-pooling layer与maxout layer,不同点在于进行max操作时的维度不同,这里,所谓的“维度不同”,应该是指,这里的max操作是“纵向的”,即在12个视角图像中,同一个位置的地方,进行max操作。而一般意义上所说的max-pooling,通常是指在一个2×22×2的领域像素单元内,取max像素值保留的操作,
Low-rank Mahalanobis metric
MVCNN是一种有向无环图结构,可以反向传播中用随机梯度下降法训练或者微调。在MVCNN中,用fc7层作为一种聚合的3D形状特征描述符,我们得到了比用基础的CNN卷积网络从单独的图像中提取到的图像描述符,有更好表现的描述符,特别是在检索实验中,从62.8%提高到了70.1%.这种描述符可以直接用来进行其他3D形状的任务了,如分类、检索
MVCNN微调后是直接适用于分类,但但是并不是直接适用于检索。尽管我们可以训练一个适合于图像检索的目标函数,但是我们发现了一种简单的方法,可以容易的提升检索的性能。
我们学习一个马氏距离(Mahalanobis metric)W,直接将MVCNN的特征描述符ϕ∈Rdϕ∈Rd投影到马氏距离Wϕ∈Rpϕ∈Rp,这样的话,相同类别3D形状之间的ℓ2ℓ2距离在投影后的空间中就更小,而不同的类别之间的ℓ2ℓ2在投影后会更大。

Princeton大学的Wu建立的ModelNet数据集,ModelNet数据集现在包含127,915个3D CAD模型,662个类别。40个标注好的子类,共12,311个形状。
对比对象:
(1)一个是文献[37]中,Princeton大学的Wu提出的3D ShapeNets;
(2)一个是文献[16]中,Kazhdan提出的Spherical Harmonics descriptor算子(SPH);
(3)文献[5]中,Chen提出的LFD算子(LightField);
(4)以及用相同的多视角图像提取的Fisher vectors描述符.

Conclusion

作者提出了几点疑问:
在多视角的2D图像表示3D特征时,哪一张视角图像是最重要的,或者说哪一张图像包含了主要的特征信息?多少涨视角图像可以满足给定的精度要求?可以在程序运行中提取选择有价值的视角图像吗?
另一个重要的问题就是,本文的实验都是在“虚拟的”3D形状上的,那么,这篇文章提出的MVCNN能够对于真实世界的3D物体(或者视频、而不仅仅是3D多边形网格模型),也能够建立简洁的特征描述子吗?
这类问题研究清楚了,MVCNN才能运用于实际问题,如物体识别与人脸识别。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值