CN111540055B - 三维模型驱动方法、装置、电子设备及存储介质 - Google Patents

三维模型驱动方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111540055B
CN111540055B CN202010300284.1A CN202010300284A CN111540055B CN 111540055 B CN111540055 B CN 111540055B CN 202010300284 A CN202010300284 A CN 202010300284A CN 111540055 B CN111540055 B CN 111540055B
Authority
CN
China
Prior art keywords
dimensional
user
model
joint point
point sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010300284.1A
Other languages
English (en)
Other versions
CN111540055A (zh
Inventor
曾梓华
周详
彭勇华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010300284.1A priority Critical patent/CN111540055B/zh
Publication of CN111540055A publication Critical patent/CN111540055A/zh
Priority to PCT/CN2021/087791 priority patent/WO2021209042A1/zh
Application granted granted Critical
Publication of CN111540055B publication Critical patent/CN111540055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T5/70
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • G06V20/42Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items of sport video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/49Segmenting video sequences, i.e. computational techniques such as parsing or cutting the sequence, low-level clustering or determining units such as shots or scenes

Abstract

本公开公开了一种三维模型驱动方法、装置、电子设备及存储介质,该方法包括:获取用户视频流;根据视频帧中的用户图像估算二维姿态信息;根据二维关节点的置信度对多个二维关节点序列进行平滑处理;将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;将三维关节点序列发送至终端,以便终端根据所述三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。本公开实施例提供的三维模型驱动方法,能够基于置信度对二维关节点序列进行平滑处理,提高三维模型动作流畅度,实现将主播动作形成三维模型,并将主播的动作流畅的迁移到三维模型的方案,优化增强现实效果,提高三维模型驱动效率。

Description

三维模型驱动方法、装置、电子设备及存储介质
技术领域
本公开实施例涉及虚拟现实技术,尤其涉及一种三维模型驱动方法、装置、电子设备及存储介质。
背景技术
随着增强现实(Augmented Reality,AR)技术的发展,虚拟影像与真实影像的结合得到广泛应用。在直播应用场景中,存在主播图像与增强现实道具结合的应用。例如在主播任务图像上附着增强现实眼镜等。目前缺少一种能够将主播动作形成三维模型,并将主播的动作流畅的迁移到三维模型的方案,增强现实效果较差,三维模型驱动效率低。
发明内容
本公开提供一种三维模型驱动方法、装置、电子设备及存储介质,以实现提高三维模型驱动效率。
第一方面,本公开实施例提供了一种三维模型驱动方法,包括:
获取用户视频流,用户视频流包括多个视频帧,用户视频流包含有用户的运动画面;
根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;
根据二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
第二方面,本公开实施例还提供了一种三维模型驱动方法,应用于终端,包括:
响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧;
在图像帧中加载三维模型;
根据服务器发送的三维关节点序列驱动三维模型。
第三方面,本公开实施例还提供了一种三维模型驱动装置,包括:
视频流获取模块,用于获取用户视频流,用户视频流包括多个视频帧,用户视频流包含有用户的运动画面;
二维姿态估算模块,用于根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;
平滑处理模块,用于根据二维关节点的置信度对多个二维关节点序列进行平滑处理;
三维姿态估算模块,用于将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
模型驱动模块,用于将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
第四方面,本公开实施例还提供了一种三维模型驱动装置,应用于终端,包括:
图像帧获取模块,用于响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧;
三维模型加载模块,用于在图像帧中加载三维模型;
三维模型驱动模块,用于根据服务器发送的三维关节点序列驱动三维模型。
第五方面,本公开实施例还提供了一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如本申请实施例所示的三维模型驱动方法。
第六方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所示的三维模型驱动方法。
本公开实施例提供的三维模型驱动方法、装置、电子设备及存储介质,获取用户视频流,用户视频流包括多个视频帧;根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;根据二维关节点的置信度对多个二维关节点序列进行平滑处理;将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。相对于目前无法实现将主播动作流畅,的迁移至三维模型,本申请实施例提供的三维模型驱动方案,能够在获取用户视频流后,根据视频流中的视频帧获取二维关节点序列,基于置信度对二维关节点序列进行平滑处理,并使用平滑处理后的二维关节点序列得到三维关节点序列,并使用三维关节点序列驱动三维模型,提高三维模型动作流畅度,实现将主播动作形成三维模型,并将主播的动作流畅的迁移到三维模型的方案,优化增强现实效果,提高三维模型驱动效率。
附图说明
图1是本公开实施例中的一种三维模型驱动方法的流程示意图;
图2是本公开实施例中的另一种三维模型驱动方法的流程示意图;
图3是本公开实施例中的另一种三维模型驱动方法的流程示意图;
图4是本公开实施例中的另一种三维模型驱动方法的流程示意图;
图5是本公开实施例中的另一种三维模型驱动方法的流程示意图;
图6是本公开实施例中的另一种三维模型驱动方法的流程示意图;
图7是本公开实施例中的一种三维模型驱动装置的结构示意图;
图8是本公开实施例中的另一种三维模型驱动装置的结构示意图;
图9是本公开实施例中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。
图1为本公开实施例提供的三维模型驱动方法的流程图,该方法应用于服务器,该服务器用于拉取用户视频流,基于用户视频流获取表示用户动作的三维关节点序列,使用三维关节点序列驱动三维模型,使用户动作迁移至三维模型。该方法包括:
步骤110、获取用户视频流,用户视频流包括多个视频帧。
其中,用户视频流包含有用户的运动画面。在一种实现方式中,用户可以为主播用户,用户视频流可以为主播用户通过拍摄设备拍摄全身影像或半身影像的视频。例如,主播用户面对拍摄设备跳舞,此时用户视频为主播用户的跳舞视频。示例性的,本申请实施例可实现服务器根据主播用户的跳舞动作,为观众用户或其他主播用户提供与主播用户动作一致的三维模型舞蹈效果。观众用户界面上除了主播用户的直播画面,在主播用户人体图像区域旁边,显示一个人体三维模型,该人体三维模型与主播用户动作一致。
可选的,用户视频流还可以为以主播用户人脸为主的人脸视频。示例性的,本申请实施例可实现为观众用户提供与主播用户面部表情以及面部动作一致的三维模型。
在另一种实现方式中,用户还可以为观众用户,观众用户可以录制与主播用户相同或与主播用户配套的动作。例如,观众用户观看主播用户的跳舞视频,为主播用户进行配舞,或者模仿主播用户的跳舞动作等。示例性的,本申请实施例可实现服务器根据观众用户的跳舞动作,为其他观众用户或主播用户提供与该观众用户动作一致的三维模型舞蹈效果。直播界面中除了主播用户的直播画面,在主播用户人体图像区域旁边,显示一个人体三维模型,该人体三维模型与观众用户动作一致。实现通过人体三维模型表示观众用户的动作,达到观众用户为主播用户伴舞的效果。
为了方便描述,本申请实施例以服务器获取主播用户画面,将主播用户动作迁移到三维模型动画作为示例进行描述。
通常渲染的三维模型表示的卡通人物的动画为24fps(每秒传输帧数),而主播用户开播时因硬件差别,直播的帧率会在20~120fps之间。如果主播用户的用户视频流的帧率与三维模型的帧率不一致,则会出现动作迁移不一致,或动作卡顿的问题。为了让直播的帧率与动画帧率保持一致,本申请实施例提出了对直播的视频流(即用户视频流)进行采样的技术方案。示例性的,步骤110、获取用户视频流,可通过下述方式实施:根据三维动画的帧率调整用户视频流的帧率,使用户视频流的帧率与三维动画的帧率一致。
假设直播的视频流(即用户视频流)的帧率为第一帧率,三维模型动画的帧率为第二帧率,第一帧率大于第二帧率。则每秒需要丢弃第一帧率减去第二帧率数量的视频帧。可选的,使用第一帧率除以第二帧率,得到商。若第一帧率与第二帧率整除,则根据商进行间隔采样。若第一帧率与第二帧率不能整除,则在得到商时,对商向下取整确定间隔采样间隔。根据间隔采样间隔对用户视频流进行间隔采样,得到采样视频帧。此时,采样视频帧的帧率大于第二帧率,根据采样视频帧的帧率与第二帧率的差值,对采样视频帧进行随机采样。通过价格采样和随机采样后,直播的视频流的帧率与三维模型动画的帧率相同。
示例性的,假定直播的视频流为60fps,三维模型动画的帧率为24fps,为了使直播的视频流与三维模型动画帧率一致,需要每秒丢弃60-24=36帧,常见的采样方法为间隔采样和随机采样,使用间隔采样,采样的视频较为平滑,但步长为小数时,无法准确采样,而使用随机采样又会导致画面出现跳跃。上述实例中,间隔采样的步长(step)=60/24=2.5,表明每2.5帧采样一帧。对间隔采样的步长(step)向下取整,步长调整为2。通过下采样得到30fps的帧率。然后从30fps中随机选取6帧进行丢弃,因为丢弃帧数较少,视频跳动概率会大大降低,最终获得24fps的帧数的视频流。因此,本申请实施例先对视频进行向下取整的间隔采样,然后使用随机采样,进而更加高效的进行帧率对其,提高三维模型流畅性。
进一步的,FFmpeg(Fast Forward Mpeg)在服务端解码视频帧时,会产生显示时间戳(Presentation Time Stamp,简称pts),而iOS和安卓客户端同时也会解码同一个视频流。因为三维模型动画帧率与用户视频流帧率是不一致的,若想要对齐pts需要容忍策略,此时可以不进行精确的对齐。此时,客户端对采样后的前100帧pts值之间的差值取平均,然后以标准差或该平均值做为视频流在客户端对齐时的容忍值,进而有效避免动画跳跃以及在客户端无法对齐pts值导致动画卡顿的问题。
步骤120、根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列。
根据用户视频流中的每个视频帧均可获取视频帧中用户的姿态。当视频帧中只有一个用户时,视频帧中的用户图像即为视频帧全部图像区域。此时,将视频帧传入二维姿态估算模型进行二维姿态的估算,该二维姿态估算模型可以通过训练得到,其输入为用户图像,输出为二维姿态信息,该姿态信息包括由多个二维关节点组成的二维关节点序列。
步骤130、根据二维关节点的置信度对多个二维关节点序列进行平滑处理。
由于步骤120中二维姿态估计模型是一帧一帧预测的,帧之间没有相关性,因此如果单独把每一帧的关节点预测方法拼接在一起会看到点抖动比较厉害的情况。为了解决该问题,需要对二维姿态估计模型的输出结果进行平滑处理。
本申请实施例中为每个节点配置置信度,置信度用于表示节点的可靠程度(取值为0~1)。步骤130可使用下述公式进行平滑处理:
其中,si表示第i帧的平滑结果,a表示衰减系数,在这里,我们取衰减系数为0.75,c表示模型预测出来的关节点所对应的置信度。上述公式在计算平滑结果时,不仅考虑历史关节点数值,还考虑了历史关节点的置信度。置信度越高对平滑结果的贡献越大,置信度越低对平滑的结果贡献则越小。
步骤140、将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列。
三维姿态模型可以为Seq2Seq模型,其输入为二维关节点序列,输出为三维关节点序列。
步骤150、将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
服务器可以将三维关节点序列携带在终端拉流的主播视频流(即直播流量)中。终端在接收到三维关节点序列后,从动画库中匹配出与该三维关节点序列匹配的三维模型的动画,在终端(客户端)的应用界面中播放该动画,以实现驱动三维模型。三维模型通过三维关节点匹配得到,也可以在直播时由主播用户选取特定的三维模型。
应用界面中预先输出三维模型的初始化画面,步骤150根据步骤140确定的三维关节点序列驱动应用界面中已输出的三维模型。
可选的,直播应用包括主播用户和观众用户。主播用户可以选择一个三维模型,此时三维模型输出至主播用户的直播间画面中。观众用户和主播用户可观看到包含有该三维模型的主播用户的直播画面。在初始状态,可以先在应用界面(如直播应用)输出三维模型的初始画面。随着后续步骤的执行(如步骤120-步骤150),使用三维关节点序驱动三维模型进行运动,使得三维模型随主播用户的运动进行与主播用户一致的运动动作。
可选的,直播应用包括主播用户和观众用户。观众用户A可以选择一个三维模型,此时三维模型输出至主播用户的直播间画面中。该观众用户A以及其他观众用户B,或者该观众用户A可观看到包含有该三维模型的主播用户的直播画面。在初始状态,可以先在应用界面(如直播应用)输出三维模型的初始画面。随着后续步骤的执行(如步骤120-步骤150),使用三维关节点序驱动三维模型进行运动,使得三维模型执行与用户观众A动作一致的运动。观众用户A可以为主播用户配舞,使其他观众B观看。观众用户A也可以做与主播用户相同的动作,实现模仿主播用户的动作。
本公开实施例提供的三维模型驱动方法,获取用户视频流,用户视频流包括多个视频帧;根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;根据二维关节点的置信度对多个二维关节点序列进行平滑处理;将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。相对于目前无法实现将主播动作流畅,的迁移至三维模型,本申请实施例提供的三维模型驱动方法,能够在获取用户视频流后,根据视频流中的视频帧获取二维关节点序列,基于置信度对二维关节点序列进行平滑处理,并使用平滑处理后的二维关节点序列得到三维关节点序列,并使用三维关节点序列驱动三维模型,提高三维模型动作流畅度,实现将主播动作形成三维模型,并将主播的动作流畅的迁移到三维模型的方案,优化增强现实效果,提高三维模型驱动效率。
实施例二
在主播直播跳舞场景中,主播会使用各种特效,譬如分屏(屏幕中存在多个克隆的主播用户图像)、镜像(以屏幕纵轴线为对称线,显示两个互为镜像的图像)等特效。若将具有特效的图像输入至二维姿态估算模型,则无法准确识别出主播用户的二维姿态信息,导致最终三维模型的动画效果与主播用户的跳舞动作不一致。此外,借助人工智能(Artificial Intelligence,AI)进行人脸识别时,现有的人脸识别模型需要图像中存在人脸。但是当主播用户对镜头跳舞时无法识别人脸。若使用人体检测模型可以解决背面跳舞的问题,但是有时候只是画面存在多个人,主播并没有跳舞,这种情况下误判切分画面也无法较好的回归用户跳舞的动作。为了解决该问题,本申请实施例提供的一种三维模型驱动方法,作为上述实施例的进一步说明,图2为本申请实施例提供的一种三维模型驱动方法的流程图,包括:
步骤210、获取用户视频流,用户视频流包括多个视频帧,用户视频流包含有用户的运动画面。
步骤220、获取视频帧中用户对象数量。
步骤230、根据用户对象数量对视频帧进行分割,得到用户图像。
通过解析视频帧可得到视频中用户的数量,判断多个用户之间是否具有一定关联性,该关联性可以通过多个用户图像之间的相似度判断,例如当用户使用镜像或分屏时,互为镜像的两个用户图像相似度较高,分屏的多个用户图形内容一致。当多个用户之间具有一定关联性时,可以将其中一个用户图像输入到二维姿态估算模型。
示例性的,根据用户对象数量对视频帧进行分割,得到多个备选用户图像;判断多个备选用户图像的相似度;如果相似度大于预设相似度阈值,则将相似度较高的多个备选用户图像中的任意一个备选用户图像作为用户图像。
可以使用人体检测模型获得人物的个数,然后将其画面均等划分后,输入图像编码器。图像编码器可以使用MobileNet V1预训练的图像分类模型。通过该图像分类模型可以获得1024维编码后的向量,这个向量是分类神经网络输出预测值的前一层。随后使用欧几里得距离两两比对向量之间的相似度,如下公式所示,v1和v2分别表示两幅备选用户图像的1024维向量。
sim(v1,v2)表示v1和v2的相似度。如果相似度值大于等于预设相似度阈值,如0.8,则判断为主播使用了分屏或镜像特效,会均等切分将图像输入到后续的姿态估计模型中去。如果相似度值小于预设相似度阈值,则取消后续操作。
步骤240、根据用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列。
可选的,将用户图像输入至二维姿态估算模型;获取二维姿态估算模型输出的二维姿态信息。
二维姿态估算模型用于输出用户图像的二维姿态信息。二维姿态信息包括二维关节点组成的二维关节点序列,一个二维关节点序列标识一个图像帧中的用户姿态。
进一步的,在实施上述实施例的过程中法线,使用姿态估计模型HRNet不能准确预测关节点不在画面内的情况,且对背面跳舞的样本经常会出现左右关节点搞反的问题。为了解决该问题,本申请实施例中对二维姿态估算模型在训练阶段进行了改进。首先,对训练样本进行改进,收集跳舞直播场景下的标注图片作为新增样本,如两万张。具体的,在将用户图像输入至二维姿态估算模型之前,还包括:二维姿态估算模型的第一训练阶段,使用L2损失函数进行训练,训练至L2损失值收敛,第一训练阶段得到的第一阶段训练模型用于回归出关节点的热图;二维姿态估算模型的第二训练阶段,根据热图节点的平方误差和关节节点的可见误差确定目标损失函数;使用目标损失函数训练第一阶段训练模型,得到二维姿态估算模型。
将训练分为两个阶段,不同的阶段采用不同的损失函数对模型进行训练。在第一个阶段训练中,使用L2 loss损失,训练至L2 loss值收敛,该损失会回归出关节点的热图。在第二个阶段训练中,对损失函数进行改进。损失函数包括两部分,一部分为计算热图节点的平方误差和另一部分为计算关节节点的可见误差。二阶段训练时自定义的损失函数为L2+Focal Loss,具体如下述公式所示:
其中表示热图中节点的平方误差。计算平方误差能够更好的回归关节点的位置。第二部分用于计算关节点是否可见的误差,这里可见表示1,裁剪表示0,用pti表示第i个关节点模型预测是否可见的概率值,δ和γ表示调制系数,γ取值可以为0.25。
使用两个阶段训练得到的二维姿态估算模型的效果,相比于只是用一个阶段的模型效果,使用两个阶段训练得到的二维姿态估算模型准确率提升了将近10%,且召回率也有提升入表2所示:
表2
指标 一阶段训练模型 二阶段训练模型
(不)可见点准确率 0.848442 0.942278
不可见点精确率 0.658709 0.820572
可见点精确率 0.864664 0.950323
不可见点召回率 0.886130 0.907972
可见点召回率 0.795377 0.923387
进一步的,将高分辨率网络HRNet二维姿态估计模型中的提特征的卷积单元替换为轻量化网络MobileNet V2具备跳层的深度可分离卷积。
替换后,该网络的计算量从原架构的7GFLOPs下降到2.9GFLOPs,在GTX 1080Ti上平均耗时只有6ms,且在数据集上精度并无太大的损失,对比的表格如表1所示。
表1
模型 PCKh@0.5 PCKh@0.3 计算量 耗时
HRNet_MV2 92.53 90.31 2.9GFLOPs ~6ms
HRNet 92.7 90.55 3GFLOPs ~13ms
从表1可以看出,虽然计算量更大的模型PCKh值会高一些,但是在计算量减半后,其精度下降的不明显。因此,直接替换传统卷积为带跳层的深度可分离卷积是具备优势的。
步骤250、根据二维关节点的置信度对多个二维关节点序列进行平滑处理。
步骤260、将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列。
步骤270、将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
本申请实施例提供的三维模型驱动方法,能够解决直播场景中主播用户使用镜像、分屏等特效或者背对摄像头时人物动作识别不准确的问题,提高二维姿态估计的准确性。提供了二阶段的二维姿态估计模型的训练方案,提高二维姿态估计模型的准确率。
实施例三
图3为本申请实施例提供的一种三维模型驱动方法的流程图,作为上述实施例的进一步说明,包括:
步骤310、获取用户视频流,用户视频流包括多个视频帧。
步骤320、根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列。
步骤330、根据二维关节点的置信度对多个二维关节点序列进行平滑处理。
步骤340、将模拟的三维图像映射为预设维度的二维图像作为三维姿态模型的训练样本,预设维度包括摄像头正面、侧面或背面。
在训练三维姿态模型时,除了使用主播画面数据集之外,还录制训练数据。该训练数据为由职业舞者按照直播场景中主播的舞姿录制的视频。此外,分别训练两个三维姿态模型,一个为全身的seq2seq模型,另一个为半身的seq2seq模型。进而适配直播场景下,既有半身跳舞的,也有全身跳舞的舞者的情况,提高模型输出效率。
进一步的,训练时,为了让模型可以更好的适应直播场景中的数据,模拟摄像头正面,侧面和背面三个角度下对应的三维图像映射到二维图像的训练样本。原因在于直播场景中,主播通常会正面,侧面,背面对着摄像头跳舞。具体的,将三维图像映射到二维图像可通过下述公式计算,公式如下:
上述公式用于的旋转变换为绕Y轴旋转±90和180度,实现模拟摄像头正面,侧面和背面的映射。
步骤350、根据训练样本训练三维姿态模型。
进一步的,计算每个节点的消失概率,消失概率为节点不在画面内的概率;根据消失概率和训练样本训练三维姿态模型。
直播场景中,有些关节点会不在画面内,这种情况下会引起三维关节点输出结果不稳定的情况。为了避免这种情况,单独计算每一个节点在训练数据中的均值和方差,然后对所有数据做归一化,得到节点的消失概率。根据小时概率,在训练过程中每次输入会产生一个随机的布尔值。当为True时,该节点的输入值就会被替换成(0,0),表示该节点是一个不在画面内的节点。如果为False,则不更改。进而模拟当二维关节点不在画面时,模型可以训练出猜测出一个合理的三维关节点位置。
为了验证该训练方法的有效性,分别训练了使用上述实施例提供的训练方式得到的模型以及未使用该策略训练得到的模型进行输出比较,评价指标为预测的三维关节点与预测点之间的平均毫米误差,缺失点和未缺失点平均毫米误差,结果如表3所示。
表3
根据表3可知,随机缺失误差在使用本申请实施例提供的训练方法后,其精度提高了15.06%。虽然非缺失点误差的精度有所降低,但是在实际的应用中这点差异影响并不是很大,且在实际的应用中处理异常值变得非常的简单,只需要二维序列平滑后的点平均置信度低于0.5的坐标值直接替换为(0,0)即可。
步骤360、将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列。
步骤370、将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
本申请实施例提供的三维模型驱动方法,能够更加准确的预测出节点不在画面内的情况,提高三维模型驱动的准确性。
实施例四
图4为本申请实施例提供的一种三维模型驱动方法的流程图,作为上述实施例的进一步说明,包括:
步骤410、获取用户视频流,用户视频流包括多个视频帧。
步骤420、根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列。
步骤430、根据二维关节点的置信度对多个二维关节点序列进行平滑处理。
步骤440、若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据预设数量的视频帧中存在的可见关节点确定肢体向量。
有些主播跳舞时,有时候会太过于投入,导致大部分肢体都不在画面内。在这种情况下,模型是无法预测太多缺失的点,为了缓解这种场景下三维人物舞姿驱动起来奇怪的问题,录制一套动作库。具体的,当二维姿态估计模型检测到连续预设数量(如48帧),摄像头内可见的关节点均小于预设关节点数量阈值(如6)个时,根据预设数量(如48帧)帧里出现的肢体点,先计算出肢体向量predj,然后在动画库匹配出2秒48帧最相似的动画发送到客户端,用于客户端渲染三维卡通人物的动画。匹配的算法如下所示:
第一个公式中,i代表动画库中的第几帧,取值为动画库的长度m-n,n表示需要匹配动画库中连续多少帧的动画,这里取值为48,animj表示动画库中的第j帧,而predj-i表示预测时第j-i(取值为0~48),表示为预测出来的肢体的第几帧的向量,candidatei表示预测的姿态与动画库间从animi到animi+n的动画之间的相似度,取值为0~1。随后,我们则取相似度最大的候选下标后延的48帧动作数据发回到客户端上。
步骤450、从动画库中匹配与肢体向量匹配的匹配动画,根据匹配动画渲染三维模型。
步骤460、将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列。
步骤470、将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
本申请实施例提供的三维模型驱动方法,能够在主播用户移动到画面外后,通过比对动画库与主播用户的肢体向量,匹配得到合适的动画用于渲染三维模型,提高三维模型驱动的准确性。
实施例五
图5为本申请实施例提供的一种三维模型驱动方法的流程图,作为上述实施例的进一步说明,包括:
步骤510、获取用户视频流,用户视频流包括多个视频帧。
步骤520、根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列。
步骤530、根据二维关节点的置信度对多个二维关节点序列进行平滑处理。
步骤540、将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列。
步骤550、获取每个肢体的轴旋转值。
步骤560、若肢体为臀部,则使用YXZ顺序的欧拉角表示臀部旋转;将欧拉角表示转换为臀部的轴旋转值。
步骤570、若肢体不是臀部,则获取肢体的轴旋转值。
当匹配到一个三维模型的动画时,需要从当前动画切换到一个新动画,譬如虚拟卡通人物形象从背面转换到正面时,驱动的方式是通过控制三维人物的肢体的旋转来实现的。这时如果调用现有渲染引擎的API,则三维卡通人物形象会出现身体翘起来的问题,观感上非常奇怪,且肢体动画之间并没有过渡动画,是直接闪变过去的。导致过渡时身体翘起来的主要原因是渲染引擎在计算臀部过渡动画时,是按照XYZ顺序的欧拉角旋转方式去插值的。示例性的,三维坐标空间存在三个旋转轴,任何物体的旋转都可以分解为绕这三个轴旋转来表示,以不同的顺序旋转虽然最终可以到达同一个三维坐标的位置,但是其过渡的动画是不一样的。而臀部应该以YXZ顺序来轴旋转的方式来计算其过渡时的欧拉角。另外,在实施过程中发现不同的渲染引擎中,三维坐标系会有差异,且自带的过渡算法实现的旋转顺序也存在差异。譬如当iOS端或android端等客户端进行三维模型渲染时,客户端自带的引擎的过渡实现是不一样的。
为了解决上述问题,使用axis-angle轴旋转的表示方法,旋转轴为三维坐标空间中的单位向量(x,y,z),角度为肢体绕该向量旋转的角度。
首先将所有的肢体的旋转使用轴旋转的方式来表示。可以使用函数EulerToAA表示。然后使用下述公式计算动画过渡时除去臀部以外的每帧肢体所对应的轴旋转值。
axisi=(1δ)·axisstart+δ·axisend
臀部的过渡旋转计算是独立出来,先将其转换成YXZ顺序的欧拉角,随后再转换成轴旋转的方式,最终保证了其旋转以Y轴优先,计算公式如下所示。
YXZi=(1δ)·YXZstart+δ·YXZend
hip_axisi=EulerToAA(YXZi)
为了使过渡动画更加的自然,肢体过渡旋转值的计算引入了一个旋转系数δ,类似衰减因子,取值为0~1,定义当前的过渡旋转值受变换前旋转值的影响有多大,n表示需要过渡多少帧,i表示过渡的第几帧,start下标表示开始过渡时的旋转值,end下标表示最终停止过渡时的旋转值。
在上述过度算法中,动画先会从当前动画过渡到一个中性的动画,然后再从中性的动画过渡到最终的动画上,这种过渡方式虽然会让人感觉是在跳一段接一段的动画,但是从感官上来看更加自然。轴旋转数据为传递给客户端的数据,客户端接收到数据后,读取每个时间点对应的轴旋转数据,并将其映射到对应的三维卡通人物形象上,从而驱动其形象的运动。
步骤580、根据轴旋转值驱动三维模型。
本申请实施例提供的三维模型驱动方法,能够解决包含臀部的三维模型在旋转误差的问题,通过过度画面的方式提高三维模型驱动的流畅性。
上述实施例提供的三维模型驱动方法具有下述效果:1、实现多进程的调度和线程安全的进程间通讯方法,方案具备迁移性。例如将方案流程应用到人脸三维模型或动物三维模型等。2、为了让动画帧率与拉流帧率对齐和一致,实现了自定义的采样算法,使用了动态调整容忍值的策略保证客户端帧率与服务器帧率相同。3、使用人脸检测以及图像隐向量相似的方法对不同的特效进行判断,提高图像识别准确性。4、当主播用户的部分肢体在跳舞时不在画面内时,通过优化后的损失函数来训练二维姿态估计模型,使其识别肢体是否在画面里的精确度大大提升。5、针对人体二维姿态估计模型出来结果抖动造成后续模型处理出来效果生硬的问题,使用了基于置信度的平滑算法提高流畅性。6、基于直播跳舞场景的数据训练的人体三维姿态估计的深度学习模型,较精确的回归出跳舞主播每个肢体在三维空间中的位置。7、针对深度学习无法识别的跳舞动作,会在已有的动画库里面寻找,通过比对肢体向量进行动画匹配。8、匹配出来的动画需要和上一段动画之间进行衔接,通过轴旋转和欧拉角结合的过渡算法进行过度,提高三维动画的流畅性。
实施例六
图6为本公开实施例提供的三维模型驱动方法的流程图,该方法应用于终端,该终端用于为观众拉取和展示直播画面,同时根据服务器发送的三维关节点序列驱动直播画面中的三维模型。终端可以为智能手机、平板电脑、个人电脑等,该方法包括:
步骤610、响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧。
观众用户进入应用界面观看直播时,可以触发增强现实AR模型添加指令以便在直播画面中添加AR模型。通过终端摄像头获取图像帧,将直播画面加载到图像帧的上层。AR模型可以包括主播模型等。
步骤620、在图像帧中加载三维模型。
在图像帧中的初始位置加载三维模型。三维模型的种类可以由观众用户选择,三维模型的种类包括卡通人物模型或卡通动物模型等。
步骤630、根据服务器发送的三维关节点序列驱动三维模型。
在从服务器拉流主播视频流时,拉流得到的主播视频流中可以包括三维关节点序列。三维关节点序列可以通过上述实施例所示的服务器中执行的三维模型驱动方案得到。在接收到服务器发送的三维关节点序列后,使用三维关节点序列驱动三维模型。
进一步的,在步骤610通过终端的摄像头获取图像帧之后,还包括:
步骤640、获取用户选择的显示屏AR模型。
在增强现实场景中,可以在终端屏幕中显示显示屏AR模型,在显示屏AR模型中显示拉取的主播视频流。
示例性的,响应于用户触发的AR显示指令,启动摄像头,在屏幕中输出摄像头获取的图像;在图像上层覆盖蒙板,蒙板包括供观众用户选择的多个预设显示屏AR模型;响应于用户在多个显示屏AR模型中选择操作,确定用户选择的显示屏AR模型。
用户可以在直播界面中,选择进行增强现实,此时触发AR显示指令。启动摄像头,在屏幕中输出摄像头获取的图像。在图像上层覆盖蒙板,可以输出多个蒙板,每个蒙板包含有一个预设显示屏AR模型。或者输出一个蒙板,蒙板中包含多个预设显示屏AR模型。预设显示屏AR模型可以包括:“带着主播去旅行”模型、“弹幕电视机”模型或“场景小剧场”模型。
步骤650、根据显示屏AR模型显示AR界面。
步骤660、在显示屏AR模型中预设区域显示拉流得到的主播视频流。
主播视频流即直播流量。不同的显示屏AR模型具有不同的模型结构,在不同的模型结构中设有用于显示主播视频流的部件。
示例性的,“带着主播去旅行”模型用于增加一个固定有显示屏的自拍杆模型,在显示屏中输出主播视频流。“弹幕电视机”模型用于在图像帧中检测一个平面区域,在该平面区域中加载一个电视机模型,在电视机模型中输出主播视频流,同时可以在电视机模型中或电视机模型外部显示弹幕信息。“场景小剧场”模型用于在图像帧上增加小剧场场景模型,小剧场场景模型具有一定透明度,同时小剧场场景模型中包含一个屏幕区域,屏幕区域中输出主播视频流。
在一个使用场景中,在直播应用中,当用户进入某个主播的直播房间后,可以观看主播节目。直播房间中包括聊天、主播、排行、贵宾等栏目,还包括直播画面播放区域。用户可以将直播画面播放区域调节为全屏显示,可以通过将智能手机转为横向显示,或者点击直播画面播放区域中提供的全屏显示按钮等方式实现。
在进入全屏显示后,用户可以通过选项按钮,触发扩展菜单的展示。该扩展菜单包括“AR直播实验室”的进入选项、用户控制是否后台播放的切换按钮、是否直播画面缩放的切换按钮、是否定时关机的切换按钮、亮度调节滑轨及滑块。此外,扩展菜单中还可包括电视投屏按钮、省电模式按钮以及帮助反馈按钮等。
当用户点击“AR直播实验室”的进入选项后(触发AR显示指令),在屏幕中显示摄像头获取的图像帧,同时在图像帧中增加上三个蒙板,在蒙板中分别显示三个观众用户可选择的显示屏AR模型。如“带着主播去旅行”模型、“弹幕电视机”模型或“场景小剧场”模型。根据观众用户选择的显示屏AR模型,输出相应的AR模型。例如,用户选择“弹幕电视机”模型后,在屏幕中显示电视AR模型,并在电视AR模型的屏幕中输出主播视频流。通过浮动按钮提供电视模型、主播模型和场景模型的选择选项。其中,主播模型可以包括卡通人物模型、卡通动物模型等。用户可以选择卡通人物模型。终端根据服务器发送的三维关节点序列驱动该卡通人物模型。在不同的使用方式中,卡通人物模型可以与主播进行相同动作(模仿主播用户的舞姿),卡通人物模型还可以与当前观众用户的动作相同(为主播用户配舞),卡通人物模型还可以与直播间的其他观众用户的动作相同(为主播用户配舞)。对于后两种情况,在为主播用户配舞时,选择的主播模型也可以成为配舞模型等。
本公开实施例提供的三维模型驱动方法,能够在终端为观众用户提供直播界面,在直播界面中观众用户可以设置显示屏AR模型、主播模型等,显示屏AR模型用于实现基于摄像头获取的图像实现增强现实的直播画面的播放,主播模型用于根据服务器发送的三维关节点序列进行动作,以模仿人物的舞蹈动作行为等。实现为观众用户展示更加生动的AR模型,提高观赏效果。
实施例六
图7为本公开实施例提供的三维模型驱动装置的结构示意图,该装置应用于服务器,包括:视频流获取模块710、二维姿态估算模块720、平滑处理模块730、三维姿态估算模块740和模型驱动模块750。其中:
视频流获取模块710,用于获取用户视频流,用户视频流包括多个视频帧;
二维姿态估算模块720,用于根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;
平滑处理模块730,用于根据二维关节点的置信度对多个二维关节点序列进行平滑处理;
三维姿态估算模块740,用于将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
模型驱动模块750,用于将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随所述用户做匹配的运动。
进一步的,视频流获取模块710用于:
根据三维动画的帧率调整用户视频流的帧率,使用户视频流的帧率与三维动画的帧率一致。
进一步的,二维姿态估算模块720用于:
获取视频帧中用户对象数量;
根据用户对象数量对视频帧进行分割,得到用户图像;
根据用户图像估算二维姿态信息。
进一步的,二维姿态估算模块720用于:
根据用户对象数量对视频帧进行分割,得到多个备选用户图像;
判断多个备选用户图像的相似度;
如果相似度大于预设相似度阈值,则将相似度较高的多个备选用户图像中的任意一个备选用户图像作为用户图像。
进一步的,二维姿态估算模块720用于:
将用户图像输入至二维姿态估算模型;
获取二维姿态估算模型输出的二维姿态信息。
进一步的,还包括二维姿态估算模型训练模块。二维姿态估算模型训练模块用于:
二维姿态估算模型的第一训练阶段,使用L2损失函数进行训练,训练至L2损失值收敛,第一训练阶段得到的第一阶段训练模型用于回归出关节点的热图;
二维姿态估算模型的第二训练阶段,根据热图节点的平方误差和关节节点的可见误差确定目标损失函数;使用目标损失函数训练第一阶段训练模型,得到二维姿态估算模型。
进一步的,二维姿态估算模型为高分辨率网络二维姿态估计模型;二维姿态估算模型训练模块用于:
将高分辨率网络二维姿态估计模型中的提特征的卷积单元替换为轻量化网络MobileNet V2具备跳层的深度可分离卷积。
进一步的,还包括三维姿态模型训练模块。三维姿态模型训练模块用于:
在将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列之前,还包括:
将模拟的三维图像映射为预设维度的二维图像作为三维姿态模型的训练样本,预设维度包括摄像头正面、侧面或背面;
根据训练样本训练三维姿态模型。
进一步的,三维姿态模型训练模块用于:
计算每个节点的消失概率,消失概率为节点不在画面内的概率;
根据消失概率和训练样本训练三维姿态模型。
进一步的,模型驱动模块750用于:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与肢体向量匹配的匹配动画,根据匹配动画渲染三维模型。
进一步的,模型驱动模块750用于:
获取每个肢体的轴旋转值;
若肢体为臀部,则使用YXZ顺序的欧拉角表示臀部旋转;将欧拉角表示转换为臀部的轴旋转值;
若肢体不是臀部,则获取肢体的轴旋转值;
根据轴旋转值驱动三维模型。
本公开实施例提供的三维模型驱动装置,视频流获取模块710获取用户视频流,用户视频流包括多个视频帧;二维姿态估算模块720根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;平滑处理模块730根据二维关节点的置信度对多个二维关节点序列进行平滑处理;三维姿态估算模块740将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;模型驱动模块750将所述三维关节点序列发送至终端,以便所述终端根据所述三维关节点序列驱动三维模型,使所述三维模型随所述用户做匹配的运动。相对于目前无法实现将主播动作流畅,的迁移至三维模型,本申请实施例提供的三维模型驱动装置,能够在获取用户视频流后,根据视频流中的视频帧获取二维关节点序列,基于置信度对二维关节点序列进行平滑处理,并使用平滑处理后的二维关节点序列得到三维关节点序列,并使用三维关节点序列驱动三维模型,提高三维模型动作流畅度,实现将主播动作形成三维模型,并将主播的动作流畅的迁移到三维模型的方案,优化增强现实效果,提高三维模型驱动效率。
实施例七
图8为本公开实施例提供的三维模型驱动装置的结构示意图,该装置应用于终端,包括:图像帧获取模块810、三维模型加载模块820和三维模型驱动模块830,其中:
图像帧获取模块810,用于响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧;
三维模型加载模块820,用于在图像帧中加载三维模型;
三维模型驱动模块830,用于根据服务器发送的三维关节点序列驱动三维模型。
进一步的,还包括显示屏增强现实模块,用于:
获取用户选择的显示屏AR模型;
根据显示屏AR模型显示AR界面;
在显示屏AR模型中预设区域显示拉流得到的主播视频流。
进一步的,显示屏增强现实模块用于:
响应于用户触发的AR显示指令,启动摄像头,在屏幕中输出摄像头获取的图像;
在图像上层覆盖蒙板,蒙板包括供观众用户选择的多个预设显示屏AR模型;
响应于用户在多个显示屏AR模型中选择操作,确定用户选择的显示屏AR模型。
本公开实施例提供的三维模型驱动装置,能够在终端为观众用户提供直播界面,在直播界面中观众用户可以设置显示屏AR模型、主播模型等,显示屏AR模型用于实现基于摄像头获取的图像实现增强现实的直播画面的播放,主播模型用于根据服务器发送的三维关节点序列进行动作,以模仿人物的舞蹈动作行为等。实现为观众用户展示更加生动的AR模型,提高观赏效果。
上述装置可执行本公开前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本公开前述所有实施例所提供的方法。值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
图9是本公开实施例提供的一种电子设备的结构示意图,如图9所示,该计算机设备包括处理器90、存储器91、输入装置92和输出装置93;计算机设备中处理器90的数量可以是一个或多个,图9中以一个处理器90为例;计算机设备中的处理器90、存储器91、输入装置92和输出装置93可以通过总线或其他方式连接,图9中以通过总线连接为例。
存储器91作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的三维模型驱动方法对应的程序指令/模块。处理器90通过运行存储在存储器91中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的三维模型驱动方法。若电子设备作为服务器实施,该方法包括:
获取用户视频流,用户视频流包括多个视频帧;
根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;
根据二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随所述用户做匹配的运动。
进一步的,获取用户视频流,包括:
根据三维动画的帧率调整用户视频流的帧率,使用户视频流的帧率与三维动画的帧率一致。
进一步的,根据视频帧中的用户图像估算二维姿态信息,包括:
获取视频帧中用户对象数量;
根据用户对象数量对视频帧进行分割,得到用户图像;
根据用户图像估算二维姿态信息。
进一步的,根据用户对象数量对视频帧进行分割,得到用户图像,包括:
根据用户对象数量对视频帧进行分割,得到多个备选用户图像;
判断多个备选用户图像的相似度;
如果相似度大于预设相似度阈值,则将相似度较高的多个备选用户图像中的任意一个备选用户图像作为用户图像。
进一步的,根据用户图像估算二维姿态信息,包括:
将用户图像输入至二维姿态估算模型;
获取二维姿态估算模型输出的二维姿态信息。
进一步的,在将用户图像输入至二维姿态估算模型之前,还包括:
二维姿态估算模型的第一训练阶段,使用L2损失函数进行训练,训练至L2损失值收敛,第一训练阶段得到的第一阶段训练模型用于回归出关节点的热图;
二维姿态估算模型的第二训练阶段,根据热图节点的平方误差和关节节点的可见误差确定目标损失函数;使用目标损失函数训练第一阶段训练模型,得到二维姿态估算模型。
进一步的,二维姿态估算模型为高分辨率网络二维姿态估计模型;
将高分辨率网络二维姿态估计模型中的提特征的卷积单元替换为轻量化网络MobileNet V2具备跳层的深度可分离卷积。
进一步的,在将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列之前,还包括:
将模拟的三维图像映射为预设维度的二维图像作为三维姿态模型的训练样本,预设维度包括摄像头正面、侧面或背面;
根据训练样本训练三维姿态模型。
进一步的,根据训练样本训练三维姿态模型,包括:
计算每个节点的消失概率,消失概率为节点不在画面内的概率;
根据消失概率和训练样本训练三维姿态模型。
进一步的,在将所述三维关节点序列发送至终端之前,还包括:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与肢体向量匹配的匹配动画,根据匹配动画渲染三维模型。
进一步的,在将所述三维关节点序列发送至终端之前,还包括:
获取每个肢体的轴旋转值;
若肢体为臀部,则使用YXZ顺序的欧拉角表示臀部旋转;将欧拉角表示转换为臀部的轴旋转值;
若肢体不是臀部,则获取肢体的轴旋转值;
根据轴旋转值驱动三维模型。
若电子设备作为终端实施,该方法包括:
响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧;
在图像帧中加载三维模型;
根据服务器发送的三维关节点序列驱动三维模型。
进一步的,在通过终端的摄像头获取图像帧之后,还包括:
获取用户选择的显示屏AR模型;
根据显示屏AR模型显示AR界面;
在显示屏AR模型中预设区域显示拉流得到的主播视频流。
进一步的,获取用户选择的显示屏AR模型,包括:
响应于用户触发的AR显示指令,启动摄像头,在屏幕中输出摄像头获取的图像;
在图像上层覆盖蒙板,蒙板包括供观众用户选择的多个预设显示屏AR模型;
响应于用户在多个显示屏AR模型中选择操作,确定用户选择的显示屏AR模型。
存储器91可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器91可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器91可进一步包括相对于处理器90远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置92可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置93可包括显示屏等显示设备。
本公开实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种三维模型驱动方法。若三维模型驱动方法应用于服务器,该方法包括:
获取用户视频流,用户视频流包括多个视频帧;
根据视频帧中的用户图像估算二维姿态信息,二维姿态信息包括由多个二维关节点组成的二维关节点序列;
根据二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
将三维关节点序列发送至终端,以便终端根据三维关节点序列驱动三维模型,使三维模型随用户做匹配的运动。
进一步的,获取用户视频流,包括:
根据三维动画的帧率调整用户视频流的帧率,使用户视频流的帧率与三维动画的帧率一致。
进一步的,根据视频帧中的用户图像估算二维姿态信息,包括:
获取视频帧中用户对象数量;
根据用户对象数量对视频帧进行分割,得到用户图像;
根据用户图像估算二维姿态信息。
进一步的,根据用户对象数量对视频帧进行分割,得到用户图像,包括:
根据用户对象数量对视频帧进行分割,得到多个备选用户图像;
判断多个备选用户图像的相似度;
如果相似度大于预设相似度阈值,则将相似度较高的多个备选用户图像中的任意一个备选用户图像作为用户图像。
进一步的,根据用户图像估算二维姿态信息,包括:
将用户图像输入至二维姿态估算模型;
获取二维姿态估算模型输出的二维姿态信息。
进一步的,在将用户图像输入至二维姿态估算模型之前,还包括:
二维姿态估算模型的第一训练阶段,使用L2损失函数进行训练,训练至L2损失值收敛,第一训练阶段得到的第一阶段训练模型用于回归出关节点的热图;
二维姿态估算模型的第二训练阶段,根据热图节点的平方误差和关节节点的可见误差确定目标损失函数;使用目标损失函数训练第一阶段训练模型,得到二维姿态估算模型。
进一步的,二维姿态估算模型为高分辨率网络二维姿态估计模型;
将高分辨率网络二维姿态估计模型中的提特征的卷积单元替换为轻量化网络MobileNet V2具备跳层的深度可分离卷积。
进一步的,在将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列之前,还包括:
将模拟的三维图像映射为预设维度的二维图像作为三维姿态模型的训练样本,预设维度包括摄像头正面、侧面或背面;
根据训练样本训练三维姿态模型。
进一步的,根据训练样本训练三维姿态模型,包括:
计算每个节点的消失概率,消失概率为节点不在画面内的概率;
根据消失概率和训练样本训练三维姿态模型。
进一步的,在将所述三维关节点序列发送至终端之前,还包括:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与肢体向量匹配的匹配动画,根据匹配动画渲染三维模型。
进一步的,在将所述三维关节点序列发送至终端之前,还包括:
获取每个肢体的轴旋转值;
若肢体为臀部,则使用YXZ顺序的欧拉角表示臀部旋转;将欧拉角表示转换为臀部的轴旋转值;
若肢体不是臀部,则获取肢体的轴旋转值;
根据轴旋转值驱动三维模型。
若三维模型驱动方法应用于终端,该方法包括:
响应于观众用户选择的增强现实AR模型添加指令,通过终端的摄像头获取图像帧;
在图像帧中加载三维模型;
根据服务器发送的三维关节点序列驱动三维模型。
进一步的,在通过终端的摄像头获取图像帧之后,还包括:
获取用户选择的显示屏AR模型;
根据显示屏AR模型显示AR界面;
在显示屏AR模型中预设区域显示拉流得到的主播视频流。
进一步的,获取用户选择的显示屏AR模型,包括:
响应于用户触发的AR显示指令,启动摄像头,在屏幕中输出摄像头获取的图像;
在图像上层覆盖蒙板,蒙板包括供观众用户选择的多个预设显示屏AR模型;
响应于用户在多个显示屏AR模型中选择操作,确定用户选择的显示屏AR模型。
当然,本公开实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本公开任意实施例所提供的三维模型驱动方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例的方法。
注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。

Claims (16)

1.一种三维模型驱动方法,其特征在于,应用于终端,包括:
响应于观众用户选择的增强现实AR模型添加指令,通过所述终端的摄像头获取图像帧;
在所述图像帧中加载三维模型;
根据服务器发送的三维关节点序列驱动所述三维模型;
所述三维关节点序列通过如下方式得到:
获取用户视频流,所述用户视频流包括多个视频帧,所述用户视频流包含有用户的运动画面;
根据所述视频帧中的用户图像估算二维姿态信息,所述二维姿态信息包括由多个二维关节点组成的二维关节点序列,其中,一个二维关节点序列标识一个图像帧中的用户姿态;
根据所述二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
所述获取用户视频流,包括:
根据三维动画的帧率调整所述用户视频流的帧率,使所述用户视频流的帧率与所述三维动画的帧率一致;
在将所述三维关节点序列发送至终端之前,还包括:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据所述预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与所述肢体向量匹配的匹配动画,根据所述匹配动画渲染三维模型。
2.根据权利要求1所述的方法,其特征在于,在通过所述终端的摄像头获取图像帧之后,还包括:
获取用户选择的显示屏AR模型;
根据显示屏AR模型显示AR界面;
在显示屏AR模型中预设区域显示拉流得到的主播视频流。
3.根据权利要求2所述的方法,其特征在于,所述获取用户选择的显示屏AR模型,包括:
响应于用户触发的AR显示指令,启动摄像头,在屏幕中输出摄像头获取的图像;
在所述图像上层覆盖蒙板,所述蒙板包括供所述观众用户选择的多个预设显示屏AR模型;
响应于用户在多个显示屏AR模型中选择操作,确定用户选择的显示屏AR模型。
4.一种三维模型驱动方法,其特征在于,应用于服务器,包括:
获取用户视频流,所述用户视频流包括多个视频帧,所述用户视频流包含有用户的运动画面;
根据所述视频帧中的用户图像估算二维姿态信息,所述二维姿态信息包括由多个二维关节点组成的二维关节点序列,其中,一个二维关节点序列标识一个图像帧中的用户姿态;
根据所述二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
将所述三维关节点序列发送至终端,以便所述终端根据所述三维关节点序列驱动三维模型,使所述三维模型随所述用户做匹配的运动;
所述获取用户视频流,包括:
根据三维动画的帧率调整所述用户视频流的帧率,使所述用户视频流的帧率与所述三维动画的帧率一致;
在将所述三维关节点序列发送至终端之前,还包括:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据所述预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与所述肢体向量匹配的匹配动画,根据所述匹配动画渲染三维模型。
5.根据权利要求4所述的方法,其特征在于,根据所述视频帧中的用户图像估算二维姿态信息,包括:
获取所述视频帧中用户对象数量;
根据所述用户对象数量对所述视频帧进行分割,得到用户图像;
根据所述用户图像估算二维姿态信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述用户对象数量对所述视频帧进行分割,得到用户图像,包括:
根据所述用户对象数量对所述视频帧进行分割,得到多个备选用户图像;
判断所述多个备选用户图像的相似度;
如果相似度大于预设相似度阈值,则将相似度较高的多个备选用户图像中的任意一个备选用户图像作为用户图像。
7.根据权利要求5或6所述的方法,其特征在于,根据所述用户图像估算二维姿态信息,包括:
将所述用户图像输入至二维姿态估算模型;
获取所述二维姿态估算模型输出的二维姿态信息。
8.根据权利要求7所述的方法,其特征在于,在将所述用户图像输入至二维姿态估算模型之前,还包括:
所述二维姿态估算模型的第一训练阶段,使用L2损失函数进行训练,训练至L2损失值收敛,第一训练阶段得到的第一阶段训练模型用于回归出关节点的热图;
所述二维姿态估算模型的第二训练阶段,根据热图节点的平方误差和关节节点的可见误差确定目标损失函数;使用所述目标损失函数训练所述第一阶段训练模型,得到二维姿态估算模型。
9.根据权利要求8所述的方法,其特征在于,所述二维姿态估算模型为高分辨率网络二维姿态估计模型;
将所述高分辨率网络二维姿态估计模型中的提取特征的卷积单元替换为轻量化网络MobileNet V2具备跳层的深度可分离卷积。
10.根据权利要求4所述的方法,其特征在于,在将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列之前,还包括:
将模拟的三维图像映射为预设维度的二维图像作为三维姿态模型的训练样本,所述预设维度包括摄像头正面、侧面或背面;
根据所述训练样本训练三维姿态模型。
11.根据权利要求10所述的方法,其特征在于,所述根据所述训练样本训练三维姿态模型,包括:
计算每个节点的消失概率,所述消失概率为节点不在画面内的概率;
根据所述消失概率和所述训练样本训练三维姿态模型。
12.根据权利要求4所述的方法,其特征在于,在将所述三维关节点序列发送至终端之前,还包括:
获取每个肢体的轴旋转值;
若肢体为臀部,则使用YXZ顺序的欧拉角表示臀部旋转;将所述欧拉角表示转换为臀部的轴旋转值;
若肢体不是臀部,则获取所述肢体的轴旋转值,以便所述终端根据所述轴旋转值驱动三维模型。
13.一种三维模型驱动装置,其特征在于,应用于终端,包括:
图像帧获取模块,用于响应于观众用户选择的增强现实AR模型添加指令,通过所述终端的摄像头获取图像帧;
三维模型加载模块,用于在所述图像帧中加载三维模型;
三维模型驱动模块,用于根据服务器发送的三维关节点序列驱动所述三维模型;
所述三维关节点序列通过如下方式得到:
获取用户视频流,所述用户视频流包括多个视频帧,所述用户视频流包含有用户的运动画面;
根据所述视频帧中的用户图像估算二维姿态信息,所述二维姿态信息包括由多个二维关节点组成的二维关节点序列,其中,一个二维关节点序列标识一个图像帧中的用户姿态;
根据所述二维关节点的置信度对多个二维关节点序列进行平滑处理;
将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
所述获取用户视频流,包括:
根据三维动画的帧率调整所述用户视频流的帧率,使所述用户视频流的帧率与所述三维动画的帧率一致;
在将所述三维关节点序列发送至终端之前,还包括:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据所述预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与所述肢体向量匹配的匹配动画,根据所述匹配动画渲染三维模型。
14.一种三维模型驱动装置,其特征在于,应用于服务器,包括:
视频流获取模块,用于获取用户视频流,所述用户视频流包括多个视频帧,所述用户视频流包含有用户的运动画面;
二维姿态估算模块,用于根据所述视频帧中的用户图像估算二维姿态信息,所述二维姿态信息包括由多个二维关节点组成的二维关节点序列,其中,一个二维关节点序列标识一个图像帧中的用户姿态;
平滑处理模块,用于根据所述二维关节点的置信度对多个二维关节点序列进行平滑处理;
三维姿态估算模块,用于将平滑处理后的二维关节点序列输入至三维姿态模型,得到三维关节点序列;
模型驱动模块,用于将所述三维关节点序列发送至终端,以便所述终端根据所述三维关节点序列驱动三维模型,使所述三维模型随所述用户做匹配的运动;
所述视频流获取模块,还用于:
根据三维动画的帧率调整所述用户视频流的帧率,使所述用户视频流的帧率与所述三维动画的帧率一致;
所述模型驱动模块,还用于:
若连续预设数量的视频帧中的可见关节点数量小于预设关节点数量阈值,则根据所述预设数量的视频帧中存在的可见关节点确定肢体向量;
从动画库中匹配与所述肢体向量匹配的匹配动画,根据所述匹配动画渲染三维模型。
15.一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-12中任一所述的三维模型驱动方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一所述的三维模型驱动方法。
CN202010300284.1A 2020-04-16 2020-04-16 三维模型驱动方法、装置、电子设备及存储介质 Active CN111540055B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010300284.1A CN111540055B (zh) 2020-04-16 2020-04-16 三维模型驱动方法、装置、电子设备及存储介质
PCT/CN2021/087791 WO2021209042A1 (zh) 2020-04-16 2021-04-16 三维模型驱动方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010300284.1A CN111540055B (zh) 2020-04-16 2020-04-16 三维模型驱动方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111540055A CN111540055A (zh) 2020-08-14
CN111540055B true CN111540055B (zh) 2024-03-08

Family

ID=71976771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010300284.1A Active CN111540055B (zh) 2020-04-16 2020-04-16 三维模型驱动方法、装置、电子设备及存储介质

Country Status (2)

Country Link
CN (1) CN111540055B (zh)
WO (1) WO2021209042A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111462209B (zh) * 2020-03-31 2022-05-24 北京市商汤科技开发有限公司 动作迁移方法、装置、设备及存储介质
CN111540055B (zh) * 2020-04-16 2024-03-08 广州虎牙科技有限公司 三维模型驱动方法、装置、电子设备及存储介质
CN112423014A (zh) * 2020-11-19 2021-02-26 上海电气集团股份有限公司 一种远程评审方法及装置
CN115278041B (zh) * 2021-04-29 2024-02-27 北京字跳网络技术有限公司 图像处理方法、装置、电子设备以及可读存储介质
CN113515193B (zh) * 2021-05-17 2023-10-27 聚好看科技股份有限公司 一种模型数据传输方法及装置
CN113422977B (zh) * 2021-07-07 2023-03-14 上海商汤智能科技有限公司 直播方法、装置、计算机设备以及存储介质
CN114359328B (zh) * 2021-12-28 2022-08-12 山东省人工智能研究院 一种利用单深度相机和人体约束的运动参数测量方法
CN114489890A (zh) * 2022-01-11 2022-05-13 广州繁星互娱信息科技有限公司 分屏显示方法和装置、存储介质及电子装置
CN114742984B (zh) * 2022-04-14 2023-04-21 北京数字冰雹信息技术有限公司 一种动态三维模型的编辑方法及装置
CN116309998A (zh) * 2023-03-15 2023-06-23 杭州若夕企业管理有限公司 一种图像处理系统、方法及介质
CN116310012B (zh) * 2023-05-25 2023-07-25 成都索贝数码科技股份有限公司 一种基于视频的三维数字人姿态驱动方法、设备及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109821239A (zh) * 2019-02-20 2019-05-31 网易(杭州)网络有限公司 体感游戏的实现方法、装置、设备及存储介质
CN110109535A (zh) * 2019-03-18 2019-08-09 国网浙江省电力有限公司信息通信分公司 增强现实生成方法及装置
CN110139115A (zh) * 2019-04-30 2019-08-16 广州虎牙信息科技有限公司 基于关键点的虚拟形象姿态控制方法、装置及电子设备
CN110971930A (zh) * 2019-12-19 2020-04-07 广州酷狗计算机科技有限公司 虚拟形象直播的方法、装置、终端及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229239B (zh) * 2016-12-09 2020-07-10 武汉斗鱼网络科技有限公司 一种图像处理的方法及装置
US10755477B2 (en) * 2018-10-23 2020-08-25 Hangzhou Qu Wei Technology Co., Ltd. Real-time face 3D reconstruction system and method on mobile device
CN110427110B (zh) * 2019-08-01 2023-04-18 广州方硅信息技术有限公司 一种直播方法、装置以及直播服务器
CN110557625A (zh) * 2019-09-17 2019-12-10 北京达佳互联信息技术有限公司 虚拟形象直播方法、终端、计算机设备及存储介质
CN111010586B (zh) * 2019-12-19 2021-03-19 腾讯科技(深圳)有限公司 基于人工智能的直播方法、装置、设备及存储介质
CN111540055B (zh) * 2020-04-16 2024-03-08 广州虎牙科技有限公司 三维模型驱动方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109821239A (zh) * 2019-02-20 2019-05-31 网易(杭州)网络有限公司 体感游戏的实现方法、装置、设备及存储介质
CN110109535A (zh) * 2019-03-18 2019-08-09 国网浙江省电力有限公司信息通信分公司 增强现实生成方法及装置
CN110139115A (zh) * 2019-04-30 2019-08-16 广州虎牙信息科技有限公司 基于关键点的虚拟形象姿态控制方法、装置及电子设备
CN110971930A (zh) * 2019-12-19 2020-04-07 广州酷狗计算机科技有限公司 虚拟形象直播的方法、装置、终端及存储介质

Also Published As

Publication number Publication date
WO2021209042A1 (zh) 2021-10-21
CN111540055A (zh) 2020-08-14

Similar Documents

Publication Publication Date Title
CN111540055B (zh) 三维模型驱动方法、装置、电子设备及存储介质
US11776199B2 (en) Virtual reality environment based manipulation of multi-layered multi-view interactive digital media representations
JP7096902B2 (ja) 画像処理方法、装置、コンピュータプログラム及びコンピュータデバイス
US10628675B2 (en) Skeleton detection and tracking via client-server communication
Lai et al. Semantic-driven generation of hyperlapse from 360 degree video
CN110557625A (zh) 虚拟形象直播方法、终端、计算机设备及存储介质
US20180227482A1 (en) Scene-aware selection of filters and effects for visual digital media content
KR101328759B1 (ko) 비디오 스트림 내에서 마커 없는 텍스쳐 기하학적 평면 객체를 실시간으로 자동 추적하는 증강 현실 방법 및 장치
US20160309239A1 (en) Comment information generating apparatus and comment information generating method
US20140029920A1 (en) Image tracking and substitution system and methodology for audio-visual presentations
KR101288670B1 (ko) 최초 배경 복구에 대한 대응책
Sanches et al. Mutual occlusion between real and virtual elements in augmented reality based on fiducial markers
US20230123820A1 (en) Generating animated digital videos utilizing a character animation neural network informed by pose and motion embeddings
CN114363689B (zh) 直播控制方法、装置、存储介质及电子设备
US11823334B2 (en) Efficient capture and delivery of walkable and interactive virtual reality or 360 degree video
WO2017094527A1 (ja) 動画生成システムおよび動画表示システム
US11889222B2 (en) Multilayer three-dimensional presentation
CN114339360A (zh) 一种视频处理的方法、相关装置及设备
Langlotz et al. AR record&replay: situated compositing of video content in mobile augmented reality
CN112073749A (zh) 一种手语视频合成方法、手语翻译系统、介质和电子设备
US10224073B2 (en) Auto-directing media construction
KR102467903B1 (ko) 증강 현실용 스켈레톤 매핑에 의한 모션 표현 방법
US20210350547A1 (en) Learning apparatus, foreground region estimation apparatus, learning method, foreground region estimation method, and program
Mehta et al. Single-shot multi-person 3d body pose estimation from monocular rgb input
JP7296735B2 (ja) 画像処理装置、画像処理方法及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant