Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部

一张照片获得3D人体信息,云从科技提出新型DenseBody框架

来自云从科技和上海交通大学的研究者近期提出一种新型框架 DenseBody,可直接从一张彩色照片中获取 3D 人体姿势和形状。该研究设计了一种高效的 3D 人体姿势和形状表示,无需中间表示和任务,端到端地实现从单个图像到 3D 人体网格的生成。

多年以来,如何从单一图像估计人体的姿势和形状是多项应用都在研究的问题。研究者提出不同的方法,试图部分或者联合地解决此问题。本文将介绍一种端到端的方法,使用 CNN 直接从单个彩色图像重建完整的 3D 人体几何。

该领域的早期研究使用迭代优化方法从 2D 图像估计人体姿势和形状信息,一般通过不断优化估计的 3D 人体模型来拟合一些 2D 的观测结果,比如 2D 关键点 [4] 或者轮廓 [11]。

随着深度学习的崛起,很多研究试图用 CNN 以端到端的方式解决该问题,其中有些已经达到了更好的性能和更快的运行速度。但是,用 CNN 直接预测完整的人体网格并不简单,因为训练这样的模型需要大量的 3D 标注数据。

近期研究大都结合了某些参数化的人体模型,如 SMPL [13],转而去预测这些模型的参数 [9]。[22,27] 借由关节或分割输出的帮助改善性能。这种基于模型的 3D 表示形式将 3D 人体形状限制在低维线性空间里,使其更容易通过 CNN 模型学习,但由于线性模型的限制,其性能可能无法达到最优。

[39] 提议使用一种体积表示(volumetric representation)来估计人体形状,展现了一定的优点,在此过程中预测的 3D 关节位置被作为中间结果输出。

虽然 3D 表示有多种选择,但近期基于 CNN 的方法大都依赖于某些中间 2D 表示和损失函数来引导训练过程。

在这些方法中,单个 RGB 图像到 3D 人体网格的映射问题被分解为两步:首先得到某些类型的 2D 表示,比如关节热图、掩码或 2D 分割;然后基于这些中间结果预测 3D 表示 [16,5]。这些研究所选择的中间表示以及解决这些子任务的神经网络的输出质量,很大程度上会影响它们的最终效果。

云从科技的这项研究提出了一种高效的方法,从单个 RGB 图像中直接得到完整的 3D 人体网格。

这个方法和其他研究的主要区别有以下两个方面:首先,该研究提出的网络没有结合任何参数化的人体模型,因此该网络的输出不会受到任何低维空间的限制;其次,该方法的预测过程是一步到位的,没有依赖于中间任务和结果来预测 3D 人体。该研究在多个 3D 人体数据集上评估了这一方法,并将其与之前研究中的方法做了对比。

评估结果表明该方法的性能远超其他结果,且运行速度更快。

该研究的主要贡献如下:

  1. 提出了一个端到端的方法,从单个彩色图像直接得到 3D 人体网格。为此,研究者开发了一种新型 3D 人体网格表示。它能够把 2D 图像中的完整人体编码为姿势和形状信息,无需依赖任何参数化的人体模型。

  2. 把 3D 人体估计的复杂度从两步降到了一步。该研究训练了一个编码器-解码器网络,可直接把输入 RGB 图像映射到 3D 表示,无需解决任何中间任务,如分割或 2D 姿态估计。

  3. 进行了多次实验来评估以上方法的效果,并与现有的最优方法进行对比。结果显示,该方法在多个 3D 数据集上实现了显著的性能提升,运行速度也更快。

图 1:示例结果。

论文:DenseBody: Directly Regressing Dense 3D Human Pose and Shape From a Single Color Image 

论文地址:https://arxiv.org/pdf/1903.10153.pdf

摘要:由于人体的高度复杂性和灵活性,以及 3D 标注数据相对较少,从 2D 图像得到 3D 人体姿势和形状可谓是一个难题。之前的方法大体上依赖于预测中间结果,比如人体分割、2D/3D 关节、以及轮廓掩码,将当前问题分解成多个子任务,从而利用更多 2D 标签或者结合低维线性空间内的参数化人体模型来简化问题。

在本文中,我们提出使用卷积神经网络(CNN),直接从单个彩色图像得到 3D 人体网格。我们设计了一种高效的 3D 人体姿势和形状表示,可以通过编码器-解码器结构的神经网络学习获得。实验表明我们的模型在多个 3D 人体数据集上达到了当前最优性能,同时运行速度更快。数据集包括 Human3.6m、SURREAL 和 UP-3D。

3. 本文提出的方法

3.1 3D 人体表示

之前的研究通常使用 SCAPE 和 SMPL 这样的可变形模型和体素来表示 3D 人体几何结构。本文提出的方法则用 UV 位置映射图来表示 3D 人体几何结构,其有如下优点:首先,它能保存点和点之间的空间邻接信息,相比一维的向量表示,该信息对精确重建更为关键;其次,相比体素这样的 3D 表示,它的维数更低,因为体素表示法中,大量不在表面上的点其实用处不大;最后,这是一个 2D 表示,所以我们能直接使用现成的 CNN 网络,例如 Res-net 和 VGG,使用计算机视觉领域的最新进展。

在人体重建领域,UV 映射图作为一种物体表面的图片表达方式,经常被用来渲染纹理图。在这篇论文里,我们尝试使用 UV 映射图来报答人体表面的几何特征。大多数的 3D 人体数据集提供的三维标注是基于 SMPL 模型的,SMPL 模型本身提供了一个自带的 UV 映射图,把人体切分成了 10 个区域。

DensePose 里面提供了另一种人体切分的方式,并提供了一个 UV 映射图,将人体切分成了 24 个区域。我们实验了两种切分方式,SMPL 的 UV 映射图获得了更好的实验结果。因此,在我们的方法中,我们采用这个 UV 映射图来存储整个人体表面的三维位置信息。

图 2 展示了不同分辨率下 UV 位置映射图的顶点变形和重采样时引入的误差。考虑到当前最优方法的全身精度误差(surface error)和关节精度误差(joint error)在几十毫米的数量级,我们选择了 256 的分辨率,它引入的 1 毫米全身精度误差可以忽略不计。另外,256 分辨率的 UV 映射图能够表示六万多个顶点,远多于 SMPL 的顶点数。

图 2:在不同的 UV 位置映射图分辨率下,由于变形和重采样引入的全身精度误差和关节精度误差,单位为毫米。

3.2 网络和损失函数

我们的网络采用编码器-解码器结构,输入是 256*256 的彩图,输出是 256*256 的 UV 位置映射图,其中编码器部分使用 ResNet-18,解码器是由四层上采样和卷积层组成。

不同于以前的方法中需要仔细设计和融合多种不同损失函数的做法,我们直接针对预测的 UV 位置映射图进行监督和设计损失函数 (见表 2)。为了平衡不同的身体区域对训练的影响,我们采用了权重掩模图来调整损失函数。此外,关节点附近的点的权重也进行了加重。

表 1:不同方法中采用的损失函数

 图 3:不同方法的框架与 DenseBody 对比。

3.3 实现细节

所有的图像都先做了对齐,使人位于正中。然后通过裁剪和缩放调整到 256x256,使得紧凑的边界框和图像边缘之间距离适中。图像经过了随机的平移、旋转、翻转和色彩抖动。我们要注意,数据增强的操作大都不简单,因为对应的真值数据也要进行相应的形变。

而当随机形变后的人体超过了 256x256 的画布,则该增强操作无效。我们用正交投影来得到位置映射图的 x-y 坐标,以避免深度信息的误差传播。真值数据的深度信息要经过适当缩放,以控制在 sigmoid 输出的值域里。

我们使用 Adam 优化器学习率为 1e-4,mini-batch 的大小为 64,训练直到收敛为止(大概 20 个 epoch)。在单个 GTX 1080Ti GPU 上训练大约 20 个小时。代码实现基于 Pytorch。

4. 实验

表 2:在 SURREAL 上的实验结果,全身精度误差和关节精度误差以毫米为单位。

表 4:UP-3D 上的实验结果。全身精度误差和关节精度误差以毫米为单位。

表 5:在单个 GTX1080TI 上的前向运行时,以毫秒为单位。1 表示在 TITAN X GPU 上运行。

理论卷积神经网络3D建模计算机视觉
5
相关数据
云从科技机构

云从科技孵化于中国科学院,是一家提供高效人机协同操作系统和行业解决方案的人工智能企业,核心团队曾先后7次获得国内外智能感知领域桂冠,并受邀参与了人工智能国家标准、公安部行业标准等26项国家和行业标准制定工作。通过多年技术积累和业务深耕,云从科技在智慧金融、智慧治理、智慧出行、智慧商业领域已逐步实现成熟应用,智慧金融领域已覆盖六大国有银行在内超过400家金融机构,智慧治理领域已服务于全国30个省级行政区,智慧出行领域产品和解决方案已在包括中国十大机场中的九座在内的105座民用枢纽机场部署上线

http://www.cloudwalk.com/
重采样技术

重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

图像重建技术

通过物体外部测量的数据,经数字处理获得三维物体的形状信息的技术。图像重建技术开始是在放射医疗设备中应用,显示人体各部分的图像,即计算机断层摄影技术,简称CT技术,后逐渐在许多领域获得应用。主要有投影重建、明暗恢复形状、立体视觉重建和激光测距重建。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

上采样技术

在数字信号处理中,上采样、扩展和内插是与多速率数字信号处理系统中的重采样过程相关的术语。 上采样可以与扩展同义,也可以描述整个扩展和过滤(插值)过程。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~