CN116250014A - 用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络 - Google Patents

用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络 Download PDF

Info

Publication number
CN116250014A
CN116250014A CN202180064855.9A CN202180064855A CN116250014A CN 116250014 A CN116250014 A CN 116250014A CN 202180064855 A CN202180064855 A CN 202180064855A CN 116250014 A CN116250014 A CN 116250014A
Authority
CN
China
Prior art keywords
hair
pseudo
real
image
appearance
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.)
Pending
Application number
CN202180064855.9A
Other languages
English (en)
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.)
Snap Inc
Original Assignee
Snap Inc
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 Snap Inc filed Critical Snap Inc
Publication of CN116250014A publication Critical patent/CN116250014A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/251Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/168Feature extraction; Face representation
    • G06V40/171Local features and components; Facial parts ; Occluding parts, e.g. glasses; Geometrical relationships
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/16Using real world measurements to influence rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/024Multi-user, collaborative environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2024Style variation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Architecture (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)

Abstract

消息收发系统对由消息收发系统的用户提供的图像执行神经网络毛发渲染。一种神经网络毛发渲染方法,包括:处理伪毛发的三维(3D)模型和描绘第一人的第一真实毛发图像以生成伪毛发结构;以及使用伪毛发编码器神经子网络来编码伪毛发结构以生成编码的伪毛发结构。该方法还包括使用跨域结构嵌入神经子网络来处理编码的伪毛发结构以生成真伪毛发结构,以及使用外观编码器神经子网络来编码描绘具有第二头部的第二人的第二真实毛发图像以生成外观图。该方法还包括使用真实外观渲染器神经子网络来处理外观图和真伪毛发结构以生成合成真实图像。

Description

