CN116457821A - 使用神经网络的对象重新照明 - Google Patents
使用神经网络的对象重新照明 Download PDFInfo
- Publication number
- CN116457821A CN116457821A CN202180077457.0A CN202180077457A CN116457821A CN 116457821 A CN116457821 A CN 116457821A CN 202180077457 A CN202180077457 A CN 202180077457A CN 116457821 A CN116457821 A CN 116457821A
- Authority
- CN
- China
- Prior art keywords
- illumination
- attribute
- image
- input image
- lighting
- 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
Links
- 238000005286 illumination Methods 0.000 title claims abstract description 274
- 238000013528 artificial neural network Methods 0.000 title abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 95
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000002156 mixing Methods 0.000 claims abstract description 6
- 238000003860 storage Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 6
- 230000003472 neutralizing effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 43
- 230000004048 modification Effects 0.000 description 33
- 238000012986 modification Methods 0.000 description 33
- 230000015654 memory Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 26
- 230000009466 transformation Effects 0.000 description 24
- 230000008569 process Effects 0.000 description 23
- 230000008859 change Effects 0.000 description 17
- 238000006386 neutralization reaction Methods 0.000 description 16
- 230000003190 augmentative effect Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 11
- 238000012549 training Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000000844 transformation Methods 0.000 description 7
- 230000000007 visual effect Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 210000000887 face Anatomy 0.000 description 6
- 230000001131 transforming effect Effects 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 230000006855 networking Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 241001465754 Metazoa Species 0.000 description 3
- 239000003086 colorant Substances 0.000 description 3
- 230000001815 facial effect Effects 0.000 description 3
- 239000007789 gas Substances 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 210000003128 head Anatomy 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 238000010079 rubber tapping Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000282472 Canis lupus familiaris Species 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- 241000282320 Panthera leo Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000008485 antagonism Effects 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 230000036760 body temperature Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000356 contaminant Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000036651 mood Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000005693 optoelectronics Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 210000001747 pupil Anatomy 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 230000008261 resistance mechanism Effects 0.000 description 1
- 230000004266 retinal recognition Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/90—Dynamic range modification of images or parts thereof
- G06T5/94—Dynamic range modification of images or parts thereof based on local image properties, e.g. for local contrast enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/60—Image enhancement or restoration using machine learning, e.g. neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/75—Determining position or orientation of objects or cameras using feature-based methods involving models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2012—Colour editing, changing, or manipulating; Use of colour codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种消息系统,其利用神经网络对由消息系统的用户提供的图像执行图像处理,以重新照明对象。一种利用神经网络重新照明对象的方法包括:接收具有第一照明属性的输入图像,该输入图像包括具有第二照明属性的对象;以及使用卷积神经网络来处理输入图像,以生成具有第一照明属性的输出图像,该输出图像包括具有第三照明属性的对象,其中,卷积神经网络被训练成将第二照明属性修改成与由第一照明属性指示的照明条件一致,以生成第三照明属性。该方法还包括:修改对象的第二照明属性,以生成具有经修改的第二照明属性的对象;以及将第三照明属性与经修改的第二照明属性混合,以生成经修改的输出图像,该经修改的输出图像包括具有第四照明属性的对象。
Description
优先权要求
本申请要求于2020年9月30日提交的序列号为63/085,263的美国临时申请以及于2021年7月26日提交的序列号为17/385,462的美国专利申请的优先权权益,上述美国临时申请和美国专利申请通过引用整体并入本文中。
技术领域
本公开内容的实施方式总体上涉及处理图像以改变消息系统内的照明属性。更特别地但非限制性地,本公开内容的实施方式涉及使用神经网络来改变对象的照明属性,并且在一些实施方式中,涉及改变添加到图像的对象的照明属性,使得对象的照明属性更接近于图像的照明属性。
背景技术
处理图像以改变照明属性是复杂的,因为可能存在具有不同颜色属性和方向的多个照明源,而且图像的现有照明属性可能不为人所知。常规的计算机图形方法实现起来非常复杂,并且计算上的要求很高,这可能使应用太昂贵而不能开发,并且这可能使得应用对于移动设备的计算要求过高。
附图说明
在不必然按比例绘制的附图中,相似的附图标记可以在不同的视图中描述类似的部件。为了容易地识别对任何特定元素或动作的讨论,附图标记中的一个或多个最高位数字指代该元素被首次引入时所在的图号。在附图的图中以示例而非限制方式示出了实施方式,在附图中:
图1是根据一些示例的可以在其中部署本公开内容的联网环境的图解表示。
图2是根据一些示例的具有客户端侧功能和服务器侧功能两者的消息系统的图解表示。
图3是根据一些示例的在数据库中维护的数据结构的图解表示。
图4是根据一些示例的消息的图解表示。
图5是根据一些示例的访问限制处理的流程图。
图6示出了根据一些实施方式的重新照明模块的操作。
图7示出了根据一些实施方式的重新照明模块的操作。
图8示出了根据一些实施方式的重新照明模块的对象重新照明。
图9示出了根据一些实施方式的用于生成真值(ground truth)的真值模块的操作。
图10示出了根据一些实施方式的具有照明属性的示例对象。
图11示出了根据一些实施方式的用于训练卷积神经网络(CNN)的生成性对抗网络(GAN)。
图12示出了根据一些实施方式的重新照明模块的操作。
图13示出了根据一些实施方式的重新照明用户界面模块。
图14、图15和图16示出了根据一些实施方式的重新照明用户界面模块的操作。
图17示出了根据一些实施方式的使用神经网络进行对象重新照明的方法。
图18是根据一些示例的呈计算机系统形式的机器的图解表示,在该机器中可以执行一组指令,以使该机器执行本文中讨论的方法中任何一种或更多种。
图19是示出可以在其中实现示例的软件架构的框图。
图20是根据一些示例的处理环境的图解表示。
具体实施方式
以下的描述包括实施本公开内容的说明性实施方式的系统、方法、技术、指令序列和计算机程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节,以提供对本发明主题的各种实施方式的理解。然而,对于本领域技术人员来说将明显的是,可以在没有这些具体细节的情况下实践本发明主题的实施方式。通常,公知的指令实例、协议、结构和技术不需要详细示出。
通常在图像处理中组合图像。例如,在增强现实(AR)中,可以将对象的图像添加到实时图像中,以供人消费。但是添加的对象可能具有与实时图像不同的照明,这可能使添加的对象显得不自然或不相称。在另一示例中,诸如新闻播报员的内容创作者可以在他们阅读新闻时,使用绿屏以在他们身后放置背景图像。但是,新闻播报员的照明可能与背景图像的照明不同,这可能使得新闻播报员看起来与背景不相称,并且使组合的图像具有人工的感觉。在又一示例中,诸如脸部的对象可能需要改变,以使其具有平滑的白光,使得能够将该对象与其他图像集成。示例实施方式提供了包括神经网络的系统,以改变对象的照明属性,并且在一些实施方式中,改变添加到图像的对象的照明属性,使得对象的照明属性更接近于图像的照明属性。
一个技术问题是如何生成足够多数量的图像以用于训练神经网络。通过捕获实际图像来生成真值所需的若干输入图像和输出图像对极其昂贵。在一些实施方式中,该技术问题通过使用图像和对象的三维(3D)模型来解决。利用第一照明条件渲染图像,并且利用第一照明条件和第二照明条件渲染3D模型。可以使用具有第一照明条件的图像和具有第二照明条件的对象作为输入真值来生成真值对。并且真值输出是具有第一照明条件的图像和具有第一照明条件的对象。这些真值对可以用于训练神经网络,以对具有第一照明条件的图像——其中该图像包括具有第二照明条件的对象进行处理或将其变换成具有第一照明条件的图像——其中该图像包括具有第一照明条件的对象。
在一些实施方式中,从图像的库中生成图像,其中图像的照明条件被确定,或者图像被渲染成具有新的照明条件。一些实施方式包括人的头部的3D模型,这使得能够在不同的照明条件下生成真值对时使用同一人员,其中图像可以被完美地对准。为了训练神经网络以改变作为图像的一部分的对象的照明属性,可以处理或生成真值。类似地,可以生成真值以训练神经网络来将脸部改变成具有均匀平滑的光,这在诸如在视频中用另一脸部替换一个脸部的一些应用中是有用。
在一些实施方式中,针对包括不同数量的光源、光的方向和光的强度的不同的照明条件生成真值。用户可以指定他们想要如何根据光源来改变图像的照明。系统可以将目标照明源同与目标照明源匹配或最接近目标照明源的一组经训练的权重进行匹配。
在一些实施方式中,使用生成性对抗网络(GAN)来训练卷积网络以处理图像。在一些实施方式中,输入图像被处理为硬光模式,并且然后将处理光变化的神经网络的输出与硬光模式输入图像混合。
联网计算环境
图1是示出用于通过网络来交换数据(例如,消息和相关联的内容)的示例消息传送系统100的框图。消息系统100包括客户端设备102的多个实例,每个实例托管包括消息客户端104的若干应用。每个消息客户端104经由网络106(例如,因特网)通信地耦接至消息客户端104的其他实例和消息服务器系统108。
消息客户端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的多个实例接收的消息中包括的内容(例如,文本和多媒体内容)的汇总及其他处理。如将进一步详细描述的,来自多个源的文本和媒体内容可以聚合成内容集合(例如,称为故事或图库(gallery))。然后,使这些集合对消息客户端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负责管理媒体的合集或集合(例如,文本、图像视频和音频数据的集合)。可以将内容(例如,消息,包括图像、视频、文本和音频)的集合组织成“事件图库(gallery)”或“事件故事”。可以使这样的集合在指定的时间段(例如,内容所涉及的事件的持续时间)内可用。例如,可以使与音乐会相关的内容在音乐会的持续时间内作为“故事”可用。集合管理系统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提供与处理图像有关的各种功能,以重新照明或修改图像的照明,并且提供用于训练诸如GAN 1100的神经网络的各种功能。重新照明系统214可以为用户设备102提供用于处理输入图像并重新照明或改变图像的照明的手段。重新照明系统214可以提供对权重数据库1208的访问,该权重数据库1208可以由它们被训练以提供的照明变化或变换来索引。
数据架构
图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内的其他增强数据包括增强现实内容项(例如,对应于应用镜头(Lenses)或增强现实体验)。增强现实内容项可以是能够被添加至图像或视频的实时特殊效果和声音。
如上所述,增强数据包括增强现实内容项、覆盖、图像变换、AR图像,以及涉及可以应用于图像数据(例如,视频或图像)的修改的类似项。这包括实时修改,其在图像被使用客户端设备102的设备传感器(例如,一个或多个摄像装置)进行捕获时并且然后在修改的情况下在客户端设备102的屏幕上显示时对图像进行修改。这还包括对所存储的内容的修改,例如可以被修改的图库中的视频剪辑。例如,在访问多个增强现实内容项的客户端设备102中,用户可以将单个视频剪辑与多个增强现实内容项一起使用来查看不同的增强现实内容项将如何修改所存储的剪辑。例如,通过针对同一内容选择不同的增强现实内容项,可以将应用不同伪随机运动模型的多个增强现实内容项应用于该同一内容。类似地,实时视频捕获可以与示出的修改一起使用,以显示当前由客户端设备102的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以仅显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行修改或不进行修改(或两者)的情况下被记录并存储在存储器中。在一些系统中,预览功能可以显示不同的增强现实内容项在同一时间在显示器的不同窗口中的外观。例如,这可以使得具有不同伪随机动画的多个窗口能够同时在显示器上被查看。
因此,使用增强现实内容项的数据和各种系统或使用该数据修改内容的其他这样的变换系统可以涉及视频帧中的对象(例如,脸、手、身体、猫、狗、表面、对象等)的检测,在这些对象离开视场、进入视场以及在视场四处移动时跟踪这些对象,以及在跟踪这些对象时对其进行修改或变换。在各种实施方式中,可以使用用于实现这样的变换的不同的方法。一些示例可以涉及生成一个或多个对象的三维网格模型,并且使用视频内的模型的变换和动画纹理来实现变换。在其他示例中,可以使用对象上的点的跟踪来将图像或纹理(其可以是二维或三维的)放置在所跟踪的位置处。在又一示例中,视频帧的神经网络分析可以用于将图像、模型或纹理放置在内容(例如,图像或视频的帧)中。因此,增强现实内容项既涉及用于创建内容中的变换的图像、模型和纹理,又涉及利用对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。
可以利用保存在任何类型的计算机化系统的存储器中的任何类型的视频数据(例如,视频流、视频文件等)来执行实况视频处理。例如,用户可以加载视频文件并且将其保存在装置的存储器中,或者可以使用装置的传感器生成视频流。此外,可以使用计算机动画模型来处理任何对象,例如人的脸部和人身体的各部分、动物或非生物例如椅子、汽车或其他对象。
在一些示例中,当连同要变换的内容一起选择特定修改时,计算设备标识要变换的元素,并且然后如果所述元素存在于视频帧中,则检测并跟踪它们。根据修改请求来修改对象的元件,从而变换视频流的帧。对于不同类型的变换,可以通过不同的方法来执行对视频流的帧的变换。例如,对于主要是指改变对象的元素的形式的帧的变换,计算对象的每个元素的特性点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特性点的网格。该网格用于在视频流中跟踪对象的元件的后续阶段。在跟踪过程中,将所提及的每个元素的网格与每个元素的位置对准。然后,在网格上生成附加点。基于修改请求针对每个元件生成第一点的第一集合,并且基于第一点的集合以及修改请求针对每个元件生成第二点的集合。然后,可以通过基于该组第一点和第二点以及网格修改对象的元素,对视频流的帧进行变换。在这种方法中,也可以通过跟踪和修改背景来使被修改对象的背景改变或变形。
在一些示例中,使用对象的元素改变对象的一些区域的变换可以通过计算对象的每个元素的特性点并基于计算的特性点生成网格来执行。在网格上生成点,并且然后基于这些点生成各种区域。然后,通过将每个元件的区域与至少一个元件中的每个元件的位置对准来跟踪对象的元件,并且可以基于修改请求来修改区域的性质,从而变换视频流的帧。根据对修改的具体请求,可以以不同的方式来变换所提及的区域的性质。这样的修改可以涉及:改变区域的颜色;从视频流的帧中删除至少一些部分区域;将一个或更多个新对象包括在基于修改请求的区域中;以及修改或扭曲区域或对象的元素。在各种实施方式中,可以使用这样的修改的任何组合或其他类似修改。对于要被动画化的某些模型,可以选择一些特性点作为要用于确定针对模型动画的选项的整个状态空间的控制点。
在使用脸部检测来变换图像数据的计算机动画模型的一些示例中,使用特定脸部检测算法(例如,Viola-Jones)在图像上检测脸部。然后,将主动形状模型(ASM)算法应用于图像的脸部区域以检测脸部特征参考点。
在其他示例中,可以使用其他适合于脸部检测的方法和算法。例如,在一些实施方式中,使用界标来定位特征,界标表示在所考虑的大多数图像中存在的可区分点。例如,对于脸部界标,可以使用左眼瞳孔的定位。在初始界标不可标识的情况下(例如,如果人具有眼罩),则可以使用次级界标。这样的界识别过程可以用于任何这样的对象。在一些示例中,界标集合形成形状。可以使用形状中的点的坐标将形状表示为矢量。利用使形状点之间的平均欧几里德距离最小化的相似变换(允许平移、缩放和旋转)将一个形状与另一个形状对准。平均形状是经对准的训练形状的均值。
在一些示例中,从与由全局脸部检测器确定的脸部的位置和大小对准的均值形状开始搜索界标。然后,这样的搜索重复以下步骤直至发生收敛:通过每个点周围的图像纹理的模板匹配来调整形状点的定位而建议暂定形状,并且然后使暂定形状符合全局形状模型。在某些系统中,个别的模板匹配是不可靠的,并且形状模型将弱模板匹配的结果进行池化,以形成更强的整体分类器。从粗分辨率到细分辨率,在图像金字塔中的每一级处重复整个搜索。
变换系统可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并且在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状变化、情绪迁移(例如,将脸部从皱眉变为微笑)、状态迁移(例如,使对象变老、减小表观年龄、改变性别)、风格迁移、图形元素应用,以及由已经被配置成在客户端设备102上有效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
在一些示例中,用于变换图像数据的计算机动画模型可以由下述系统使用:在所述系统中,用户可以使用具有作为在客户端设备102上操作的消息客户端应用104的一部分而操作的神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍)。在消息客户端104内操作的变换系统确定图像或视频流内的脸部的存在,并且提供与计算机动画模型相关联的修改图标以变换数据图像,或者计算机动画模型可以与本文中描述的界面相关联地存在。修改图标包括改变,该改变可以是作为修改操作的一部分的用于修改图像或视频流内的用户的脸部的基础。一旦选择了修改图标,则变换系统发起转换用户的图像以反映所选择的修改图标(例如,在用户上生成笑脸)的过程。一旦捕获图像或视频流并且选择指定的修改,则修改的图像或视频流就可以呈现在客户端设备102上显示的图形用户接口中。变换系统可以在图像或视频流的一部分上实施复杂的卷积神经网络,以生成和应用所选择的修改。也就是说,用户可以捕获图像或视频流,并且一旦选择了修改图标,就可以实时或接近实时地呈现修改后的结果。此外,在捕获视频流并且所选择的修改图标保持切换时,修改可以是持久的。经机器学习的神经网络可以用于实现这样的修改。
呈现由变换系统执行的修改的图形用户界面可以向用户供应附加的交互选项。这样的选项可以基于用于发起内容捕获和对特定计算机动画模型的选择的接口(例如,从内容创建者用户接口发起)。在各种实施方式中,修改可以在对修改图标的初始选择之后持续。用户可以通过敲击或以其他方式选择由变换系统修改的脸部来打开或关闭修改,并且将其存储以供以后查看或浏览到成像应用的其他区域。在由变换系统修改多个脸部的情况下,用户可以通过敲击或选择在图形用户接口内修改和显示的单个脸部来全局打开或关闭修改。在一些实施方式中,可以通过轻击或选择图形用户接口内显示的单独脸部或一系列脸部来单独修改一组多个脸部中的各个脸部,或者单独切换这样的修改。
故事表312存储关于消息和相关联的图像、视频或音频数据的集合的数据,所述消息和相关联的图像、视频或音频数据被编译成集合(例如,故事或图库)。特定集合的创建可以由特定用户(例如,在实体表304中保存其记录的每个用户)发起。用户可以以已经由该用户创建和发送/广播的内容的集合的形式创建“个人故事”。为此,消息客户端104的用户界面可以包括用户可选择的图标,以使得发送用户能够将特定内容添加到他或她的个人故事。
集合还可以构成“实况故事”,该“实况故事”是手动地、自动地或者使用手动技术和自动技术的组合创建的来自多个用户的内容的集合。例如,“实况故事”可以构成来自不同定位和事件的用户提交内容的策展流。其客户端设备启用了定位服务并且在特定时间处于共同定位事件处的用户可以例如经由消息客户端104的用户界面被呈现有选项,以将内容贡献给特定实况故事。可以由消息客户端104基于他或她的位置向用户标识实况故事。最终结果是从社群角度讲述的“实况故事”。
另一类型的内容集合被称为“定位故事”,该“定位故事”使得其客户端设备102位于特定地理定位(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些示例中,对定位故事的贡献可能需要第二程度的认证来验证终端用户属于特定组织或其他实体(例如,是大学校园中的学生)。
如上所述,视频表314存储视频数据,在一个示例中,视频数据与其记录保持在消息表302内的消息相关联。类似地,图像表316存储与其消息数据存储在实体表304中的消息相关的图像数据。实体表304可以使来自增强表310的各种增强与存储在图像表316和视频表314中的各种图像和视频相关联。数据库120也可以存储神经网络的权重,如图11和12中所示的权重1104、1114、1123和1208。
数据通信架构
图4是示出根据一些示例的消息400的结构的示意图,该消息400由消息客户端104生成,以用于传送至另外的消息客户端104或消息服务器114。特定消息400的内容用于填充存储在可由消息服务器114访问的数据库120内的消息表302。类似地,消息400的内容作为客户端设备102或应用服务器112的“运输中(in-transit)”或“飞行中(in-flight)”数据存储在存储器中。消息400被示出为包括以下示例组成部分:
消息标识符402(MSG_ID 402):标识消息400的唯一标识符。消息文本净荷404(MSG_TEXT 404):要由用户经由客户端设备102的用户界面生成并且包括在消息400中的文本。
消息图像净荷406(MSG_IMAGE 406):由客户端设备102的摄像装置部件捕获或从客户端设备102的存储器部件检索并且包括在消息400中的图像数据。用于发送或接收的消息400的图像数据可以存储在图像表316中。
消息视频净荷408:由摄像装置部件捕获的或从客户端设备102的存储器部件检索到的、并且包括在消息400中的视频数据。用于发送或接收的消息400的视频数据可以存储在视频表314中。
消息音频净荷410:由麦克风捕获的或从客户端设备102的存储器部件检索的、并且包括在消息400中的音频数据。
消息增强数据412:表示要应用于消息400的消息图像净荷406、消息视频净荷408或消息音频净荷410的增强的增强数据(例如,过滤器、贴纸或其他注解或增强)。发送或接收到的消息400的增强数据可以存储在增强表310中。
消息持续时间参数414(MSG_DUR 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内的位置的指针(或图像表302内的位置的地址)。类似地,消息视频净荷408内的值可以指向存储在视频表314内的数据,存储在消息增强数据412内的值可以指向存储在增强表310中的数据,存储在消息故事标识符418内的值可以指向存储在故事表312中的数据,并且存储在消息发送者标识符422和消息接收者标识符424内的值可以指向存储在实体表304内的用户记录。
尽管所描述的流程图可以将操作示出为顺序处理,但是操作中的很多操作可以并行或同时执行。此外,可以重新排列操作的顺序。当过程的操作完成时,该过程终止。过程可以对应于方法、过程、算法等。方法的操作可以全部或部分执行,可以与其他方法中的一些或所有操作结合执行,并且可以通过任何数量的不同系统例如本文描述的系统或者其任何部分例如包括在任何系统中的处理器执行。
基于时间的访问限制架构
图5是示出访问限制过程500的示意图,根据该访问限制处理,对内容(例如,短暂消息502和相关联的数据的多媒体净荷)或内容集合(例如,短暂消息组504)的访问可以是时间受限的(例如,使得是短暂的)。
短暂消息502被示出为与消息持续时间参数506相关联,消息持续时间参数506的值确定消息客户端104将向短暂消息502的接收用户显示短暂消息502的时间量。在一个示例中,接收用户可查看短暂消息502上至最多10秒,这取决于发送用户使用消息持续时间参数506指定的时间量。
消息持续时间参数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还可以基于确定已经超过相关联的组参与参数510而从短暂消息组504中可操作地移除特定短暂消息502。例如,当发送用户已经建立了从发布起24小时的组参与参数510时,短暂定时器系统202将在指定的二十四小时之后从短暂消息组504中移除相关的短暂消息502。短暂定时器系统202还进行操作以在针对短暂消息组504内的每个短暂消息502的组参与参数510已经到期时,或者在短暂消息组504本身根据组持续时间参数508已经到期时,移除短暂消息组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示出了根据一些实施方式的重新照明模块1202的重新照明操作600。在一个示例中,重新照明模块1202驻留在客户端设备102上,并且被配置成调整对象和图像的照明,以考虑被添加到图像的对象。例如,重新照明模块1202被训练成将第二照明属性604改变成与第一照明属性608相同或相似。如所示出的,重新照明模块1202获取具有第一照明属性608的输入图像606,其中添加的对象602具有第二照明属性604,并且生成具有第一照明属性608的输出图像616,其中添加的对象602具有第三照明属性614,其中,第三照明属性614与第一照明属性608相同或类似。输出图像616中的添加的对象602具有第三照明属性614,该第三照明属性614包括阴影1 618并且头部的顶部较亮622。
在一些实施方式中,第三照明属性604在与第一照明属性608的阈值差内。在一些实施方式中,输出图像616的第三照明属性614和/或第一照明属性608包括改变输入图像606的部分的照明以适应输出图像616中的添加的对象602。例如,具有第一照明属性608的输出图像616包括阴影2 620,该阴影2 620是用于调整所添加的对象602的照明的阴影。
照明属性是指给定环境或场景的图像的照明强度的一致形式或图案。例如,图像的亮度和阴影应当同与图像相关联的光源和图像内描绘的对象一致。由于重新照明模块1202可以考虑到所添加的对象602而做出改变,因此输出图像616的第一照明属性608被称为第四照明属性。
输入图像606具有添加的对象602,该添加的对象602可能具有使其看起来好像其可能不属于输入图像606的照明。输入图像606可以是生成的图像,例如来自客户端设备102的摄像装置的图像。输入图像606可以是由AR眼镜生成的图像,并且添加的对象602可以是AR对象。根据一些实施方式,输入图像606是由图形程序渲染的图像。根据一些实施方式,输入图像606是从因特网下载的图像,例如库存图像。输入图像606和输出图像616可以是视频或图像序列的一部分。输入图像606可以是由图1的客户端设备102捕获的图像,其中添加的对象602是由消息系统100添加的增强物。
添加的对象602可以通过应用添加到输入图像606,该应用缩放所添加的对象602并确定在输入图像606内放置添加的对象602的位置。例如,应用可以缩放和定位所添加的对象602,使得所添加的对象602在输入图像606的上下文中显得真实,例如将所添加的对象602放在地板上。在另一示例中,图2的增强系统206可以将增强物作为添加的对象602添加到输入图像606,例如将心形作为增强物添加到输入图像606内的脸部。用户可以例如利用触摸屏用户界面将增强物放置在输入图像606内。
第二照明属性604可以与输入图像606的第一照明属性608不同,这可能给观看者以下印象:添加的对象602不属于输入图像606,或者添加的对象602是被添加到输入图像606的。根据一些实施方式,第二照明属性604可以与第一照明属性608不相关。例如,添加的对象602可以具有用于增强项的通用照明属性。如上所述,利用输入图像606的诸如阴影2620的部分和第三照明属性614来改变添加的对象602的照明,将使得添加的对象602在输出图像616中显得更自然,仿佛添加的对象602原本就是输出图像602的一部分,而不是被添加到图像的对象。因此,基于第三照明属性614的输出图像616产生改进的图像。在一些实施方式中,重新照明模块1202被训练成识别添加的对象602或者调用另一模块,该另一模块识别添加的对象602并返回关于添加的对象602的信息。在一些实施方式中,添加的对象602被识别为具有定位信息,该定位信息可以用于识别添加的对象602位于输入图像606内的像素。在一些实施方式中,添加的对象602可以在输入图像606的不同层或通道中,使得添加的对象602可以由该层或通道识别。结合图8的层816、820来讨论层或通道。结合图8来讨论图像表示。重新照明模块1202是本文所公开的神经网络,其被训练成生成第三照明属性614并且将输入图像606修改为输出图像616。
输出图像616包括具有第三照明属性614的添加的对象602,相比于第二照明属性604与第一照明属性608,该第三照明属性614与第一照明属性608更相似。重新照明模块1202执行不同的光调整类型。例如,中和(neutralization)、光中和或其他光调整,这将结合图8来描述。在其他示例中,光调整是重新照明,这结合图6和图7以及在本文中来描述。在其他示例中,光调整是任意的静态光,这结合图15进行描述。
图7示出了根据一些实施方式的重新照明模块1202的重新照明操作700。如上所述,重新照明模块1202获取具有第一照明属性708的输入图像706,其中添加的对象702具有第二照明属性704,并且生成具有第一照明属性708的输出图像716,其中添加的对象702具有第三照明属性714。添加的对象702是处于比输入图像706更暗的光中的人或人员。在示例实施方式中,该人或人员在室内位置中的绿屏前方,并且输入图像706是替换绿屏的工厂的室外的图像。在该示例中,重新照明模块1202通过照亮添加的对象702的区域并且调整不同数量的照明源的照明和照明源的方向来调整第三照明属性714。针对所添加的对象的改变718指示输出图像716的部分可以被修改以考虑添加的对象702。例如,可以添加阴影,或者从添加的对象702反射的光可以使输出图像716的区域变亮。在示例实施方式中,该人员正在绿屏前方制作视频或一系列图像,并且重新照明模块1202正在对此人进行重新照明,以针对输入图像706的不同照明进行调整。
在一些实施方式中,添加的对象702和输入图像706的角色被反转,使得重新照明模块1202被训练成将第一照明属性708调整成与第二照明属性704更相似。这方面的应用可以是当此人利用不同的输入图像706替换绿屏并且此人想要第二照明属性704对于不同的输入图像706保持不变时。
图8示出了根据一些实施方式的重新照明模块1202的对象重新照明800。图8中示出的变化是光中和。重新照明模块1202获取输入图像806,该输入图像806包括具有第一照明属性804的对象802,并且重新照明模块1202生成输出图像812,该输出图像812包括具有第二照明属性810的对象802。在一些实施方式中,输出图像812在对象802周围具有掩模,以阻挡其他颜色信息。
重新照明模块1202被训练成获取具有第一照明属性804的对象802,并且生成具有第二照明属性810的对象802,其中,第二照明属性810包括平滑均匀的白光,这可以被称为光中和或中和。根据一个实施方式,光中和从对象802移除了阴影。例如,重新照明模块1202获取第一照明属性804,并且将照明属性的值改变成更接近于平滑均匀的白光的值,例如,将像素的亮度值归一化成较不暗或较不亮,并将饱和度值归一化以针对具有高饱和度的颜色指示较不饱和的颜色或针对具有低饱和度的颜色指示较饱和的颜色。在一个示例中,重新照明模块1202识别输入图像806内的对象802,并使输入图像806的其余部分变暗或者移除背景,在图8的输出图像812中示出为背景被移除814。
根据一些实施方式,重新照明模块1202被配置成执行其他类型的重新照明或对象重新照明。在一些实施方式中,针对每个像素,图像包括红光、绿光和蓝光的强度值,其中通过将这三个值相加在一起来确定颜色。这些层可以组合在一个更大的数据结构中。每种颜色是层816和经修改的层820中的层。本领域的技术人员将认识到,可以使用图像和颜色的其他表示。例如,高效图像格式(HEIC),可移植网络图形(PNG),联合摄影专家组(JPEG),图形交换格式(GIF),YUV,青色、品红色、黄色和黑色(key)(CMYB),色相饱和度值(HSV)等。
变换818改变层816的像素强度值,以调整或变换经修改的层820中的像素强度值。此外,可以生成层816中的层,以使用变换816与其他层816混合。
例如,在下文中,层816的像素强度值的值具有0.0(黑色)至1.0(白色)的范围。重新照明模块1202将层混合,其中层816中的上层(b)与层816中的下层(a)混合。以下是可以由重新照明模块1202执行的不同混合的示例。变换818由“f”表示。乘法变换818是f(a,b)=a*b,其中,a是层816的基层,并且b是层816的顶层。乘法变换818获取来自层a的RGB值,并且将这些RGB值与来自层b的对应像素的值相乘。乘法变换818将导致a和b的合成更暗,这是因为像素的每个值小于1。
屏幕变换818是f(a,b)=1-(1-a)(1-b),其中,a是层816中的基层,并且b是层816中的顶层。当a或b比白色更暗时,则合成更亮。硬光变换818是乘法变换818和屏幕变换818的组合。硬光变换818使值增加或者使暗区变亮,使值变小或者使亮区变暗,使得如输出图像812中所示那样移除阴影和光源。
对于上述的光中和,光中和变换818通过将层816(例如RGB层)的值改变成更接近于平滑均匀的白光的值来调整层816中的值,使得小于0.5的值增大,并且诸如0.8的阈值以上的值减小。结果是输出图像812内的对象802更均匀。可以使用神经网络来训练重新照明模块1202,以改变输入图像806的照明或者使用公式。在一些实施方式中,使用神经网络和公式的组合。例如,神经网络可以识别输入图像806内的对象802的区域,然后可以使用公式来处理对象802,以生成输出图像812,其中在识别的对象区域周围使用黑色掩模。
图9示出了根据一些实施方式的用于生成真值的真值模块910的操作900。真值模块910根据具有第一照明条件904的图像903和具有第二照明条件908的对象906的三维(3D)模型来生成真值输入912和真值输出922。如结合图6所描述的,照明属性指示用于渲染或显示对象或图像的信息,例如色调值、饱和度值和亮度值。照明条件指示用来渲染或确定场景内的对象或图像的照明属性的照明条件。根据一些实施方式,照明条件904指示光源的数量,其中每个光源由方向、色调值、饱和度值和亮度值表示。对象的3D模型包括定义对象的边界的对象的几何信息和对象的颜色信息,使得真值模块910可以确定对象在照明条件下的照明属性。对象的3D模型可以包括诸如对象的部分的透明度或反射率的附加的信息,以及可以被包括以用于渲染给定照明条件的对象的其他信息。
图像903可以是房间或室外工厂或其他场景的图像。在一些实施方式中,图像903是3D模型。在一些实施方式中,图像903已经被渲染,并包括第一照明条件904,以指示如何确定第一照明属性916。在一些实施方式中,真值模块910基于来自图像903的第一照明属性916来确定第一照明条件904。例如,可以使用经训练的神经网络来确定第一照明条件904,该神经网络根据图像903确定第一照明条件904。这使得真值模块910能够利用与第一照明条件904相同的第二照明条件908渲染对象906的3D模型,以生成真值输出922,其中对象918具有第三照明属性922并且图像902具有第一照明属性916。第三照明属性922与第一照明属性916相同或相似。由于对象引起的改变923是由于对象918在真值输出922中对图像902的改变,该对象918具有应用于该对象918的第三照明属性922。例如,图6的阴影2 620和图7的对添加的对象的改变718。
当图像903已经被渲染并具有第一照明属性916时,真值输入912的图像902和真值输出922的图像902可以与图像903相同。当图像903尚未被渲染时,图像903不具有与其相关联的第一照明属性916,直到它被真值模块910渲染。真值模块910可以使用图像的库932和对象的3D模型的库来选择图像903和对象906的3D模型。对象906可以是头部、人或其他对象。
通常,许多不同的第二照明条件908与相同的第一照明条件904一起使用,以生成许多真值输入912,其中每个对具有相同的真值输出922。这提供了采取不同的第二照明条件908并且将它们映射至相同的第一照明条件904的训练对。真值输入912包括具有第一照明属性916的图像902和具有第二照明属性920的对象918。可以由真值模块910根据第一照明条件904来渲染第一照明属性916。根据一些实施方式,当图像903是3D模型时,则根据第一照明条件904渲染第一照明属性916。
真值输出922包括具有第一照明属性916的图像902和具有第一照明属性916的对象918。真值输入912的具有第一照明属性916的图像902可以与真值输出922的具有第一照明属性916的图像902相同或相似。如本文中所讨论的,真值输出922的图像902可以包括由于对象引起的改变923。真值输出922的对象918可以与真值输入912的对象918相同或相似。使用第一照明条件904根据对象906的3D模型来生成真值输出922的对象918的第三照明属性922。
真值模块910生成许多对的真值输入912和真值输出922对,其中对象906的3D模型、图像903、第一照明条件904和第二照明条件908表示重新照明模块1202的神经网络将作为生产中的输入的输入图像和照明条件的类型。
使用第一照明条件904来生成真值输出922的第三照明属性922。相比于第二照明属性920与第一照明属性920的接近度,第三照明属性922更接近于第一照明属性916。在一些实施方式中,第三照明属性922与第一照明属性916相同。
图10示出了根据一些实施方式的具有照明属性的示例对象1000。示例1(1002)、示例2(1004)、示例3(1006)和示例4(1008)是用3D模型表示并已被处理或渲染成具有给定的一组照明条件的照明属性的对象的示例。例如,示例对象1000可以是图9的具有第二照明属性920的对象918或具有第三照明属性916的对象918。3D模型的使用使得不同的光照条件能够用于生成示例对象1000的照明属性。作为使用对象的3D模型的结果,光和阴影物理上正确地落在示例对象1000的脸部上。
图11示出了根据一些实施方式的用于训练卷积神经网络(CNN)的生成性对抗网络(GAN)1100。CNN 1106采取真值输入图像1102,并且生成或处理真值输入图像1102以生成输出图像1108。在一个示例中,真值输入图像1102与真值输入912相同或相似,并且真值输出图像1116与真值输出922相同或相似。
根据一些实施方式,CNN 1106、损失网络1112和判别器网络1122是卷积神经网络。根据一些实施方式,每个都有多个卷积层、池化层和全连接层。各网络中的一个或更多个网络可以具有向上采样和向下采样。各网络中的一个或更多个网络可以具有连接至网络中的下一层的层,以及更接近于输出层的附加层。根据一些实施方式,全连接层使用整流线性单元(ReLU)以确定输出。
权重调整模块1124被配置成基于来自判别器网络1122的对抗性损失和感知损失1118来调整CNN 1106的权重1104。权重调整模块1124基于使用随机梯度下降方法确定使损失函数的加权和最小化或变小的权重1104来调整权重1104。权重调整模块1124附加地通过改变本文中描述的权重1123,来训练判别器网络1122。
感知损失1118是借助于若干经训练的神经网络(NN)1120来确定的。根据一些实施方式,基于表示诸如名词、动词、形容词和副词的高级特征的图像来训练损失网络1112,这些高级特征被分组成高级特征集。高级特征可以包括着色信息和照明信息。可以针对一个或更多个高级特征对每个神经网络(NN)1120进行训练。经训练的NN 1120确定输出图像1108和真值输出图像1116两者的高级特征。感知损失1118基于根据真值输出图像1116确定输出图像1108的高级特征损失。根据一些实施方式,然后,由权重调整模块1124基于回归分析来确定感知损失。根据一些实施方式,权重调整模块1124使用等式(1)来确定感知损失(lossper)。
等式(1):其中,yi是真值输出图像1116,/>是输出图像1108,E是求和的期望值,n是真值对的数量,lfeat是根据经训练的NN 1120的特征的yi与/>之间的特征重构损失,并且wi是分配给特征i的权重。
CNN 1106的损失由调整权重模块1124使用等式(2)来确定。等式(2):Gloss=E[log(1-D(G(x))],其中,Gloss是图像变换网络的损失,E是期望值,并且D是判别器网络的确定。
判别器网络1122被训练成获取真值输入图像1102和输出图像作为输入,并输出诸如在0与1之间的值,以指示输出图像是真值输出图像1116的可能性。判别器网络1122的损失由权重调整模块1124根据等式(3)来确定。
等式(3):Dloss=-E[log(D(xreal))+log(1-D(G(x)))],其中,Dloss是判别器网络1122的损失,E是期望值,x是真值输入图像1102,并且xreal是真值输出图像1116,D(xreal)是对xreal是否是真值输出图像1116的诸如从0至1的值的预测,并且D(G(x))是对作为输出图像1108的G(x)是否是真值输出图像1116的诸如从0至1的预测。
权重调整模块1124根据等式(4)确定CNN 1106的损失函数。等式(4):Loss=Lossper+α*Gloss,其中,Loss是用于训练CNN 1106的损失,Lossper根据等式(1)确定,Gloss根据等式(2)确定,并且α是小于1的常数。
权重调整模块1124彼此相结合地训练CNN 1106和判别器网络1122。由于判别器网络1122在确定输出图像是否是真值输出图像1116方面变得更好,因此CNN 1106被训练成使得输出图像1108更像真值输出图像1116。以这种方式,两个网络彼此帮助训练,因为当判别器网络1122在区分输出图像1108和真值输出图像1116方面改进时,CNN 1106在将输出图像1108生成为更接近真值输出图像1116方面得以改进。真值模块910用于生成一组真值输入图像1102和真值输出图像1116,这些图像被权重调整模块1124用于训练CNN 1106和判别器网络1122。由于真值模块910可以在许多不同的照明场景下生成一组任意大的训练对,因此CNN 1106可以被训练成在许多不同照明场景下处理或变换照明。
图12示出了根据一些实施方式的重新照明模块1202的操作1200。重新照明模块1202获取输入图像1204,并将其馈送到具有权重1208的CNN 1206中,该CNN 1206对输出图像1210进行处理、变换或输出(如上所述的那样)。可选地,输出图像1210被馈送到光调整模块1212中,该光调整模块1212处理、变换或输出经修改的输出图像1216。根据一些实施方式,当执行诸如图6和图7中的将对象重新照明的功能时,重新照明模块1202执行光调整模块1212的操作,并且当执行诸如结合图8描述的光中和或另一种变换的功能时,重新照明模块1202不执行光调整模块1212的操作。因为针对对象重新照明与光中和或另一种变换利用的不同的真值来训练GAN 1100,因此由CNN 1206使用的权重1208对于执行对象重新照明和光中和的功能而言是不同的。
根据一些实施方式,光调整模块1212处理输入图像1204以生成硬光图像1214。对输入图像1204进行处理以生成硬光图像1214包括:使图像的亮区变亮以及使暗区变暗。例如,可以检查图像的照明属性的亮度值,并且可以将在阈值以下的亮度值增大,并且将在第二阈值以上的亮度值减小。在一些实施方式中,第一阈值近似于或等于0.3,并且第二阈值近似于或等于0.8。也可以使用阈值的其他值。在一些实施方式中,如结合图8所描述的,使用不同的变换818来生成硬光图像1214。
然后,光调整模块1212将输出图像1210与硬光图像1214混合。例如,混合操作获取像素的诸如色调、饱和度和亮度的值,并且对新图像的值求平均。根据一些实施方式,该混合操作是结合图8描述的变换818。光调整模块1212可以识别对象并聚焦对对象的照明属性的改变,例如改变对象的像素的色调值、饱和度值和亮度值。在一些实施方式中,光调整模块1212是具有经训练以执行硬光照图像处理的一组权重的CNN 1206。
在一些实施方式中,光调整模块1212将输入图像1204中的在第一阈值以上的像素的亮度值增大,并且将输入图像1204中的在第二阈值以下的像素的亮度值减小。在一些实施方式中,第一阈值近似于或等于0.5,并且第二阈值近似于或等于0.5。
在一些实施方式中,图像包括基层和顶层。根据一些实施方式,这些层可以被称为通道。图像的外观是基层和顶层的合成。当基层小于阈值时,光调整模块1212调整基层的基础值、顶层的亮度值,并且使顶层亮度值减小。当基层大于阈值时,使顶层亮度值增大。
在一些实施方式中,光照调整模块1212对输入图像1204和硬光图像1214的光强度值求平均,以生成经修改的输出图像1216。
图13示出了根据一些实施方式的重新照明用户界面模块1302。重新照明用户界面模块1302使重新照明模块1202的功能对用户可用。重新照明用户界面模块1302可以是重新照明系统214的一部分。根据一些实施方式,重新照明用户界面模块1302可以从数据库120访问图像表316。重新照明用户界面模块1302可以在客户端设备102上进行操作。重新照明用户界面模块1302包括输入图像1304、对象1306、输出图像1310和光调整类型1308,下文将对此进一步详细描述。
图14、图15和图16示出了根据一些实施方式的重新照明用户界面模块1302的操作。图14示出了根据一些实施方式的移动设备1402,移动设备1402可以是客户端设备102。移动设备1402可以包括摄像装置1406和屏幕1404。如所示出的,处理输入图像1410,以生成输出图像1412。输出图像1412具有相对于输入图像1410变亮1414的区域和变暗1416的区域。移动设备1402的用户已选择要对输入图像1410进行中和1418。用户可以选择保存1420输出图像1412或者例如通过消息系统100作为短暂消息来发送1422输出图像1412。用户可以选择编辑和增强1408来改变输出图像1412或者向输出图像1412添加增强物。在一些实施方式中,编辑和增强1408为用户提供了重新照明选项。在一些实施方式中,中和1418被提供为在选择编辑和增强1408时呈现的菜单中的选项。根据一些实施方式,结合图8描述的其他变换818被提供给用户。
参照图12、图13和图14,重新照明用户界面模块1302可以向用户呈现中和1418选项,并且当中和1418选项被选择时,重新照明用户界面模块1302可以执行以下操作。可以将输入图像1304传递到具有光调整类型1308(此处为中和)的重新照明模块1202,并且,可选地,可以在输入图像1304中识别对象1306。对象1306可以指示对象1306在输入图像1304内的位置,或者对象1306可以是对象1306的单独的图像。重新照明用户界面模块1302可以使用图像处理来确定对象,或者对象可以由用户来指示。
重新照明模块1202根据光调整类型1308为CNN 1206选择权重1208,并且根据光调整类型1308来确定是否使用光调整模块1212。对于中和,不使用光照调整模块1212,并且所选择的权重1208是针对中和训练的权重1208。重新照明模块1202将输出图像1310返回到重新照明用户界面模块1302。重新照明用户界面模块1302使输出图像1310被递送给用户,例如被显示在屏幕1404上或保存到计算机存储器。
在图15中,用户具有选项重新照明1510,该选项重新照明1510用于对输入图像1508进行重新照明。在该示例中,用户已选择具有两个光源,即,添加的光源1(1504)和添加的光源2(1506)。在一些实施方式中,可以通过拖放添加新光源1502图标来添加新的光源。根据一些实施方式,光源的方向和强度由用户选择。根据一些实施方式,强度由射线的长度指示,并且光源的方向由箭头指示。光源的位置由其相对于输入图像1508的位置指示。
用户选择重新照明1510来重新照明输入图像1508。重新照明用户界面模块1302接收输入图像1304以及灯调整类型1308作为重新照明1510,该重新照明1510具有光源的数量的指示以及每个光源的位置、方向和强度。
重新照明用户界面模块1302将输入图像1304和光调整类型1308发送至重新照明模块1202。重新照明模块1202基于每个光源的位置、方向和强度来选择权重1208。根据一些实施方式,根据每个光源的位置、方向和强度来索引权重组1208,该权重组1208是使用每个光源的位置、方向和强度被训练的。
重新照明模块1202将输入图像1204馈送到具有选择的权重1208的CNN 1206中,并且将输出图像1210馈送到光调整模块1212中。将经修改的输出图像1216返回至重新照明用户界面模块1302。在一些实施方式中,将输出图像1210返回至重新照明用户界面模块1302。重新照明用户界面模块1302使输出图像1310被递送给用户,例如被显示在屏幕1404上或保存到计算机存储器。用户可以保存1420输出图像1512或者将其发送1422给另一个用户。重新照明用户界面模块1302可以执行结合图6至图8公开的功能。
图16示出了与图6类似但在用户界面上呈现的示例。如结合图6所描述的,用户可以选择输入图像1602和选项重新照明1606,以使重新照明模块1202生成输出图像1604。如所示出的,用户已使用编辑和增强选项1408添加了两个增强对象,即对象1 1608和对象21608。然而,因为照明属性与输入图像1602的照明属性不同,因此这两个增强对象可能看起来不自然。
用户使用重新照明1606来调整照明,这生成了经修改的对象1 1612和经修改的对象2 1614。经修改的对象1 1612和经修改的对象2 1614更接近地与输出图像1604的照明匹配,使得心形看起来更自然。使经修改的对象1 1612强烈变亮以与人的脸部的右侧匹配。使经修改的对象2 1614被变亮以与人的脸部的左侧匹配。在一些实施方式中,权重1208基于增强物。例如,CNN 1106可以专门针对一个或更多个增强物进行训练,使得存在用于将心形增强物重新照明的权重1104。在一些实施方式中,对象识别用于确定增强物被放置在什么对象上,并且为对象和增强物选择权重1104。在一些示例中,基于具体的增强物和/或增强物在像脸部的对象类型上的放置,生成真值输入912和真值输出922以训练CNN 1106。
然后,根据一些实施方式,用户可以发送1422或保存1420输出图像1604。在一些实施方式中,输入图像1602可以是一系列的图像。
图17示出了根据一些实施方式的使用神经网络的对象重新照明的方法1700。方法1700开始于操作1702,其中:处理输入图像以生成具有不同照明的输出图像。例如,重新照明模块1202可以获取输入图像606并且使用具有权重1208的CNN 1206来生成输出图像616。
在一些实施方式中,操作1702包括:接收具有第一照明属性的输入图像,该输入图像包括具有第二照明属性的对象。例如,如图6所示,输入图像606具有第一照明属性608,并且添加的对象602具有第二照明属性604。在一些实施方式中,操作1702还包括:使用卷积神经网络来处理输入图像以生成输出图像,其中输出图像具有第一照明属性并包括具有第三照明属性的对象。例如,继续以图6的示例,输出图像616具有第一照明属性608,并且在添加的对象602被重新照明模块1202处理之后,添加的对象602具有第三照明属性614。在一些实施方式中,所使用的卷积神经网络被训练成将第二照明属性修改成与由第一照明属性指示的照明条件一致,以生成第三照明属性。例如,如结合图11所描述的,CNN 1106利用真值输入图像1102和真值输出图像1116来训练,以使输出图像1108的对象与具有第三照明属性922的对象918之间的差异变小或最小化。
由第一照明属性指示的光照条件可以指图9的第一照明条件904,该第一照明条件904用于生成图像902的第一照明属性916。在训练期间,CNN 1106修改对象918的第二照明条件920,以在输出图像1108中生成照明属性,然后将该照明属性与真值输出图像1116的第三照明属性922进行比较,其中第三照明属性922是使用第一照明条件904生成的。然后,CNN1106被训练成对第二照明属性进行修改以生成与用于生成图像的相同照明条件一致的第三照明属性。
将第二照明属性修改成与由第一照明属性指示的照明条件一致的示例是,如果第二照明属性指示存在两个照明源,并且第一照明属性指示仅存在一个照明源。CNN 1106被训练成使第二照明属性的像素的亮度减少,以移除第二照明源,从而生成第三照明属性。
方法1700在操作1704处继续进行,其中:修改输入图像,以使在亮度阈值以上的区域变亮。在一些实施方式中,操作1704包括:修改对象的第二照明属性,以使在第一亮度阈值以上的区域变亮,并使在第二亮度阈值以下的区域变暗,以生成具有经修改的第二照明属性的对象。在一些实施方式中,操作1704与由商业图像编辑软件执行的硬光操作相似或相同。参照图12,光调整模块1212处理输入图像1204以生成如本文所描述的硬光图像1214。
方法1700在操作1706处继续进行,其中:将输出图像与经修改的输入图像混合,以生成经修改的输出图像。在一些实施方式中,操作1708包括:将第三照明属性与经修改的第二照明属性混合,以生成经修改的输出图像,该经修改的输出图像包括具有第四照明属性的对象。继续来自操作1704的示例,光调整模块1212然后将硬光图像1214与输出图像1210混合,以生成如本文所描述的经修改的输出图像1216。
方法1700在操作1708处继续进行,其中:使得经修改的输出图像被显示。在一些实施方式中,操作1708包括:使得经修改的输出图像被存储或显示。例如,可以如结合图14所描述那样将输出图像1412显示在屏幕1404上,可以如结合图15所描述的那样显示输出图像1512,并且可以如结合图16所描述的那样显示输出图像1604。方法1700的操作中的一个或更多个可以是可选的。方法1700可以包括一个或更多个附加操作。方法1700的操作可以以不同的顺序来执行。
机器架构
图18是机器1800的图解表示,在该机器1800中可以执行用于使机器1800执行本文所讨论的任何一种或更多种方法的指令1808(例如,软件、程序、应用、小程序、app或其他可执行代码)。例如,指令1808可以使机器1800执行本文所描述的任何一种或更多种方法。指令1808将通用的未经编程的机器1800转换成特定机器1800,该特定机器1800被编程为以所描述的方式执行所描述和所示出的功能。机器1800可以作为独立设备操作,或者可以耦接(例如,联网)到其他机器。在联网部署中,机器1800可以在服务器-客户端网络环境中以服务器机器或客户端机器的资格操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器1800可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web设备、网络路由器、网络交换机、网络桥接器或能够顺序地或以其他方式执行指定要由机器1800采取的动作的指令1808的任何机器。此外,虽然仅示出了单个机器1800,但是术语“机器”还应被视为包括单独或联合执行指令1808以执行本文中讨论的方法中的任何一个或更多个方法的机器的集合。例如,机器1800可以包括客户端设备102或者形成消息服务器系统108的一部分的若干服务器设备中的任何一个。在一些示例中,机器1800还可以包括客户端系统和服务器系统两者,其中在服务器侧执行特定方法或算法的某些操作,并且在客户端侧执行特定方法或算法的某些操作。
机器1800可以包括可以被配置成经由总线1840彼此通信的处理器1802、存储器1804和输入/输出I/O部件1838。根据一些实施方式,处理器1802可以被称为计算机处理器。在示例中,处理器1802(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1808的处理器1806和处理器1802。术语“处理器”旨在包括多核处理器,所述多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)。尽管图18示出了多个处理器1802,但是机器1800可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或其任何组合。
存储器1804包括主存储器1812、静态存储器1814和存储单元1816,两者可由处理器1802经由总线1840访问。主存储器1804、静态存储器1814和存储单元1816存储实现本文所述的方法或功能中的任何一种或更多种的指令1808。指令1808还可以在其被机器1800执行期间完全地或部分地驻留在主存储器1812内、在静态存储器1814内、在存储单元1816内的机器可读介质1818内、在处理器1802中的至少一个处理器内(例如,在处理器的高速缓存存储器内)、或其任何合适的组合。
I/O部件1838可以包括用于接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种部件。包括在特定机器中的特定I/O部件1838将取决于机器的类型。例如,诸如移动电话的便携式机器诸可以包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。应当理解,I/O部件1838可以包括图18中未示出的许多其他部件。在各种示例中,I/O部件1838可以包括用户输出部件1824和用户输入部件1826。用户输出部件1824可以包括视觉部件(例如,例如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号生成器等。用户输入部件1826可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸姿势的位置和力的触摸屏、或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
在另一示例中,I/O部件1838可以包括生物计量部件1828、运动部件1830、环境部件1832、或定位部件1834以及各种其他部件。例如,生物计量部件1828包括用于检测表达(例如,手表达、脸部表达、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,声音识别、视网膜识别、脸部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1830包括:加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)。
环境部件1832包括例如:一个或更多个摄像装置(具有静止图像/照片和视频能力)、照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,为了安全而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。
关于摄像装置,客户端设备102可以具有摄像装置系统,该摄像装置系统包括例如客户端设备102的前表面上的前置摄像装置和客户端设备102的后表面上的后置摄像装置。前置摄像装置可以例如用于捕获客户端设备102的用户的静止图像和视频(例如,“自拍”),然后可以利用上面所描述的增强数据(例如,过滤器)对所述静止图像和视频进行增强。例如,后摄像装置可以用于以更常规的摄像装置模式捕获静止图像和视频,这些图像类似地用增强数据进行增强。除了前置和后置摄像装置之外,客户端设备102还可以包括用于捕获360°照片和视频的360°摄像装置。
此外,客户端设备102的摄像装置系统可以包括双后置摄像装置(例如,主摄像装置以及深度感应摄像装置),或者甚至在客户端设备102的前后侧上包括三重、四重或五重后置摄像装置配置。例如,这些多个摄像装置系统可以包括广角摄像装置、超广角摄像装置、长焦摄像装置、微距摄像装置和深度传感器。
位置部件1834包括定位传感器部件(例如,GPS接收器部件)、海拔传感器部件(例如,检测可以从其得到海拔的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
可以使用多种技术来实现通信。I/O部件1838还包括通信部件1836,通信部件1836可操作以经由相应的耦接或连接将机器1800耦接至网络1820或设备1822。例如,通信部件1836可以包括与网络1820对接的网络接口部件或另一合适的设备。在另外的示例中,通信部件1836可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、部件(例如,/>低能量)、/>部件以及经由其他模态提供通信的其他通信部件。设备1822可以是其他机器或各种各样的外围设备中的任何外围设备(例如,经由USB耦接的外围设备)。
此外,通信部件1836可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1836可以包括射频识别(RFID)标签读取器部件、NFC智能标签检测部件、光学读取器部件(例如,用于检测诸如通用产品代码(UPC)条形码的一维条形码、诸如快速反应(QR)码、Aztec码、数据矩阵、数据符号(Dataglyph)、最大码(MaxiCode)、PDF417、超码(UltraCode)、UCC RSS-2D条形码的多维条形码和其他光学码的光学传感器)或声学检测部件(例如,用于识别标记的音频信号的麦克风)。此外,可以经由通信部件1836得出各种信息,例如经由因特网协议(IP)地理定位得出的位置、经由信号三角测量得出的位置、经由检测可以指示特定位置的NFC信标信号得出的位置等。
各种存储器(例如,主存储器1812、静态存储器1814以及处理器1802中的存储器)以及存储单元1816可以存储由本文中描述的方法或功能中的任何一个或更多个实施或使用的一组或更多组指令和数据结构(例如,软件)。这些指令(例如,指令1808)在由处理器1802执行时使各种操作实现所公开的示例。
可以经由网络接口设备(例如,通信部件1836中包括的网络接口部件),使用传输介质并且使用若干公知的传输协议中的任何一种传输协议(例如,超文本传输协议(HTTP)),通过网络1820来发送或接收指令1808。类似地,可以使用传输介质经由到设备1822的耦接(例如,对等耦接)来发送或接收指令1808。
软件架构
图19是示出软件架构1904的框图1900,该软件架构1904可以安装在本文所描述的任何一个或更多个设备上。软件架构1904由硬件(例如包括处理器1920、存储器1926和I/O部件1938的机器1902)支持。在该示例中,可以将软件架构1904概念化为层的堆栈,在该层的堆栈中,每个层提供特定的功能。软件架构1904包括诸如操作系统1912、库1910、框架1908和应用1906的层。在操作上,应用1906通过软件堆栈来激发API调用1950,并且响应于API调用1950接收消息1952。
操作系统1912管理硬件资源并提供公共服务。操作系统1912包括例如:核1914、服务1916、以及驱动器1922。核1914用作硬件与其他软件层之间的抽象层。例如,核1914提供存储器管理、处理器管理(例如,调度)、部件管理、联网和安全设置等功能。服务1916可以针对其他软件层提供其他公共服务。驱动器1922负责控制底层硬件或与底层硬件接口连接。例如,驱动器1922可以包括显示驱动器、摄像装置驱动器、或低能量驱动器、闪存驱动器、串行通信驱动器(例如,USB驱动器)、驱动器、音频驱动器、电力管理驱动器等。
库1910提供由应用1906使用的公共低级基础设施。库1910可以包括系统库1918(例如,C标准库),系统库1918提供例如存储器分配功能、字符串操纵功能、数学功能等的功能。此外,库1910可以包括API库1924,例如媒体库(例如,用于支持各种媒体格式的呈现和操作的库,所述各种媒体格式例如运动图像专家组-4(MPEG4)、高级视频编码(H.264或AVC)、运动图像专家组层-3(MP3)、高级音频编码(AAC)、自适应多速率(AMR)音频编解码器、联合图像专家组(JPEG或JPG)或可移植网络图形(PNG))、图形库(例如,用于在显示器上的图形内容中以二维(2D)和三维(3D)进行呈现的OpenGL框架)、数据库库(例如,提供各种关系数据库功能的SQLite)、web库(例如,提供web浏览功能的WebKit)等。库1910还可以包括多种其他库1928,以向应用1906提供许多其他API。
框架1908提供由应用1906使用的公共高级基础设施。例如,框架1908提供各种图形用户接口(GUI)功能、高级资源管理以及高级定位服务。框架1908可以提供可以由应用1906使用的广泛的其他API,其中的一些API可以特定于特定的操作系统或平台。
在示例中,应用1906可以包括家庭应用1936、联系人应用1930、浏览器应用1932、书籍阅读器应用1934、重新照明应用1941、定位应用1942、媒体应用1944、消息应用1946、游戏应用1948和诸如第三方应用1940的种类繁多的其他应用。重新照明应用1941可以执行结合图13和本文中公开的操作。应用1906是执行程序中定义的功能的程序。可以使用各种编程语言来创建以各种方式构造的应用1906中的一个或更多个,所述编程语言例如面向对象的编程语言(例如,Objective-C、Java或C++)或过程编程语言(例如,C或汇编语言)。在特定示例中,第三方应用1940(例如,由特定平台的供应商以外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用)可以是在例如IOSTM、ANDROIDTM、Phone的移动操作系统或其他移动操作系统上运行的移动软件。在该示例中,第三方应用1940可以激活由操作系统1912提供的API调用1950以促进本文中描述的功能。
处理部件
现在转至图20,图14示出了处理环境2000的图解表示,处理环境1400包括处理器2002、处理器2006和处理器2008(例如,GPU、CPU或其组合)。处理器2002被示出为耦接至电源2004,并且包括(永久配置的或临时实例化的)模块,即用户界面部件2010、重新照明部件2012和神经网络部件2014。参照图12,用户界面部件2010可操作地呈现如图14至图16所示的用户界面,并且对用于处理输入图像的用户选择做出响应,并使输出图像被呈现或存储;重新照明部件2012采取输入图像1204并处理输入图像1204以生成经修改的输出图像1216并执行方法1700的操作;并且神经网络部件2014可操作地执行CNN 1206的操作。如所示出的,处理器2002通信地耦接至处理器2006和处理器2008两者。
术语表
“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质并且包括数字或模拟通信信号或其他无形介质以便于这样的指令的通信。可以经由网络接口设备使用传输介质通过网络发送或接收指令。
“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、台式计算机、膝上型计算机、便携式数字助理(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)的专用处理器。硬件部件还可以包括通过软件被短暂配置成执行某些操作的可编程逻辑或电路系统。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件被配置,则硬件部件成为被唯一地定制成执行所配置的功能的特定机器(或机器的特定部件)并且不再是通用处理器。应当理解,可以出于成本和时间考虑来决定是机械地在专用且永久配置的电路系统中实现硬件部件还是在临时配置(例如,通过软件配置)的电路系统中实现硬件部件。因此,短语“硬件部件”(或“硬件实现的部件”)应当被理解为包含有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。考虑硬件部件被临时配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每个进行配置或实例化。例如,在硬件部件包括通过软件配置而成为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处被配置为各自不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置特定的一个或多个处理器,以例如在一个时刻处构成特定硬件部件并且在不同的时刻处构成不同的硬件部件。硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,描述的硬件部件可以被认为通信地耦接。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中(例如,通过适当的电路和总线)进行信号传输来实现通信。在多个硬件部件在不同时间被配置或实例化的示例实施方式中,可以例如通过将信息存储在多个硬件部件可以访问的存储器结构中并且在存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在通信上耦接的存储器设备中。然后,其他硬件部件可以在随后的时间处访问存储器设备以检索和处理存储的输出。硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的集合)。在本文中描述的示例方法的各种操作可以至少部分地由临时地配置(例如,通过软件)或永久地配置成执行相关操作的一个或更多个处理器来执行。无论是临时地被配置还是永久地被配置,这样的处理器可以构成操作以执行本文中描述的一个或更多个操作或功能的处理器实现的部件。如本文中使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,在本文中描述的方法可以至少部分地由处理器实现,其中,特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器602或处理器实现的部件来执行。此外,一个或更多个处理器还可以操作成支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中这些操作可经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)来访问。某些操作的执行可以分布在处理器之间,不仅仅驻留在单个机器内,而是可以被部署在若干机器上。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理定位中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理定位而分布。
“计算机可读存储介质”是指机器存储介质和传输介质两者。因此,这些术语包括存储设备/介质和载波/经调制的数据信号两者。术语“机器可读介质”“计算机可读介质”和“设备可读介质”意指相同的事物并且可以在本公开内容中可互换地使用。复数形式“计算机可读介质”可以被称为“多个计算机可读介质”。
“短暂消息”是指可以在时间有限的持续时间内访问的消息。电子邮件消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送方设置。替选地,访问时间可以是默认设置或者由接收方指定的设置。无论设置技术如何,消息都是暂时的。
“机器存储介质”是指存储可执行指令、例程和数据的单个或多个存储设备和介质(例如,集中式或分布式数据库,以及相关联的缓存和服务器)。因此,术语应当被视为包括但不限于固态存储器以及光学和磁介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和设备存储介质的具体示例包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪存设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。术语“机器存储介质”“设备存储介质”“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换地使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、调制数据信号和其他这样的介质,其中的至少一些被涵盖在术语“信号介质”中。
“非暂态计算机可读存储介质”是指能够存储、编码或携载由机器执行的指令的有形介质。
“信号介质”是指能够存储、编码或携载由机器执行的指令并且包括数字或模拟通信信号的任何无形介质或者有助于软件或数据的通信的其他无形介质。术语“信号介质”应当被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指其特性中的一个或更多个特性被以将信息编码在信号中的方式设置或改变的信号。术语“传输介质”和“信号介质”意指相同的事物并且可以在本公开内容中互换使用。
Claims (20)
1.一种方法,包括:
接收具有第一照明属性的输入图像,所述输入图像包括具有第二照明属性的对象;
使用卷积神经网络来处理所述输入图像,以生成具有所述第一照明属性的输出图像,所述输出图像包括具有第三照明属性的所述对象,其中,所述卷积神经网络被训练成通过将所述第二照明属性修改成与由所述第一照明属性指示的照明条件一致,来生成所述第三照明属性;
修改所述对象的第二照明属性,以使在第一亮度阈值以上的区域变亮并且使在第二亮度阈值以下的区域变暗,以生成具有经修改的第二照明属性的所述对象;
将所述第三照明属性与所述经修改的第二照明属性混合,以生成经修改的输出图像,所述经修改的输出图像包括具有第四照明属性的所述对象;以及
使得所述经修改的输出图像被存储。
2.根据权利要求1所述的方法,其中,所述第三照明属性是所述第一照明属性。
3.根据权利要求1所述的方法,其中,将所述第二照明属性修改成与由所述第一照明属性指示的照明条件一致还包括:
将所述第二照明属性修改成指示与由所述第一照明属性指示的光源数量相同的光源数量。
4.根据权利要求1所述的方法,其中,所述对象是第一对象,所述输入图像是第一输入图像,所述输出图像是第一输出图像,所述照明条件是第一照明条件,并且其中,在处理操作之前,所述方法还包括:
根据第二照明条件生成第二输入图像,以使所述第二输入图像具有第五照明属性;
根据第三照明条件生成第二对象,以使所述第二对象具有第六照明属性;
将所述第二输入图像与所述第二对象合并,以生成真值输入;
根据所述第二照明条件生成所述第二对象,以使所述第二对象具有第七照明属性;
将所述第二输入图像与具有所述第七照明属性的所述第二对象合并,以生成真值输出;以及
使用所述真值输入和所述真值输出来训练所述卷积神经网络。
5.根据权利要求4所述的方法,其中,所述第二照明条件包括若干光源,其中所述光源中的每个光源具有方向、色相值、饱和度值和亮度值。
6.根据权利要求4所述的方法,其中,所述第二对象是人的三维(3D)模型。
7.根据权利要求4所述的方法,其中,所述方法还包括:
根据多个不同的照明条件生成多个所述第二对象,以使所述多个第二对象具有多个不同的照明属性;
将所述多个第二对象中的每个第二对象与所述第二输入图像合并,以生成多个真值输入,其中,所述多个真值输入中的每个真值输入与所述真值输出配对,以形成多个真值对;以及
使用所述多个真值对来训练所述卷积神经网络。
8.根据权利要求1至7中任一项所述的方法,其中,所述对象是第一对象,所述输入图像是第一输入图像,所述输出图像是第一输出图像,所述照明条件是第一照明条件,并且其中,在处理操作之前,所述方法还包括:
根据第二照明条件生成第二输入图像,以使所述第二输入图像具有第五照明属性;
根据第三照明条件生成第二对象,以使所述第二对象具有第六照明属性;
将所述第二输入图像与所述第二对象合并,以生成真值输入;
根据第四照明条件生成所述第二对象,所述第四照明条件包括具有白光光源的光源;
将所述第二输入图像与具有所述第七照明属性的所述第二对象合并,以生成真值输出;以及
使用所述真值输入和所述真值输出来训练所述卷积神经网络。
9.根据权利要求1至7中任一项所述的方法,其中,所述卷积神经网络被训练成将所述对象的第二照明属性修改成与由所述照明条件生成的照明属性匹配。
10.根据权利要求1至7中任一项所述的方法,其中,所述输出图像包括除所述对象之外的根据所述第一照明属性修改以适应所述对象的放置的部分。
11.根据权利要求1至7中任一项所述的方法,其中,所述第三照明属性是均匀平滑白光,并且其中,所述输出图像包括具有所述第三照明属性的脸部的掩模。
12.根据权利要求1至7中任一项所述的方法,其中,所述第一照明属性、所述第二照明属性和所述第三照明属性各自包括多个像素中的每个像素的色调值、饱和度值和亮度值。
13.根据权利要求12所述的方法,其中,所述第一照明属性、所述第二照明属性和所述第三照明属性各自包括多个通道,每个通道包括多个像素中的每个像素的色调值、饱和度值和亮度值。
14.根据权利要求1至7中任一项所述的方法,其中,所述卷积神经网络是生成性对抗网络。
15.根据权利要求1至7中任一项所述的方法,其中,在处理所述输入图像操作之前,所述方法还包括:
使得重新照明选项显示在屏幕上;并且其中,响应于接收到对所述选项中的用于重新照明所述输入图像的选项的选择,执行处理所述输入图像。
16.根据权利要求1至7中任一项所述的方法,其中,在处理所述输入图像操作之前,所述方法还包括:
使重新照明选项显示在屏幕上;并且其中,响应于接收到对所述选项中的用于中和所述输入图像的选项的选择,执行处理所述输入图像。
17.根据权利要求1至7中任一项所述的方法,还包括:
使得用户界面被显示,所述用户界面使得用户能够选择光源的数量、每个光源的强度以及每个光源的方向。
18.根据权利要求17所述的方法,还包括:
响应于对光源的数量、每个光源的强度以及每个光源的方向的选择,选择针对光源的数量、每个光源的强度以及每个光源的方向训练的权重;并且其中,使用所选择的权重来处理所述输入图像。
19.一种系统,包括:
一个或更多个计算机处理器;以及
一个或更多个计算机可读介质,所述一个或更多个计算机可读介质存储指令,所述指令在由所述一个或更多个计算机处理器执行时使得所述系统执行操作,所述操作包括:
接收具有第一照明属性的输入图像,所述输入图像包括具有第二照明属性的对象;
使用卷积神经网络来处理所述输入图像,以生成具有所述第一照明属性的输出图像,所述输出图像包括具有第三照明属性的所述对象,其中,所述卷积神经网络被训练成将所述第二照明属性修改成与由所述第一照明属性指示的照明条件一致,以生成所述第三照明属性;
修改所述对象的第二照明属性,以使在第一亮度阈值以上的区域变亮并且使在第二亮度阈值以下的区域变暗,以生成具有经修改的第二照明属性的对象;
将所述第三照明属性与所述经修改的第二照明属性混合,以生成经修改的输出图像,所述经修改的输出图像包括具有第四照明属性的所述对象;以及
使得所述经修改的输出图像被存储。
20.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括指令,所述指令在由计算机处理时将所述计算机配置成执行操作,所述操作包括:
接收具有第一照明属性的输入图像,所述输入图像包括具有第二照明属性的对象;
使用卷积神经网络来处理所述输入图像,以生成具有所述第一照明属性的输出图像,所述输出图像包括具有第三照明属性的所述对象,其中,所述卷积神经网络被训练成将所述第二照明属性修改成与由所述第一照明属性指示的照明条件一致,以生成所述第三照明属性;
修改所述对象的第二照明属性,以使在第一亮度阈值以上的区域变亮,并且使在第二亮度阈值以下的区域变暗,以生成具有经修改的第二照明属性的所述对象;
将所述第三照明属性与所述经修改的第二照明属性混合,以生成经修改的输出图像,所述经修改的输出图像包括具有第四照明属性的所述对象;以及
使得所述经修改的输出图像被存储。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063085263P | 2020-09-30 | 2020-09-30 | |
US63/085,263 | 2020-09-30 | ||
US17/385,462 | 2021-07-26 | ||
US17/385,462 US11830129B2 (en) | 2020-09-30 | 2021-07-26 | Object relighting using neural networks |
PCT/US2021/051528 WO2022072197A1 (en) | 2020-09-30 | 2021-09-22 | Object relighting using neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116457821A true CN116457821A (zh) | 2023-07-18 |
Family
ID=80821381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180077457.0A Pending CN116457821A (zh) | 2020-09-30 | 2021-09-22 | 使用神经网络的对象重新照明 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11830129B2 (zh) |
EP (1) | EP4222689A1 (zh) |
KR (1) | KR20230078755A (zh) |
CN (1) | CN116457821A (zh) |
WO (1) | WO2022072197A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11830129B2 (en) | 2020-09-30 | 2023-11-28 | Snap Inc. | Object relighting using neural networks |
US11847756B2 (en) | 2021-10-20 | 2023-12-19 | Snap Inc. | Generating ground truths for machine learning |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8896752B2 (en) * | 2009-09-11 | 2014-11-25 | Koninklijke Philips N.V. | Illumination system for enhancing the appearance of an object and method thereof |
US10667981B2 (en) * | 2016-02-29 | 2020-06-02 | Mentor Acquisition One, Llc | Reading assistance system for visually impaired |
US10607329B2 (en) * | 2017-03-13 | 2020-03-31 | Adobe Inc. | Illumination estimation from a single image |
US10692276B2 (en) | 2018-05-03 | 2020-06-23 | Adobe Inc. | Utilizing an object relighting neural network to generate digital images illuminated from a target lighting direction |
US10692277B1 (en) | 2019-03-21 | 2020-06-23 | Adobe Inc. | Dynamically estimating lighting parameters for positions within augmented-reality scenes using a neural network |
US11538216B2 (en) * | 2019-09-03 | 2022-12-27 | Adobe Inc. | Dynamically estimating light-source-specific parameters for digital images using a neural network |
US11380023B2 (en) * | 2020-03-18 | 2022-07-05 | Adobe Inc. | End-to-end relighting of a foreground object of an image |
US11830129B2 (en) | 2020-09-30 | 2023-11-28 | Snap Inc. | Object relighting using neural networks |
-
2021
- 2021-07-26 US US17/385,462 patent/US11830129B2/en active Active
- 2021-09-22 CN CN202180077457.0A patent/CN116457821A/zh active Pending
- 2021-09-22 WO PCT/US2021/051528 patent/WO2022072197A1/en active Application Filing
- 2021-09-22 EP EP21795077.3A patent/EP4222689A1/en active Pending
- 2021-09-22 KR KR1020237014445A patent/KR20230078755A/ko not_active Application Discontinuation
-
2023
- 2023-11-06 US US18/387,212 patent/US20240070976A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022072197A1 (en) | 2022-04-07 |
KR20230078755A (ko) | 2023-06-02 |
US11830129B2 (en) | 2023-11-28 |
US20240070976A1 (en) | 2024-02-29 |
EP4222689A1 (en) | 2023-08-09 |
US20220101596A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116601675A (zh) | 虚拟服装试穿 | |
KR102655795B1 (ko) | 미디어 콘텐츠 아이템들의 개인 컬렉션들에 대한 초대 미디어 오버레이들 | |
KR20230003096A (ko) | 미디어 콘텐츠 아이템들의 공유 컬렉션들에 대한 초대 미디어 오버레이들 | |
KR20230013097A (ko) | 특징있는 콘텐츠 컬렉션 인터페이스 | |
US20240070976A1 (en) | Object relighting using neural networks | |
CN115701304A (zh) | 上下文发送菜单 | |
CN116917938A (zh) | 整个身体视觉效果 | |
CN116057917A (zh) | 记录的声音的缩略图 | |
US20220207819A1 (en) | Light estimation using neural networks | |
US20220319059A1 (en) | User-defined contextual spaces | |
US20240205036A1 (en) | Shared augmented reality experience in video chat | |
CN117597940A (zh) | 用于呈现适用于摄像装置的功能的用户界面 | |
CN117136381A (zh) | 整个身体分割 | |
WO2024011181A1 (en) | Dynamically switching between rgb and ir capture | |
CN118119978A (zh) | 生成用于机器学习的真值 | |
US20220103495A1 (en) | Generating media content items for sharing to external applications | |
US11645324B2 (en) | Location-based timeline media content system | |
CN117136404A (zh) | 从歌曲中提取伴奏的神经网络 | |
KR20230075508A (ko) | 증강 현실 연속성을 위한 qr 생성 시스템 | |
US11954810B2 (en) | Augmented reality object rendering based on camera quality | |
US20240007585A1 (en) | Background replacement using neural radiance field | |
US12020386B2 (en) | Applying pregenerated virtual experiences in new location | |
CN116648718A (zh) | 使用神经网络的照亮估计 | |
US20220262089A1 (en) | Location-guided scanning of visual codes | |
KR20230127320A (ko) | 신경망들을 이용한 광 추정 |
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 |