一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

从二维图像生成三维对象模型的制作方法

2023-02-18 16:19:12 来源:中国专利 TAG:


1.本说明书公开了用于从二维图像生成可变形对象的三维模型的方法和系统。


背景技术:

2.对象的单目三维(3d)重建可以促进人机交互、增强现实、虚拟远程呈现等中的广泛应用。在一些应用中,手的3d重建可能特别有用,例如用于自动手语识别/生成和增强现实控制/交互中。
3.当前的现有技术方法的限制在于,它们不容易推广到在非实验室环境中(例如,“在野外”)捕获的样本,并且通常基于估计稀疏关键点集的位置(例如,当生成手的3d模型时的手关节和指尖位置)。


技术实现要素:

4.根据本公开内容的一个方面,描述了一种用于从二维图像生成可变形对象的三维模型的计算机实现的方法。方法包括:接收二维图像作为嵌入神经网络的输入,其中,二维图像包括对象的图像;使用嵌入神经网络生成二维图像的嵌入表示;将嵌入表示输入到经学习的解码器模型中;以及使用经学习的解码器模型从嵌入表示生成对象的三维模型的参数。
5.根据本公开内容的另一方面,描述了一种用于训练经学习的解码器模型以从二维图像生成可变形对象的三维模型的计算机实现的方法。方法包括:接收二维训练图像作为嵌入神经网络的输入,其中,二维训练图像包括对象并且与可变形对象的三维模型的预定参数相关联;使用嵌入神经网络生成二维训练图像的嵌入表示;将嵌入表示输入到解码器模型中;使用解码器模型从嵌入表示生成对象的三维模型的生成参数,使用损失函数将对象的三维模型的生成参数同与二维训练图像相关联的对象的三维模型的预定参数进行比较;根据比较更新解码器模型的参数。
6.对象的三维模型的参数可以包括网格中的多个节点的位置,并且其中,损失函数包括顶点项,该顶点项将生成的节点的位置同与二维训练图像相关联的节点的对应的预定位置进行比较。损失函数可以包括边项,该边项将生成的节点的位置之间的距离同与二维训练图像相关联的节点的对应的预定位置之间的距离进行比较。与二维训练图像相关联的对象的三维模型的预定参数可以通过将三维对象模型拟合到二维训练图像来得出。
7.上面的方法可以各自与下面的特征中的一个或更多个单独或组合地组合。
8.嵌入神经网络可以包括残差神经网络。
9.三维模型可以包括网格模型,并且对象的三维模型的参数可以包括网格参数。解码器模型可以包括解码器神经网络。
10.解码器模型可以包括解码器神经网络,该解码器神经网络包括一个或更多个二维卷积层,并且其中,手的三维模型的参数包括网格的节点的三维坐标。解码器神经网络可以包括一个或更多个提升层。
11.解码器神经网络的初始层可以包括全连接层和重塑层。
12.解码器模型可以包括线性层,并且其中,手的三维模型的参数包括网格的节点的三维坐标。
13.可变形对象可以是手。
14.根据本公开内容的另一方面,描述了一种生成用于训练机器学习模型以从二维图像生成可变形对象的三维模型的训练数据集的计算机实现的方法。方法包括:从视频数据的一个或更多个段提取多个二维图像,二维图像各自包括一个或更多个可变形对象;针对多个二维图像中的每个二维图像:使用关键点识别模型识别二维图像中的多个对象关键点;以及确定对象的三维参数模型的参数,该参数对应于二维图像中的可变形对象,其中,确定参数包括使用所识别的对象关键点和三维参数模型中的对应的对象关键点将对象的三维参数模型拟合到二维图像;以及将二维图像和三维参数模型的对应的参数存储在计算机存储器中。
15.视频数据的一个或更多个段可以包括手语的使用的视频的一个或更多个段。
16.将对象的三维参数模型拟合到二维图像可以包括对目标函数应用迭代优化过程,其中,目标函数包括重投影项,该重投影项将在二维图像中识别的对象关键点的位置与三维参数模型的二维投影中的对应的对象关键点的位置进行比较。重投影项可以包括将权重应用于二维投影中的对应的对象关键点的掩模。目标函数还可以包括长度项,该长度项将在二维图像中识别的对象关键点之间的距离与三维参数模型的二维投影中的对应的对象关键点之间的距离进行比较。目标函数还可以包括正则化项,该正则化项惩罚与预定义的平均对象姿势的偏差。
17.对象的三维参数模型可以是由包括一个或更多个形状参数和/或一个或更多个姿势参数的参数来参数化的网格模型。对象的三维参数模型的参数还可以包括一个或更多个摄像装置参数。三维参数模型中的对应的对象关键点可以使用稀疏回归模型从网格模型来识别。
18.可变形对象可以是手。视频数据的一个或更多个段可以包括手语的使用的视频的多个段,其中,视频的多个段包括来自不同手语的手语的使用。关键点提取模型可以是二维姿势估计模型,该二维姿势估计模型被配置成识别二维图像中的手的关节位置和/或指尖位置。
19.根据本公开内容的另一方面,描述了一种训练机器学习的模型以生成对象的三维模型的计算机实现的方法,方法包括使用根据上述方法生成的训练数据集。
20.根据本公开内容的另一方面,描述了一种用于生成对象的三维模型的计算机实现的方法,方法包括使用利用本文中公开的任何训练方法训练的机器学习的模型。
21.根据本公开内容的另一方面,描述了一种包括处理器和存储器的装置,存储器包括计算机可读指令,计算机可读指令在由处理器执行时使装置执行本文中公开的方法中的任何一个或更多个。
22.根据本公开内容的另一方面,描述了一种包括计算机可读代码的计算机程序产品,计算机可读代码在由计算机执行时使计算机执行本文中公开的方法中的任何一个或更多个。
附图说明
23.现在将参照附图通过非限制性示例的方式描述实施方式,在附图中:
24.图1示出了从二维图像生成对象的三维模型的示例方法的概述;
25.图2示出了从二维图像生成对象的三维模型的示例方法的流程图;
26.图3示出了解码器神经网络的结构的示例;
27.图4示出了用于训练模型以从二维图像生成对象的三维模型的示例方法的概述;
28.图5示出了用于训练模型以从二维图像生成对象的三维模型的示例方法的流程图;
29.图6示出了用于生成用于训练机器学习模型以从二维图像生成对象的三维模型的训练数据集的示例方法的概述;
30.图7示出了用于生成用于训练机器学习模型以从二维图像生成对象的三维模型的训练数据集的示例方法的流程图;以及
31.图8示出了用于执行本文中公开的方法的系统/装置的示例。
具体实施方式
32.示例实现方式提供了用于单目三维对象模型重建的系统和方法。
33.介绍了用于从二维图像生成三维对象模型的方法/系统,其使用包括图像编码器和之后的解码器模型的神经网络架构。可以基于直接三维对象网格重建损失来训练方法/系统。可以从包含给定类型的对象(例如,手)的示例图像的视频自动生成用于在训练中使用的训练数据集。虽然本文中使用的方法和系统可以用于生成用于宽范围的对象类型的模型,但是它们特别适合生成图像中的手的三维模型。
34.与当前方法相比,本文中描述的方法可以导致从野外图像生成的三维对象模型的较低姿势估计误差。本文中描述的方法也可以优于对象姿势估计、特别是手姿势估计的先前方法,而不过度拟合或调整特定数据集。因此,本文中描述的方法提供了从二维图像确定三维对象模型的鲁棒且准确的手段,从该二维图像可以确定对象姿势的准确估计。准确的对象姿势信息,特别是手姿势估计,在例如自动手语识别、增强/虚拟现实控制等人机交互中具有许多应用。
35.此外,本文中描述的数据集生成方法可以从原始的野外手图像/视频产生对象图像的标记的数据集,而不需要手动标记。
36.在下文中,主要关于作为手的对象,描述从二维图像生成三维对象模型,即从包含手的2d图像生成手的3d模型的方法和系统。然而,将认识到,方法可以替选地或另外地应用于其他对象。示例包括但不限于:面部;人/动物躯干和/或其部位;交通工具,例如汽车或飞机;以及/或者机器人和/或机器人部件。方法和系统可以与存在可变形模型的对象(即,可变形对象)一起使用。可变形对象可以被认为是可以使用具有固定/预定拓扑的网格来参数化其表面的对象/对象类别。
37.如本文中所使用的,术语“手”优选地用于表示人的手。然而,术语“手”可以替选地或另外地用于表示以下中的一个或更多个:动物爪/爪子/手;机械手或夹具;以及/或者虚构生物的附属物。
38.图1示出了从二维图像生成对象的三维模型的示例方法的概述。在此示例中,对象
是手,但是可以替选地是另一类型的可变形对象。方法100将包括一个或更多个手104的2d图像102作为输入。诸如编码器神经网络的编码器模型106处理2d图像102以生成图像的嵌入108,e。嵌入108被输入至解码器模型110(在该示例中,解码器神经网络)中,该解码器模型处理嵌入108以生成2d图像102中的手104中的一个或更多个手的3d模型112。
39.二维图像102,i,包括与二维阵列对应的一组像素值。例如,在彩色图像中,其中,h是以像素为单位的图像的高度,w是以像素为单位的图像的高度,并且图像具有三个颜色通道(例如,rgb或cielab)。在一些实施方式中,二维图像可以是黑白/灰度的。
40.编码器神经网络106是用于生成输入图像的嵌入(例如,潜在表示/向量)的模型。编码器神经网络106可以是针对图像嵌入预先训练的神经网络。这样的神经网络可以包括一个或更多个卷积层。神经网络可以包括一个或更多个跳过连接。例如,所得到的嵌入108可以包括在一组图像特征上的分布。这样的神经网络的示例是resnet神经网络,例如resnet-50网络。其他示例包括但不限于hrnet(参见“deep high-resolution representation learning for human pose estimation”,k.sun等,cvpr2019)、mobilenetv2(参见“mobilenetv2:inverted residuals and linear bottlenecks”,m.sandler等,cvpr 2019)和efficientnet(参见“efficientnet:rethinking model scaling for convolutional neural networks”,m.tan等,icml 2019)。
41.解码器模型110将图像嵌入108作为输入,并且对其进行处理以生成输入图像中的手104的输出三维模型112。在解码器模型110是神经网络的实施方式中,图像嵌入被输入到解码器神经网络的输入层中。然后,通过一系列解码器神经网络层处理嵌入108,以生成输入图像中的手104的输出三维模型112。
42.解码器模型110是经学习的模型(即,经训练的模型),其已经在一组训练数据上被训练以从输入图像的嵌入生成该图像中的手104的输出三维模型112。下面描述了训练这样的模型的示例。
43.解码器模型110可以包括一个或更多个空间卷积层。这些层的空间卷积可以在像素空间中操作。解码器模型110可以包括一个或更多个完全连接层。例如,初始层可以是完全连接层。替选地或另外地,解码器模型可以包括用于增加其输入的维度的一个或更多个提升层。在一些实施方式中,解码器模型包括单个线性层或由单个线性层组成。
44.解码器神经网络/模型的结构的示例在下面关于图3进一步详细描述。一般地,神经网络包括节点的多个层,每个节点与一个或更多个参数相关联。神经网络的每个节点的参数可以包括一个或更多个权重和/或偏置。节点将先前层中的节点的一个或更多个输出作为输入。先前层中的节点的一个或更多个输出由节点使用,以使用神经网络的参数和激活函数来生成激活值。激活函数可以包括relu激活函数,但是可以替选地或另外地使用其他激活函数(例如,sigmoid或tanh激活函数)。
45.输出三维模型112包括输入图像102中的手104的三维表示。一般地,定义与输入图像102中的手104对应的手的三维模型的任何参数可以由解码器神经网络112输出。例如,三维模型112可以是由一组网格参数定义的网格模型。网格参数可以包括:顶点/节点位置;在网格中的成对顶点/节点之间定义的边;和/或面(即,一组闭合的边,例如三角形面或四边形面)。用于手的这样的网格模型的示例是mano模型,但是可以替选地使用其他网格模型。
在一些实施方式中,解码器神经网络512的输出可以简单地是预定义模型中的网格顶点/节点的位置,而不是全网格本身。
46.图2示出了从二维图像生成对象的三维模型的示例方法的流程图。方法可以在计算机上实现。如上面关于图1所描述的,对象可以是手。
47.在操作2.1处,接收二维图像作为嵌入神经网络的输入。二维图像包括一个或更多个给定类型的对象,例如,一个或更多个手。
48.在操作2.2处,使用嵌入神经网络生成二维图像的嵌入表示。嵌入神经网络可以包括残差神经网络,即,具有一个或更多个跳过连接的神经网络。嵌入神经网络可以包括一个或更多个卷积层,每个卷积层将一个或更多个卷积滤波器应用于嵌入神经网络中的先前层的输出和/或输入图像。
49.在操作2.3处,将嵌入表示输入到解码器模型中。解码器模型可以是解码器神经网络。解码器神经网络的初始层(例如,输入层之一或输入层之后的层)可以包括全连接层。全连接层可以是解码器神经网络的输入层,其将嵌入表示作为输入并从中产生特征图。可以在类像素空间(例如,一个或更多个像素值阵列)或网格空间(例如,值与网格节点相关联)中定义特征图。重塑层可以在全连接层之后以重塑特征图以供后续层使用。
50.在操作2.4处,使用解码器模型从二维图像的嵌入生成手的三维模型的参数。手的三维模型可以是网格模型,其中参数为网格参数。例如,网格参数可以包括:网格中节点的位置;连接网格中的成对节点的边;和/或网格形状(例如,网格三角形或网格四边形)。
51.在一些实施方式中,解码器模型可以包括单个线性层或由单个线性层组成。单个线性层可以为三维模型提供直接的对象回归。线性层可以包括具有矩阵元素的习得值的矩阵,该矩阵将通过对从嵌入神经网络输出的图像嵌入进行重塑而获得的向量作为输入。
52.在一些实施方式中,解码器模型可以包括卷积神经网络,该卷积神经网络包括一个或更多个卷积层。卷积神经网络还可以包括被配置成增加卷积层的输出的维度的一个或更多个提升层。
53.图3示出了解码器神经网络结构的示例。解码器神经网络300被配置成从手的2d图像的嵌入生成手的3d网格模型。
54.解码器神经网络可以包括一个或更多个二维卷积层302,即,各自被配置成将一个或更多个二维卷积滤波器应用于例如像素值的阵列和/或特征图的层。在使用这样的二维卷积层的实施方式中,解码器神经网络的输出可以是网格的一组节点/顶点坐标。
55.解码器神经网络可以包括一个或更多个提升层304。提升层304被配置成将其输入的维度以预定因子增加。在示出的示例中,提升层304将其输入提升两倍,但是可以替选地使用其他提升因子。提升层304可以是反卷积层。
56.解码器神经网络的初始层(例如,输入层之一或输入层之后的层)可以包括全连接层306。全连接层306可以是解码器神经网络的输入层,其将嵌入表示作为输入并从中生成特征图。可以在类像素空间(例如,一个或更多个像素值阵列)或网格空间(例如,值与网格节点相关联)中定义特征图。在示出的示例中,全连接层306输出(51
×
48)维向量。
57.重塑层308可以在全连接层之后以重塑特征图以供后续层使用。重塑层308可以将由全连接层306输出的向量转换成张量。在示出的示例中,重塑层308将由全连接层306输出的(51
×
48)维向量转换成51
×
48维矩阵。取决于神经网络300的后续层的性质,其他重塑也
是可能的。
58.在一些实施方式中,解码器神经网络的输出包括网格的节点的三维坐标或由网格的节点的三维坐标组成。
59.在一些实施方式中,解码器模型可以是线性回归模型。问题可以重新解释为从2d图像中的图像路径到网格顶点位置的直接回归之一。在这些实施方式中,如上所述使用嵌入神经网络,其中单个层在嵌入神经网络块的顶层上操作。将所得到的张量重塑成d维向量,然后乘以维度(n*3)
×
d的矩阵,以给出n个网格顶点的三维坐标,其中n是网格中的顶点数。矩阵中使用的矩阵元素的值可以例如使用下面关于图5和图6描述的方法来学习。在一些实施方式中,还可以将经学习的参数的(n*3)向量加至矩阵乘法的输出。
60.例如,嵌入网络可以是resnet-50网络。表示嵌入的输出5
×5×
512张量被重塑为d=12800维向量。经重塑的向量乘以(722*3)
×
12800矩阵以提供722个网格顶点的3d坐标。
61.基于线性回归模型的实施方式特别适合移动设备上的轻量级实现方式。它们不使用例如几何卷积的任何专门的卷积,并且不使用基于反卷积的滤波器。而是,它们依赖于通用卷积网络层。模型还可以扩展为以全卷积方式应用于整个图像,而不是处理各个补丁。
62.图4示出了用于训练模型从二维图像402生成对象412的三维模型的方法400的概述。在示出的示例中,对象412是手,但是可以替选地训练模型生成其他对象类型的三维模型。
63.包括对象(在这种情况下为手)404的训练图像402选自包含手的图像的训练数据集。训练数据集中的每个训练图像402与图像中的对象404的预定(即,已知)三维模型414相关联。例如可以使用下面关于图6和图7描述的方法来生成训练数据集。替选地,可以手动生成训练数据集。一般地,用于生成具有对应的三维模型的对象的图像的数据集的任何方法可以被使用。
64.可以将手的预定三维模型414存储为与对应的二维图像相关联的手的全网格模型。替选地,可以从所存储的与对应的二维图像相关联的参数模型的参数(例如,mano模型的参数)生成手的预定三维模型414。
65.所选择的图像404被输入到嵌入神经网络406中。嵌入神经网络406生成输入图像402的嵌入408,即,图像的潜在表示。
66.嵌入408被输入到解码器神经网络410中,该解码器神经网络410从嵌入生成手的三维模型。解码器神经网络410可以例如是如上所述的卷积神经网络。手的三维模型412可以是网格模型(即,表示手的网格的参数,例如顶点/节点位置、边和/或网格多边形)。
67.将生成的手的三维模型412同与输入图像402相关联的手的预定三维模型414进行比较。可以借助于损失函数416,来执行比较,该损失函数将生成的手的三维模型412的属性同与输入图像402相关联的手的预定三维模型414的属性进行比较。
68.损失函数416可以包括顶点项顶点项将生成的对象的三维模型412中的顶点/节点的位置同与输入图像402相关联的对象的预定三维模型414中的顶点/节点的位置进行比较。顶点项可以取决于生成的对象的三维模型412中的顶点/节点的位置与输入图像402所关联的对象的预定三维模型414中的对应的顶点/节点的位置之间的差异。这样的顶点损失函数项的示例由下式给出:
[0069][0070]
其中,是基本真值(ground-truth)网格顶点位置(即,与输入图像502相关联的对象的预定三维模型414中的顶点/节点的位置),是生成的网格顶点位置(即,从同一输入图像402生成的所生成的对象的三维模型412中的顶点/节点的位置),以及λ
vertex
是当损失函数416包括多个项时控制该项在损失函数中的相对重要性的超参数。超参数λ
vertex
可以例如在0.001与1之间,例如在0.001与0.1之间,例如在0.005与0.015之间,例如λ
vertex
=0.001。在上面的示例中,使用了l1范数,但是将认识到,可以替选地使用其他范数,例如l2范数。
[0071]
损失函数416可以替选地或另外地包括边项边项可以替选地被称为“边长度保持”分量。边项将生成的对象的三维模型412中的节点之间的边的长度同与输入图像502相关联的对象的预定三维模型414中的节点之间的边的长度进行比较。边项可以取决于生成的对象的三维模型412中的边的长度与输入图像502所关联的对象的预定三维模型414中的对应的边的长度之间的差异。这样的边损失函数的示例由下式给出:
[0072][0073]
其中,ε
mesh
是一组网格边(例如,定义边的端点的成对节点(u,v)),和是与基本真值网格514中的边(u,v)的端点对应的节点,以及和是与生成的网格412中的边(u,v)的端点对应的节点。λ
edge
是当损失函数416包括多个项时控制该项在损失函数中的相对重要性的超参数。超参数λ
edge
可以例如在0.001与1之间,例如在0.001与0.1之间,例如在0.005与0.015之间,例如λ
edge
=0.001。在上面的示例中,使用了l2范数,但是将认识到,可以替选地使用其他范数,例如l1范数。
[0074]
如以下给出的,组合的损失函数可以由顶点项和边项之和给出:
[0075][0076]
在一些实现方式中,λ
edge
=λ
vertex
。在损失函数中可以包括例如姿势估计损失的附加项。然而,已经发现包含姿势估计损失对训练结果的影响有限,因此在一些实施方式中可以省略。
[0077]
使用损失函数416来确定解码器模型410的参数更新418。例如,基于生成的对象的三维模型412与对象的已知三维模型414的比较来更新解码器神经网络418的权重和/或偏置。例如,可以将优化过程应用于损失函数416以确定参数更新418。这样的优化过程的示例包括但不限于梯度下降法,例如随机梯度下降、模拟退火、动量法(例如adam)等。
[0078]
在一些实现方式中,也可以使用本文中描述的任何训练方法基于损失函数416来更新编码器神经网络406的参数。替选地,可以在解码器模型412的训练期间固定编码器神经网络406的参数。
[0079]
在一些实现方式中,一旦处理了一批训练图像402,就确定参数更新418。可以使用该批训练图像上的损失函数416的平均/和来确定参数更新418。该批训练图像包括来自训练数据集的多个不同训练图像402。批大小(即,一批中的不同训练图像的数目)可以例如在
10个图像与100个图像之间,优选地在25个图像与50个图像之间,例如32个图像。
[0080]
训练可以被迭代,直到满足阈值条件。阈值条件可以是以下中的一个或更多个:阈值迭代次数;阈值训练时期数目(即,通过训练数据集的前向和后向传递);在包括具有已知三维手模型的手的二维图像的测试数据集上获得的阈值准确度;被优化到阈值内的损失函数;和/或一些其他收敛标准或准则。在使用阈值时期数目的情况下,阈值数目可以例如在100个时期与200个时期之间,优选地在125个时期与175个时期之间,例如150个时期。
[0081]
可以基于所使用的优化过程的学习速率(例如梯度下降法中的“步长”)来确定参数更新418。学习速率在整个训练中可以是恒定的。替选地,学习速率可以在整个训练中变化,例如通过在预定义的训练时期从初始学习速率以预定因子衰减而变化。作为示例,使用adam优化器的初始学习速率可以是10-4
,并且在第90时期和第120时期以0.1的因子衰减。可以替选地使用其他学习速率衰减例程。
[0082]
在一些实现方式中,输入图像和/或三维模型可以经历预处理和/或后处理。例如,输入图像402可以用随机裁剪和/或随机变换(例如,平移、旋转、缩放等)来增强。这可以提高经训练的模型在真实世界示例上的性能,在真实世界示例中不能基于基本真值注释来裁剪输入图像。替选地或另外地,可以用来自诸如imagenet的已知图像数据集的均值和标准偏差对输入图像502进行归一化。可以基于对已知网格414的子集计算的统计对输出网格412进行归一化。
[0083]
图5示出了用于训练神经网络以从二维图像生成给定类型的对象的三维模型的示例方法的流程图。方法可以在计算机上实现。对象类型可以是手。
[0084]
在操作5.1处,接收二维训练图像作为嵌入神经网络的输入。二维训练图像包括给定类型的对象的图像,并且与图像中的对象的对应的预定三维模型相关联。预定三维对象模型可以通过将三维对象模型拟合到二维训练图像而得出。
[0085]
在操作5.2处,如上面关于图1和图2所描述的,使用嵌入神经网络生成二维训练图像的嵌入。嵌入神经网络可以是残差神经网络。
[0086]
在操作5.3处,将嵌入表示输入到解码器模型中。解码器模型包括例如解码器神经网络或线性化回归模型的参数化模型,可以使用机器学习技术对其进行训练。
[0087]
在操作5.4处,如上面关于图1至图3所描述的,使用解码器模型生成二维图像中的手的三维模型(例如,三维模型的参数)。
[0088]
在操作5.5处,将生成的三维模型与对象的预定三维模型进行比较(即,将生成的三维模型的参数与预定三维模型的参数进行比较)。比较是使用损失函数(其也可以被称为目标函数)执行的。
[0089]
损失函数可以包括顶点项,该顶点项将生成的节点/网格顶点的位置同与二维训练图像相关联的预定模型中的对应的节点/网格顶点的预定位置进行比较。损失函数可以替选地或另外地包括边项,该边项将生成的节点/网格顶点的位置之间的距离同与二维训练图像相关联的预定三维模型中的对应的节点/网格顶点的预定位置之间的距离进行比较。
[0090]
在操作5.6处,根据比较更新解码器模型的参数。可以使用例如随机梯度下降等优化例程来更新参数。操作5.1至操作5.5可以迭代多次,每次迭代使用来自训练批的不同训练图像。基于在一批的训练图像上取得的损失/目标函数的期望值来更新解码器模型的参
数。
[0091]
操作5.1至操作5.6可以被迭代,直到满足阈值条件。阈值条件可以是训练时期的阈值数目。阈值条件可以包括例如在具有对应的预定三维模型的一组验证图像上定义的一个或更多个收敛标准。
[0092]
图6示出了用于生成用于训练机器学习模型从二维图像生成手的三维模型的训练数据集的示例方法的概述。方法可以由计算机执行。使用关于图6和图7描述的方法生成的训练集可以用作关于图4和图5描述的方法中的训练数据集/验证数据集。
[0093]
用于三维对象重建的训练模型通常可能受到可以在训练中使用的标记的图像的可用性的限制。标记的图像通常被手动注释和/或在实验室条件下捕获,并且因此可能没有捕获在野外出现的对象位置/姿势等的全部范围。
[0094]
视频数据可以提供特定类型的对象的多个图像。例如,当关注的对象是手时,手语使用的视频可以提供宽范围的现实姿势中的二维手图像。这样的视频可以从诸如互联网视频站点的公开可用的视频储存库获得。
[0095]
将三维对象模型自动拟合到从这样的视频数据中提取的二维图像可以产生更准确地反映野外对象姿势的训练数据集。与手动标记的图像和/或在实验室条件下捕获的图像相比,在这样的训练数据上训练三维对象生成模型可以产生更准确的模型生成模型。
[0096]
方法600包括:接收一段视频数据602,视频数据包括多个帧;以及提取包括给定类型的对象(例如,在示出的示例中,对象类型是手)的一个或更多个二维图像604。视频数据602可以取自例如视频托管网站的公开可用的视频数据源。这可以帮助确保视频数据602表示对象类型的图像的“真实世界”示例。在对象类型是手的实施方式中,视频数据可以包括描绘手语的使用的视频数据的一个或更多个片段。
[0097]
每个提取的图像被馈送到关键点识别模型606中,该关键点识别模型识别输入图像中的多个对象关键点608。关键点提取模型606可以例如是预训练的神经网络。预训练的神经网络可以包括一个或更多个卷积层。这样的模型的示例是openpose,但是可以替选地使用被训练以识别图像中给定对象类型的关键点的其他模型。
[0098]
使用识别的关键点608的位置y来将对象的三维可变形模型(即,参数模型)迭代地拟合到图像。例如,可以将手的可变形模型(例如,mano模型)迭代地拟合到手的图像。
[0099]
可变形模型通过可微函数m(β,θ)预测对象的表面上的n个网格顶点,该可微函数将形状参数β和姿势参数θ(参数612)映射到由n顶点网格表示的模型的实例。在一些实施方式中,可变形模型还可以预测模型的多个关键点k的位置。在对象类型是手的实施方式中,关键点可以例如表示手的关节。姿势参数θ可能与手中的关节的角度有关。例如,在mano模型中,姿势参数表示手的k=16个关节,并且
[0100]
可变形模型还可以将一个或更多个摄像装置参数作为输入。摄像装置参数可以例如包括缩放参数s和平移参数全局取向可以被包括在姿势参数θ中。在这样的示例中,可变形模型可以表示为:
[0101][0102]
其中,φ是一组倾斜的模型参数。
[0103]
为了防止例如手中的不可能的关节角度等不真实的对象姿势,姿势参数可以被约
束在一些预计算的聚类中心的凸包上。例如,在姿势参数表示手的k个关节的角度的情况下,可以经由每个关节i的k均值获得c个欧拉角聚类p
1i

……
、p
ci
。每个关节的姿势变量于是可以表示为
[0104][0105]
这将姿势角θi约束为取合理的值,同时允许对无约束变量wc进行优化。受约束角度可以用参数矩阵表示,同时允许全局取向不受限制。
[0106]
可以使用一组初始的形状和姿势参数来初始化三维模型610。三维模型可以用于确定与在二维图像604中识别的关键点608对应的一个或更多个模型关键点614(即,模型的关键点)。模型关键点614可以包括由可微模型m预测的k个关键点。模型关键点可以另外地或替选地包括一个或更多个其他关键点f。在手模型中,k个关键点可以包括关节(例如,在mano模型中k=16),并且f个其他关键点可以包括手的五个指尖。可以使用稀疏回归模型来从n顶点网格回归模型关键点714,取得手姿势
[0107][0108]
通过将模型关键点614与识别的图像关键点608进行比较,将该模型迭代地拟合到在二维图像604中识别的关键点608。可以使用目标函数614来执行比较。拟合可以通过对目标函数616应用例如梯度下降的迭代优化过程来完成。
[0109]
目标函数可以包括2d重投影项e
2d
。2d重投影项将三维模型的二维投影中的模型关键点714的位置与识别的图像关键点608的位置进行比较。可以使用诸如l2或l1范数的范数作为目标函数。
[0110]
可以将掩模λ
2d
应用于三维模型的投影,以减少一些关键点的影响并且增强其他关键点的影响。例如,在手模型中,掩模可以减少掌指关节(mcp,即,每个手指的根部)的影响,并且增强指尖和手腕的影响。mcp关节位置可以乘以小于1的预定因子,该预定因子例如在0.2与0.9之间、或在0.5与0.8之间、例如为0.7。指尖可以乘以大于1的预定因子,该预定因子例如在1.1与2.5之间、或1.6与1.8之间、例如为1.7。手腕可以乘以大于1的预定因子,该预定因子例如在1.5与3.5之间、或2与3之间、例如为2.5。
[0111]
2d重投影项的示例可以象征性地表示为:
[0112][0113]
其中,y是识别的图像关键点608的位置,∏k是到2d的固有摄像装置投影以及λ
2d
是掩模。
[0114]
目标函数还可以包括特征长度项ef。在对象类型是手的实施方式中,这可以被称为“骨丢失”。特征长度项确保对象骨架树ε中的边的长度被保留。特征长度项将三维模型的2d重投影中的关键点之间的边的长度与二维图像604中的识别的关键点608之间的边的长度进行比较。可以使用诸如l2或l1范数的范数作为目标函数。
[0115]
特征长度项的示例可以象征性地表示为:
[0116][0117]
其中,和在对象骨架树ε中的成对点(i,j)上取得,是特征i在三维模型的2d投影中的位置。
[0118]
在一些实施方式中,目标函数还可以包括正则化项e
reg
。正则化项惩罚与平均对象姿势的偏差,并且可以帮助确保真实的变形。假设定义参数θ和β使得平均对象姿势对应于θ=0和β=0,则正则化项的示例由下式给出:
[0119]ereg
(β,θ)=λ
θ
||θ||2 λ
β
||β||2[0120]
其中,λ
β
和λ
θ
是实验选择的超参数。在一些实施方式中,λ
θ
可以小于1,例如在0.01和0.5的范围内,例如在0.05与0.2之间,例如0.1。在一些实施方式中,λ
β
可以大于100,例如在100和10000的范围内,例如在500与1500之间,例如1000。
[0121]
目标函数可以包括重投影项、特征长度项和正则化项中的一个或更多个。优化过程的目标可能是使以下目标最小化:
[0122][0123]
例如,可以使用adam优化器来将优化过程应用于目标函数,可以针对摄像装置、姿势和形状参数使用不同的学习速率(例如,分别为10-2
、10-2
和10-5
)。在优化例程的预定次数的迭代之后,学习速率可以以预定因子衰减。例如,学习速率可能每500次迭代衰减0.95倍。在一些迭代序列期间,可能冻结参数集中的一个或更多个。例如,在对象是手的实施方式中,第一迭代次数可以在摄像装置参数和全局取向上应用优化过程,其中关节集被减少为手腕和不包括拇指的mcp关节。第一迭代次数可以在500次与3000次迭代之间,例如在1000次与2000次迭代之间,例如1500次迭代。之后,对于第二迭代次数,可以在所有参数上应用优化过程。第二迭代次数可以在500次与4000次迭代之间,例如在2000次与3000次迭代之间,例如2500次迭代。
[0124]
如上面所提及的,数据收集方法可以从公开可用的视频源(例如,youtube
tm
)收集对象图像。方法可以例如遍历视频链接列表、下载视频、提取帧、运行openpose、将三维模型(例如,手的mano)拟合到每个帧,并且选择经过滤的样本的小子集。投影的网格的深度可以与投影的网格的x坐标与其世界位置之间的标准偏差的比率成比例。可以通过对总openpose置信度得分、每关节置信度得分、和/或投影的模型(例如,mano)关节与通过距摄像装置的距离归一化的open-pose预测之间的均方误差进行阈值化来执行完整性检查。
[0125]
作为示例,为了创建训练数据集,取得一百零二个视频,并且随机选择满足阈值条件的每视频最多500个样本。在涉及手的实施方式中,大多数样本可以覆盖手语对话。这些手语对话可以由来自各种国家和/或种族的人来执行。一些视频可以包括例如全世界向网络摄像装置手语共同短语的一百个人。验证和测试集可以覆盖例如对象与训练集空交集的七个视频。测试视频可以被选择为多样的和具有挑战性的,并且可以例如包括户外捕捉的对话、舞姿和来自不同区域的手语(例如,美国、澳大利亚和中国台湾手语)。另外,方法可以在coco数据集上执行,例如,7048个手图像被提取用于训练。可以通过将提取的coco图像与从视频提取的图像进行组合来创建组合的训练集以及验证和测试集。
[0126]
图7示出了用于生成用于训练机器学习模型从二维图像生成对象的三维模型的训练数据集的示例方法的流程图。
[0127]
在操作7.1处,从视频数据的一个或更多个段提取多个二维图像,二维图像各自包括给定类型的一个或更多个对象,例如手。视频数据可以从例如公开可用视频流传输/共享网站的外部储存库下载。在对象类型是手的实施方式中,视频可以包括描绘手语的使用的一个或更多个视频段。
[0128]
在操作7.2处,对于提取的图像中的给定图像,使用关键点识别模型在二维图像中识别多个对象关键点。例如,关键点提取模型可以是被配置成识别二维图像中的手的关节位置和/或指尖位置的二维姿势估计模型。这样的模型的示例是openpose,但是可以替选地使用可以识别对象/手关键点的任何关键点提取模型。
[0129]
在操作7.3处,确定与二维图像对应的三维参数对象模型的参数。确定参数包括使用识别的对象关键点和对应的三维参数对象模型中的对象关键点将三维参数对象模型拟合到二维图像。
[0130]
三维参数手模型可以由包括形状参数β和姿势参数θ的一组参数定义。参数还可以包括观测网格的摄像装置的缩放和位置参数。模型使用这些参数来经由可微函数生成三维手网格。这样的模型的示例是mano模型,但是可以替选地使用其他参数手模型。
[0131]
可以使用稀疏回归模型来识别三维手网格的关键点。关键点可以被投影到图像平面上,并且例如使用损失/目标函数来与在二维图像中检测到的关键点进行比较。损失/目标函数可以包括将在二维图像中识别的手关键点的位置与三维参数模型的二维投影中的对应的手关键点的位置进行比较的重投影项。可以在重投影项中使用将权重应用于对应的二维投影中的手关键点的掩模。损失/目标函数还包括将在二维图像中识别的手关键点之间的距离与三维参数模型的二维投影中的对应的手关键点之间的距离进行比较的骨长度项。损失/目标函数还包括惩罚与预定义平均手姿势的偏差的正则化项。
[0132]
基于比较,可以例如使用优化过程来更新三维手模型的参数。这样的优化过程的示例包括adam和/或其他梯度下降法。
[0133]
在操作7.4处,将所述二维图像和对应的三维参数手模型的参数存储在计算机存储器中。二维图像和对应的三维参数手模型的参数可以存储为训练数据集、验证数据集或测试数据集的一部分。
[0134]
可以针对提取的图像中的每个图像(或全部提取的图像的子集)重复操作7.2至操作7.4。可以使用满足某个阈值条件的提取的图像的子集。例如,阈值条件可以是图像包含给定类型的对象(例如,手)的置信度得分高于阈值(例如,90%)。
[0135]
以这种方式生成的训练集可以用于本文中描述的任何训练方法中。
[0136]
图8示出了用于执行本文中描述的任何方法的系统/装置的示意性示例。示出的系统/装置是计算设备的示例。技术人员将认识到,其他类型的计算设备/系统可以替选地用于实现本文中描述的方法,例如分布式计算系统。
[0137]
装置(或系统)800包括一个或更多个处理器802。一个或更多个处理器控制系统/装置800的其他部件的操作。一个或更多个处理器802可以例如包括通用处理器。一个或更多个处理器802可以是单核设备或多核设备。一个或更多个处理器802可以包括中央处理单元(cpu)或图形处理单元(gpu)。替选地,一个或更多个处理器802可以包括专用处理硬件,
例如risc处理器或具有嵌入式固件的可编程硬件。可以包括多个处理器。
[0138]
系统/装置包括工作或易失性存储器804。一个或更多个处理器可以访问易失性存储器804以处理数据,并且可以控制存储器中的数据的存储。易失性存储器804可以包括任何类型的ram例如静态ram(sram)、动态ram(dram),或者其可以包括闪存例如sd卡。
[0139]
系统/装置包括非易失性存储器806。非易失性存储器806以计算机可读指令的形式存储用于控制处理器802的操作的一组操作指令808。非易失性存储器806可以是任何类型的存储器,例如只读存储器(rom)、闪存或磁驱动存储器。
[0140]
一个或更多个处理器802被配置成执行操作指令808以使系统/装置执行本文中描述的任何方法。操作指令808可以包括与系统/装置800的硬件部件有关的代码(即,驱动程序),以及与系统/装置800的基本操作有关的代码。一般而言,一个或更多个处理器602使用易失性存储器804执行被永久或半永久地存储在非易失性存储器806中的操作指令808中的一个或更多个指令,以临时存储在所述操作指令808的执行期间生成的数据。
[0141]
本文中描述的方法的实现方式可以实现为数字电子电路系统、集成电路系统、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合。这些可以包括计算机程序产品(例如存储在例如磁盘、光盘、存储器、可编程逻辑器件上的软件),该计算机程序产品包括计算机可读指令,计算机可读指令在由计算机例如关于图8描述的计算机执行时,使计算机执行本文中描述的方法中的一个或更多个方法。
[0142]
如本文中所述的任何系统特征也可以被提供作为方法特征,反之亦然。如本文中所使用的,装置加功能特征可以根据它们对应的结构来替选地表达。特别地,方法方面可以应用于系统方面,反之亦然。
[0143]
此外,一个方面中的任何、一些和/或所有特征可以以任何适当的组合应用于任何其他方面中的任何、一些和/或所有特征。还应当认识到,在本发明的任何方面中所描述并限定的各种特征的特定组合可以独立地实现和/或提供和/或使用。
[0144]
尽管已经示出和描述了若干实施方式,但是本领域技术人员将认识到,在不脱离本公开内容的原理的情况下,可以在这些实施方式中进行改变,本公开内容的范围在权利要求中限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献