用于合成具有与真实图像结合的伪毛发的图像的跨域神经 网络
优先权要求
本申请要求2020年8月22日提交的序列号为62/706,522的美国临时申请的优先权的权益,其全部内容通过引用并入本文中。
技术领域
本公开内容的示例一般涉及消息收发系统内的神经毛发渲染。更具体地但非限制性地,本公开内容的示例涉及使用神经网络将毛发从三维(3D)模型渲染到人的图像上。
背景技术
由于表面着色(surface shading)、光散射、半透明遮挡和软阴影以及由于许多束毛发,渲染人的毛发是复杂的。传统的计算机图形方法实现起来非常复杂并且计算要求高,这可能使得应用开发起来过于昂贵,并且可能使得应用对移动设备的计算要求过于高。
附图说明
在附图中,相似的附图标记可以在不同的视图中描述类似的部件,附图不一定按比例绘制。为了容易地标识对任何特定要素或动作的讨论,附图标记中的一个或多个最高有效数字是指该要素在其中首次被介绍的图号。在附图中以示例而非限制的方式示出了一些示例,在附图中:
图1是根据一些示例的其中可以部署本公开内容的联网环境的图解表示。
图2是根据一些示例的具有客户端侧功能和服务器侧功能二者的消息收发系统的图解表示。
图3是根据一些示例的在数据库中维护的数据结构的图解表示。
图4是根据一些示例的消息的图解表示。
图5是根据一些示例的访问限制过程的流程图。
图6示出了根据一些示例的用于训练毛发渲染神经网络的系统。
图7示出了根据一些示例的用于神经毛发渲染的系统。
图8示出了根据一些示例的训练和制作。
图9示出了根据一些示例的训练数据。
图10A、图10B和图10C示出了使用神经毛发渲染系统来生成合成图像的结果。
图11示出了根据一些示例的示出合成图像的示例应用。
图12示出了使用神经毛发渲染系统的结果与其他方法和消融的视觉比较。
图13示出了根据一些示例的时间调节结果。
图14示出了根据一些示例的用于神经毛发渲染的方法。
图15示出了根据一些示例的用于训练用于神经毛发渲染的神经网络的方法。
图16是根据一些示例的呈计算机系统形式的机器的图解表示,在该机器内可以执行指令集合以使该机器执行本文所讨论的方法中任何一种或更多种。
图17是示出其中可以实现示例的软件架构的框图。
图18是根据一些示例的处理环境的图解表示。
具体实施方式
以下描述包括体现本公开内容的说明性示例的系统、方法、技术、指令序列和计算机器程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节以提供对本发明主题的各种示例的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践本发明主题的示例。一般地,公知的指令实例、协议、结构和技术不一定详细地被示出。
公开了包括毛发渲染的消息收发系统。毛发渲染系统获取用诸如10个到50个多边形条带的简单数据结构表示的毛发的3D模型,并且将其渲染到描绘第一人的第一图像上,其中从描绘第二人的第二图像获取毛发的材料特征。第一图像和第二图像可以相同或不同。将毛发的3D模型渲染到对于第一个人的描绘上比其他方法更高效且更现实,并且使毛发渲染系统能够在移动装置上渲染图像。另外,根据一些示例,毛发渲染系统支持实时渲染一系列图像以支持视频。
用于毛发渲染的神经网络被分成对毛发的3D模型的数据结构进行操作的伪域和对第一图像和第二图像进行操作的真实域。3D毛发模型的粗略几何形状与图像中所描绘的真实毛发之间的显著差异使得难以设计用于二者的共同数据结构。技术问题是如何以无监督的方式训练神经网络,其中使用两种不同的数据结构,例如伪域中的毛发的3D模型以及用于表示真实域中的毛发的材料特征的更复杂的数据结构。用于渲染毛发的神经网络通过使用伪域和真实域二者所使用的共享潜在空间来解决该技术问题。伪域和真实域具有编码到共享的潜在空间中的单独的域结构。另外,在训练中,伪域和真实域在共享潜在空间之前共享若干神经网络层。此外,在训练中,结构鉴别器用于确保来自伪域和真实域的编码结构特征在共享潜在空间内匹配。并且在伪域和真实域中都使用监督重建,以确保在共享潜在空间中保持必要的结构。
此外,毛发的3D模型可以是一般的低质量3D毛发模型,其中诸如用稀疏多边形条带网格表示毛发束的各向同性结构。该类型的3D模型在互联网上被广泛使用,例如在诸如游戏的交互式应用中被广泛使用。由于材料特征或外观特征的组合取自真实毛发的图像并且通过神经网络与毛发的3D模型组合,所渲染的毛发看起来是真实的。
监督重建解决了当成对的图像不可用于监督学习时如何训练神经网络的技术问题。仅利用描绘人的一个图像来执行监督重建。获得具有人的第一图像和然后具有同一人的其中毛发的3D模型逼真地渲染在该人上的第二图像的成对图像是困难的或昂贵的。监督重建学习通过训练伪域以能够精确地重新创建第一图像上的毛发的3D模型的渲染图像并且通过训练真实域以能够精确地重新创建人的真实图像来解决该问题。通过使用该监督重建训练,不需要通常被称为基准真相的成对图像。
此外,该神经网络系统提供了用于解决消除毛发渲染的视频中的闪变的技术问题的手段。通过将先前图像馈送到神经网络的真实域中并且训练神经网络以使用先前图像来帮助渲染当前图像,解决了技术问题。毛发的3D模型用于确定从先前图像到当前图像的取向变化。该技术解决方案提供了所渲染的毛发的时间上平滑的动画,其中减少或消除了闪变。神经网络提供开启和关闭闪变校正的能力。
该神经网络系统提供供用户设备的用户选择毛发的3D模型和用于提供毛发的材料特征的第二图像的接口。然后,用户设备在第一图像(例如用户的活动图像)上渲染使用材料特征的毛发的3D模型。然后,所得到的渲染图像是第二图像与在第一图像上渲染的毛发的3D模型的混合,其中毛发的材料特征来自第二图像。
用户可以从要渲染毛发的3D模型的同一图像中选择用于渲染毛发的材料特征,使得界面为用户提供了查看用户在不同的毛发的3D模型中看起来如何的便利方式。
以第一配置训练神经网络,然后使用第二配置重新配置神经网络以用于制作用途。训练配置使得能够使用监督重建进行训练,并且因此是在没有基准真相(groundtruth)的情况下训练神经网络的技术方案的一部分。
联网计算环境
图1是示出用于通过网络来交换数据(例如消息和相关联的内容)的示例消息收发系统100的框图。消息收发系统100包括客户端设备102的多个实例,每个实例托管包括消息收发客户端104在内的多个应用。每个消息收发客户端104经由网络106(例如,因特网)通信上耦接至消息收发服务器系统108和消息收发客户端104的其他实例。
消息收发客户端104能够经由网络106与另一消息收发客户端104和消息收发服务器系统108通信并且交换数据。在消息收发客户端104之间以及消息收发客户端104与消息收发服务器系统108之间交换的数据包括功能(例如,激活功能的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。
消息收发服务器系统108经由网络106向特定消息收发客户端104提供服务器端功能。虽然消息收发系统100的某些功能在本文中被描述为由消息收发客户端104或由消息收发服务器系统108执行,但是某些功能的在消息收发客户端104或消息收发服务器系统108内的定位可以是设计选择。例如,在技术上可以优选的是:最初将某些技术和功能部署在消息收发服务器系统108内,但是后面将该技术和功能迁移至客户端设备102具有足够处理能力的消息收发客户端104。
消息收发服务器系统108支持向消息收发客户端104提供的各种服务和操作。这样的操作包括向消息收发客户端104发送数据、从消息收发客户端104接收数据以及对由消息收发客户端104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体增强和覆盖物、消息内容持续条件、社交网络信息和实况事件信息。通过经由消息收发客户端104的用户接口(UI)可用的功能来激活和控制消息收发系统100内的数据交换.
现在具体地转至消息收发服务器系统108,应用程序接口(API)服务器110耦接至应用服务器112并且向应用服务器112提供编程接口。应用服务器112通信地耦接至数据库服务器118,数据库服务器118利于访问数据库120,该数据库120存储与通过应用服务器112处理的消息相关联的数据。类似地,web服务器124耦接至应用服务器112,并且向应用服务器112提供基于web的接口。为此,web服务器124通过超文本传输协议(HTTP)和若干其他相关协议处理传入的网络请求。
应用程序接口(API)服务器110在客户端设备102与应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,应用程序接口(API)服务器110提供一组接口(例如,例程和协议),消息收发客户端104可以调用或查询该组接口以激活应用服务器112的功能。应用程序接口(API)服务器110显露由应用服务器112支持的各种功能,包括:帐户注册;登录功能;经由应用服务器112将消息从特定消息收发客户端104发送至另一消息收发客户端104;将媒体文件(例如,图像或视频)从消息收发客户端104发送至消息收发服务器114并且用于另一消息收发客户端104的可能访问;设置媒体数据集合(例如,故事);检索客户端设备102的用户的朋友列表;检索这样的集合;检索消息和内容;在实体图(例如社交图)中添加和删除实体(例如朋友);在社交图中定位朋友;以及打开应用事件(例如,与消息收发客户端104有关)。
应用服务器112托管若干服务器应用和子系统,包括例如消息收发服务器114、图像处理服务器116以及社交网络服务器122。消息收发服务器114实现了若干消息处理技术和功能,特别是与从消息收发客户端104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将进一步详细描述的,来自多个源的文本和媒体内容可以被聚合成内容的集合(例如,被称为故事或图库)。然后,使这些集合对消息收发客户端104可用。鉴于对这样的处理的硬件要求,也可以由消息收发服务器114在服务器端执行数据的其他处理器和存储器密集型处理。
应用服务器112还包括图像处理服务器116,该图像处理服务器116专用于执行各种图像处理操作,通常相对于在从消息收发服务器114发送或者在消息收发服务器114处接收的消息的有效载荷内的图像或视频,执行各种图像处理操作。
社交网络服务器122支持各种社交网络化功能和服务,并且使这些功能和服务可用于消息收发服务器114。为此,社交网络服务器122维护和访问数据库120内的实体图306(如图3所示)。由社交网络服务器122支持的功能和服务的示例包括识别特定用户与其有关系或“关注”其的消息收发系统100的其他用户,以及识别特定用户的兴趣和其他实体。
系统架构
图2是示出根据一些示例的关于消息收发系统100的进一步细节的框图。具体地,消息收发系统100被显示为包括消息收发客户端104和应用服务器112。消息收发系统100包含若干子系统,这些子系统在客户端侧由消息收发客户端104支持并且在服务器侧由应用服务器112支持。这些子系统包括例如短暂定时器系统202、集合管理系统204、修改系统206、地图系统208、游戏系统210和神经毛发渲染系统214。
短暂定时器系统202负责强制由消息收发客户端104和消息收发服务器114对内容进行临时或限时访问。短暂定时器系统202包含若干个定时器,这些定时器基于与消息或消息的集合(例如,故事)相关联的持续时间和显示参数,选择性地实现经由消息收发客户端104访问(例如,用于呈现和显示)消息和相关联的内容。下面提供关于短暂定时器系统202的操作的另外的细节。
集合管理系统204负责管理媒体的组或集合(例如,文本、图像、视频和音频数据的集合)。可以将内容(例如,消息,包括图像、视频、文本和音频)的集合组织成“事件库”或“事件故事”。这样的集合可以在指定的时间段内(例如,与内容相关的事件的持续时间)可用。例如,可以在音乐会的持续时间内使与音乐会相关的内容作为“故事”可用。集合管理系统204还可以负责向消息收发客户端104的用户接口发布提供特定集合存在的通知的图标。
此外,集合管理系统204包括使得集合管理者能够管理和策展特定的内容集合的策展界面212。例如,策展界面212使得事件组织者能够策展与特定事件相关的内容集合(例如,删除不适当的内容或冗余消息)。此外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动策展内容集合。在某些示例中,可以向用户支付补偿用于将用户生成的内容包括到集合中。在这样的情况下,集合管理系统204进行操作以自动地向这样的用户支付以使用他们的内容。
增强系统206提供使得用户能够增强(例如,注释或以其他方式修改或编辑)与消息相关联的媒体内容的各种功能。例如,增强系统206提供与生成和发布用于由消息收发系统100处理的消息的媒体覆盖物(media overlay)相关的功能。增强系统206基于客户端设备102的地理位置可操作地向消息收发客户端104提供媒体覆盖物或增强(例如,图像过滤器)。在另一示例中,增强系统206基于诸如客户端设备102的用户的社交网络信息的其他信息可操作地向消息收发客户端104供应媒体覆盖物。媒体覆盖物可以包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、标志、动画和声音效果。视觉效果的示例包括色彩叠加。可以将音频和视觉内容或视觉效果应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体覆盖物可以包括可以叠加在由客户端设备102拍摄的照片的顶部上的文本或图像。在另一示例中,媒体覆盖物包括位置标识(例如,威尼斯海滩)覆盖物、实况事件的名称或商家名称(例如,海滩咖啡馆)覆盖物。在另一示例中,增强系统206使用客户端设备102的地理位置来标识包括在客户端设备102的地理位置处的商家的名称的媒体覆盖物。媒体覆盖物可以包括与商家相关联的其他标记。媒体覆盖物可以存储在数据库120中并且通过数据库服务器118访问。
在一些示例中,增强系统206提供基于用户的发布平台,该基于用户的发布平台使得用户能够选择地图上的地理位置并且上传与所选择的地理位置相关联的内容。用户还可以指定应当向其他用户提供特定媒体覆盖物的情况。增强系统206生成包括所上传的内容并且将所上传的内容与所选择的地理位置相关联的媒体覆盖物。
在其他示例中,增强系统206提供基于商家的发布平台,该基于商家的发布平台使商家能够经由竞价过程选择与地理位置相关联的特定媒体覆盖物。例如,增强系统206将最高竞价商家的媒体覆盖物与相应的地理位置相关联达预定义时间量。
地图系统208提供各种地理定位功能,并且支持由消息收发客户端104呈现基于地图的媒体内容和消息。例如,地图系统208使得能够在地图上显示(例如,存储在配置文件数据308中的)用户图标或化身,以在地图的上下文中指示用户的“朋友”的当前或过去位置,以及由这样的朋友生成的媒体内容(例如,包括照片和视频的消息的集合)。例如,在消息收发客户端104的地图界面上,可以将用户从特定地理位置发布到消息收发系统100的消息在地图的该特定位置处的上下文内显示给特定用户的“朋友”。用户还可以经由消息收发客户端104与消息收发系统100的其他用户(例如,使用适当的状况化身来)共享他或她的位置和状况信息,其中,在消息收发客户端104的地图界面的上下文中该位置和状况信息被类似地显示给所选择的用户。
游戏系统210在消息收发客户端104的上下文内提供各种游戏功能。消息收发客户端104提供游戏界面,该游戏界面提供可用游戏的列表,该游戏可以由用户在消息收发客户端104的上下文中启动并且与消息收发系统100的其他用户一起玩。消息收发系统100还使特定用户能够通过从消息收发客户端104向这样的其他用户发出邀请来邀请其他用户参与玩特定游戏。消息收发客户端104还支持游戏上下文内的语音消息收发和文本消息收发(例如,聊天),为游戏提供排行榜,并且还支持提供游戏内奖励(例如,钱币和物品)。
神经毛发渲染系统214提供与训练神经网络的系统600和使用神经毛发渲染系统700渲染神经毛发(例如图11的合成图像1118)相关的各种功能。神经毛发渲染系统214为客户端设备102提供下载训练的神经毛发渲染系统700以及下载诸如结合图11描述的用于执行神经毛发渲染的用户界面的手段。神经毛发渲染系统214提供对可以由客户端装置102远程检索的参考图像1116和3D毛发模型1108的数据库的访问。神经毛发渲染系统214被配置成在单个图像和视频上渲染神经毛发。
数据架构
图3是示出根据某些示例的可以存储在消息收发服务器系统108的数据库120中的数据结构300的示意图。虽然数据库120的内容被示出为包括若干表,但是应当理解的是,数据可以存储在其他类型的数据结构(例如,作为面向对象数据库)中。
数据库120包括存储在消息表302内的消息数据。对于任何特定的一条消息,该消息数据包括至少消息发送者数据、消息接收方(或接收者)数据和有效载荷。下面参照图4描述关于可以被包括在消息中并且被包括在存储在消息表302中的消息数据中的信息的另外的细节。
实体表304存储实体数据,并且(例如,参考地)链接到实体图306和配置文件数据308。在实体表304内为其维持记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管实体类型如何,消息收发服务器系统108存储关于其的数据的任何实体可以是识别的实体。为每个实体提供唯一的标识符以及实体类型标识符(未示出)。
实体图306存储关于实体之间的关系和关联的信息。仅作为示例,这样的关系可以是基于兴趣或基于活动的社交关系、专业关系(例如,在共同的公司或组织工作)。
配置文件数据308存储关于特定实体的多种类型的配置文件数据。基于由特定实体指定的隐私设置,配置文件数据308可以被选择性地使用并且呈现给消息收发系统100的其他用户。在实体是个人的情况下,配置文件数据308包括例如用户名、电话号码、地址、设置(例如,通知和隐私设置),以及用户选择的化身表示(或这种化身表示的集合)。然后,特定用户可以将这些化身表示中的一个或更多个选择性地包括在经由消息收发系统100传送的消息的内容中以及在由消息收发客户端104向其他用户显示的地图界面上。化身表示的集合可以包括“状态化身”,其呈现用户可以选择在特定时间进行通信的状态或活动的图解表示。
在实体是团体的情况下,除了团体名称、成员和相关团体的各种设置(例如,通知)之外,团体的配置文件数据308还可以类似地包括与团体相关联的一个或更多个化身表示。
数据库120还在增强表310中存储增强数据,例如覆盖物或过滤器。增强数据与视频(针对其数据被存储在视频表314中)和图像(针对其数据被存储在图像表316中)相关联并且应用于视频和图像。
在一个示例中,过滤器是在向接收方用户呈现期间被显示为叠加在图像或视频上的覆盖物。过滤器可以是各种类型的,包括当发送用户正在编写消息时由消息收发客户端104呈现给发送用户的一组过滤器中用户选择的过滤器。其他类型的过滤器包括地理位置过滤器(也称为地理过滤器),其可以基于地理位置被呈现给发送用户。例如,可以基于由客户端设备102的全球定位系统(GPS)单元确定的地理位置信息,由消息收发客户端104在用户接口内呈现特定于附近或特殊位置的地理位置过滤器
另一种类型的过滤器是数据过滤器,其可以由消息收发客户端104基于在消息创建过程期间由客户端设备102收集的其他输入或信息选择性地呈现给发送用户。数据过滤器的示例包括特定位置处的当前温度、发送用户行进的当前速度、客户端设备102的电池寿命或当前时间。
可以存储在图像表316内的其他增强数据包括增强现实内容项(例如,对应于应用镜头或增强现实体验)。增强现实内容项可以是可以被添加至图像或视频的实时特殊效果和声音。
如上所述,增强数据包括增强现实内容项、覆盖物、图像变换、AR图像以及涉及可以应用于图像数据(例如,视频或图像)的修改的类似项。这包括实时修改,其在使用客户端设备102的设备传感器(例如,一个或多个摄像装置)捕获图像时对图像进行修改并且然后在修改的情况下在客户端设备102的屏幕上显示图像。这还包括对所存储的内容的修改,例如对可以被修改的库中的视频剪辑的修改。例如,在可以访问多个增强现实内容项的客户端设备102中,用户可以使用具有多个增强现实内容项的单个视频剪辑来查看不同的增强现实内容项将如何修改存储的剪辑。例如,通过为内容选择不同的增强现实内容项,可以将应用不同伪随机运动模型的多个增强现实内容项应用于该同一内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由客户端设备102的传感器捕获的视频图像将如何修改捕获的数据。这样的数据可以简单地显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行或不进行修改(或二者)的情况下被记录并且存储在存储器中。在某些系统中,预览功能可以显示不同的增强现实内容项将如何同时在显示器的不同窗口中显示。例如,这可以实现同时在显示器上查看具有不同伪随机动画的多个窗口。
因此,使用增强现实内容项的数据和各种系统或使用该数据修改内容的其他这样的变换系统可以涉及视频帧中对象(例如,脸、手、身体、猫、狗、表面、物体等)的检测,在这些对象离开视场、进入视场以及在视场四处移动时跟踪这些对象,以及在跟踪这些对象时对其进行修改或变换。在各种示例中,可以使用用于实现这样的变换的不同方法。一些示例可以涉及生成一个或多个对象的3维网格模型,以及在视频内使用模型的变换和动画纹理来实现变换。在其他示例中,可以使用对对象上的点的跟踪来将图像或纹理(其可以是二维或三维的)放置在所跟踪的位置处。在更进一步的示例中,可以使用对视频帧的神经网络分析将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,增强现实内容项既指用于在内容中创建变换的图像、模型和纹理,也指通过对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。
可以利用保存在任何类型的计算机化系统的存储器中的任何类型的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并且将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。此外,可以使用计算机动画模型来处理任何对象,例如人的面部和人身体的各部分、动物或非生物(诸如椅子、汽车或其他物品)。
在一些示例中,当与要变换的内容一起选择特定修改时,要变换的元素由计算设备识别,并且然后如果要变换的元素存在于视频的帧中,则被检测和跟踪。根据修改请求修改对象的元素,从而变换视频流的帧。对于不同类型的变换,可以通过不同的方法执行对视频流的帧的变换。例如,对于主要是指改变对象的元素的形式的帧的变换,对象的每个元素的特征点(例如,使用主动形状模型(ASM)或其他已知方法)被计算。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格用于跟踪视频流中的对象的元素的后续阶段。在跟踪过程中,针对每个元素的提及的网格与每个元素的位置对准。然后,在网格上生成附加点。基于修改请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和修改的请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格修改对象的元素,对视频流的帧进行转换。在这种方法中,也可以通过跟踪和修改背景来改变或扭曲被修改对象的背景。
在一些示例中,使用对象的元素改变对象的一些区域的变换可以通过计算对象的每个元素的特征点并且基于计算的特征点生成网格来执行。在网格上生成点,然后基于这些点生成各种区域。然后,通过将每个元素的区域与至少一个元素中的每一个的位置对准来跟踪对象的元素,并且可以基于修改的请求来修改区域的属性,从而转换视频流的帧。根据具体的修改请求,可以以不同的方式变换所提及的区域的属性。这样的修改可以涉及:改变区域的颜色;从视频流的帧中移除至少一些部分区域;将一个或更多个新对象包括在基于修改请求的区域中;以及修改或扭曲区域或对象的元素。在各种示例中,可以使用这样的修改或其他类似修改的任何组合。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定用于模型动画的选项的整个状态空间。
在使用面部检测来变换图像数据的计算机动画模型的一些示例中,使用特定面部检测算法(例如,Viola-Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。
在其他示例中,可以使用适合面部检测的其他方法和算法。例如,在一些示例中,使用界标来定位特征,该界标表示存在于所考虑的大多数图像中的可区分点。例如,对于面部界标,可以使用左眼瞳孔的位置。如果初始界标不可识别(例如,如果人有眼罩),则可以使用次级界标。这样的界标识别过程可以用于任何这样的对象。在一些示例中,一组界标形成形状。可以使用形状中的点的坐标将形状表示为矢量。一个形状通过相似变换(允许平移、缩放和旋转)与另一形状对准,该变换使形状点之间的平均欧几里得距离最小化。平均形状是对准的训练形状的平均。
在一些示例中,从与由全局面部检测器确定的面部的位置和大小对准的平均形状开始搜索界标。然后,这样的搜索重复以下步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的位置而建议暂定形状,并且然后使暂定形状符合全局形状模型,直至发生收敛。在一些系统中,个别模板匹配是不可靠的,并且形状模型将弱模板匹配的结果进行池化,以形成较强的整体分类器。整个搜索在从粗略分辨率到精细分辨率的图像金字塔的每个级别上重复。
变换系统可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并且在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状变化、情绪转换(例如,将面部从皱眉变为微笑)、状态转换(例如,使对象变老、减少表观年龄、改变性别)、风格转换、图形元素应用,以及由已经被配置成在客户端设备102上有效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
在一些示例中,用于变换图像数据的计算机动画模型可以由系统使用,在该系统中,用户可以使用具有神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍),该神经网络操作作为在客户端设备102上操作的消息收发客户端应用104的一部分。在消息收发客户端104内操作的变换系统确定图像或视频流中的面部的存在并且提供与计算机动画模型相关联的修改图标以变换图像数据,或者计算机动画模型可以被呈现为与本文中描述的接口相关联。修改图标包括以下变化,该变化可以是作为修改操作的一部分的在图像或视频流中修改用户面部的基础。一旦选择了修改图标,则变换系统发起将用户的图像转换以反映所选择的修改图标(例如,在用户上生成笑脸)的过程。一旦图像或视频流被捕获并且指定的修改被选择,修改的图像或视频流就可以呈现在客户端设备102上显示的图形用户接口中。变换系统可以在图像或视频流的一部分上实施复杂的卷积神经网络,以生成和应用所选择的修改。也就是说,一旦选择了修改图标,用户就可以捕获图像或视频流并且实时或近乎实时地呈现修改结果。此外,当正在捕获视频流时,修改可以是持久的,并且所选择的修改图标保持被切换。机器教导的神经网络可以用于实现这样的修改。
呈现由变换系统执行的修改的图形用户接口可以为用户提供附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的选择和内容捕获的界面(例如,从内容创建者用户界面发起)。在各种示例中,修改可以在对修改图标的初始选择之后是持久的。用户可以通过轻击或以其他方式选择由变换系统修改的面部来打开或关闭修改,并且将其存储以供以后查看或浏览到成像应用的其他区域。在由变换系统修改多个面部的情况下,用户可以通过轻击或选择在图形用户接口内修改和显示的单个面部来全局打开或关闭修改。在一些示例中,可以单独修改一组多个面部中的各个面部,或者可以通过轻击或选择图形用户接口内显示的各个面部或一系列各个面部来单独切换这种修改。
故事表312存储关于消息和相关联的图像、视频或音频数据的集合的数据,所述消息和相关联的图像、视频或音频数据被编译成集合(例如,故事或图库)。特定集合的创建可以由特定用户(例如在实体表304中为其维护记录的每个用户)发起。用户可以以已经由该用户创建和发送/广播的内容的集合的形式创建“个人故事”。为此,消息收发客户端104的用户接口可以包括用户可选择的图标,以使得发送方用户能够将特定内容添加到他或她的个人故事。
集合还可以构成作为来自多个用户的内容的集合的“实况故事”,该内容的集合是手动地、自动地或者使用手动技术和自动技术的组合创建的。例如,“实况故事”可以构成来自不同位置和事件的用户提交的内容的策展流。其客户端设备启用了定位服务并且在特定时间处于共同位置事件处的用户可以例如经由消息收发客户端104的用户接口被呈现有选项,以将内容贡献给特定实况故事。可以由消息收发客户端104基于他或她的位置向用户标识实况故事。最终结果是从社区角度讲述的“实况故事”。
另外类型的内容集合被称为“位置故事”,其使得其客户端设备102位于特定地理位置(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些示例中,对位置故事的贡献可能需要二级认证以验证最终-用户属于特定组织或其他实体(例如,是大学校园中的学生)。
如上面提到的,视频表314存储视频数据,在一个示例中,该视频数据与在消息表302内为其维护记录的消息相关联。类似地,图像表316存储图像数据,该图像数据与其消息数据存储在实体表304中的消息相关联。实体表304可以使来自增强表310的各种增强与存储在图像表316和视频表314中的各种图像和视频相关联。
参照图6、图7和图11,数据库120被配置成存储权重804、权重806、训练数据800、3D毛发模型602和输入图像1112。
数据通信架构
图4是示出根据一些示例的消息400的结构的示意图,消息400由消息收发客户端104生成,以用于传送至另外的消息收发客户端104或消息收发服务器114。特定消息400的内容用于填充存储在数据库120中的消息表302,该消息表302可由消息收发服务器114访问。类似地,消息400的内容被存储在存储器中作为客户端设备102或应用服务器112的“传输中”或“飞行中”的数据。消息400被示出为包括以下示例组成部分
消息标识符402:标识消息400的唯一标识符。消息文本有效载荷404:要由用户经由客户端设备102的用户接口生成并且被包括在消息400中的文本。
消息图像有效载荷406:由客户端设备102的摄像装置部件捕获的或从客户端设备102的存储器部件检索的、并且包括在消息400中的图像数据。针对发送或接收到的消息400的图像数据可以被存储在图像表316中。
消息视频有效载荷408:由摄像装置部件捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息400中的视频数据。针对发送或接收到的消息400的视频数据可以存储在视频表314中。
消息音频有效载荷410:由麦克风捕获的或从客户端设备102的存储器部件检索的、并且包括在消息400中的音频数据。
消息增强数据412:表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的增强的增强数据(例如,过滤器、贴纸或其他注解或增强)。针对发送或接收到的消息400的增强数据可以存储在增强表310中。
消息持续时间参数414:参数值,其指示消息的内容(例如,消息图像有效载荷406、消息视频有效载荷408、消息音频有效载荷410)将经由消息收发客户端104被呈现给用户或使其对于用户可访问的以秒为单位的时间量。
消息地理位置参数416:与消息的内容有效载荷相关联的地理位置数据(例如,纬度和经度坐标)。多个消息地理位置参数416值可以被包括在有效载荷中,这些参数值中的每一个参数值与关于包括在内容中的内容项(例如消息图像有效载荷406内的特定图像或消息视频有效载荷408中的特定视频)相关联。
消息故事标识符418:标识一个或更多个内容集合(例如,在故事表312中标识的“故事”)的标识符值,其中消息400的消息图像有效载荷406中的特定内容项与一个或更多个内容集合相关联。例如,可以使用标识符值将消息图像有效载荷406内的多个图像各自与多个内容集合相关联。
消息标签420:每个消息400可以用多个标签来标记,多个标签中的每个标签指示消息有效载荷中所包括的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如狮子)的情况下,可以在消息标签420中包括指示相关动物的标签值。标签值可以基于用户输入手动地生成,或可以使用例如图像识别自动地生成。
消息发送者标识符422:指示在其上生成消息400并且从其发送消息400的客户端设备102的用户的标识符(例如消息收发系统标识符、电子邮件地址或设备标识符)。
消息接收者标识符424:指示消息400被寻址到的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。
消息400的各个组成部分的内容(例如,值)可以是指向其内存储有内容数据值的表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表316内的位置(或位置的地址)的指针。类似地,消息视频有效载荷408内的值可以指向存储在视频表314内的数据,存储在消息增强412内的值可以指向存储在增强表310中的数据,存储在消息故事标识符418内的值可以指向存储在故事表312中的数据,并且存储在消息发送者标识符422和消息接收者标识符424内的值可以指向存储在实体表304内的用户记录。
尽管所描述的流程图可以将操作示出为顺序过程,但是操作中的许多操作可以并行或同时执行。另外,可以重新安排操作的顺序。当过程的操作完成时,过程终止。过程可以对应于方法、程序、算法等。方法的操作可以全部或部分执行,可以与其他方法中的一些或所有操作结合执行,并且可以通过任何数目的不同系统例如本文描述的系统或者其任何部分例如包括在任何系统中的处理器执行。
基于时间的访问限制架构
图5是示出访问限制过程500的示意图,根据该访问限制过程,对内容(例如,短暂消息502和相关联的数据的多媒体有效载荷)或内容集合(例如,短暂消息组504)的访问可以是时间受限的(例如,使得是短暂的)。
短暂消息502被示为与消息持续时间参数506相关联,消息持续时间参数506的值确定消息收发客户端104将向短暂消息502的接收用户显示短暂消息502的时间量。在一个示例中,取决于发送用户使用消息持续时间参数506指定的时间量,接收用户可查看短暂消息502长达最多10秒。
消息持续时间参数506和消息接收者标识符424被示出为消息定时器512的输入,消息定时器512负责确定向由消息接收者标识符424标识的特定接收用户示出短暂消息502的时间量。特别地,仅在由消息持续时间参数506的值确定的时间段内向相关接收用户示出短暂消息502。消息定时器512被示出为向更一般化的短暂定时器系统202提供输出,该短暂定时器系统202负责向接收用户显示内容(例如,短暂消息502)的总体定时。
图5中示出的短暂消息502被包括在短暂消息组504(例如,个人故事或事件故事中的消息的集合)内。短暂消息组504具有相关联的组持续时间参数508,组持续时间参数508的值确定短暂消息组504被呈现并且可由消息收发系统100的用户访问的持续时间。例如,组持续时间参数508可以是音乐会的持续时间,其中,短暂消息组504是涉及该音乐会的内容的集合。替选地,当执行短暂消息组504的设置和创建时,用户(拥有用户或策展者用户)可以指定组持续时间参数508的值。
另外,短暂消息组504内的每个短暂消息502具有相关联的组参与参数510,组参与参数510的值确定在短暂消息组504的上下文内将可访问短暂消息502的持续时间。因此,在短暂消息组504本身根据组持续时间参数508到期之前,特定的短暂消息组504可以“到期”并且在短暂消息组504的上下文中变得不可访问。组持续时间参数508、组参与参数510和消息接收者标识符424各自向组定时器514提供输入,组定时器514可操作地首先确定短暂消息组504的特定短暂消息502是否将被显示给特定接收用户,并且如果是,则确定显示多长时间。注意,由于消息接收者标识符424,短暂消息组504也知道特定接收用户的身份。
因此,组定时器514可操作地控制相关联的短暂消息组504以及包括在短暂消息组504中的单独的短暂消息502的总寿命期限。在一个示例中,短暂消息组504内的每个短暂消息502在由组持续时间参数508指定的时间段内保持可查看和可访问。在另一示例中,在短暂消息组504的上下文内,某个短暂消息502可以基于组参与参数510而到期。注意,即使在短暂消息组504的上下文内,消息持续时间参数506也仍然可以确定向接收用户显示特定短暂消息502的持续时间。因此,消息持续时间参数506确定向接收用户显示特定短暂消息502的持续时间,而不管接收用户是在短暂消息组504的上下文之内还是之外查看该短暂消息502。
短暂定时器系统202还可以基于确定特定的短暂消息502已经超过相关联的组参与参数510而从短暂消息组504中可操作地移除该特定的短暂消息502。例如,当发送用户已经建立了从发布起24小时的组参与参数510时,短暂定时器系统202将在指定的二十四小时之后从短暂消息组504中移除相关的短暂消息502。当针对短暂消息组504内的每个短暂消息502的组参与参数510都已经到期时,或者当短暂消息组504本身根据组持续时间参数508已经到期时,短暂定时器系统202还进行操作以移除短暂消息组504。
在某些使用情况下,特定短暂消息组504的创建者可以指定无期限的组持续时间参数508。在这种情况下,针对短暂消息组504内最后剩余的短暂消息502的组参与参数510的到期将确定短暂消息组504本身何时到期。在这种情况下,添加至短暂消息组504的具有新的组参与参数510的新的短暂消息502实际上将短暂消息组504的寿命延长到等于组参与参数510的值。
响应于短暂定时器系统202确定短暂消息组504已经到期(例如,不再是可访问的),短暂定时器系统202与消息收发系统100(并且例如特别是消息收发客户端104)通信,以使得与相关短暂消息组504相关联的标记(例如,图标)不再显示在消息收发客户端104的用户接口内。类似地,当短暂定时器系统202确定针对特定短暂消息502的消息持续时间参数506已经到期时,短暂定时器系统202使消息收发客户端104不再显示与短暂消息502相关联的标记(例如,图标或文本标识)。
神经毛发渲染
图6示出了根据一些示例的用于训练毛发渲染神经网络的系统600。系统600训练神经网络,然后神经网络由神经毛发渲染系统700使用。系统600将3D毛发模型(h)602、真实毛发图像(XR)604和参考图像(r)620作为输入。系统600的输出是合成的伪图像(iF)668和合成的真实图像(iR)670。参照图6、图7、图8和图9,训练模块802通过使用具有图像的诸如图9的训练数据的训练数据800调整神经网络的权重804来训练系统600。制作模块810使用具有权重806的神经毛发渲染系统700来生成诸如图11的合成图像1118的图像。
引入伪编码器(EF)628的顶部部分是伪域,引入真实编码器(ER)630的底部部分是真实域。三维(3D)毛发模型(h)602是伪毛发的3D模型。使用低质量毛发模型表示3D毛发模型(h)602。低质量毛发模型的示例包括毛发束的各向同性结构和稀疏多边形条带网格。真实毛发图像(XR)604是描绘具有真实毛发的真实人的图像。在一些示例中,真实毛发图像(XR)604是伪毛发的图像(例如卡通人物)。参考图像(r)620中描绘的毛发的外观和状况或材料特性用于将3D毛发模型(h)602呈现或合成到真实毛发图像(XR)604中描绘的真实头部上。在训练期间,真实毛发图像(XR)604和参考图像(r)620是相同的图像。神经网络渲染流水线(Rn)被定义为Rn=(h,r,c),其中,h是毛发模型(h)602,r是从参考图像(r)620提取的材料特征,并且c是摄像装置设置。
在操作606中,图8的训练模块802根据3D毛发模型602和真实毛发图像(XR)604渲染伪毛发图像(XF)614。3D毛发模型(h)602的数据结构信息未包括在伪毛发图像(XF)614中。训练模块802使用图形渲染流水线在真实毛发图像(XR)604上渲染3D毛发模型(h)602,以生成伪毛发图像(XF)614,其中在生成伪毛发图像(XF)时,可以将渲染与简单的漫射着色(diffuse shading)一起使用。另外,在操作606中,在渲染伪毛发图像(XF)614之前,训练模块802根据真实毛发图像(XR)604中的头部图像的取向来调整3D毛发模型(h)602的取向。箭头610指示真实毛发图像604(XR)用于生成伪毛发图像(XF)614和结构伪毛发(SF)616。在一些示例中,训练模块802生成具有类均匀颜色外观和简单漫射着色的伪毛发图像(XF)614,使得最终的合成渲染具有可以容易地解缠结并且可以不需要额外条件的稍微一致的外观。在一些示例中,训练模块802生成伪毛发图像(XF)614以包括大部分或所有结构信息,从而使得操作642能够通过与合成伪图像(iF)668进行比较来训练伪外观渲染器(GF)656。
在操作608中,训练模块802处理3D毛发模型(h)602和真实毛发图像604(XR)以生成结构伪毛发(SF)616,结构伪毛发(SF)616是3D毛发模型(h)602的域特定结构表示。根据一些示例,结构伪毛发(SF)616包括真实毛发图像604(XR)的部分和3D毛发(h)614的数据结构。另外,在操作608中,训练模块802根据真实毛发图像(XR)604中的头部图像的取向来调整3D毛发模型(h)602的取向。在一些示例中,训练模块802被配置成针对给定3D毛发模型(h)602和指定摄像装置参数生成结构伪毛发(SF)616。在一些示例中,训练模块802使用平滑变化的颜色梯度作为纹理来将3D毛发模型(h)602渲染成嵌入毛发几何结构的结构信息的彩色图像,其中sf=Sf(h,c),其中c是摄像装置参数,h是3D毛发模型,并且sf是伪毛发的结构。摄像装置参数(c)可以由客户端设备102提供。例如,真实毛发图像(XR)604可以由客户端设备102捕获并且与摄像装置参数相关联。在一些示例中,3D毛发模型(h)602具有不同于真实图像的几何粒度,这使得难以具有与真实图像类似的结构表示。在一些示例中,3D毛发模型(h)602是多边形条带,其在诸如视频游戏的动画中的实时场景中被广泛采用。
在操作612中,训练模块802处理真实毛发图像604(XR)以生成表示真实毛发(SR)的结构618的数据结构。另外,在操作612中,训练模块802确定真实毛发图像(XR)604的取向,并且将伪毛发图像(XF)614、结构伪毛发(SF)616和真实毛发(SR)的结构618的取向调整为彼此一致。在真实毛发(SR)的结构618中使用的数据结构比结构伪毛发(SF)616更精细或更复杂。在一些示例中,训练模块802通过在真实毛发图像(XR)604的毛发区域中应用密集像素级取向图来构造真实毛发的通用结构表示s,该真实毛发的通用结构表示可以表达为sr=Sr(xr),其中Sr(xr)由定向滤波器核确定,并且sr是结构真实毛发(SR)618。然后,训练模块802确定结构真实毛发(SR)618,使得其包含局部毛发束流结构。在一些示例中,训练模块802被配置成使用标准模型来执行毛发分割,以生成训练数据800的真实毛发图像(XR)604的毛发区域的结构真实毛发(SR)。
训练模块802通过输出对毛发的网格的表面切线进行编码的颜色纹理来生成结构伪毛发(SF)616。训练模块802使用相同的着色参数(包括照明和颜色),以加强伪域与真实域之间毛发的一致外观,使得系统600可以解开在结构真实毛发(SR)618和结构伪毛发(SF)616中使用的不同结构。
在操作622中,训练模块802将结构伪毛发(SF)616馈送到外观编码器(Ef)628中。外观编码器(Ef)628是多层神经网络或残差神经网络。
在操作624中,训练模块802将结构真实毛发(SR)618馈送到真实编码器(ER)630中以生成编码的真实毛发结构。真实编码器(ER)630是多层神经网络或残差神经网络。伪编码器(EF)628和真实编码器(ER)630具有相同或相似的网络结构。在一些示例中,伪编码器(EF)628和真实编码器(ER)630具有五个下采样卷积层,随后是六个残差块(ResBlk)层。其中一些层馈入下一层并且直接馈入第2层或第3层的神经网络中的残差块跳开。层的数目可以不同。共享层634是权重共享的,以实施跨域结构嵌入(e)644。共享层634指示在伪编码器(EF)628与真实编码器(ER)630的共享层之间共享权重。共享层634的数目可以不同。
在操作626中,训练模块802用外观编码器(Em)632处理参考图像(r)620,以编码来自参考图像(r)620的毛发的材料属性。参考图像(r)620是外观编码器(Em)632用来提取参考图像(r)620中描绘的毛发的图像的外观特征的图像。外观编码器(Em)632是具有权重的多层神经网络。外观编码器(Em)632对来自参考图像(r)620的毛发的材料属性进行编码。外观编码器(Em)632利用五个下采样卷积层和平均池化层来提取r×mr(r cross(m sub r))上的外观特征向量,其中r是参考图像(r)620,并且mr是目标真实毛发掩模(m)。Ea(r)是外观编码器(Em)632的输出,其中r是参考图像(r)620,其可以用于通过如下式(1)中以目标毛发掩模ms对其进行空间复制来构造特征图ar,s sub r((a sub r),(s sub r)),其中ms sub r(m sub(s sub r))是真实图像的结构的掩模。式(1):
Figure BDA0004138779270000211
在操作636中,训练模块802将伪编码器(EF)628的输出馈送到跨域结构嵌入(e)644中以生成编码的伪毛发结构。在操作638中,训练模块802将真实编码器(ER)630的输出馈送到跨域结构嵌入(e)644中。跨域结构嵌入(e)644是由伪编码器(EF)628和真实编码器(ER)630共享的多层神经网络,并且对伪毛发和真实毛发的数据结构的潜在特征进行编码,如本文所述。
在操作640中,训练模块802将外观编码器(Em)632的输出馈送到特征图A 648中。训练模块802使用如上所述的式(1)确定特征图。
在操作642中,训练模块802确定伪重建损失,该伪重建损失是合成的伪图像(iF)668与伪毛发图像(XF)614之间的差异的量度。
在操作646中,训练模块802确定真实重建损失,该真实重建损失是合成的真实图像(iR)670与真实毛发图像(Xr)604之间的差异的量度。
在操作650、662和652中,训练模块802将跨域结构嵌入(e)644的输出分别馈送到伪外观渲染器(GF)656、结构鉴别器(DS)678和真实外观渲染器(GR)630中。跨域结构嵌入(e)644的输出被称为真伪毛发结构。
在操作654中,训练模块802将特征图A 648的输出馈送到真实外观渲染器(GR)630中。特征图A 648的输出提供诸如参考图像(r)620中的毛发的外观和状况的材料特征。在一些示例中,如果特征图A648的位置在合成的真实图像的毛发之外,则该位置被设置为0,其中位置被设置为0的特征图A 648被称为外观图。
在操作660中,训练模块802利用伪外观渲染器656处理跨域结构嵌入(e)644的输出,以生成合成的伪图像(iF)668。基于伪重建损失来训练伪外观渲染器(GF)656,伪重建损失是伪毛发图像(XF)614与合成的伪图像(iF)668之间的差异的量度。该训练在下面描述,并且训练包括伪鉴别器(Df)676。伪外观渲染器(GF)656被训练成根据由伪编码器(EF)628编码的结构伪毛发616重建伪毛发图像(XF)614。伪外观渲染器(GF)656的训练确保了跨域结构嵌入(e)644对来自结构伪毛发(SF)616的足够信息进行编码,而不是学习来渲染各种外观。在一些示例中,伪外观渲染器(GF)656包括两个ResBlk,然后是五个连续的上采样转置卷积层,随后是一个最终卷积层。
在操作662中,训练模块802将跨域结构嵌入(e)644的输出馈送到结构鉴别器(DS)678中。
在操作664中,训练模块802利用真实外观渲染器658处理跨域结构嵌入(e)644的输出、特征图A 648的输出、以及可选地时间条件,以生成合成的真实图像(iR)670。伪外观渲染器(GF)656和真实外观渲染器(GR)658被称为外观渲染子网络。
在一些示例中,伪外观渲染器(GF)656和真实外观渲染器(GR)658不共享权重,因为神经毛发渲染是试图将伪域中的渲染的3D模型映射到真实域中的真实图像的单向平移。在一些示例中,真实外观渲染器(GR)658包括诸如空间自适应反规范化(SPADE)块之类的生成ResBlk,该生成ResBlk之后是若干连续上采样转置卷积层,该连续上采样转置卷积层之后是一个或更多个最终卷积层。生成ResBlk使用不同尺度的外观特征图ar,s(a sub(r,s))来调节合成的真实图像(iR)670的生成,其中“a”是特征图,“r”是真实图像,“s”是真实图像的毛发的结构。伪外观渲染器(GF)656和真实外观渲染器(GR)658分别被称为伪外观渲染器神经子网络和真实外观渲染器神经子网络。
在操作666中,训练模块802确定时间条件并且将时间条件馈送到真实外观渲染器(GR)658中,该时间条件是先前帧的扭曲结果(W)W(it-1,wt)。操作666中的时间条件用于对修改用作视频的图像序列I={i0,i1,…,iT}的结果进行平滑。如下所述,图13示出了在没有用W(it-1,wt)作为输入来训练真实外观渲染器(GR)658的情况下,图像的序列可能是不连贯的。3D毛发模型(h)602用于确定每对帧t-1和t的毛发运动流wt,其用于将图像I从t-1到t扭曲为W(i,wt)。当生成当前帧it时,将先前帧的扭曲结果W(it-1,wt)馈送到真实外观渲染器(GR)658中。图8的时间训练模块808被配置成固定系统600中除真实外观渲染器(GR)658的权重之外的所有权重,并且继续使用式(7)的目标,但是随机地,例如50%的时间,将真实毛发图像(XR)604连结到真实外观渲染器(GR)658在时间
Figure BDA0004138779270000231
的生成ResBlk的条件输入。具有操作666中的时间条件的实际分支的生成流水线是/>
Figure BDA0004138779270000232
使得如果先前帧被输入为时间条件,则系统600学习保持时间一致性,或者如果时间条件被设置为零,则系统600从头开始随机地生成。式(2)是用于顺序生成的渲染等式。式(2):/>
Figure BDA0004138779270000233
Figure BDA0004138779270000234
在操作672中,训练模块802在训练期间根据合成的伪图像(if)668确定伪鉴别器(Df)676的值,以确定系统600的权重的改变。
在操作674中,训练模块802在训练期间根据合成的真实图像(iR)670确定真实鉴别器(DR)680的值,以确定系统600的权重的改变。
在操作682中,训练模块802根据式(3)确定作为神经网络的伪鉴别器(DF)676的对抗损失。合成的伪图像(iF)668可以表示为Gf(Ef(sf))。式(3):
Figure BDA0004138779270000241
在操作684中,训练模块802根据式(4)确定结构鉴别器(DS)678的对抗损失/增益。结构鉴别器(DS)678是根据式(4)区分跨域结构嵌入(e)644内的真实域和伪域的潜在特征图的神经网络。结构鉴别器(DS)678确保在跨域结构嵌入(e)644内的伪编码器(Ef)628与真实编码器(Er)630之间共享的潜在空间是域不变的。伪域中使用的数据结构不如真实域中使用的数据结构复杂。在一些示例中,跨域结构嵌入(e)644、结构真实毛发(SR)618、真实编码器(Er)630和结构鉴别器(DS)678被称为结构自适应子网络。式(4):
Figure BDA0004138779270000242
其中,L是结构鉴别器(DS)678的损失/增益,并且E是SR上的期望值。
在操作686中,训练模块802根据式(5)确定真实鉴别器(DR)680的对抗损失/增益。合成的真实图像(iR)670可以表示为Gr(Er(Sr),ar,s sub r))。式(5):
Figure BDA0004138779270000243
训练模块802根据式(6)确定感知损失,以测量成对数据中的高级特征距离。式(6):
Figure BDA0004138779270000244
其中,ψl(i)确定输入图像I在第1选定层的激活特征图。训练目标用式(7)表示:
Figure BDA0004138779270000251
其中λp、λs和λg是可以由训练模块802调整的权重。
本领域技术人员将认识到,可以使用系统600的变型。例如,以下示例中的一个或更多个可以用于系统600中:不同数目的共享层634、不同数目的ResBlk和不同数目的神经网络层。一个或更多个操作可以是可选的或以不同的顺序执行。训练模块802和/或制作模块810被配置成执行系统600的操作。
图7示出了根据一些示例的神经毛发渲染系统700。训练模块802训练图6的系统600以确定权重804。然后,系统600被重建为具有权重806的神经毛发渲染系统700,权重806是权重804的与伪编码器(Ef)628、外观编码器(Em)632、跨域结构嵌入(e)644和特征图A648以及真实外观渲染器(GR)658对应的部分。制作模块810使用神经毛发渲染系统700根据输入3D毛发模型(h)602、真实毛发图像(XR)604和参考图像(r)620生成合成的真实图像(Ir)670。渲染等式如式(8)中所公开的这样表示。式(8):Rn(h,r,c)=Gr(Ef(Sf(h,c)),Em(r)),其中Sf(h,c)呈现结构编码的图像结构伪毛发(Sf)616,h是3D毛发模型602,c是3D毛发模型602的摄像装置参数。操作666中的时间条件用于生成如本文所讨论的更平滑的图像的序列。
图8示出了根据一些示例的训练812和制作814。在训练812中,训练模块802使用训练数据800作为输入来确定权重804。在制作814中,制作模块810使用具有权重806的神经毛发渲染系统700来执行神经毛发渲染系统700的操作。
图9示出了根据一些示例的训练数据800。图9中所示的是3D毛发模型902、输入904、覆盖毛发模型906、结构图908、输入910和毛发结构912。在一个示例中,为了训练系统600,训练模块802使用3D毛发模型902作为3D毛发模型(h)602;使用输入904、910作为真实毛发图像(XR)604;使用覆盖毛发模型906作为伪毛发图像(XF)614;使用结构图908作为结构伪毛发(SF)616;以及使用毛发结构912作为结构真实毛发(SR)618。在该示例中,训练模块802不需要生成结构真实毛发(SR)618、伪毛发图像(XF)614和结构真实毛发(SR)。
在另一示例中,训练模块802生成结构真实毛发(SR)618、伪毛发图像(XF)614和结构真实毛发(SR),并且使用训练数据800来训练神经网络以生成结构真实毛发(SR)618、伪毛发图像(XF)614和结构真实毛发(SR)。
在另一示例中,训练模块802被配置成根据用作真实毛发图像(XR)604的输入904或输入910和用作3D毛发模型(h)602的3D毛发模型902生成结构真实毛发(SR)618、伪毛发图像(XF)614和结构真实毛发(SR)618。例如,训练数据800可以包括公开可获得的照片,公开可获得的照片包括各种发型、形状和外观。这些公开可获得的照片可以以不同的组合与许多3D毛发模型(h)602组合以创建训练集。在一个示例中,训练数据800是65000个图像,其中5000个图像用于测试,60000个图像用于训练。3D毛发模型(h)602的数目是10到20。
在一些示例中,为了训练和测试,创建3D毛发模型(h)602的五个模型作为3D毛发模型902。3D毛发模型902中的每一个包括10个至50个多边形条带。3D毛发模型902彼此不同,以具有宽范围的3D毛发模型902。训练模块802使用一个或更多个3D毛发模型902来与训练数据800形成训练对,其中输入904或输入910与3D毛发模型902中的一个或更多个配对。训练模块802使用这些对来训练系统600。在一些示例中,覆盖毛发模型906、结构图908和毛发结构912中的一个或更多个不用于训练,而是用于测试经训练的神经毛发渲染系统700是否足够灵活以为其中系统600未被训练的3D毛发模型902提供良好结果。
返回到图8,训练模块802如下训练系统600。在第一操作中,训练模块802针对参考图像(r)620和真实毛发图像(XR)604使用相同的图像Rn。使用式(7)的目标和生成对抗网络(GAN)训练方法将整个系统600一起训练以确定权重804。在第二操作中,训练模块802利用操作666中的时间条件来训练真实外观渲染器(GR)658。仅将系统600的真实部分用于训练,并且将操作666中的时间条件50%的时间或另一百分比设置为真。当操作666中的时间条件为真时,在生成当前帧it时,将先前帧的扭曲结果W(it-1,wt)馈送到真实外观渲染器(GR)658中。
在一些示例中,训练模块802使用式(7)并且使用0.0001的学习率以用于第一操作的基本训练,以及使用0.000001的学习率以用于第二操作的时间训练。根据一些示例,训练数据800的图像的训练分辨率是512×512像素。根据一些示例,对于式(7),权重λp、λs和λg被设置为10、1和1。可以使用训练参数的其他值。
在用权重804训练系统600之后,然后制作模块810可以使用具有权重806的神经毛发渲染系统700。权重806是与伪编码器(Ef)628、跨域结构嵌入(e)644、特征图A 648和真实外观渲染器658对应的权重804。另外,训练模块802可以具有附加权重以用于由神经网络生成结构伪毛发(SF)616。制作模块810可以驻留在客户端设备102上。制作模块810用于生成图10A、图10B和图10C所示的结果。制作模块810被配置成从客户端设备102获取图像或一系列图像作为真实毛发图像(XR)604,并且基于对参考图像(r)620和3D毛发模型(h)602的选择来生成合成的真实图像(iR)670。在一些示例中,参考图像(r)620默认为真实毛发图像(XR)604。制作模块810使一个或更多个图像显示到客户端设备102。制作模块810为客户端设备102的用户提供用户界面以选择3D毛发模型(h)602、真实毛发图像(XR)604和参考图像(r)620中的一个或更多个。客户端设备102提供摄像装置参数。制作模块810经由消息收发系统100提供客户端设备102的用户发布或发送合成的真实图像(iR)670或一系列合成的真实图像(iR)670的能力,所述发布或发送可以是临时的。合成的真实图像(iR)670可以用结合图11描述的增强来修改。
图10A、图10B和图10C示出了使用神经毛发渲染系统700来生成合成图像的结果。神经毛发渲染系统700处理输入和参考图像1002以生成新毛发结构1004和合成图像1006。图9中使用的3D毛发模型(h)602可以从新毛发结构1004和新毛发结构1012推断出来。
输入和参考图像1002对应于真实毛发图像(XR)604和参考图像(r)620。输入图像1008对应于真实毛发图像(XR)604。参考图像1010对应于参考图像(r)620。新毛发结构1004和新毛发结构1012对应于结构伪毛发(SF)616。合成图像1006和合成图像1014对应于作为神经毛发渲染系统700的输出的真实图像(iR)670。
通过应用3D毛发模型(h)602,可以修改人的毛发形状但保持原始毛发外观和取向,这由列合成图像1006示出,其中输入和参考图像1002是相同的。然而,当输入图像1008和参考图像1010不同时,可以根据3D毛发模型(h)602的结构和参考图像1010(参考图像1010对应于参考图像(r)620)的外观来改变来自输入图像1008(输入图像1008可以是真实毛发图像(XR)604)的毛发的结构和外观。
图11示出了根据一些示例的示出合成图像1118的示例应用。图11中示出的是移动设备1102、屏幕1104、编辑和增强1106、3D毛发模型1108、发送1110、输入图像1112、保存1114、参考图像1116、合成图像1118和摄像装置1120。制作模块810使用具有权重806的神经毛发渲染系统700来根据参考图像1116、3D毛发模型1108和输入图像1112生成合成图像1118。参照图7和图11,合成图像1118对应于合成的真实图像(iR)670;参考图像1116对应于参考图像(r)620;3D毛发模型1108对应于3D毛发模型(h)602;并且输入图像1112对应于真实毛发图像(XR)604。移动设备1102还可以向制作模块810提供摄像装置参数(c),其可以用于生成合成图像1118和结构伪毛发(SF)616的过程中。
用户(未示出)可以将参考图像1116选为与输入图像1112相同,输入图像1112未示出但对应于图10A、图10B和图10C的输入和参考图像1002。输入图像1112是由移动设备1102从摄像装置1120生成的图像或一系列图像。参考图像1116是由用户选择或由制作模块810建议的图像。在一些示例中,参考图像1116默认为输入图像1112。3D毛发模型1108由用户选择或由制作模块810建议。用户可以将合成图像1118作为消息或临时消息进行发送1110,将合成图像1118发布到故事等。用户可以编辑和增强1106合成图像1118,其中增强1106使得能够编辑图像以及添加增强。用户可以将图像保存1114到社交网络100和用户所关联的存储设备。
图12示出了与其他方法和消融相比,使用神经毛发渲染系统的结果的视觉比较。表1示出了神经毛发渲染系统700与其他方法和消融的数值比较。图12和表1彼此结合公开。
表1示出了方法、较低的值较好的弗雷歇起始距离(Fréchet InceptionDistance,FID)、较高的值较好的交并比(Intersection-over-Union,IoU)、以及较高的值较好的像素精度(Accuracy)。FID测量两个域之间的分布距离。通过以下操作来确定交并比(IoU)和像素精度(Accuracy):对根据各种方法的生成的图像应用预训练的毛发分割模型以获得毛发掩模,然后将毛发掩模与作为输入毛发掩模的基准真相毛发掩模进行比较。分割模型预测与基准真相最类似的毛发掩模。
Figure BDA0004138779270000281
/>
Figure BDA0004138779270000291
如表1所示,图形渲染器指示传统的图形渲染流水线,该传统的图形渲染流水线与神经毛发渲染系统700的57.08FID、86.74IoU和96.45的Accuracy相比,以98.62FID、55.77IoU和86.17Accuracy劣于神经毛发渲染系统700。CycleGAN、UNIT和DRIT是用于图像平移和图形渲染的神经网络。CycleGAN、UNIT和DRIT都劣于神经毛发渲染系统700。无(w/o)共享潜在空间(SL)和空间鉴别器(SD)(w/o SL和SD)指示神经毛发渲染系统700的结果,其中系统600在没有跨域结构嵌入(e)644或结构鉴别器(DS)678的情况下被训练。无SD指示没有用结构鉴别器(DS)678训练系统600的情况下神经毛发渲染系统700的结果。神经毛发渲染系统700的FID的低值指示神经毛发渲染系统700可以生成包含与来自真实域的图像类似的毛发外观分布的高保真毛发图像。高IoU和Accuracy指示神经毛发渲染系统700使真实域数据结构与伪域数据结构之间的结构间隙最小化,使得合成的真实图像可以遵循3D模型的手动设计的结构的能力。
另外,w/o SL和SD以及w/o SD的不佳性能指示结构鉴别器(DS)678和跨域结构嵌入(e)644都是系统600训练和神经毛发渲染系统700的操作的重要部分。结构鉴别器(DS)678促使毛发结构特征是域不变的,并且跨域结构嵌入(e)644使得伪域结构和真实域结构能够被一起表示。共享编码器层有助于神经毛发渲染系统700找到嵌入毛发结构知识的公共潜在空间,该毛发结构知识是真实域和伪域在编码毛发时使用的不同数据结构的不变量。
图12示出了使用神经毛发渲染系统700的结果与其他方法和消的视觉比较。图12中所示的是3D毛发模型1202、输入1204、神经毛发渲染系统700、w/o SD 1208、w/o SL和SD1210、图形渲染1212、CycleGAN 1214、UNIT 1216和DRIT 1218。参照图7和图12,输入1204用于参考图像(r)620和真实毛发图像604(XR)。
图形渲染1212、CycleGAN 1214、UNIT 1216和DRIT 1218具有更清晰的毛发掩模,使得3D毛发模型1202与神经毛发渲染系统700相比是明显的。3D毛发模型1202是明显的意味着它看起来是在图像上渲染的伪毛发。图12示出了w/o SD 1208和w/o SL和SD 1210定性地表现得比神经毛发渲染系统700差。
图13示出了根据一些示例的时间调节结果。参照图7和图13,参考图像1300是参考图像(r)620;顶部行的图像1306是真实毛发图像604(XR)的原始输入;中间行的图像1308是在操作666的时间条件没有开启的情况下的合成的真实图像(iR)670;并且,底部行的图像1310是在操作666的时间条件开启的情况下的合成的真实图像(iR)670。
操作654的条件和外观取自参考图像1300,其中图9的顶部行上的3D毛发模型902用作3D毛发模型(h)602。图13示出操作666的时间条件在减少闪变方面有效。
在具有框1302B和1304B以及特写1303B和1305B的底部行的图像1310中,分别示出了在没有操作666的时间调节的情况下存在闪变。较密的毛发指示仍然存在来自先前图像的毛发的部分图像。具有框1302A和1304A以及特写1303A和1305A的顶部行的图像1306分别指示闪变已被减小。较不密的毛发指示,当毛发的位置更确定并且不绘制多次时,闪变减少。
图14示出了根据一些示例的用于神经毛发渲染的方法1400。方法1400开始于操作1402,在操作1402中,处理伪毛发的3D模型和描绘具有第一头部的第一人的第一真实毛发图像以生成伪毛发结构,该伪毛发结构包括根据第一人的第一头部的取向而定向的伪毛发的3D模型。例如,参照图7,在操作608中,训练模块802处理3D毛发模型(h)602和真实毛发图像604(XR)以生成结构伪毛发(SF)616。
方法1400在操作1404继续,在操作1404中,使用伪毛发编码器神经子网络对伪毛发结构进行编码以生成编码的伪毛发结构。例如,参照图7,在操作636中,训练模块802将伪编码器(EF)628的输出馈送到跨域结构嵌入(e)644中以生成编码的伪毛发结构。
方法1400在操作1406继续,在操作1406中,使用跨域结构嵌入神经子网络来处理编码的伪毛发结构以生成真伪毛发结构。例如,参照图7,在操作636中,训练模块802将伪编码器(EF)628的输出馈送到跨域结构嵌入(e)644中以生成编码的伪毛发结构。
方法1400在操作1408继续,在操作1408中,使用外观编码器神经子网络对描绘具有第二头部的第二人的第二真实毛发图像进行编码以生成外观图。例如,在操作626中,训练模块802用外观编码器(Em)632处理参考图像(r)620,以编码来自参考图像(r)620的毛发的材料属性。并且,在操作640中,训练模块802将外观编码器(Em)632的输出馈送到特征图A648中。训练模块802使用如上所述的式(1)确定外观图。
方法1400在操作1410继续,在操作1410中,使用真实外观渲染器神经子网络来处理外观图和真伪毛发结构以生成合成的真实图像。例如,参照图7,在操作664中,训练模块802利用真实外观渲染器658处理跨域结构嵌入(e)644的输出、特征图A 648的输出、以及可选地操作666中的时间条件,以生成合成的真实图像(iR)670。
方法1400可以包括结合图7和本文中描述的一个或更多个操作。制作模块810被配置成执行方法1400的操作。方法1400的一个或更多个操作是可选的。方法1400的操作可以以不同的顺序执行。方法1400可以包括一个或更多个附加操作。
图15示出了根据一些示例的用于训练用于神经毛发渲染的神经网络的方法1500。方法1500开始于操作1502,在操作1502中,对包括由真实域和伪域共享的跨域结构嵌入的神经网络进行训练,其中训练包括结构鉴别器。例如,如图6和本文中所公开的,系统600包括真实域和伪域,并且包括由真实域和伪域共享的跨域结构嵌入(e)644。另外,结构鉴别器(DS)678用于训练跨域结构嵌入(e)644,以获得用于编码结构真实毛发(SR)618和编码结构伪毛发(SF)616的结构之间的一致性。
方法1500在操作1504继续,在操作1504中,通过将先前合成真实图像馈送到真实外观渲染子网络中来针对时间条件训练真实域。如结合图6和本文中所公开的,操作666中的时间条件指示先前帧的扭曲结果W(it-1,wt)被反馈到真实外观渲染子网络(GR)658中。首先在没有操作666中的时间条件的情况下训练系统600,然后在预定百分比的时间(例如50%的时间)随机使用时间条件的情况下仅训练真实域。
方法1500可选地根据图7继续重新配置系统600并且执行方法1400的操作。方法1500可以包括一个或更多个附加操作。方法1500的一个或更多个操作是可选的。方法1500的一个或更多个操作可以以不同的顺序执行。
下面描述另外的示例。示例1是一种方法,包括:使用设备的至少一个处理器处理伪毛发的三维(3D)模型和描绘具有头部的人的真实毛发图像以生成伪毛发结构,伪毛发结构包括根据人的头部的取向而定向的伪毛发的3D模型;处理伪毛发的3D模型和描绘具有头部的人的真实毛发图像以渲染伪毛发图像,伪毛发图像包括具有根据人的头部的取向渲染的伪毛发的3D模型的人的图像;使用伪毛发编码器神经子网络对伪毛发结构进行编码以生成编码的伪毛发结构;处理真实毛发图像以生成真实毛发结构,真实毛发结构包括在人的头部上描绘的毛发的3D模型;使用真实毛发编码器神经子网络对真实毛发结构进行编码以生成编码的真实毛发结构;使用跨域结构嵌入神经子网络来处理编码的伪毛发结构和编码的真实毛发结构以生成真伪毛发结构;使用伪外观渲染器神经子网络处理真伪毛发结构以生成合成伪图像;用伪毛发图像处理合成伪图像以确定伪毛发图像与合成伪图像之间的伪重建损失;以及基于所确定的伪重建损失来调整伪毛发编码器神经子网络、真实毛发编码器神经子网络、跨域结构嵌入神经子网络和伪外观渲染器神经子网络的权重。
在示例2中,根据示例1的主题包括使用外观编码器神经子网络对真实毛发图像进行编码以生成特征向量;处理特征向量以生成外观图;使用真实外观渲染器神经子网络,对外观图和真伪毛发结构进行处理,以生成合成真实图像;用描绘人的图像处理合成真实图像,以确定描绘人的图像与合成真实图像之间的真实重建损失;以及基于所确定的真实重建损失来调整伪毛发编码器神经子网络、真实毛发编码器神经子网络、跨域结构嵌入神经子网络、伪外观渲染器神经子网络、外观编码器神经子网络和真实外观渲染器神经子网络的权重。
在示例3中,根据示例2的主题包括:基于来自第一先前合成真实图像和第二先前合成真实图像的伪毛发的3D模型的扭曲来确定毛发运动流;并且其中,使用真实外观渲染器神经子网络进行的处理还包括:使用真实外观渲染器神经子网络处理外观图、真伪毛发结构、以及毛发运动流以生成合成真实图像。
在示例4中,根据示例2至示例3的主题包括,其中,伪毛发编码器神经子网络和真实毛发编码器神经子网络包括一个或更多个公共层。
在示例5中,根据示例2至示例4的主题包括,其中基于与真实毛发图像相关联的摄像装置设置来渲染伪毛发图像。
在示例6中,根据示例2至示例5的主题包括,其中处理特征向量以生成外观图包括:基于特征向量的位置在真实毛发结构外部,将位置的值设置为0。
在示例7中,根据示例6的主题包括使用结构鉴别器神经子网络来处理编码的伪毛发结构和编码的真实毛发结构以确定结构鉴别器神经子网络的对抗损失;使用伪鉴别器神经子网络处理伪毛发图像和合成伪图像以确定伪鉴别器神经子网络的对抗损失;使用真实鉴别器神经子网络处理真实毛发图像和合成真实图像以确定真实鉴别器神经子网络的对抗损失;以及确定伪外观渲染器神经子网络与真实外观渲染器神经子网络的层之间的感知损失。
在示例8中,根据示例7的主题包括,基于伪重建损失、真实重建损失、结构鉴别器神经子网络的对抗损失、伪鉴别器神经子网络的对抗损失和真实鉴别器神经子网络的对抗损失,训练伪毛发编码器神经子网络、真实毛发编码器神经子网络、跨域结构嵌入神经子网络、伪外观渲染器神经子网络、外观编码器神经子网络、真实外观渲染器神经子网络、伪外观渲染器神经子网络、真实鉴别器神经子网络、伪鉴别器神经子网络和结构鉴别器神经子网络。
示例9是包括指令的至少一种机器可读介质,所述指令在由处理电路执行时使处理电路执行操作以实现示例1至示例8中的任何一个。
示例10是一种包括实现示例1至示例8中的任何一个的装置的设备。
示例11是一种实现示例1至示例8中任何一个的系统。
示例12是一种实现示例1至示例8中任何一个的方法。
机器架构
图16是机器1600的图解表示,在该机器1600内可以执行用于使机器1600执行本文所讨论的方法中的任何一个或更多个方法的指令1608(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令1608可以使机器1600执行本文所描述的方法中的任何一个或更多个方法。指令1608将通用的非编程的机器1600转换成被编程成以所描述的方式执行所描述和所示出的功能的特定机器1600。机器1600可以作为独立设备操作或者可以耦接(例如,联网)到其他机器。在联网的部署中,机器1600可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1600可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器1600采取的动作的指令1608的任何机器。此外,虽然仅示出了单个机器1600,但是术语“机器”还应被视为包括单独或联合执行指令1608以执行本文中讨论的方法中的任何一个或更多个方法的机器的集合。例如,机器1600可以包括客户端设备102或者形成消息收发服务器系统108的一部分的若干个服务器设备中的任何一个。在一些示例中,机器1600还可以包括客户端和服务器系统二者,其中在服务器侧执行特定方法或算法的某些操作,并且在客户端侧执行特定方法或算法的某些操作。
机器1600可以包括可以被配置成经由总线1640彼此通信的处理器1602、存储器1604和输入/输出(I/O)部件1638。根据一些示例,处理器1602可以被称为计算机处理器。在示例中,处理器1602(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另外的处理器或其任何合适的组合)可以包括例如执行指令1608的处理器16016和处理器1610。术语“处理器”旨在包括多核处理器,该多核处理器可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。虽然图16示出了多处理器1602,但是机器1600可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
存储器1604包括处理器1602可以经由总线1640访问的主存储器1612、静态存储器1614和存储单元1616。主存储器1604、静态存储器1614和存储单元1616存储实现本文中所描述的方法或功能中的任何一个或更多个方法或功能的指令1608。指令1608还可以在其被机器1600执行期间完全地或部分地驻留在主存储器1612内、在静态存储器1614内、在存储单元1616内的机器可读介质1618内、在处理器1602中的至少一个处理器内(例如,在处理器的高速缓存存储器内)或其任何合适的组合内。
I/O部件1638可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等的各种组件。包括在特定机器中的特定I/O部件1638将取决于机器的类型。例如,便携式机器诸如移动电话可以包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将理解的是,I/O部件1638可以包括图16中未示出的许多其他组件。在各种示例中,I/O部件1638可以包括用户输出部件1624和用户输入部件1626。用户输出部件1624可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号生成器等。用户输入部件1626可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和力的触摸屏、或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
在其他示例中,I/O部件1638可以包括生物识别部件1628、运动部件1630、环境部件1632、或定位部件1634以及各种其他部件。例如,生物识别部件1628包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,声音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1630包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)。
环境部件1632包括例如:一个或更多个摄像装置(具有静止图像/照片和视频能力)、照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。
关于摄像装置,客户端设备102可以具有摄像装置系统,该摄像装置系统包括例如客户端设备102的前表面上的前置摄像装置和客户端设备102的后表面上的后置摄像装置。前置摄像装置可以例如用于捕获客户端设备102的用户的静止图像和视频(例如,“自拍”),然后可以用上述增强数据(例如,过滤器)对该静止图像和视频进行增强。例如,后置摄像装置可以用于以更传统的摄像装置模式捕获静止图像和视频,这些图像类似地使用增强数据进行增强。除了前置摄像装置和后置摄像装置之外,客户端设备102还可以包括用于捕获360°照片和视频的360°摄像装置。
此外,客户端设备102的摄像装置系统可以包括双后置摄像装置(例如,主摄像装置以及深度感测摄像装置),或者甚至在客户端设备102的前后侧上包括三重、四重或五重后置摄像装置配置。例如,这些多摄像装置系统可以包括广角摄像装置、超广角摄像装置、长焦摄像装置、微距摄像装置和深度传感器。
定位部件1634包括位置传感器部件(例如,GPS接收器部件)、海拔传感器部件(例如,检测可以得到海拔的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
可以使用各种各样的技术来实施通信。I/O部件1638还包括通信部件1636,通信部件16316可操作以经由相应的耦接或连接将机器1600耦接至网络1620或设备1622。例如,通信部件1636可以包括网络接口部件或另一合适的设备以与网络1620对接。在其他示例中,通信部件1636可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、
Figure BDA0004138779270000371
部件(例如,/>
Figure BDA0004138779270000372
低功耗)、/>
Figure BDA0004138779270000373
部件以及经由其他形式提供通信的其他通信部件。设备1622可以是其他机器或各种外围设备中的任何外围设备(例如,经由USB耦接的外围设备)。
此外,通信部件1636可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件16316可以包括射频识别(RFID)标签阅读器部件、NFC智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(UPC)条形码的一维条形码、诸如快速反应(QR)码、Aztec码、数据矩阵、数据符号(Dataglyph)、最大码(MaxiCode)、PDF417、超码(UltraCode)、UCC RSS-2D条形码的多维条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件1616得出各种信息,例如经由因特网协议(IP)地理位置的位置、经由
Figure BDA0004138779270000374
信号三角测量的位置、经由检测可以指示特定位置的NFC信标信号的位置等。
各种存储器(例如,主存储器1612、静态存储器1614以及处理器1602的存储器)以及存储单元1616可以存储由本文中描述的方法或功能中的任何一个或更多个实现或使用的指令和数据结构(例如,软件)中的一组或更多组。这些指令(例如,指令1608)在由处理器1602执行时使各种操作实现所公开的示例。
可以经由网络接口设备(例如,通信部件1636中包括的网络接口部件),使用传输介质并且使用若干公知的传输协议中的任意一种传输协议(例如,超文本传输协议(HTTP)),通过网络1620来发送或接收指令1608。类似地,可以使用传输介质经由到设备1622的耦接(例如,对等耦接)来发送或接收指令1608。
软件架构
图17是示出软件架构1704的框图1700,该软件架构1704可以安装在本文所描述的任何一个或更多个设备上。软件架构1704由硬件例如包括处理器1720、存储器1726和I/O部件1738的机器1702支持。在该示例中,软件架构1704可以被概念化为层的堆栈,在该层的堆栈中,每个层提供特定的功能。软件架构1704包括诸如操作系统1712、库1710、框架1708和应用1706的层。在操作上,应用1706通过软件堆栈来激活API调用1750并且响应于API调用1750来接收消息1752。
操作系统1712管理硬件资源并且提供公共服务。操作系统1712包括例如核1714、服务1716和驱动器1722。核1714充当硬件层与其他软件层之间的抽象层。例如,核1714提供存储器管理、处理器管理(例如,调度)、部件管理、网络和安全设置以及其他功能。服务1716可以为其他软件层提供其他公共服务。驱动器1722负责控制底层硬件或与底层硬件接口。例如,驱动器1722可以包括显示驱动器、摄像装置驱动器、
Figure BDA0004138779270000381
或/>
Figure BDA0004138779270000382
低功耗驱动器、闪存驱动器、串行通信驱动器(例如,USB驱动器)、/>
Figure BDA0004138779270000383
驱动器、音频驱动器、电源管理驱动器等。
库1710提供由应用1706使用的公共低级基础设施。库1710可以包括系统库1718(例如,C标准库),系统库1718提供诸如存储器分配功能、字符串操纵功能、数学功能等的功能。另外,库1710可以包括API库1724,例如媒体库(例如,用于支持各种媒体格式的呈现和操作的库,所述各种媒体格式例如运动图像专家组-4(MPEG4)、高级视频编码(H.264或AVC)、运动图像专家组层-3(MP3)、高级音频编码(AAC)、自适应多速率(AMR)音频编解码器、联合图像专家组(JPEG或JPG)或便携式网络图形(PNG))、图形库(例如,用于在显示器上的图形内容中以二维(2D)和三维(3D)进行呈现的OpenGL框架)、数据库库(例如,提供各种关系数据库功能的SQLite)、web库(例如,提供网页浏览功能的WebKit)等。库1710还可以包括各种各样的其他库1728,以向应用1706提供许多其他API。
框架1708提供由应用1706使用的公共高级基础设施。例如,框架1708提供各种图形用户界面(GUI)功能、高级资源管理以及高级定位服务。框架1708可以提供可由应用1706使用的广泛的其他API,其中的一些API可以专用于特定的操作系统或平台。
在示例中,应用1706可以包括家庭应用1736、联系人应用1730、浏览器应用1732、书籍阅读器应用1734、神经毛发渲染应用1741、定位应用1742、媒体应用1744、消息收发应用1746、游戏应用1748和诸如第三方应用1740的种类广泛的其他应用。神经毛发渲染应用1741可以执行结合图6至15及本文中公开的操作。应用1706是执行程序中限定的功能的程序。可以使用各种编程语言来创建以各种方式构造的应用1706中的一个或更多个,所述编程语言例如面向对象的编程语言(例如,Objective-C、Java或C++)或过程编程语言(例如C或汇编语言)。在特定示例中,第三方应用1740(例如,由特定平台的供应商以外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用)可以是在诸如IOSTM、ANDROIDTM
Figure BDA0004138779270000391
Phone的移动操作系统或其他移动操作系统上运行的移动软件。在该示例中,第三方应用1740可以调用由操作系统1712提供的API调用1750以有助于本文中描述的功能。
处理部件
现在转到图18,示出了处理环境1800的图解表示,处理环境包括处理器1802、处理器1806和处理器1808(例如,GPU、CPU或其组合)。处理器1802被示为耦接至电源1804,并且被示出为包括(永久配置的或临时实例化的)模块,即,训练部件1810、制作部件1812和神经网络部件1814。参照图8,训练部件1810可操作地训练系统600并且执行方法1500;制作部件1812可操作地执行神经毛发渲染系统700的操作;并且,神经网络部件1814可操作地帮助执行用于系统600和神经毛发渲染系统700的训练和制作的操作。如图所示,处理器1802通信地耦接至处理器1806和处理器1808。
术语表
“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。
“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、
Figure BDA0004138779270000401
网络、其他类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(CDMA)连接、全局移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强数据速率的GSM演进(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他数据传输技术、其他长距离协议或其他数据传输技术。
“组件”是指具有以下边界的设备、物理实体或逻辑,该边界由功能或子例程调用、分支点、API或者对特定处理或控制功能提供分区或模块化的其他技术定义。组件可以经由其接口与其他组件组合以执行机器处理。组件可以是被设计用于与其他组件一起使用的经封装的功能硬件单元,并且可以是通常执行相关功能中的特定功能的程序的一部分。组件可以构成软件组件(例如,体现在机器可读介质上的代码)或硬件组件。“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,可以通过软件(例如,应用或应用部分)将一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或者计算机系统的一个或更多个硬件组件(例如,处理器或处理器组)配置为用于执行本文中描述的某些操作的硬件组件。也可以机械地、电子地或以其任何合适的组合来实现硬件组件。例如,硬件组件可以包括被永久地配置成执行某些操作的专用电路系统或逻辑。硬件部件可以是例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)的专用处理器。硬件组件还可以包括通过软件临时配置成执行某些操作的可编程逻辑或电路系统。例如,硬件组件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件被配置,硬件组件就变成被独特地定制成执行所配置的功能的特定机器(或机器的特定组件),而不再是通用处理器。将理解,可以出于成本和时间考虑来决定机械地、在专用且永久配置的电路中还是在临时配置(例如,由软件配置)的电路中实现硬件组件。相应地,短语“硬件组件”(或者“硬件实现的组件”)应当被理解成包含有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。考虑硬件组件被临时配置(例如,被编程)的示例,无需在任一时刻对硬件组件中的每个硬件组件进行配置或实例化。例如,在硬件组件包括通过软件配置成变成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件组件)。软件相应地配置一个或多个特定处理器以例如在一个时刻处构成特定硬件组件,并且在不同的时刻处构成不同的硬件组件。硬件组件可以向其他硬件组件提供信息以及从其他硬件组件接收信息。因此,所描述的硬件组件可以被认为通信地耦接。在同时存在多个硬件组件的情况下,可以通过在两个或更多个硬件组件之间或之中(例如,通过适当的电路和总线)的信号传输来实现通信。在其中多个硬件组件在不同时间处被配置或被实例化的示例中,可以例如通过将信息存储在多个硬件组件访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件组件之间的通信。例如,一个硬件组件可以执行操作,并且将该操作的输出存储在其通信地耦接到的存储器设备中。然后,其他硬件组件可以在随后的时间访问存储器设备以检索所存储的输出并对所存储的输出进行处理。硬件组件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。本文所述的示例方法的各种操作可以至少部分地由临时地被配置(例如,由软件)或永久地被配置成执行相关操作的一个或更多个处理器来执行。无论是临时地被配置还是永久地被配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的组件。如本文中使用的,“处理器实现的组件”是指使用一个或更多个处理器实现的硬件组件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器1602或处理器实现的部件来执行。此外,所述一个或更多个处理器还可以操作成支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)进行访问。某些操作的执行可以分布在处理器之间,不是仅驻留在单个机器内,而是跨多个机器被部署。在一些示例中,处理器或处理器实现的组件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例中,处理器或处理器实现的组件可以跨若干地理位置而分布。
“计算机可读存储介质”是指机器存储介质和传输介质两者。因此,这些术语包括存储设备/介质和载波/调制数据信号两者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。复数形式“计算机可读介质”可以被称为“多个计算机可读介质”。
“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送者设置。替选地,访问时间可以是默认设置或者由接收者指定的设置。无论设置技术如何,消息都是暂时的。
“机器存储介质”是指存储可执行指令、例程和数据的单个或多个存储设备和介质(例如,集中式或分布式数据库,以及相关联的高速缓存和服务器)。因此,该术语应被视为包括但不限于固态存储器以及光学和磁介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,所述载波、调制数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。
“非暂态计算机可读存储介质”是指能够存储、编码或携载由机器执行的指令的有形介质。
“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有助于软件或数据的通信。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指使其特性中的一个或更多个特性以将信息编码在信号中的方式来设置或改变的信号。术语“传输介质”和“信号介质”指相同的事物并且可以在本公开内容中互换使用。

Claims (20)

1.一种方法,包括:
使用设备的至少一个处理器处理伪毛发的三维(3D)模型和描绘具有第一头部的第一人的第一真实毛发图像以生成伪毛发结构,所述伪毛发结构包括根据所述第一人的第一头部的取向而定向的所述伪毛发的3D模型;
使用伪毛发编码器神经子网络对所述伪毛发结构进行编码以生成编码的伪毛发结构;
使用跨域结构嵌入神经子网络来处理所述编码的伪毛发结构以生成真伪毛发结构;
使用外观编码器神经子网络对描绘具有第二头部的第二人的第二真实毛发图像进行编码以生成外观图;以及
使用真实外观渲染器神经子网络来处理所述外观图和所述真伪毛发结构以生成合成真实图像。
2.根据权利要求1所述的方法,还包括:
基于来自两个先前的合成真实图像的所述伪毛发的3D模型的扭曲来确定毛发运动流;并且其中,使用所述真实外观渲染器神经子网络进行的处理还包括:
使用所述真实外观渲染器神经子网络来处理所述外观图、所述真伪毛发结构、以及所述毛发运动流以生成所述合成真实图像。
3.根据权利要求1所述的方法,其中,使用所述外观编码器神经子网络进行的编码还包括:
使用所述外观编码器神经子网络对描绘具有所述第二头部的所述第二人的第二真实毛发图像进行编码以生成特征图;以及
基于所述特征图的位置在所述合成真实图像的毛发的外部,将所述位置的值设置为0,以生成所述外观图。
4.根据权利要求1所述的方法,还包括:
使得在所述设备的屏幕上显示所述合成真实图像。
5.根据权利要求4所述的方法,还包括:
使得在所述设备的屏幕上显示所述伪毛发的3D模型;以及
接收对所述伪毛发的3D模型的选择。
6.根据权利要求1至4中任一项所述的方法,其中,所述伪毛发编码器神经子网络、所述跨域结构嵌入神经子网络、所述外观编码器神经子网络和所述真实外观渲染器神经子网络是多层神经网络。
7.根据权利要求1至4中任一项所述的方法,其中,在没有合成的真实图像的情况下,基于多个第一真实毛发图像和多个伪毛发的3D模型来训练所述伪毛发编码器神经子网络、所述跨域结构嵌入神经子网络、所述外观编码器神经子网络、以及所述真实外观渲染器神经子网络。
8.根据权利要求1至4中任一项所述的方法,其中,所述第一真实毛发图像和所述第二真实毛发图像是相同的图像。
9.一种系统,包括:
一个或更多个计算机处理器;以及
一个或更多个计算机可读介质,其存储指令,所述指令在由所述一个或更多个计算机处理器执行时使所述系统执行包括以下的操作:
处理伪毛发的三维(3D)模型和描绘具有第一头部的第一人的第一真实毛发图像以生成伪毛发结构,所述伪毛发结构包括根据所述第一人的第一头部的取向而定向的所述伪毛发的3D模型;
使用伪毛发编码器神经子网络对所述伪毛发结构进行编码以生成编码的伪毛发结构;
使用跨域结构嵌入神经子网络来处理所述编码的伪毛发结构以生成真伪毛发结构;
使用外观编码器神经子网络对描绘具有第二头部的第二人的第二真实毛发图像进行编码以生成外观图;以及
使用真实外观渲染器神经子网络来处理所述外观图和所述真伪毛发结构以生成合成真实图像。
10.根据权利要求9所述的系统,其中,所述指令还使所述系统执行包括以下的操作:
基于来自两个先前的合成真实图像的所述伪毛发的3D模型的扭曲来确定毛发运动流;并且其中,使用所述真实外观渲染器神经子网络进行的处理还包括:
使用所述真实外观渲染器神经子网络来处理所述外观图、所述真伪毛发结构、以及所述毛发运动流以生成所述合成真实图像。
11.根据权利要求9或10所述的系统,其中,使用所述外观编码器神经子网络进行的编码还包括:
使用所述外观编码器神经子网络对描绘具有所述第二头部的所述第二人的第二真实毛发图像进行编码以生成特征图;以及
基于所述特征图的位置在所述合成真实图像的毛发的外部将所述位置的值设置为0,以生成所述外观图。
12.根据权利要求9或10所述的系统,其中,所述指令还使所述系统执行包括以下的操作:
使得在所述系统的屏幕上显示所述合成真实图像。
13.一种方法,包括:
使用设备的至少一个处理器处理伪毛发的三维(3D)模型和描绘具有头部的人的真实毛发图像以生成伪毛发结构,所述伪毛发结构包括根据所述人的头部的取向而定向的所述伪毛发的3D模型;
处理所述伪毛发的3D模型和描绘具有所述头部的所述人的真实毛发图像以渲染伪毛发图像,所述伪毛发图像包括具有根据所述人的头部的取向渲染的所述伪毛发的3D模型的所述人的图像;
使用伪毛发编码器神经子网络对所述伪毛发结构进行编码以生成编码的伪毛发结构;
处理所述真实毛发图像以生成真实毛发结构,所述真实毛发结构包括在所述人的头部上描绘的毛发的3D模型;
使用真实毛发编码器神经子网络对所述真实毛发结构进行编码以生成编码的真实毛发结构;
使用跨域结构嵌入神经子网络来处理所述编码的伪毛发结构和所述编码的真实毛发结构以生成真伪毛发结构;
使用伪外观渲染器神经子网络来处理所述真伪毛发结构以生成合成伪图像;
用所述伪毛发图像处理所述合成伪图像,以确定所述伪毛发图像与所述合成伪图像之间的伪重建损失;以及
基于所确定的伪重建损失来调整所述伪毛发编码器神经子网络、所述真实毛发编码器神经子网络、所述跨域结构嵌入神经子网络和所述伪外观渲染器神经子网络的权重。
14.根据权利要求13所述的方法,还包括:
使用外观编码器神经子网络对所述真实毛发图像进行编码以生成特征向量;
处理所述特征向量以生成外观图;
使用真实外观渲染器神经子网络来处理所述外观图和所述真伪毛发结构,以生成合成真实图像;
用描绘人的图像处理所述合成真实图像,以确定所述描绘人的图像与所述合成真实图像之间的真实重建损失;以及
基于所确定的真实重建损失来调整所述伪毛发编码器神经子网络、所述真实毛发编码器神经子网络、所述跨域结构嵌入神经子网络、所述伪外观渲染器神经子网络、所述外观编码器神经子网络和所述真实外观渲染器神经子网络的权重。
15.根据权利要求14所述的方法,还包括:
基于来自第一先前合成真实图像和第二先前合成真实图像的所述伪毛发的3D模型的扭曲来确定毛发运动流;并且其中,使用所述真实外观渲染器神经子网络进行的处理还包括:
使用所述真实外观渲染器神经子网络来处理所述外观图、真伪毛发结构、以及所述毛发运动流以生成所述合成真实图像。
16.根据权利要求14或15所述的方法,其中,所述伪毛发编码器神经子网络和所述真实毛发编码器神经子网络包括一个或更多个公共层。
17.根据权利要求14至16中任一项所述的方法,其中,基于与所述真实毛发图像相关联的摄像装置设置来渲染所述伪毛发图像。
18.根据权利要求14至17中任一项所述的方法,其中,处理所述特征向量以生成外观图包括:
基于所述特征向量的位置在所述真实毛发结构的外部,将所述位置的值设置为0。
19.根据权利要求14至18中任一项所述的方法,还包括:
使用结构鉴别器神经子网络来处理所述编码的伪毛发结构和所述编码的真实毛发结构,以确定所述结构鉴别器神经子网络的对抗损失;
使用伪鉴别器神经子网络来处理所述伪毛发图像和所述合成伪图像以确定所述伪鉴别器神经子网络的对抗损失;
使用真实鉴别器神经子网络处理所述真实毛发图像和所述合成真实图像,以确定所述真实鉴别器神经子网络的对抗损失;以及
确定所述真实外观渲染器神经子网络的层与所述伪外观渲染器神经子网络的层之间的感知损失。
20.根据权利要求19所述的方法,还包括:
基于所述伪重建损失、所述真实重建损失、所述结构鉴别器神经子网络的对抗损失、所述伪鉴别器神经子网络的对抗损失、以及所述真实鉴别器神经子网络的对抗损失,训练所述伪毛发编码器神经子网络、所述真实毛发编码器神经子网络、所述跨域结构嵌入神经子网络、所述伪外观渲染器神经子网络、所述外观编码器神经子网络、所述真实外观渲染器神经子网络、所述伪外观渲染器神经子网络、所述真实鉴别器神经子网络、所述伪鉴别器神经子网络以及所述结构鉴别器神经子网络。
CN202180064855.9A 2020-08-22 2021-08-20 用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络 Pending CN116250014A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062706522P 2020-08-22 2020-08-22
US62/706,522 2020-08-22
PCT/US2021/071239 WO2022047463A1 (en) 2020-08-22 2021-08-20 Cross-domain neural networks for synthesizing image with fake hair combined with real image

Publications (1)

Publication Number Publication Date
CN116250014A true CN116250014A (zh) 2023-06-09

Family

ID=77822061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180064855.9A Pending CN116250014A (zh) 2020-08-22 2021-08-20 用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络

Country Status (5)

Country Link
US (1) US11521362B2 (zh)
EP (1) EP4200745A1 (zh)
KR (1) KR20230054414A (zh)
CN (1) CN116250014A (zh)
WO (1) WO2022047463A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995781B2 (en) 2022-11-15 2024-05-28 Snap Inc. Messaging system with neural hair rendering

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113763228B (zh) * 2020-06-01 2024-03-19 北京达佳互联信息技术有限公司 图像处理方法、装置、电子设备及存储介质
WO2022047463A1 (en) 2020-08-22 2022-03-03 Snap Inc. Cross-domain neural networks for synthesizing image with fake hair combined with real image
US11360733B2 (en) 2020-09-10 2022-06-14 Snap Inc. Colocated shared augmented reality without shared backend
US11880766B2 (en) 2020-10-16 2024-01-23 Adobe Inc. Techniques for domain to domain projection using a generative model
US11670104B1 (en) * 2020-11-13 2023-06-06 Amazon Technologies, Inc. System for determining embedding from multiple inputs
US11900534B2 (en) * 2021-07-30 2024-02-13 The Boeing Company Systems and methods for synthetic image generation
US11949527B2 (en) 2022-04-25 2024-04-02 Snap Inc. Shared augmented reality experience in video chat

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515456B2 (en) * 2018-03-22 2019-12-24 Adobe Inc. Synthesizing hair features in image content based on orientation data from user guidance
CN109408653B (zh) * 2018-09-30 2022-01-28 叠境数字科技(上海)有限公司 基于多特征检索和形变的人体发型生成方法
US11074751B2 (en) * 2018-12-04 2021-07-27 University Of Southern California 3D hair synthesis using volumetric variational autoencoders
CN112233212A (zh) * 2019-06-28 2021-01-15 微软技术许可有限责任公司 人像编辑与合成
WO2022047463A1 (en) 2020-08-22 2022-03-03 Snap Inc. Cross-domain neural networks for synthesizing image with fake hair combined with real image

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995781B2 (en) 2022-11-15 2024-05-28 Snap Inc. Messaging system with neural hair rendering

