CN116601675A - 虚拟服装试穿 - Google Patents

虚拟服装试穿 Download PDF

Info

Publication number
CN116601675A
CN116601675A CN202180082663.0A CN202180082663A CN116601675A CN 116601675 A CN116601675 A CN 116601675A CN 202180082663 A CN202180082663 A CN 202180082663A CN 116601675 A CN116601675 A CN 116601675A
Authority
CN
China
Prior art keywords
image
target
mask
clothing
person
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
CN202180082663.0A
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 CN116601675A publication Critical patent/CN116601675A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06T11/002D [Two Dimensional] image generation
    • 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
    • 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/001Texturing; Colouring; Generation of texture or colour
    • G06T3/18
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration by the use of histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • 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
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • 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/20212Image combination
    • G06T2207/20224Image subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/16Cloth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Probability & Statistics with Applications (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

消息收发系统执行虚拟服装试穿。虚拟服装试穿的方法可以包括访问目标衣物图像和穿上源衣物的人的人图像,并处理人图像以生成源衣物掩模和人掩模。方法还可以包括处理源衣物掩模、人掩模、目标衣物图像和目标衣物掩模以生成翘曲,该翘曲指示要应用于目标衣物图像的翘曲。方法还可以包括:处理目标衣物以根据翘曲对目标衣物进行翘曲,从而生成翘曲目标衣物图像;处理翘曲目标衣物图像以与人图像混合,从而生成具有混合目标衣物图像的人;以及处理具有混合目标衣物图像的人以填充孔洞,从而生成输出图像。

Description

虚拟服装试穿
优先权要求
本申请要求于2020年12月11日提交的美国专利申请序列号17/119,202的优先权权益,该申请通过引用其整体并入本文中。
技术领域
本公开内容的实施方式一般涉及在消息收发系统内使用神经网络的虚拟服装试穿。更具体地,但不作为限制,本公开内容的实施方式涉及处理穿着源服装的人的图像和目标服装的图像,并使用神经网络处理图像来生成穿着目标服装的人的图像。
背景技术
使人能够虚拟试穿服装是复杂的,因为人的图像和目标服装的图像可能在尺寸、形状或照明方面不匹配。传统的计算机图形方法实现起来非常复杂,而且计算要求高,这可能使应用的开发昂贵,而且这可能使应用对移动设备的计算要求高。此外,传统的计算机图形方法在实现足够真实的图像以使人能够评估他们是否有兴趣购买他们已经虚拟地试穿的服装方面具有困难。
附图说明
在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述类似的部件。为了容易地标识对任何特定要素或动作的讨论,附图标记中的一个或多个最高有效数字是指该要素在其中首次被引入的图号。在附图的各图中以示例而非限制的方式示出了一些实施方式,在附图中:
图1是根据一些示例的其中可以部署本公开内容的联网环境的图解表示。
图2是根据一些示例的具有客户端侧功能和服务器侧功能二者的消息收发系统的图解表示。
图3是根据一些示例的在数据库中维护的数据结构的图解表示。
图4是根据一些示例的消息的图解表示。
图5是根据一些示例的访问限制过程的流程图。
图6示出了根据一些实施方式的虚拟服装试穿模块的操作。
图7示出了根据一些实施方式的接口模块的操作。
图8示出了根据一些实施方式的接口模块的操作。
图9示出了根据一些实施方式的虚拟服装试穿模块的操作。
图10示出了根据一些实施方式的解析模块的操作。
图11示出了根据一些实施方式的对衣物翘曲模块904进行训练的操作。
图12示出了根据一些实施方式的修补模块的训练。
图13示出了根据一些实施方式的对填充模块进行训练的操作。
图14示出了根据一些实施方式的混合模块的操作。
图15示出了根据一些实施方式的虚拟服装试穿模块的结果。
图16示出了根据一些实施方式的协调模块的操作。
图17示出了根据一些实施方式的对协调模块进行训练的操作。
图18示出了根据一些实施方式的协调模块908的操作。
图19示出了根据一些实施方式的后处理的操作。
图20示出了根据一些实施方式的数据集的元素。
图21示出了根据一些实施方式的翘曲的操作。
图22示出了根据一些实施方式的对神经网络进行训练的操作。
图23示出了根据一些实施方式的虚拟试穿的方法。
图24是根据一些示例的呈计算机系统形式的机器的图解表示,在该计算机系统内可以执行一组指令以使该机器执行本文中讨论的方法中的任何一种或更多种。
图25是示出其内可以实现示例的软件架构的框图。
图26是根据一些示例的处理环境的图解表示。
具体实施方式
以下描述包括体现本公开内容的说明性实施方式的系统、方法、技术、指令序列及计算机器程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节以提供对本发明主题的各种实施方式的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践本发明主题的实施方式。一般地,公知的指令实例、协议、结构和技术不一定详细地被示出。
公开了包括虚拟服装试穿的消息收发系统。虚拟服装试穿系统采用可以从互联网(诸如从网上商店)下载的要试穿的服装的图像,并将其与人的图像一起处理,使得人可以评估他们穿着服装的样子。
虚拟服装试穿系统利用几个神经网络并且可以在几个阶段中处理图像。虚拟服装试穿系统可以首先确定如何对目标服装或要试穿的服装进行翘曲,使得目标服装可以以与人的图像中的源服装相似的方式被定形状和定尺寸。然后,目标服装被翘曲并与源服装上的人的图像混合。目标服装可以具有白色背景,使得与人的图像合并的翘曲的目标服装图像将产生孔洞或白色空间。
然后,虚拟服装试穿系统将填充孔洞或白色空间。然后,虚拟服装试穿系统将通过使用来自源服装的照明来使目标服装协调,使得目标服装的照明与人的图像的照明更接近地匹配并看起来更自然。然后,虚拟服装模块将确定源服装的纹理,并将该纹理叠加在目标服装上,使得目标服装对于人的图像具有逼真的纹理。
可以用数据集对用于虚拟服装试穿系统的神经网络进行端对端训练,该数据集包括穿目标服装的人的图像和处于标准位置(诸如平铺)的目标服装的单独图像,该单独图像通常用于在网上服装商店中展示服装。
技术问题是如何实现足够高质量图像,使得人可以基于他们穿着服装的样子来确定他们是否有兴趣购买服装。虚拟服装试穿系统通过用多个神经网络在如上所述的一系列阶段中执行图像处理来实现高质量的虚拟试穿图像,用真实图像对所述多个神经网络进行端对端训练。
技术问题是如何训练神经网络,以在目标服装已经与人的图像混合之后填充白色空间。虚拟服装试穿系统用真实数据集对卷积神经网络执行训练,其中损失是在网络的输出与人的真实输入之间确定的。并且其中,损失还由孔洞掩模与输出孔洞掩模之间的差异确定。通过从翘曲衣物的掩模减去目标衣物的掩模来确定孔洞掩模。通过从输出图像中的目标衣物的掩模减去目标衣物的掩模来确定输出孔洞掩模。此外,输入图像与孔洞掩模混合以产生孔洞。训练神经网络以填充白色空间产生了更逼真的输出图像,其中,为覆盖白色空间而生成的图像的一部分与输出图像的其余部分更自然地混合。
一些实施方式生成目标衣物与从人的图像中提取的源衣物之间的翘曲变换。在没有明确确定目标衣物与由目标人所穿的衣物之间的对应关系的情况下生成翘曲变换。翘曲变换的任务是对目标衣物进行翘曲,使得目标衣物与从人的图像中提取的衣物相同或相似。用卷积神经网络执行翘曲变换,其中,监督学习与真实图像一起使用。
一些实施方式转向服装的特定物品。例如,在一个实施方式中,用T恤的真实数据集来训练神经网络。
联网计算环境
图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提供与对神经网络2206进行训练以及对输入图像602和衣物图像604进行处理以生成图6的生成图像608有关的各种功能。虚拟服装试穿系统214可以为用户设备102提供以下装置,其下载用于虚拟服装试穿的经训练的神经网络2206以及下载诸如结合图6至图8所描述的用于使用虚拟服装试穿的用户接口。虚拟服装试穿系统214可以提供对用于虚拟试穿的参考衣物图像2006的数据库的访问,该数据库可以由用户设备102远程检索。
数据架构
图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中的各种图像和视频相关联。
数据库120还可以参照图20和图22存储数据集2200和神经网络2204的权重2206。
数据通信架构
图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示出了根据一些实施方式的虚拟服装试穿模块606的操作600。虚拟服装试穿模块606采用输入图像602和服装图像604,并处理图像以生成处理后的图像608。AR图像608使输入图像602中的人能够虚拟地试穿服装图像604的服装。
人图像602是可以来自摄像装置(诸如图7的摄像装置704)的人的输入图像。根据一些实施方式,图像由包括强度和颜色值的像素组成。图像可以包括信息的通道或层,其中,每个通道包括像素的信息。图像具有指示宽度和高度的像素的维度。
根据一些实施方式,服装图像604是T恤的正面图像。在一些实施方式中,输入图像602是人的正面图像,以及服装图像604是平铺的T恤的图像。在一些实施方式中,服装图像604是来自可以用于购买的服装的购物网站的图像。在一些实施方式中,输入图像602是移动设备或计算设备上的图像,该图像是人正在购物时的人的实况图像。输入图像602的人可以通过观看AR图像608来评估服装,该AR图像608可以显示在移动设备或计算设备的屏幕上。接口模块610被配置成针对如本文所公开的虚拟服装试穿模块606的用户提供接口。
图7示出了根据一些实施方式的接口模块610的操作700。用户正在使用其中输入图像702显示在屏幕702上的客户端设备102。作为对在输入图像702中的人上试穿服装的选项,接口模块610正在显示服装图像706、服装图像708和服装图像710。在一些实施方式中,输入图像702是来自摄像装置704的实况图像。在一些实施方式中,输入图像702是来自消息收发系统的图像。在一些实施方式中,输入图像702是保存的图像。在一些实施方式中,输入图像702是来自互联网的图像。
图8示出了根据一些实施方式的接口模块610的操作800。用户已经选择了用于针对图7的输入图像702中的人的虚拟服装试穿的服装图像708。接口模块610用输入图像702和服装图像708作为输入调用了虚拟服装试穿模块606,该接口模块610处理图像以输出生成的图像804。在一些实施方式中,接口模块610和虚拟服装试穿模块606在客户端设备102上执行其操作。
图9示出了根据一些实施方式的虚拟服装试穿模块606的操作900。根据一些实施方式,虚拟服装试穿模块606包括解析模块902、衣物翘曲模块904、修补模块906和协调模块908。
图10示出了根据一些实施方式的解析模块902的操作1000。解析模块602处理输入图像1004以生成图像分割1006、服装分段1004和人分段1006。
根据一些实施方式,服装掩模1008和人掩模1010从图像分割1006得出。在一些实施方式中,解析模块902是具有多个层次语义图的经训练的卷积神经网络(CNN)。例如,第一层次语义图可以包括人类的身体部位的节点(诸如具有与躯干连接的上臂),以及躯干可以指示与头部的连接。头部节点可以具有与到节点头发、面部和帽子的第二层次语义图的图间连接。第二层次语义图的帽子节点可以具有与到节点盖和头盔的第三层次语义图的图间连接。节点之间的连接可以是定向的。层次语义图可以在构建CNN时由人设计。在一些实施方式中,利用层次语义图之间的卷积层重复层次语义图。
在一些实施方式中,使用真实数据集来训练解析模块602以训练权重902。真实数据集包括数千个图像,所述数千个图像具有关于与层次语义图的节点相对应的语义部分标签上的逐像素注释。图像包括各种姿势的人。图像分割1006可以用一个或更多个标签标记不同分段中的每一个分段。如图所示,解析模块902对图像分割1006的各个分段进行标记,以及作为衬衫的服装被分离出来并变成服装掩模1008。将图像分段变成掩模的过程是将不是服装的一部分的所有像素变黑,以及将是服装的一部分的所有像素变为白色。可以使用包括输入图像1004和图像分割1006的真实数据集来训练解析模块902。根据一些实施方式,可以基于由解析模块902生成的图像分割1006与真实图像分割1006之间的逐位损失确定损失。根据一些实施方式,可以使用反向传播和梯度下降来调整权重902。
图11示出了根据一些实施方式的对衣物翘曲模块904进行训练的操作1100。第一特征提取CNN 1110处理衣物掩模1102和衣物图像1104,并将输出特征馈送到特征匹配CNN1114中。第二特征提取CNN 1112处理人掩模1106和来自人的衣物掩模1108,并将输出特征馈送到特征匹配1114中。特征匹配CNN 1114处理从第一特征提取CNN 1110和第二特征提取CNN 1112提取的特征,并生成相关图1116。CNN 1118处理相关图1116并生成薄板样条(TPS)变换参数(Θ)。在一些实施方式中,解析模块902基于TPS变换参数生成翘曲网格1122。在一些实施方式中,根据处理相关图1116或来自特征匹配1114的输出生成翘曲网格1122。翘曲1124用衣物掩模1102和衣物图像1104处理翘曲网格1122,以生成翘曲衣物图像1126和翘曲衣物的掩模1132。
基于来自人的衣物掩模1108与翘曲衣物的掩模1132之间的掩模损失1134以及基于翘曲衣物图像1126与图像和掩模图像1128之间的图像损失1130确定衣物翘曲模块904的输出的损失。图像和掩模图像1128是来自人的衣物掩模1108和人的图像诸如输入图像1004的组合。根据一些实施方式,使用像素损失来确定损失。
第一特征提取CNN 1110、第二特征提取CNN 1112、特征匹配CNN 1114、预测TPSCNN 1118、TPS参数(parms)1120和翘曲1124中的每一个可以是具有权重的CNN。根据一些实施方式,这些中的所有可以在端对端流水线中进行训练,其中,如本文所公开确定损失以及学习方法是具有梯度下降的反向传播。
训练集包括人掩模1106、来自人的衣物掩模1108、衣物掩模1102、衣物图像1104以及图像和掩模1128。衣物图像1104是与人掩模1106的人所穿的相同的衣物,但衣物图像1104的衣物被不同地翘曲。训练集被用作真实数据集,以从端对端训练衣物翘曲模块904。可以使用等式(1)来确定两个翘曲网格1122之间的损失。等式(1):Lreg(Gx,Gy)=∑i=-1,1xy|Gx(x+i,y)-Gx(x,y)|+∑j=-1,1xy|Gx(x,y+j)-Gx(x,y)|,其中,G是翘曲网格,以及x和y是翘曲网格上的坐标。
图12示出了根据一些实施方式的修补模块906的训练1200。翘曲衣物图像1126从来自图11的衣物翘曲模块904输出1202或者生成。混合模块1206采用翘曲衣物图像1126和具有衣物图像的人1204并处理输入以生成混合衣物图像1208。具有衣物图像的人1204可以是具有衣物图像1104的人图像。
混合衣物图像1208包括孔洞1 1210和孔洞2 1212,所述孔洞1 1210和孔洞2 1212是翘曲衣物图像1126与具有衣物图像的人1204所穿的衣物不同的尺寸的结果。孔洞1 1210和孔洞2 1212可以是白色,因为翘曲衣物图像1126具有白色背景。
填充模块1214处理混合衣物图像1208并生成输出图像1218。根据一些实施方式,通过输出图像1218和真实图像1220的逐位比较来确定用于训练的损失。真实图像1220是从其得出如图11中所描述的人掩模1106和来自人的衣物掩模1108的人的图像。在一些实施方式中,填充模块1214是生成式CNN(GCNN)或生成式对抗CNN(GAN),所述生成式CNN(GCNN)或生成式对抗CNN(GAN)具有基于图像损失1216通过梯度下降训练的权重。
图13示出了根据一些实施方式的对填充模块1214进行训练的操作1300。通过从翘曲衣物的掩模1132中减去衣物掩模1102来处理来自图11的翘曲衣物的掩模1132和衣物掩模1102,以生成孔洞掩模1302。添加白色孔洞模块1306处理来自图12的真实图像1220和孔洞掩模1302,以生成输入图像1308。填充模块1214处理输入图像1308以生成可以与输出图像1126相同或相似的输出图像1310以及输出孔洞掩模1312。
基于输出孔洞掩模1312与孔洞掩模1302之间的孔洞损失1314以及输出图像1310与真实图像1220之间的图像损失1316来确定损失。通过来自输出图像1310的衣物的掩模减去衣物掩模1102来确定输出孔洞掩模1312。填充模块1214可以是具有基于确定的损失通过梯度下降训练的权重的GNN。
图14示出了根据一些实施方式的混合模块1404的操作1400。来自图13的预处理1304处理衣物掩模图像1402和孔洞掩模1302,以生成输入图像1308。来自图12的填充模块1214处理输入图像1308并生成输出图像1310。混合模块1404处理输出图像1310和输出孔洞掩模1312,以生成混合输出图像1314。真实图像1316被示出以用于比较。
图15示出了根据一些实施方式的虚拟服装试穿模块606的结果。在示例1 1506中,输入图像1502和服装图像1510由虚拟服装试穿模块606处理以生成生成的图像1504。在示例2 1508中,输入图像1502和服装图像1510由虚拟服装试穿模块606处理以生成生成的图像1504。
图16示出了根据一些实施方式的协调模块908的操作。协调模块908处理混合输出图像1604和来自人的衣物掩模1602以生成输出图像1606。协调模块908可以在与来自人的衣物掩模1602对应的输出图像1606的一部分上修改原始照明1612。混合输出图像1604可以将来自图9的服装图像604并入混合输出图像1604中,但是照明可能不符合输出图像1606的其余部分中的图像照明1610,因为服装图像604的照明可能与图6的输入图像602的图像照明610不同。
图17示出了根据一些实施方式的对协调模块908进行训练的操作1700。全局鉴别器1706处理真实图像1704或虚假图像1702,并确定处理图像是真实的还是虚假的。结合协调模块908来训练全局鉴别器1706,其中,全局鉴别器1706和协调模块908一起是对抗性卷积神经网络。协调模块908处理掩模1710和输出图像1708,以生成修改的输出图像1712,该修改的输出图像1712可以在与掩模1710对应的区域中具有调节的光。
域鉴别器1722处理具有图像的掩模1718和具有图像的补充掩模1720,以确定图像和掩模域1724,该图像和掩模域1724指示掩模区域与没有图像的掩模区域的图像之间的相似性。类似地,域鉴别器1722处理具有图像修改图像的掩模1714和具有修改图像的补充掩模1716,以确定修改的图像和掩模域1726,该修改的图像和掩模域1726指示掩模区域与没有修改图像的掩模区域的修改图像之间的相似性。可以基于使图像和掩模域1724以及修改的图像和掩模域1726的损失最小化来训练协调模块908。
图18示出了根据一些实施方式的协调模块908的操作1800。协调模块908处理输入图像1802以生成输出图像1804。在示例1 1806中,输出图像1804在已经添加有T恤的区域中被变暗1810,以更好地与图像的其余部分的照明一致。在示例2 1808中,输出图像1804的部分被变暗1182以更好地与图像的其余部分的照明一致,以及输出图像1804的部分被变亮1814以更好地与输出图像1804的其余部分的照明一致,该输出图像1804的其余部分不是被添加到图像的T恤的一部分。
图19示出了根据一些实施方式的后处理的操作1900。叠加混合模块1914处理生成图像1910和位移图1904以生成输出图像1916。叠加混合模块1914可以是协调模块908的一部分,或者可以在协调模块908之前或之后执行。输出图像1916包括不在生成图像1910中的纹理1920,该生成图像1910可以与生成图像608相同或相似,并将是通往叠加混合模块1914的流水线中的图像。可以与图9的输入图像602相同或相似的输入图像1902包括纹理1908,并由叠加混合模块1914处理以生成位移图1904。在一些实施方式中,根据对比度受限制自适应直方图均衡化(AHE)(CLAHE)1906处理输入图像1902,该对比度受限制自适应直方图均衡化(AHE)(CLAHE)1906是对比度放大被限制的自适应直方图均衡化,其减少噪声并带出纹理。叠加混合模块1914可以是CNN或ACN,所述CNN或ACN被训练以执行后处理,从而将纹理从输入图像1902添加至生成图像1910。
图20示出了根据一些实施方式的数据集2000的元素。人图像2002是穿着与衣物图像2006中相同衣物的人。根据一些实施方式,人图像2002具有256个像素的高度和192个像素的宽度。像素的数目可以不同。每个像素包括颜色信息,并且可能存在颜色信息的多个通道或层。分段图像2004是针对人所穿的不同衣物被分割成不同分段并被分割成仅包括人的人图像2002。衣物图像2006是人图像2002的人所穿但不是相同形状的衣物的图像。根据一些实施方式,衣物图像2006示出了处于平铺位置的衣物。在一些实施方式中,衣物图像2006示出了处于不同位置的衣物。在一些实施方式中,衣物图像2006是处于标准位置的用于网上销售的衣物。人图像2002、分段图像2004和衣物图像2006可以用于对本文所公开的各种神经网络进行训练的真实输入和输出。
图21示出了根据一些实施方式的翘曲的操作。衣物图像2102是要放在人的图像上的目标衣物(诸如图6的衣物604)。来自人的衣物图像2104是人所穿的当前衣物。翘曲2108的目的是试图对衣物图像2102进行翘曲,并使其以与来自人的衣物图像2104相同的方式翘曲并定尺寸,使得翘曲衣物图像2106将以自然的方式适合于生成图像608的人。
图22示出了根据一些实施方式的对神经网络进行训练的操作。训练集2200可以是诸如来自结合图20公开的数据集的真实数据集。训练模块2202根据梯度下降和反向传播,根据结合神经网络的描述公开的损失来训练神经网络2204。神经网络2204是本文所公开的各种神经网络。权重2206是与神经网络2204相关联的权重和参数。训练模块2202对神经网络2204进行训练以修改权重2206,直到损失低于某个误差阈值。然后,生产模块2208可以使用具有权重2206的神经网络2210来执行本文所描述的各种功能,诸如执行虚拟服装试穿模块606的功能。
图23示出了根据一些实施方式的虚拟试穿的方法2300。方法在操作2302处开始,其中对目标衣物图像和穿上源衣物的人的人图像进行访问。例如,图6的输入图像602是人图像,以及衣物图像604是目标衣物图像。
方法2300在操作2304处继续,其中处理人图像以生成源衣物掩模和人掩模。例如,图10的解析模块902生成人掩模1010,以及服装掩模1008是源衣物掩模。
方法2300在操作2306处继续,其中处理源衣物掩模、人掩模、目标衣物图像和目标衣物掩模以生成翘曲,翘曲指示要应用于目标衣物图像的翘曲。例如,参照图11,源衣物掩模是来自人的衣物掩模1108,人掩模是人掩模1106,目标衣物图像是衣物图像1104,以及目标衣物掩模是衣物掩模1102。翘曲是翘曲网格1122。
方法2300在操作2308处继续,其中处理目标衣物以根据翘曲对目标衣物进行翘曲从而生成翘曲目标衣物图像。例如,图11的翘曲1124对衣物图像1104进行翘曲以生成翘曲衣物图像1126。
方法2300在操作2310处继续,其中处理翘曲目标衣物图像以与人图像混合,从而生成具有混合目标衣物图像的人。例如,参照图12,翘曲衣物图像1126通过混合模块1206与具有衣物图像的人1204混合以生成混合衣物图像1208。
方法2300在操作2312处继续,其中处理具有混合目标衣物图像的人以填充孔洞,从而生成输出图像,孔洞是翘曲目标衣物图像与源衣物的图像之间的差异。例如,参照图12,填充模块1214处理混合衣物图像1208以填充孔洞1 1210和孔洞2 1212,从而生成输出图像1218。
方法2300可以包括一个或更多个附加操作。方法2300的操作中的一个或更多个操作可以可选。方法2300的操作中的一个或更多个操作可以以不同顺序执行。
机器架构
图24是机器2400的图解表示,在该机器2400内可以执行用于使机器2400执行本文所讨论的方法中的任何一个或更多个方法的指令2408(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令2408可以使机器2400执行本文所描述的方法中的任何一个或更多个方法。指令2408将通用的非编程的机器2400转换成被编程成以所描述的方式执行所描述和所示出的功能的特定机器2400。机器2400可以作为独立设备操作或者可以耦接(例如,联网)到其他机器。在联网的部署中,机器2400可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器2400可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器2400采取的动作的指令2408的任何机器。此外,虽然仅示出了单个机器2400,但是术语“机器”还应被视为包括单独或联合执行指令2408以执行本文中讨论的方法中的任何一个或更多个方法的机器的集合。例如,机器2400可以包括客户端设备102或者形成消息收发服务器系统108的一部分的若干个服务器设备中的任何一个。在一些示例中,机器2400还可以包括客户端和服务器系统二者,其中在服务器侧执行特定方法或算法的某些操作,并且在客户端侧执行特定方法或算法的某些操作。
机器2400可以包括可以被配置成经由总线2440彼此通信的处理器2402、存储器2404和输入/输出(I/O)部件2438。根据一些实施方式,处理器2402可以被称为计算机处理器。在示例中,处理器2402(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另外的处理器或其任何合适的组合)可以包括例如执行指令2408的处理器2406和处理器2410。术语“处理器”旨在包括多核处理器,所述多核处理器可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。虽然图24示出了多个处理器2402,但是机器2400可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
存储器2404包括处理器2402可以经由总线2440访问的主存储器2412、静态存储器2414和存储单元2416。主存储器2404、静态存储器2414和存储单元2416存储实现本文中所描述的方法或功能中的任何一个或更多个方法或功能的指令2408。指令2408还可以在其被机器2400执行期间完全地或部分地驻留在主存储器2412内、在静态存储器2414内、在存储单元2416内的机器可读介质2418内、在处理器2402中的至少一个处理器内(例如,在处理器的高速缓存存储器内)或其任何合适的组合内。
I/O部件2438可以包括用于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量结果等的各种组件。包括在特定机器中的特定I/O部件2438将取决于机器的类型。例如,便携式机器诸如移动电话可以包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将理解的是,I/O部件2438可以包括图24中未示出的许多其他组件。在各种示例中,I/O部件2438可以包括用户输出部件2424和用户输入部件2426。用户输出部件2424可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号生成器等。用户输入部件2426可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和力的触摸屏、或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
在其他示例中,I/O部件2438可以包括生物识别部件2428、运动部件2430、环境部件2432、或定位部件2434以及各种其他部件。例如,生物识别部件2428包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,声音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件2430包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)。
环境部件2432包括例如:一个或更多个摄像装置(具有静止图像/照片和视频能力)、照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。
关于摄像装置,客户端设备102可以具有摄像装置系统,该摄像装置系统包括例如客户端设备102的前表面上的前置摄像装置和客户端设备102的后表面上的后置摄像装置。前置摄像装置可以例如用于捕获客户端设备102的用户的静止图像和视频(例如,“自拍”),然后可以用上述增强数据(例如,过滤器)对该静止图像和视频进行增强。例如,后置摄像装置可以用于以更传统的摄像装置模式捕获静止图像和视频,这些图像类似地使用增强数据进行增强。除了前置摄像装置和后置摄像装置之外,客户端设备102还可以包括用于捕获360°照片和视频的360°摄像装置。
此外,客户端设备102的摄像装置系统可以包括双后置摄像装置(例如,主摄像装置以及深度感测摄像装置),或者甚至在客户端设备102的前后侧上包括三重、四重或五重后置摄像装置配置。例如,这些多摄像装置系统可以包括广角摄像装置、超广角摄像装置、长焦摄像装置、微距摄像装置和深度传感器。
定位部件2434包括位置传感器部件(例如,GPS接收器部件)、海拔传感器部件(例如,检测可以得到海拔的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
可以使用各种各样的技术来实施通信。I/O部件2438还包括通信部件2436,通信部件2436可操作以经由相应的耦接或连接将机器2400耦接至网络2420或设备2422。例如,通信部件2436可以包括网络接口部件或另一合适的设备以与网络2420对接。在其他示例中,通信部件2436可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、部件(例如,/>低功耗)、/>部件以及经由其他形式提供通信的其他通信部件。设备2422可以是其他机器或各种外围设备中的任何外围设备(例如,经由USB耦接的外围设备)。
此外,通信部件2436可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件2436可以包括射频识别(RFID)标签阅读器部件、NFC智能标签检测部件、光学阅读器部件(例如,用于检测诸如通用产品代码(UPC)条形码的一维条形码、诸如快速反应(QR)码、Aztec码、数据矩阵、数据符号(Dataglyph)、最大码(MaxiCode)、PDF425、超码(UltraCode)、UCC RSS-2D条形码的多维条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件2436得出各种信息,例如经由因特网协议(IP)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的NFC信标信号的位置等。
各种存储器(例如,主存储器2412、静态存储器2414以及处理器2402的存储器)以及存储单元2416可以存储由本文中描述的方法或功能中的任何一个或更多个实现或使用的指令和数据结构(例如,软件)中的一组或更多组。这些指令(例如,指令2408)在由处理器2402执行时使各种操作实现所公开的示例。
可以经由网络接口设备(例如,通信部件2436中包括的网络接口部件),使用传输介质并且使用若干公知的传输协议中的任意一种传输协议(例如,超文本传输协议(HTTP)),通过网络2420来发送或接收指令2408。类似地,可以使用传输介质经由到设备2422的耦接(例如,对等耦接)来发送或接收指令2408。
软件架构
图25是示出软件架构2504的框图2500,该软件架构2504可以安装在本文所描述的任何一个或更多个设备上。软件架构2504由硬件例如包括处理器2520、存储器2526和I/O部件2538的机器2502支持。在该示例中,软件架构2504可以被概念化为层的堆栈,在该层的堆栈中,每个层提供特定的功能。软件架构2504包括诸如操作系统2512、库2510、框架2508和应用2506的层。在操作上,应用2506通过软件堆栈来激活API调用2550并且响应于API调用2550来接收消息2552。
操作系统2512管理硬件资源并且提供公共服务。操作系统2512包括例如核2514、服务2516和驱动器2522。核2514充当硬件层与其他软件层之间的抽象层。例如,核2514提供存储器管理、处理器管理(例如,调度)、部件管理、网络和安全设置以及其他功能。服务2516可以为其他软件层提供其他公共服务。驱动器2522负责控制底层硬件或与底层硬件对接。例如,驱动器2522可以包括显示驱动器、摄像装置驱动器、低功耗驱动器、闪存驱动器、串行通信驱动器(例如,USB驱动器)、驱动器、音频驱动器、电源管理驱动器等。
库2510提供由应用2506使用的公共低级基础设施。库2510可以包括系统库2518(例如,C标准库),系统库2518提供诸如存储器分配功能、字符串操纵功能、数学功能等的功能。另外,库2510可以包括API库2524,例如媒体库(例如,用于支持各种媒体格式的呈现和操作的库,所述各种媒体格式例如运动图像专家组-4(MPEG4)、高级视频编码(H.264或AVC)、运动图像专家组层-3(MP3)、高级音频编码(AAC)、自适应多速率(AMR)音频编解码器、联合图像专家组(JPEG或JPG)或便携式网络图形(PNG))、图形库(例如,用于在显示器上的图形内容中以二维(2D)和三维(3D)进行呈现的OpenGL框架)、数据库库(例如,提供各种关系数据库功能的SQLite)、web库(例如,提供网页浏览功能的WebKit)等。库2510还可以包括各种各样的其他库2528,以向应用2506提供许多其他API。
框架2508提供由应用2506使用的公共高级基础设施。例如,框架2508提供各种图形用户界面(GUI)功能、高级资源管理以及高级定位服务。框架2508可以提供可以由应用2506使用的广泛的其他API,其中的一些API可以专用于特定的操作系统或平台。
在示例中,应用2506可以包括家庭应用2536、联系人应用2530、浏览器应用2532、书籍阅读器应用2534、虚拟服装试穿2541应用、定位应用2542、媒体应用2544、消息收发应用2546、游戏应用2548和诸如第三方应用2540的广泛分类的其他应用。虚拟服装试穿2541应用可以执行结合图9在本文中公开的操作。应用2506是执行程序中限定的功能的程序。可以使用各种编程语言来创建以各种方式构造的应用2506中的一个或更多个,所述编程语言例如面向对象的编程语言(例如,Objective-C、Java或C++)或过程编程语言(例如C或汇编语言)。在特定示例中,第三方应用2540(例如,由特定平台的供应商以外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用)可以是在诸如IOSTM、ANDROIDTMPhone的移动操作系统或其他移动操作系统上运行的移动软件。在该示例中,第三方应用2540可以激活由操作系统2512提供的API调用2550以有助于本文中描述的功能。
处理部件
现在返回至图26,示出了处理环境2600的图解表示,该处理环境2600包括处理器2602、处理器2606和处理器2608(例如,GPU、CPU或其组合)。处理器2602被示出成耦接至电源2604,并被示出成包括(永久配置的或临时实例化的)模块,即训练部件2610、生产部件2612和神经网络部件2614。参照图22,训练部件2610操作上训练神经网络2204;生产部件2612操作上执行神经网络2210和用户界面功能的操作;以及神经网络部件2614操作上协助执行用于训练神经网络2204和神经网络2204的生产的操作。如所示,处理器2602通信地耦接至处理器2606和处理器2608二者。
术语表
“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这些指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。
“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、其他类型的网络或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(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.一种方法,包括:
访问目标衣物图像和穿上源衣物的人的人图像;
处理所述人图像以生成源衣物掩模和人掩模;
处理所述源衣物掩模、所述人掩模、所述目标衣物图像和目标衣物掩模以生成翘曲,所述翘曲指示要应用于所述目标衣物图像的翘曲;
处理目标衣物以根据所述翘曲对所述目标衣物进行翘曲,从而生成翘曲目标衣物图像;
处理所述翘曲目标衣物图像以与所述人图像混合,从而生成具有混合目标衣物图像的人;以及
处理所述具有混合目标衣物图像的人以填充孔洞,从而生成输出图像,所述孔洞是所述翘曲目标衣物图像与所述源衣物的图像之间的差异。
2.根据权利要求1所述的方法,在处理所述翘曲目标衣物图像之后,还包括:
处理所述翘曲目标衣物图像的掩模以减去所述目标衣物掩模,从而生成减法掩模;以及
处理所述具有混合目标衣物图像的人,以包括来自所述减法掩模的孔洞。
3.根据权利要求2所述的方法,还包括:
处理所述输出图像以生成输出衣物掩模;
处理所述输出衣物掩模以减去所述目标衣物掩模,从而生成输出掩模;以及
处理所述输出图像以将所述输出图像与所述输出掩模和所述具有混合目标衣物的人混合,以生成修改的输出图像。
4.根据权利要求3所述的方法,还包括:
处理所述修改的输出图像以根据所述源衣物的图像的照明调节照明。
5.根据权利要求1所述的方法,其中,用卷积神经网络来执行所述源衣物掩模、所述人掩模、所述目标衣物图像和所述目标衣物掩模的处理以生成所述翘曲。
6.根据权利要求5所述的方法,还包括:
使用其中所述目标衣物图像是所述源衣物的图像的真实数据集来训练所述卷积神经网络,其中,所述训练基于确定所述翘曲目标衣物图像的掩模与所述源衣物的掩模之间的第一损失以及所述翘曲目标衣物图像与所述源衣物的图像之间的第二损失。
7.根据权利要求1至6中任一项所述的方法,其中,所述目标衣物图像是处于平铺位置的所述目标衣物的图像。
8.根据权利要求1至6中任一项所述的方法,其中,所述人掩模是黑白图像,其中不是所述人的图像的一部分的所有像素被设置成黑色以及是所述人的图像的一部分的所有像素被分配成白色。
9.根据权利要求1至6中任一项所述的方法,其中,处理所述目标衣物以对所述目标衣物进行翘曲还包括:
处理所述目标衣物以根据所述翘曲对所述目标衣物进行翘曲,从而生成对所述目标衣物图像进行翘曲的所述翘曲目标衣物图像,以匹配源衣物图像。
10.根据权利要求1至6中任一项所述的方法,其中,所述人图像的处理由经训练以分割图像的卷积神经网络执行。
11.根据权利要求1至6中任一项所述的方法,其中,用卷积神经网络来处理所述翘曲目标衣物图像以与所述人图像混合,从而生成具有混合目标衣物图像的人。
12.根据权利要求1至6中任一项所述的方法,其中,由卷积神经网络处理所述具有混合目标衣物图像的人以填充孔洞。
13.根据权利要求12所述的方法,还包括:
使用其中所述目标衣物图像是所述源衣物的图像的真实数据集来训练所述卷积神经网络,其中,所述训练基于确定所述人图像与所述输出图像之间的第一损失以及所述翘曲目标衣物图像的掩模和所述目标衣物的掩模的减法与所述输出图像的输出衣物的掩模和所述目标衣物的掩模的减法之间的第二损失。
14.根据权利要求1至6中任一项所述的方法,还包括:
处理所述人图像以生成位移图,所述位移图指示所述源衣物的纹理;以及
处理所述输出图像以将所述位移图与所述输出图像的所述输出衣物的图像叠加并混合。
15.根据权利要求14所述的方法,其中,所述人图像的处理由卷积神经网络执行。
16.根据权利要求14所述的方法,其中,根据对比度受限制自适应直方图均衡化来执行所述人图像的处理。
17.根据权利要求1至6中任一项所述的方法,其中,所述目标衣物是T恤。
18.一种系统,包括:
一个或更多个计算机处理器;以及
存储指令的一个或更多个计算机可读介质,所述指令在由所述一个或更多个计算机处理器执行时使所述系统执行包括以下的操作:
访问目标衣物图像和穿上源衣物的人的人图像;
处理所述人图像以生成源衣物掩模和人掩模;
处理所述源衣物掩模、所述人掩模、所述目标衣物图像和目标衣物掩模以生成翘曲,所述翘曲指示要应用于所述目标衣物图像的翘曲;
处理所述目标衣物以根据所述翘曲对所述目标衣物进行翘曲,从而生成翘曲目标衣物图像;
处理所述翘曲目标衣物图像以与所述人图像混合,从而生成具有混合目标衣物图像的人;以及
处理所述具有混合目标衣物图像的人以填充孔洞,从而生成输出图像,所述孔洞是所述翘曲目标衣物图像与所述源衣物的图像之间的差异。
19.根据权利要求18所述的系统,其中,第一图像和第二图像是相同的图像,以及其中,所述指令还使所述系统在处理所述翘曲目标衣物图像之后执行包括以下的操作:
处理所述翘曲目标衣物图像的掩模以减去所述目标衣物掩模,从而生成减法掩模;以及
处理所述具有混合目标衣物图像的人以包括来自所述减法掩模的孔洞。
20.一种包括指令的非暂态计算机可读存储介质,所述指令在由计算机处理时配置所述计算机以执行包括以下的操作:
访问目标衣物图像和穿上源衣物的人的人图像;
处理所述人图像以生成源衣物掩模和人掩模;
处理所述源衣物掩模、所述人掩模、所述目标衣物图像和目标衣物掩模以生成翘曲,所述翘曲指示要应用于所述目标衣物图像的翘曲;
处理所述目标衣物以根据所述翘曲对所述目标衣物进行翘曲,从而生成翘曲目标衣物图像;
处理所述翘曲目标衣物图像以与所述人图像混合,从而生成具有混合目标衣物图像的人;以及
处理所述具有混合目标衣物图像的人以填充孔洞,从而生成输出图像,所述孔洞是所述翘曲目标衣物图像与所述源衣物的图像之间的差异。
CN202180082663.0A 2020-12-11 2021-09-24 虚拟服装试穿 Pending CN116601675A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/119,202 US11544884B2 (en) 2020-12-11 2020-12-11 Virtual clothing try-on
US17/119,202 2020-12-11
PCT/US2021/051940 WO2022125167A1 (en) 2020-12-11 2021-09-24 Virtual clothing try-on

Publications (1)

Publication Number Publication Date
CN116601675A true CN116601675A (zh) 2023-08-15

Family

ID=81941826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180082663.0A Pending CN116601675A (zh) 2020-12-11 2021-09-24 虚拟服装试穿

Country Status (5)

Country Link
US (3) US11544884B2 (zh)
EP (1) EP4260286A1 (zh)
KR (1) KR20230118898A (zh)
CN (1) CN116601675A (zh)
WO (1) WO2022125167A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544884B2 (en) * 2020-12-11 2023-01-03 Snap Inc. Virtual clothing try-on
US11670059B2 (en) 2021-09-01 2023-06-06 Snap Inc. Controlling interactive fashion based on body gestures
US11673054B2 (en) 2021-09-07 2023-06-13 Snap Inc. Controlling AR games on fashion items
US11900506B2 (en) * 2021-09-09 2024-02-13 Snap Inc. Controlling interactive fashion based on facial expressions
US11734866B2 (en) 2021-09-13 2023-08-22 Snap Inc. Controlling interactive fashion based on voice
US11651572B2 (en) 2021-10-11 2023-05-16 Snap Inc. Light and rendering of garments
US20230154013A1 (en) * 2021-11-18 2023-05-18 Volkswagen Aktiengesellschaft Computer vision system for object tracking and time-to-collision
US20230334527A1 (en) * 2022-04-13 2023-10-19 Myntra Designs Private Limited System and method for body parameters-sensitive facial transfer in an online fashion retail environment
US11830157B1 (en) * 2022-06-14 2023-11-28 Amazon Technologies, Inc. Graphical user interface presenting user-specific garment renderings
WO2024006570A1 (en) * 2022-07-01 2024-01-04 SUNDO, LLC d.b.a. ZELIG Systems and methods for using machine learning models to effect virtual try-on and styling on actual users
US20240037858A1 (en) * 2022-07-28 2024-02-01 Snap Inc. Virtual wardrobe ar experience
CN115147324B (zh) * 2022-08-01 2024-03-22 聚好看科技股份有限公司 一种人体模型和衣物模型的融合方法及设备
CN116205787A (zh) * 2023-02-10 2023-06-02 阿里巴巴(中国)有限公司 图像处理方法及存储介质
CN117057976B (zh) * 2023-08-04 2024-03-19 南通大学 一种基于局部外观流的虚拟试衣方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4473754B2 (ja) * 2005-03-11 2010-06-02 株式会社東芝 仮想試着装置
US7327860B2 (en) * 2005-05-04 2008-02-05 West Virginia University Conjunctival scans for personal identification
US7840066B1 (en) * 2005-11-15 2010-11-23 University Of Tennessee Research Foundation Method of enhancing a digital image by gray-level grouping
US8401276B1 (en) * 2008-05-20 2013-03-19 University Of Southern California 3-D reconstruction and registration
US9147207B2 (en) * 2012-07-09 2015-09-29 Stylewhile Oy System and method for generating image data for on-line shopping
US9160936B1 (en) * 2014-11-07 2015-10-13 Duelight Llc Systems and methods for generating a high-dynamic range (HDR) pixel stream
US10310616B2 (en) * 2015-03-31 2019-06-04 Ebay Inc. Modification of three-dimensional garments using gestures
US10304227B2 (en) * 2017-06-27 2019-05-28 Mad Street Den, Inc. Synthesizing images of clothing on models
US10706890B2 (en) * 2017-08-24 2020-07-07 Intel Corporation Cinematic space-time view synthesis for enhanced viewing experiences in computing environments
CA3082886A1 (en) * 2017-11-02 2019-05-09 Measur3D, Llc Clothing model generation and display system
US11321769B2 (en) * 2018-11-14 2022-05-03 Beijing Jingdong Shangke Information Technology Co., Ltd. System and method for automatically generating three-dimensional virtual garment model using product description
US11328486B2 (en) * 2019-04-30 2022-05-10 Google Llc Volumetric capture of objects with a single RGBD camera
US10991067B2 (en) * 2019-09-19 2021-04-27 Zeekit Online Shopping Ltd. Virtual presentations without transformation-induced distortion of shape-sensitive areas
CN111325693B (zh) * 2020-02-24 2022-07-12 西安交通大学 一种基于单视点rgb-d图像的大尺度全景视点合成方法
US20210287274A1 (en) * 2020-03-13 2021-09-16 Hai Viet Nguyen Methods and systems for a all-in-one personal fashion coaching and assistance using artificial intelligence and peer-to-peer network databases
US11544884B2 (en) * 2020-12-11 2023-01-03 Snap Inc. Virtual clothing try-on

Also Published As

Publication number Publication date
US11544884B2 (en) 2023-01-03
KR20230118898A (ko) 2023-08-14
US20240062444A1 (en) 2024-02-22
US11830118B2 (en) 2023-11-28
EP4260286A1 (en) 2023-10-18
US20230129747A1 (en) 2023-04-27
US20220189087A1 (en) 2022-06-16
WO2022125167A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US11830118B2 (en) Virtual clothing try-on
CN115552403B (zh) 用于媒体内容项的私人集合的邀请媒体覆盖物
CN114930399A (zh) 使用基于表面的神经合成的图像生成
CN117897734A (zh) 基于身体姿势控制交互式时尚
CN115777113B (zh) 用于重新展示内容项的消息系统
CN115917608A (zh) 增强现实内容项中的机器学习
CN117157667A (zh) 服装分割
CN116250014A (zh) 用于合成具有与真实图像结合的伪毛发的图像的跨域神经网络
CN116508062A (zh) 自适应骨骼关节平滑
CN117916774A (zh) 基于身体网格对定制网格进行变形
CN115668887A (zh) 用于媒体内容项的共享集合的邀请媒体覆盖
CN115668119A (zh) 用于消息收发系统的具有标贴的回复界面
CN115668888A (zh) 特色内容集合界面
CN116438788A (zh) 媒体内容回放和评论管理
KR20230019491A (ko) 게임 결과 오버레이 시스템
CN116324898A (zh) 在消息收发系统中提供基于ar的化妆
CN115885247A (zh) 用于启动应用的视觉搜索
CN116113991A (zh) 用于关节动画的运动表示
CN116250012A (zh) 用于图像动画的方法、系统和计算机可读存储介质
CN116261850A (zh) 用于实时虚拟效果的骨骼跟踪
CN116917938A (zh) 整个身体视觉效果
CN116235194A (zh) 媒体内容传输和管理
CN115803783A (zh) 从2d图像重建3d对象模型
CN116724314A (zh) 生成式对抗网络操纵的图像效果
CN116324702A (zh) 为基于ar的化妆选择颜色值

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