Also Published As

Publication number Publication date
EP4200745A1 (en) 2023-06-28
US11521362B2 (en) 2022-12-06
KR20230054414A (ko) 2023-04-24
US20220058880A1 (en) 2022-02-24
WO2022047463A1 (en) 2022-03-03
US20230079136A1 (en) 2023-03-16

Similar Documents

Publication Publication Date Title
CN116601675A (zh) 虚拟服装试穿
CN116250014A (zh) 用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络
CN114930399A (zh) 使用基于表面的神经合成的图像生成
CN117957582A (zh) 将身体网格混合到外部网格中
CN117321640A (zh) 包括面部合成的交互式增强现实内容
CN117157674A (zh) 用于第三方应用的增强现实内容中的面部合成
CN115769260A (zh) 基于光度测量的3d对象建模
CN117999584A (zh) 使用外部网格使现实世界对象变形
CN116113991A (zh) 用于关节动画的运动表示
CN116324898A (zh) 在消息收发系统中提供基于ar的化妆
CN115697508A (zh) 游戏结果覆盖系统
CN116250012A (zh) 用于图像动画的方法、系统和计算机可读存储介质
CN116917938A (zh) 整个身体视觉效果
CN116724314A (zh) 生成式对抗网络操纵的图像效果
CN115803783A (zh) 从2d图像重建3d对象模型
CN116529748A (zh) 消息系统中基于ar的化妆产品集
CN116324702A (zh) 为基于ar的化妆选择颜色值
US20220207819A1 (en) Light estimation using neural networks
CN117136381A (zh) 整个身体分割
CN116457821A (zh) 使用神经网络的对象重新照明
US20240046516A1 (en) Estimating 3d scene representations of images
US20220207786A1 (en) Flow-guided motion retargeting
CN117136404A (zh) 从歌曲中提取伴奏的神经网络
CN116322914A (zh) 用于增强现实连续性的qr生成系统
CN116235500A (zh) 生成用于分享到外部应用的媒体内容项

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