WO2021034463A1 - Procédés et systèmes de traitement d'image et de voix - Google Patents
Procédés et systèmes de traitement d'image et de voix Download PDFInfo
- Publication number
- WO2021034463A1 WO2021034463A1 PCT/US2020/043975 US2020043975W WO2021034463A1 WO 2021034463 A1 WO2021034463 A1 WO 2021034463A1 US 2020043975 W US2020043975 W US 2020043975W WO 2021034463 A1 WO2021034463 A1 WO 2021034463A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- destination
- face
- source
- images
- image
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 183
- 238000012545 processing Methods 0.000 title claims description 180
- 230000008921 facial expression Effects 0.000 claims abstract description 93
- 230000014509 gene expression Effects 0.000 claims abstract description 53
- 230000007704 transition Effects 0.000 claims abstract description 37
- 230000001747 exhibiting effect Effects 0.000 claims abstract description 18
- 238000012549 training Methods 0.000 claims description 289
- 230000001815 facial effect Effects 0.000 claims description 102
- 238000013528 artificial neural network Methods 0.000 claims description 82
- 239000013598 vector Substances 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 26
- 230000009471 action Effects 0.000 claims description 17
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000010606 normalization Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 7
- 230000002996 emotional effect Effects 0.000 claims description 7
- 238000003702 image correction Methods 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 claims description 7
- 238000002156 mixing Methods 0.000 claims description 5
- 230000001537 neural effect Effects 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 23
- 230000008569 process Effects 0.000 description 70
- 210000000887 face Anatomy 0.000 description 43
- 210000001508 eye Anatomy 0.000 description 21
- 210000004709 eyebrow Anatomy 0.000 description 16
- 238000013527 convolutional neural network Methods 0.000 description 13
- 210000003128 head Anatomy 0.000 description 13
- 230000033001 locomotion Effects 0.000 description 13
- 210000002569 neuron Anatomy 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 11
- 210000000214 mouth Anatomy 0.000 description 11
- 238000003860 storage Methods 0.000 description 11
- 238000011176 pooling Methods 0.000 description 10
- 210000000744 eyelid Anatomy 0.000 description 8
- 238000005286 illumination Methods 0.000 description 8
- 238000007796 conventional method Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 210000004209 hair Anatomy 0.000 description 5
- 230000001755 vocal effect Effects 0.000 description 5
- 206010040954 Skin wrinkling Diseases 0.000 description 4
- 210000005069 ears Anatomy 0.000 description 4
- 230000008451 emotion Effects 0.000 description 4
- 210000001061 forehead Anatomy 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 206010042635 Suspiciousness Diseases 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 230000037007 arousal Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 210000003739 neck Anatomy 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000037303 wrinkles Effects 0.000 description 3
- 206010048909 Boredom Diseases 0.000 description 2
- 206010049976 Impatience Diseases 0.000 description 2
- 241001125929 Trisopterus luscus Species 0.000 description 2
- 230000016571 aggressive behavior Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000002591 computed tomography Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 210000001097 facial muscle Anatomy 0.000 description 2
- 230000004313 glare Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004091 panning Methods 0.000 description 2
- 241001672694 Citrus reticulata Species 0.000 description 1
- 206010011224 Cough Diseases 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 208000003443 Unconsciousness Diseases 0.000 description 1
- 206010048232 Yawning Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000003287 bathing Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000002592 echocardiography Methods 0.000 description 1
- 230000007340 echolocation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000003331 infrared imaging Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 210000000088 lip Anatomy 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 210000001747 pupil Anatomy 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 210000002105 tongue Anatomy 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
-
- 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/045—Combinations of networks
-
- 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/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/80—2D [Two Dimensional] animation, e.g. using sprites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/174—Facial expression recognition
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L13/00—Speech synthesis; Text to speech systems
- G10L13/02—Methods for producing synthetic speech; Speech synthesisers
- G10L13/033—Voice editing, e.g. manipulating the voice of the synthesiser
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/003—Changing voice quality, e.g. pitch or formants
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/06—Transformation of speech into a non-audible representation, e.g. speech visualisation or speech processing for tactile aids
- G10L21/10—Transforming into visible information
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/27—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique
- G10L25/30—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique using neural networks
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/48—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use
- G10L25/51—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use for comparison or discrimination
- G10L25/57—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use for comparison or discrimination for processing of video signals
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/003—Changing voice quality, e.g. pitch or formants
- G10L21/007—Changing voice quality, e.g. pitch or formants characterised by the process used
- G10L21/013—Adapting to target pitch
- G10L2021/0135—Voice conversion or morphing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/06—Transformation of speech into a non-audible representation, e.g. speech visualisation or speech processing for tactile aids
- G10L21/10—Transforming into visible information
- G10L2021/105—Synthesis of the lips movements from speech, e.g. for talking heads
Definitions
- This document relates to systems and techniques for digital image and voice processing.
- aspects of the present disclosure relate systems and methods configured to train an autoencoder using images that include faces, wherein the autoencoder comprises an input layer, an encoder configured to output a latent image from a corresponding input image, and a decoder configured to attempt to reconstruct the input image from the latent image.
- An image sequence of a CGI sculpted and textured face exhibiting a plurality of facial expressions and transitions between facial expressions is accessed. Images of the plurality of facial expressions and transitions between facial expressions are captured from a plurality of different angles.
- the autoencoder is trained using source images that include a CGI face with different facial expressions captured at different angles, and using destination images that include a real face (e.g., a photograph or video of a person’s face).
- the trained autoencoder is used to generate an output where the real face in the destination images is swapped with the CGI face, while preserving expressions of the real face.
- images from relatively few angles may be used (e.g., a single frontal or side facial image).
- a one-shot (or few shot) architecture (where one or a few example images (e.g., 1 -100 images) are used to classify many new examples in the future), comprising multiple neural networks performing different tasks, may be utilized to reduce the number of images needed to perform a face swap, where the likeness of a source face is applied to a destination image.
- a face swap where the likeness of a source face is applied to a destination image.
- an autoencoder e.g., comprising one or more neural networks
- the autoencoder may include an input layer, an encoder configured to output latent voice data from corresponding input voice data, and a decoder configured to attempt to reconstruct the input voice data from the latent voice data.
- An autoencoder neural network may be trained using frame error (FE) minimization criteria and back propagation, and the corresponding neural network weights may be adjusted to minimize or reduce the error (e.g., the error squared over the source-target, training data set).
- FE frame error
- a source voice file exhibiting a plurality of vocal expressions and transitions between vocal expressions may be accessed (e.g., publically available voice samples or custom or specially made voice samples).
- the voice file may be a subject dramatically reading a book, script, or the like.
- the voice file may be specifically generated to include all standard phonemes in a selected language (e.g., about 44 phonemes for the English language, about 35 for Mandarin language, about 48 for Malawistani).
- the voice file may be specifically generated to include someone speaking with different emotions (as reflected in the speaker’s emotional prosody), intonations, and sounds (anger, laughter, happy, desire, awe, fear, amusement, deadpan, serious, cough, yawn, etc.).
- emotional prosody the ability to express emotions through variations of different parameters of the human speech
- the autoencoder may be trained using one or more source voice files (e.g., of many different voices) and using a destination voice file (e.g., of a destination voice dramatically reading a book, script, or the like).
- source and target speakers record the same or substantially the same set of utterances for the respective training sets.
- the trained autoencoder is used to generate an output where the voice in the destination voice recording is swapped with the source voice, while preserving text and expressions of the destination voice.
- An aspect of the present disclosure relates to an electronic image processing system, comprising: a network interface; at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device: provide computer graphics animation resources configured to enable a user to generate computer graphic imagery (CGI) faces by: sculpting at least a face; adding texture to the face; animating the face to exhibit a plurality of facial expressions and transitions between facial expressions; use one or more virtual cameras to capture images of the plurality of facial expressions and transitions between facial expressions from a plurality of different angles; pre-train an autoencoder using images that include faces, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer to thereby constrain recreation of an input image by the encoder, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct
- An aspect of the present disclosure relates to a system, comprising: a network interface; at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device: access a source data set comprising an image sequence of a first computer graphic imagery (CGI) sculpted and textured face exhibiting a plurality of facial expressions and transitions between facial expressions; capture images of the plurality of facial expressions and transitions between facial expressions from a plurality of different angles; train an autoencoder using: source images that include the first CGI face with different facial expressions captured at different angles, and destination images that include a first real face, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer to thereby constrain recreation of an input image by the encoder, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to
- An aspect of the present disclosure relates to a computer implemented method comprising: under control of a hardware computing device configured with specific computer executable instructions: accessing a source data set comprising an image sequence of a first computer graphic imagery (CGI) sculpted and textured face exhibiting a plurality of facial expressions and transitions between facial expressions; capturing images of the plurality of facial expressions and transitions between facial expressions of the first CGI face from a plurality of different angles; training an autoencoder using: source images that include the first CGI face with different facial expressions captured at different angles, and destination images that include a first real face, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct the input image from the latent image; and using the trained autoencoder to generate an output using the destination images, where the first real face
- An aspect of the present disclosure relates to an electronic image processing system, comprising: a network interface; at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: access captured images of a plurality of facial expressions of a first CGI face and transitions between facial expressions from a plurality of different angles, wherein the captured images are captured to train autoencoders; pre-train an autoencoder using a plurality of facial images, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer to thereby constrain recreation of an input image by the encoder, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct the input image from the latent image; train the pre-trained autoencoder using the captured source images that include the first CGI face with different facial expressions captured at different
- An aspect of the present disclosure relates to a computer implemented method comprising: under control of a hardware computing device configured with specific computer executable instructions: generating a training source data set to train an autoencoder, the training source data set comprising facial images of a source face from a plurality of different angles, with a variety of different lighting characteristics, the source facial images exhibiting a plurality of facial expressions and transitions between facial expressions; training the autoencoder using: the generated training source data set source images comprising facial images of a source face from a plurality of different angles, with a variety of different lighting characteristics, the source facial images exhibiting a plurality of facial expressions and transitions between facial expressions, and destination images that include a destination face, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct the input image from the la
- An aspect of the present disclosure relates to an electronic image processing system, comprising: at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: access a training set of source images, the training set of source images comprising facial images of a source face from a plurality of different angles, with a variety of different lighting characteristics, the source facial images exhibiting a plurality of facial expressions and transitions between facial expressions; determining an alignment difference between at least one source image in the training set of source images and at least one destination image; and based at least on the determined alignment difference, determine if an additional image is to be obtained for the training set of source images; based at least in part on determining that an additional image is to be obtained for the training set of source images, access the additional image; train an autoencoder using at least a portion of the training set of source images, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that
- An aspect of the present disclosure relates to an electronic image processing system, comprising: a segmentation neural network configured to detect a face in digital images and associate a face indication with detected faces; a generator neural network configured to synthesize a face and swap a source face likeness from a corresponding source image to a destination face in a corresponding destination image, wherein an expression of the destination face is preserved; a discriminator network configured to determine a probability that a face in an image is a real face or a synthesized face and provide a corresponding output to the generator neural network, wherein weights of the generator neural network are adjusted during training of the generator neural network based at least in part on the discriminator output; and an inpainting neural network configured receive an output from the generator neural network, the generator neural network output comprising at least a first reconstructed destination image having the source face likeness and the expression of the destination face, wherein the inpainting network is configured to fill in missing pixels and/or perform background replacement in the first reconstructed image and output an inpainted first
- An aspect of the present disclosure relates to a computer implemented method comprising: performing training on a generative adversarial network comprising a generator learning network and a discriminator learning network; providing the trained generative adversarial network with a source image comprising an image of at least a source face; providing the trained generative adversarial network with a destination image comprising at least a destination face of a first entity; using the trained generative adversarial network to generate an image of the first entity with the likeness of the source face, where an expression of the destination face is preserved; and using an image correction learning network to automatically perform inpainting and/or background replacement on the image generated by the generative adversarial network.
- An aspect of the present disclosure relates to an electronic image and voice processing system, comprising: a network interface; at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: use one or more microphones to generate a source voice training set, wherein the one or more microphones are used to capture a source voice speaking a plurality of words using varying speech parameters, wherein the captured source voice is captured to train autoencoders; train an autoencoder using the source voice training set, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer to thereby constrain recreation of an input voice by the encoder, wherein the encoder is configured to output a latent voice from a corresponding input voice; a decoder configured to attempt to reconstruct the input voice from the latent voice; train the autoencoder using a destination voice speaking words using varying speech parameters; and access audio
- An aspect of the present disclosure relates to a computer implemented method comprising: under control of a hardware computing device configured with specific computer executable instructions: accessing a source voice data set of a first person speaking words using varying speech parameters; accessing a destination voice data set of a second person speaking words using varying speech parameters; training an autoencoder using: the source voice data set of the first person speaking words using varying speech parameters, and the destination voice data set of a second person speaking words using varying speech parameters, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer, wherein the encoder is configured to output a latent voice from a corresponding input voice; a decoder configured to attempt to reconstruct the input voice from the latent voice; accessing audio/video media comprising a video track and an audio track, wherein the audio track include the destination voice speaking words and the video track includes synchronized images of a destination face; using the trained autoencoder to generate a modified audio
- An aspect of the present disclosure relates to an electronic image and voice processing system, comprising: at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: implement an autoencoder comprising: an input layer; an encoder including at least one hidden layer that optionally has fewer nodes than the input layer to thereby constrain recreation of an input voice by the encoder, wherein the encoder is configured to output a latent voice from a corresponding input voice; a decoder configured to attempt to reconstruct the input voice from the latent voice; train the autoencoder using a source voice speaking words using varying speech parameters, and using a destination voice speaking words using varying speech parameters; access audio/video media comprising a video track and an audio track, wherein the audio track include the destination voice speaking words and the video track includes images of a destination face having lips synchronized with the destination voice; use the trained autoencoder to generate a modified audio track output using the destination voice
- An aspect of the present disclosure relates to an electronic image processing system, comprising: a network interface; at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: access captured images of a plurality of facial expressions of a first CGI face and transitions between facial expressions from a plurality of different angles, wherein the captured images are captured to train autoencoders; train a pre trained autoencoder using the captured images that include the first CGI face with different facial expressions captured at different angles, and using destination images that include a first real face, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer; wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct the input image from the latent image; and use the trained autoencoder to generate an output using destination images as an input where the first real face likeness in the destination images is
- An aspect of the present disclosure relates to a computer- implemented method comprising: under control of a hardware computing device configured with specific computer-executable instructions: ' training an autoencoder using: a generated training source data set source images comprising facial images of a source face from a plurality of different angles and/or with a variety of different lighting characteristics, the source facial images exhibiting a plurality of facial expressions and transitions between facial expressions, and destination images that include a destination face, wherein the autoencoder comprises: an input layer; an encoder including at least one hidden layer, wherein the encoder is configured to output a latent image from a corresponding input image; a decoder configured to attempt to reconstruct the input image from the latent image; and using the trained autoencoder to generate an output using the destination images, where the destination face likeness in the destination images is swapped with the source face likeness, while preserving expressions of the destination face.
- An aspect of the present disclosure relates to an electronic image processing system, comprising: at least one computing device; computer readable memory including instructions operable to be executed by the at least one computing device to perform a set of actions, configuring the at least one computing device to: access a training set of source images, the training set of source images comprising facial images of a source face from a plurality of different angles and/or with a variety of different lighting characteristics, the source facial images exhibiting a plurality of facial expressions and transitions between facial expressions; determining an alignment difference between at least one source image in the training set of source images and at least one destination image; and based at least on the determined alignment difference, determine if an additional image is to be obtained for the training set of source images; based at least in part on determining that an additional image is to be obtained for the training set of source images, access the additional image; and use a trained autoencoder to generate an output using destination images comprising a destination face as an input where the destination face likeness in the destination images is swapped with the like
- Figure 1 illustrates an example architecture
- Figure 2A-2B illustrates an example convolutional neural network architecture.
- Figures 3A, 3B, 3C illustrate example autoencoder and one-shot (few shot) architectures.
- Figure 4 illustrates an example process for generating a source data set.
- Figure 5 illustrates an example face swapping process.
- Figures 6 and 7 illustrate example user interfaces.
- Figure 8 illustrates an example CGI face presenting different expressions.
- Figure 9 illustrates example destination and output images generated by an autoencoder.
- Figure 10 illustrates an example multi-network configured to perform face swapping using relatively few images.
- Figure 11 illustrates an example voice swapping process.
- Figure 12 illustrates an example process for swapping a voice and a face in audio/video media.
- face-swapping is performed by capturing an image or a video of a person (sometimes referred to as the source) whose face is to be used to replace a face of another person in a destination video.
- a face region in the source image and target image may be recognized, and the face region from the source may be used to replace the face region in the destination, and an output image/video is generated.
- the source face in the output preserves the expressions of the face in the original destination image/video (e.g., has lip motions, eye motions, eyelid motions, eyebrow motions, nostril flaring, etc.). If insufficient computer resources and/or time are made available to perform the face swapping the output may fail on one or more looks or movements.
- conventional techniques lack the capability to generate output content in high resolution (FID (about 1920x1080 pixels, 1280x720 pixels, or 1366x768 pixels), 4K UFID (about 3840 x 2160 pixels), 4K (about 4096 x 2160 pixels), or 8k (about 7680x4320)), instead certain conventional techniques are limited to generating output content limited to a resolution of 256 pixels.
- FID about 1920x1080 pixels, 1280x720 pixels, or 1366x768 pixels
- 4K UFID about 3840 x 2160 pixels
- 4K about 4096 x 2160 pixels
- 8k about 7680x4320
- the image processing system 100 may be used to generate an output video, wherein a face is swapped from a face region in a source video to a face region in a destination video.
- An image processing system may include memory (e.g., non-volatile memory, such as semiconductor EEPROM, magnetic memory, optical memory, etc.) that stores an animation application 106 and a face swapping application 108.
- memory e.g., non-volatile memory, such as semiconductor EEPROM, magnetic memory, optical memory, etc.
- an animation application 106 e.g., non-volatile memory, such as semiconductor EEPROM, magnetic memory, optical memory, etc.
- face swapping application 108 e.g., a face swapping application 108.
- one or more operating systems, application programming interfaces, browsers, and/or other applications may be stored in memory.
- a data store 110 may include relational databases, non-relational database (which may be advantageous as it may provide easier storage for large amounts of certain types of data, such face alignment data (e.g., JSON face alignment data)), and/or flat file systems that store digital content.
- face alignment data e.g., JSON face alignment data
- JSON face alignment data may be unstructured, flexible, and human-readable.
- non- structured database may enable the JSON face alignment data to be stored, without having to adapt the data to a specialized database language (e.g., SQL).
- the data store 110 may include training sets (e.g., 2D and/or 3D images/videos that include human faces) to pre-train the face-swapping application 108 (as discussed in greater detail elsewhere herein), source data sets (e.g., 2D and/or 3D images/videos that include animations of human faces generated using the animation application), destination data sets (e.g., 2D and/or 3D destination images/videos that include human faces), and output data sets (images/videos generated by the face-swapping application 108).
- training sets e.g., 2D and/or 3D images/videos that include human faces
- source data sets e.g., 2D and/or 3D images/videos that include animations of human faces generated using the animation application
- destination data sets e.g., 2D and/or 3D destination images/videos that include human faces
- output data sets images/videos generated by the face-swapping application 108.
- one or more cameras may be used to capture images of a plurality of facial expressions of one or more faces and transitions between facial expressions from a plurality of different angles.
- This approach ensures that a highly efficient set of images are available for training, without gaps or with a greatly reduced number of gaps (e.g., missing angles or expressions) and without having to process facial images that may be redundant in terms of their utility in training neural networks.
- images from public sources, not specifically created for training neural networks may be missing images of faces at certain angles or with certain expressions, or may include multiple images of a face at a given angle and with a given expression.
- the data store 110 may store source animations images generated using a facial motion capture helmet and facial animation software.
- the facial motion capture helmet may be configured with one or more cameras.
- the facial capture helmet may include several high-resolution, high-speed cameras on arms configured to capture facial expressions and nuances of the person wearing the helmet (where the cameras are positionable to capture different angles of the person’s face) which may then be used as the basis for an animated face.
- the facial capture helmet may include on-board lighting configured to illuminate the face of the person wearing the helmet.
- One or more cameras 114 may be used to capture still or video images which may be used as face swapping engine training images and/or as destination images.
- the cameras 114 may include spherical cameras (e.g., cameras that capture about a 360 field of view).
- the cameras 114 may be of a desired resolution (e.g., resolution sufficient to generate FID, 4K UFID, 4K, 8K, or 16K videos).
- One or more microphones 116 may be provided to record audio content (e.g., the speech of the person whose face is being recorded) in synchronization with the image/video content.
- the audio content may be stored in the data store 110 as part of (a track of ) a destination video.
- two microphones may be provided to enable stereo recording.
- the image processing may be performed using one or more processing units, such as one or more graphics processing units (GPUs) 102-1 ... 102-N and/or one or more Central Processing Units (CPUs), where one or more CPUs may optionally be utilized to supplement or replace the use one or more GPUs.
- a given GPU may include hundreds or thousands of core processors configured to process tasks and threads in parallel.
- a GPU may include high speed memory dedicated for graphics processing tasks.
- a GPU may be configured to render frames at high frame rates.
- a GPU may be configured to render 2-D and/or 3-D graphics, perform texture mapping, and render polygons at high speed.
- a task allocator 104 may determine to which and to how many GPUs and/or CPUs to allocate graphics tasks from the animation application 106 and/or the face swapping application 108.
- the task allocator 104 may include or access one or more Central Processing Units (CPUs) that executes task allocation instructions, operating instructions, and/or other instructions.
- CPUs Central Processing Units
- the task allocator 104 may designate which and to how many GPUs to allocate a given task based on one or more of the following criteria: a user instruction provided via a user interface specifying how many GPUs and/or CPUs are to be assigned to a task (e.g., a pre-training task, a training task, a swapping task, an animation task, etc.); the current utilization and availability of GPUs and/or CPUs; the individual configurations of the GPUs and/or CPUs (where the GPU farm is non-homogenous and certain GPUs have more processing power, functionality and/or memory then other GPUs).
- a user instruction provided via a user interface specifying how many GPUs and/or CPUs are to be assigned to a task (e.g., a pre-training task, a training task, a swapping task, an animation task, etc.); the current utilization and availability of GPUs and/or CPUs; the individual configurations of the GPUs and/or CPUs (where the GPU farm is non-homogenous and certain
- a display 112 may be configured to display content from the data store 110, from the GPUs 102, from the animation application 106, from the face swapping application 108, user interfaces, other data, and/or the like.
- the display 112 may be any type of display, including an LCD, OLED, plasma, projector, virtual reality, or augmented reality displays.
- the virtual reality or augmented reality display may be in the form of a headset/goggles that include a display for each eye.
- the display 112 may be configured to render two dimensional or three dimensional images.
- the display 112 may include multiple displays which display the output of different applications, GPUs, and/or different content from the data store 110.
- a first display may display source content
- a second display may display destination content
- a third display may display output content generated by the face swapping application 108.
- the animation application 106 may be configured to generate animated faces (and optionally other computer generated imagery) to be used as source images/videos.
- the animation application may be configured to generate computer generated imagery (CGI), such as a face, by performing the sculpture/modelling of a character face, texturing, lighting, and rigging.
- CGI computer generated imagery
- the animated object, a face in this example can be a two-dimension (2D) model or a three-dimensional (3D) model in 3D space.
- the animation application 106 may enable some or all of the following CGI features to be controlled by a user (e.g., an animator) and/or rendered: shading (e.g., how the brightness and/or color of a surface, such as a surface of a face, varies with lighting); texture-mapping (e.g., applying detail information to surfaces or objects using maps); bump-mapping (e.g., simulating small-scale bumpiness on surfaces); shadows (e.g., effects of obstructing light); reflection; transparency or opacity (e.g., the degree and areas of sharp transmissions of light through solid objects, such as a face); translucency (e.g., the degree and areas of scattered transmissions of light through solid objects, such as a face); indirect illumination (e.g., where an object surface, such as a face, is illuminated by light reflected off other surfaces, rather than directly from a light source); depth of field; motion blur; non-realistic rendering (e
- the rigging may comprise an internal structure (optionally defined by the animator) as an interface.
- the rigging may include object components that deform the model of the face or other object.
- the animation application may provide an interface that enables a user to manipulate the rig to thereby control the deformations of the face or other object.
- the rig may be analogized to the functions of the strings of a marionette.
- the face (or other object) may be associated with properties such as elasticity and translucence.
- CGI character or object may be used as a source dataset.
- pre-existing imagery e.g., real persons or items identified in motion pictures, television shoes, animations, other video content, still photographs or graphics, and/or the like
- Such techniques may provide a more accurate model while reducing the time and computer resources needed to create the CGI model.
- a single camera or a multi-camera array may be utilized to capture images of an object or person from a variety of angles with varying lighting (e.g., optionally while varying lighting intensity and/or lighting angle using one or more motorized lights or lighting arrays).
- a photogrammetry process may be performed to obtain measurements (e.g., positions of surface points) from the captured images and the measurements may be utilized to generate a CGI model (e.g., a 3D model of a talking head).
- echolocation may be utilized to identify shapes and features of a target object or person using echoes of emitted sounds, which in turn may be utilized to generate a CGI model (e.g., a 3D model).
- CGI model e.g., a 3D model
- magnetic resonance imaging (MRI) or computed tomography (CT) may be utilized to form images of a target object or person, which in turn may be utilized to generate a CGI model.
- MRI magnetic resonance imaging
- CT computed tomography
- laser imaging, light detection and ranging (LIDAR), and/or infrared imaging may be utilized to scan and form images of a target object or person, which in turn may be utilized to generate a CGI model.
- a CGI face can also be generated by other neural networks/models.
- a generative adversarial network may be used in generating a CGI face.
- the GAN may include two neural networks, where a first neural network functions as a generative algorithm, while the second neural network (a discriminator) examines the generated faces of the first network to detect if the faces are real or not, thereby playing an adversarial function.
- the GAN may iteratively generate images based on photographs of real faces that the GAN learned from.
- the GAN may evaluate the new images generated by the GAN against the original faces.
- a neural network may be utilized to generate a CGI model.
- a neural network may be utilized to transfer the style of a target object to a CGI model.
- one or more images may be generated according to combinations of features from source images (e.g., high level structures and contours of objects or persons) and features from style images (e.g., color and texture) at different levels of abstraction.
- certain features, such as tattoos or makeup may be swapped from a body part of one real or animated person to a body part of another real or animated person.
- the learning engine may include a convolutional neural network (CNN), such as a deep CNN, an example of which is illustrated in Figure 2A.
- CNN convolutional neural network
- the CNN may include an input layer 202A, one or more hidden layers 204A, and an output layer 206A.
- the neural network may be configured as a feed forward network.
- the neural network may be configured with a shared-weights architecture and with translation invariance characteristics.
- the hidden layers may be configured as convolutional layers (comprising neurons/nodes), pooling layers, fully connected layers and/or normalization layers.
- the convolutional deep neural network may be configured with pooling layers that combine outputs of neuron clusters at one layer into a single neuron in the next layer.
- Max pooling and/or average pooling may be utilized. Max pooling may utilize the maximum value from each of a cluster of neurons at the prior layer. Average pooling may utilize the average value from each of a cluster of neurons at the prior layer.
- attention layers configured to mask vectors, may be used as hidden layers (e.g., to mask image noise especially for scaled-up images).
- an attention layer may enable the decoder to look-back at the encoder’s hidden states based on its current state. This enables the decoder to extract only relevant information about the input tokens at each decoding, while excluding noise.
- an autoencoder comprises neural networks (NN), with at least one hidden layer, that is trained to learn (or approximate) the identity function (where the NN output equals its input).
- NN neural networks
- the goal of the NN training (sometimes referred to as optimization) process is to minimize a loss (sometimes referred to as error, objective, or distance) function, computed on the output of the network, Y, and a target, T.
- Y should approach T, such that the loss decreases.
- T X.
- the encoder maps (or encodes) an input, X, to some representation, C.
- C corresponds to an encoding of X.
- the decoder maps (or decodes) the encoding, C, to a representation, Y — which is approximately (or exactly) the same as, X.
- an autoencoder may be utilized to perform the face swapping process.
- An autoencoder may attempt, with a reduced dimensionality, to replicate input vectors at the output layer with a reduced set of neurons/nodes.
- an example autoencoder includes an input layer 202B, an output layer 208B, an encoder 204B, and a decoder 206B.
- the encoder 204B maps the input (e.g., an image of a face) to generate a base vector (e.g., a latent image of the face).
- the decoder 206B maps the base vector (e.g., the latent image of the face) to a reconstruction of the original input (original image of the face).
- the output layer 208B has the same number of nodes/neurons as the input layer 202B to enable the input (an image of a face) to be reconstructed by the output, while minimizing the difference (the loss) between the output and the input.
- the encoder 204B includes at least one hidden layer that optionally has fewer nodes/neurons than the input layer to thereby constrain the recreation of the input at the encoder output (in the base vector/latent image).
- a hidden layer may have the same number of nodes or more nodes than the input layer.
- the encoder 204b and the decoder 206B share the base vector/latent image. For example, in certain instances it may not be necessary or desirable to have dimensionality-reduction.
- the autoencoder may be used to perform image de-noising, it may be desirable to add noise to the autoencoder input during training and try to reconstruct the noise-free input.
- a greater number of nodes may be used in one or more hidden layers than in the input layer (although in certain instances, a hidden layer may have fewer nodes than the input layer even in a de-noising application).
- the encoder 204B and decoder 206B may include only a single hidden layer each or may include multiple hidden layers.
- the use of multiple hidden layers may result in improved compression.
- the use of multiple hidden layers may greatly reduce the computational resources needed to generate a base vector/latent image by the decoder 206, and to generate an output by the decoder 206B, and may reduce the amount of training data sets needed for training.
- the number of nodes in a given layer may be dynamically increased to process the increase variables. Flowever, increases in the layer widths may also increase the amount of memory needed to hold the corresponding vectors and data.
- the hidden layer width may be reduced, to thereby reduce the amount of memory and other resources needed.
- dynamic adjustment of layer widths may be performed using hardware-based neural network.
- the layer width and/or the number of layers may optionally be adjusted so that excess memory and processing resources are not utilized for a given desired resolution, and so that the desired resolution and fidelity are achieved.
- a given node edge may be assigned a respective set of weights.
- Backpropagation may be used to adjust the weights each time the error is calculated to improve the autoencoder performance.
- training the autoencoder enables the encoder to represent the input (e.g., the image of a face or other base vector) in a more compact form (a lower dimensional representation of the face), which the decoder than attempts to reconstruct.
- the encoder 204B and decoder 206B may be trained using destination images with original faces.
- the encoder 204B (and optionally a different decoder) may also be trained using source faces.
- a latent face generated by the encoder 204B of the destination/original face may be feed to the decoder that was trained using the source face.
- the decoder trained using the source face will attempt to reconstruct the destination face, from the information relative to source face, resulting in a face that has the expressions and orientations of the destination face but having the source face.
- one or more intermediate networks may be utilized within the autoencoder to help learn more abstract representations.
- a first example intermediate network may include one layer or multiple fully connected layers.
- the layers may include convolutional layers, pixel upscaling layers, and/or one or more activation functions.
- the intermediate network may be functionally positioned between the encoder and decoder.
- a second example intermediate network may be used to classification and manipulation of the latent image output from the encoder.
- the second example intermediate network may include one layer or multiple fully connected layers, and the layers may include convolutional layers, pixel upscaling layers, and/or one or more activation functions
- This second example intermediate network may be functionally positioned between the encoder and decoder.
- Such an intermediate network enables mapping and fine-tuning of generated features by determining which parts of the latent image relate to which features and then directly manipulating the latent image (e.g., shifting in x direction by x amount) before the latent image is fed to the decoder.
- Figures 3A-3B illustrate an example learning engine (e.g., CNN autoencoder) pre-training process (3A) and an example learning engine (e.g., CNN autoencoder) training process (3B).
- the pre-training process optionally uses large numbers of images of different faces (e.g., 3,000-10,000 facial images).
- the pre training images may be from one or multiple sources.
- the pre-training process may be utilized to train the learning engine to identify and classify faces in images and/or facial features (e.g., nose, eyes, mouth, etc.).
- the training process may be utilized to train the learning engine to replicate input vectors at the output layer with a reduced set of neurons/nodes, to thereby train the learning engine to perform face swapping.
- pre-training images are accessed from one or more data sources.
- the data sources may be maintained and hosted by the same entity that maintains and operates the learning engine and/or may be maintained and hosted by other entities.
- one or more images are provided to the learning engine for pre-training.
- the learning engine attempts to identify/classify faces and/or features thereof, and the classification outputs are received.
- the learning engine may be configured to generate a bounding box around what the learning engine has classified as a face.
- the learning engine’s classification may be examined (e.g., by a human or another face classification system) and a determination is made as to whether the classification is correct.
- a statistical analysis may be performed as to the overall classification accuracy of the learning engine for multiple classifications performed on respective images. For example, the average accuracy may be utilized:
- Average accuracy total correct classifications/total classifications
- the determined accuracy may be compared to a minimum threshold accuracy. If the determined accuracy is equal to or exceeds the threshold accuracy, the process may end at block 310A. Otherwise, additional pre-training figures may be accessed and additional pre-training performed until the determined accuracy satisfies the accuracy threshold and/or until a certain amount of time has elapsed. [0070] Referring now to Figure 3B, at block 302B the example training process accesses the source animation data set for a given character.
- the source animation data set may include animated images (a video) of different expressions (e.g., with different positions and/or movement of the mouth, lips, tongue, facial muscles, eyelids, eyebrows, nostrils, cheeks, forehead, wrinkles, teeth and/or the like), angles, and/or lighting of the face of the CGI character generated using the animation application 106.
- animated images a video
- expressions e.g., with different positions and/or movement of the mouth, lips, tongue, facial muscles, eyelids, eyebrows, nostrils, cheeks, forehead, wrinkles, teeth and/or the like
- nostrils may be flared to indicate arousal
- lips may be positioned as a grin to indicate happiness
- lips may be compressed to indicate anger or frustration
- lips may be shaped into a pout to indicate sadness of uncertainty
- lips may be pursed to indicate disagreement
- a tongue may protrude from lids to indicate focus or disagreement
- eyes may be widened to indicate excitement
- big pupils may be used indicate arousal or interest, etc.
- Anger e.g., flared nostrils, eyebrows squeezed together to form a crease, eyelids tight and straight, slightly lowered head, eyes looking upwards through a lowered brow, tightening of facial muscles, tight lips;
- Confusion e.g., forehead and/or nose scrunched up, one eyebrow raised higher than the other, pursed lips
- Excitement e.g., open-mouthed smile, wide eyes, raised eyebrows
- Glare e.g., tensed eyebrows, squinted eyes, intense gaze.
- Seduction e.g., fixed and intense eyes, biting lips, tilted head, slight smile, one eyebrow raised higher than the other
- Snarl e.g., tensed eyebrows, squinted eyes, intense gaze, exposed teeth, and lips pulled back
- facial expressions may include aggression, arousal, contentment, contemplation, doubt, elation, exasperation, impatience, pleasure, suspicion, terror, wariness, etc.
- transitions between expressions may be captured (e.g., from surprise to happiness to contentment, and so on). Such expression transitions may greatly contribute to the ability to perform high quality, accurate, face swapping.
- several versions of each expression may be captured (e.g., captured from different angles and/or with illumination from different angles and/or with different intensities).
- Figure 8 illustrates example expressions on a CGI generated face.
- frames are extracted from the source data set video.
- the faces in the source frames may be located and aligned (e.g., to remove any rotation relative to the frame base) to facilitate the face swapping operation.
- other preprocessing may be performed. For example automatic time 'tagging' may be performed based on which faces are detected in the frames of the video, wherein timing data associated with when in the video a given face was identified may be stored in association with a face identifier.
- a tool/module may be provided which accesses a video, optionally renders a visual timeline (optionally in conjunction with a navigation scrubber) of the video overlaying or adjacent to a video player playback area, detects positions (and associated timing) where each unique real or CGI person’s face (or other specified feature) is present, and then automatically adds text, image, and/or graphic tags (e.g., timestamps) to the video timeline indicating at which points a desired target face appears.
- the module may enable the video to be automatically cropped in accordance with such assigned tags, to thereby remove unneeded video content (e.g., footage that does not include a specified face) before further preprocessing is performed, thereby reducing processor and memory utilization.
- a super resolution process may perform upscaling and/or improving details within an image. For example, a relatively low resolution input may be upscaled to a higher resolution, and the higher resolution image may have portions filled in where the details are essentially unknown.
- a super-resolution process may optionally be performed using a learning engine, such as a Generative Adversarial Network (GAN).
- GAN Generative Adversarial Network
- Blurry facial images may be detected using one or more techniques. For example, a Fast Fourier Transform (FFT) of an image may be generated and the distribution of low and high frequencies may be analyzed to detect whether the amount of high frequencies components are less than a certain threshold. If the amount of high frequencies components are less than the threshold, the image may be classified as blurry and removed from the image dataset to thereby reduce processor and memory utilization and improving the neural networks performance.
- FFT Fast Fourier Transform
- the destination data set is accessed.
- the destination data set may comprise a video including a real, non-CGI character whose face is to be replaced with the CGI face from the source data set.
- the non- CGI character may be engaged in acting a part in a movie, video game, video podcast, music video, or the like.
- the non-CGI character may be speaking or singing in the recording.
- the destination video may be captured at high resolution and at a high frame rate (e.g., 60-120 frames per second (fps) to provide smoother action), although lower frame rates (e.g., 24 or 30 fps) may be used.
- frames are extracted from the destination data set video.
- the faces in the destination frames may be located and aligned (e.g., to remove any rotation relative to the frame base) to facilitate the face swapping operation.
- the extracted source and destination frames are provided to the learning engine (e.g., a CNN autoencoder).
- the same encoder may be trained using both the extracted source frames and the extracted destination frames, but a first decoder may be trained using the latent images generated by the encoder from extracted destination frames, and a second decoder may be trained using the latent images generated by the encoder from extracted source frames.
- the autoencoder comprising the encoder and the first decoder is used to swap the CGI animated face from the source data set with the face in the destination data set.
- additional source and/or destinations facial images may be provided to the autoencoder at block 310B and the training may continue.
- a user interface may be provided that enables the user to name and/or associate tags with the trained autoencoder (sometimes referred to as a model). Such naming and tagging abilities facility later identification and searching for a desired model.
- the system may use an automated tool and process configured to access, scan, and analyze source and destination datasets to construct highly efficient source dataset of a relatively reduced size. The process may analyze the destination dataset images to locate and identify specific pieces of source data that are needed in order to have an optimal/full destination dataset.
- the source dataset and the destination dataset may be accessed from memory.
- the process may access a large repository of labeled source data which includes images of a subject from a large number angle, lighting conditions, eye gaze angles, positions, mouth shapes, eyelid positions, eyebrow positions, etc.
- the images (e.g., facial images) in the destination dataset and the source dataset may be aligned thereby enabling the process to better analyze the differences between the images in destination dataset and the source dataset.
- the alignment may include alignment of some or all of the following aspects and features: face position, nose position, position of eyes, position of mouth, eye gaze angle, and position/shape of the mouth (e.g., open, closed, talking, smiling, tongue presence/position, etc.).
- the process may identify the geometric structure of the faces in the images (e.g., identifying facial landmarks, such as jawline, face edges, etc.) and perform a canonical face alignment based on normalization, translation, scale, and/or rotation.
- a transform may be applied to a facial image such that the landmarks on the input face match the landmarks of a second facial image or a supervised learned model.
- the lighting may be analyzed in respective images to determine if there are lighting gaps that need to be supplemented.
- the alignment may be performed using one or more neural networks (e.g., deep convolutional neural networks, a Face Alignment Recurrent Network (FARN), or the like).
- neural networks e.g., deep convolutional neural networks, a Face Alignment Recurrent Network (FARN), or the like.
- the process inspects the alignments of the faces in the source dataset to identify gaps in the source dataset relative to the destination dataset. For example, the process may identify images in the destination dataset that include certain facial angles, positions, frames for which there are not corresponding images in the source dataset. The process may also identify in the source dataset unneeded or unnecessary frames/data based on the scanned destination dataset (e.g., because there are no images of corresponding facial angles in the destination data set).
- the alignment differences between a face image in a source dataset may be compared to corresponding face images in the destination dataset, and the mean square alignment differences may be calculated. If the mean square alignment differences are larger than a specified first threshold (indicating the alignment difference is too large), then a supplemental face image may be needed to fill the gap.
- the process may identify unneeded images/data in the source dataset (e.g., where the alignment differences are less than a specified second threshold)
- images that are considered to be unneeded or unnecessary in the source dataset may be deleted (e.g., where the alignment differences are less than a specified second threshold), thereby reducing memory utilization needed to store such images and reducing processing resources that would otherwise be needed to process or analyze such images in the future.
- facial images may be accessed or generated to fill the identified gaps in the source dataset.
- an algorithm may be used that enables the optimization of model hyperparameters/options which may be utilized to intelligently select optimized (e.g., best) values (e.g., given the performance and availability of GPUs and/or CPUs) for autoencoder training.
- the hyperparameters may include variables which determines the neural network structure and which may be set before training (e.g., before optimizing the node weights).
- Flyperparameters may include one or more of network weight initialization, number of hidden layers, activation function, momentum, dropout, learning rate (which represents how important is a weigth change after a re-calibration), batch size, and/or the like.
- the algorithm may use data obtained from multiple combinations of a given hyperparameter. Such data may include the amount of the change and its impact on memory utilization, optionally in combination with the other hyperparameters.
- a search function may be utilized that, based on constraints including a determined amount of available memory (e.g., dual ported Video RAM (VRAM)) and a specified desired resolution, returns an optimized (e.g., the best possible) combination of hyperparameters within the constraints.
- the impact of each hyperparameter may be determined in correlation to each other hyperparameter.
- a single source image transfer process may be utilized in conjunction with or instead of the multi-image pre-training process.
- meta-learning by a generative adversarial network may be performed on a large dataset of images
- the generative adversarial network may be capable of few-shot or one-shot learning of neural talking head models of previously unseen people (e.g., as adversarial training problems with generators and discriminators).
- the generative adversarial network may include a generator that has a goal producing outputs that a discriminator is unable to distinguish from a given class of training data.
- Multiple neural networks may be utilized in a learned model, where each neural network is configured to perform a specialized part of the process.
- this architecture does not have to be retrained for each target video/face/person. Rather, the neural networks are pre-trained on a wide and deep dataset in order to learn how to generalize faces.
- the model may be used for “one-shot” reenactment and segmentation of a CGI face to a target image or images (e.g., a target video).
- using a one-shot architecture may need only a single source face image and 1 to 5 destination face images in order to generate a reconstructed destination image face that has the likeness of the source face, while maintain the expression of the destination face.
- the one-shot architecture (implemented using a generative adversarial network) may be particular advantages where there is a paucity of source and/or destination images.
- a given neural network may be configured with an encoder and decoder, and may include an input layer, one or more hidden layers, and an output layer.
- a given neural network may be configured as a feed forward network.
- a given neural network may be configured with a shared- weights architecture and with translation invariance characteristics.
- the hidden layers may be configured as convolutional layers (comprising neurons/nodes), pooling layers, fully connected layers and/or normalization layers.
- the convolutional deep neural network may be configured with pooling layers that combine outputs of neuron clusters at one layer into a single neuron in the next layer. Max pooling and/or average pooling may be utilized.
- the networks in a one-shot architecture may include an adversarial- style generator and discriminator/classifier.
- a first neural network which may be referred to as the generator, generates new data instances (e.g., synthesized faces in this example), while a second neural network, which may be referred to as the discriminator, evaluates the generated data instances for authenticity (where the discriminator decides whether each reviewed instance of data (a face) that it reviews belongs to the actual training dataset (e.g., of faces) or not.
- the discriminator takes in both real images and fake images generated by the generator and returns probabilities indicating the likelihood that the image is real or a generated face image.
- the generator will continuously improve its generation of faces to “fool” the discriminator.
- the one-shot architecture (using the generator) may generate output images (still images, video images) in high resolution (e.g., FID, 4K UFID, 4K, 8K, or 16K).
- a generator 1008 is initially trained using a source dataset 1004 of source images (that include faces).
- the source dataset 1004 is provided to a segmentation network 1006.
- the segmentation network 1006 may comprise a convolutional neural network (e.g., a Fully Convolutional Network (FCNs)) trained to recognize a body part, such as a face (e.g., excluding the neck, ears, hair, long beards, and objects that might obscure the face).
- FCNs Fully Convolutional Network
- the segmentation network 1006 may mask, highlight, label, or otherwise identify the body part.
- the generator 1008 is configured to synthesize a real looking face (e.g., starting with random noise as an input).
- the discriminator 1010 is configured to attempt to identify whether the synthesized face is a real face or a synthesized face.
- the discriminator 1010 may comprise a neural network that performs classification, where the discriminator 1010 outputs the probability (e.g., in a range of 0 to 1 ) that image of a face is real.
- the discriminator 1010 may be provided real images of faces from the training source dataset 1004 a portion of the time (e.g., half the time) and fake, synthesized images of faces from the generator 1008 another portion of the time (e.g., half of the time), and attempt to accurately classify the faces as real or synthesized faces.
- a model error may be generated (minimax loss, Wasserstein loss, etc.) and backpropagated to adjust the generator 1008 neural network weights to improve the performance of the generator 1008 in generating a realistic face.
- Other loss functions may include per-pixel loss.
- the per-pixel loss function may be utilized (comprising summing the absolute errors between pixels), with respect to the architecture illustrated in Figures 2A-2B, toward the end of training to fine-tune certain more specific features.
- perceptual losses may be utilized (comprising summing the squared errors between pixels and taking the mean), which may provide much faster results (where the perceptual loss function is optimized using high level features extracted from already trained neural networks) and/or more accurate results.
- a perceptual loss function may be utilized to compare high level differences between images, such as content and style discrepancies.
- triple-consistency loss function may be utilized. The triple- consistency loss function may reduce the distance between the outputs generated by the neural network for different routes to the target, independent of intermediate steps, and so may reduce gaps between input and target domain distributions.
- the generator 1008 will generate highly realistic face (ideally, indistinguishable from real faces).
- the generator 1008 may then be fed destination images 1002 that include a face, and will swap a face likeness (e.g., optionally excluding the neck, ears, hair, long beards, and objects that might obscure the source face) from a source dataset (which may be a CGI face or a real face) for the destination image face to thereby generate a reconstructed destination image with the source face.
- a face likeness e.g., optionally excluding the neck, ears, hair, long beards, and objects that might obscure the source face
- an image correction neural network 1012 may be utilized to perform inpainting, hole filing, and/or background replacement (e.g., to add background features from the original destination image that are missing from the generator outputted reconstructed image) on the reconstructed image provided by the generator 1008.
- the image correction neural network 1012 may reconstruct missing parts of an image so that a view of the image is unable to tell that that regions of the image have undergone restoration.
- the image correction neural network 1012 may be trained. For example, images corrected by the correction neural network 1012 may be analyzed, and a loss function (e.g., a cross-entropy error function, a mean squared error function, etc.) may be used to generate a model error value based on differences between pixel values of the image output by the generator 1008 (which may indicate missing pixels or blurriness) and the corresponding training image. The correction neural network weights may then be updated using the backpropagation. The result provides a much more realistic and accurate reconstructed image, with the destination head and expressions, and the source face.
- a blending/merging component 1014 (which may comprise a neural network) may be utilized to perform further blending/merging operations on the output image generated by the correction neural network 1012.
- Figure 4 illustrates an example process for generating a source data set (e.g., an animated CGI face).
- the character face is sculpted (e.g., using an animation application) by an animator to create a 3D model.
- the character face may be configured to be rendered on volumetric basis (where a 3D model/data set is projected to 2D, approximating the integration of light rays cast into the volume).
- texture may be added to the sculpted face. For example, bumps, wrinkles, a subdermal layer, a specular highlight map, translucency, and/or the like may be added to create a realistic skin.
- illumination may be specified.
- direct illumination and/or indirect/global illumination may be specified.
- sunlight, fluorescent light, incandescent light, overcast, darkness may be specified.
- the resultant source data set may be tagged with the specified illumination factors.
- a facial expression or transition between facial expressions may be specified. Example facial expressions are described elsewhere herein (anger, aggression, boredom, concentration, contentment, confusion, contemplation, contempt, disgust, doubt, elation, exasperation, excitement, fear, frustration, glare, happy, impatience, pleasure, terror, wariness, sad, seduction, snarl, surprise, suspicion, terror, wariness, etc.).
- one or more virtual cameras are used to capture an image of the animated face with the specified expression at a first angle.
- a virtual camera may be in the form of software that works and may behave in a similar manner to an optical camera or digital camera would in the physical world.
- the virtual camera software when executed, performs calculations to determine how the CGI object will be rendered based on the location and angle of the virtual camera.
- the virtual camera may be configured to perform such virtual camera functions as panning, zooming in, zooming out, change focus, change aperture, and the like.
- the texture may be added after the virtual camera captures the image of the CGI face rather than before the virtual camera captures the image of the CGI face.
- a virtual light detector e.g., a virtual integrating sphere
- the scan may have been set up to scan +/- 60 degrees vertically and +/- 90 horizontally relative to the center of the CGI face.
- the scan process is completed at block 418.
- the scan process may be repeated with a different level, angle, and/or type of illumination.
- the process proceeds to block 414.
- the horizontal angle X is incremented by X increment degrees (e.g., 0.1 , .5, 1 , or 2 degrees) and/or the vertical angle Y is incremented by Y increment degrees(e.g., 0.1 , .5, 1 , or 2 degrees).
- the camera’s position may be held constant and the face may be accordingly rotated in view of the virtual camera.
- the facial expression may be changed (e.g., to a next facial expression in a list of character facial expressions), and the process may proceed to block 410.
- the virtual camera may capture an image of the CGI face with the new expression.
- the resultant source data set may be tagged and/or named to indicate the illumination used.
- the animator may be provided with a user interface via which the source data set may be specified as well as one or more tags.
- the source data set may then later be located using a search engine, where the search engine will search for and locate source data sets whose name, tags, creation dates, and/or last edit dates match user-specified search criteria provided via a search user interface.
- the search results may then be presented to the user via one or more displays.
- the resulting source video of the facial expressions may be viewed.
- the display may be a virtual reality or augmented reality headset that enables the viewer to pause the source video and walk or navigate around the CGI face to view the face from any angle.
- the source video may be generated in high resolution (e.g., HD, 4K UHD, 4K, 8K, or 16K).
- one or more virtual cameras may be used to capture images of the CGI face.
- a tradeoff may be made as to how fast the image capture process is to be performed versus how much data needs to be processed. For example, 36 virtual cameras may be used, 6 virtual cameras may be used, or 1 virtual camera may be used, where the fewer the number of virtual cameras, the less processing resources needed.
- FIG. 5 illustrates an example face swapping process.
- the source data set of CGI facial images is provided to the trained artificial intelligence engine (e.g., the trained autoencoder (e.g., a generative adversarial network)).
- the destination data set of CGI facial images (e.g., generated using one or more of the techniques described herein) is provided to the trained artificial intelligence engine.
- the trained artificial intelligence engine performs the face swap (e.g., by feeding the destination data set facial images to the encoder trained using source and destination facial images and to the decoder trained using the source facial images), where the output has the CGI source face while preserving the expressions of the face in the destination images.
- the output video sequence images are rendered on a display (the destination image with the destination face replace with the CGI facial image). If the destination images were associated with a speech track recorded of the person in the source images speaking, the output may have the lips and facial expressions of the CGI face synchronized with the speech track so that it appears that the CGI face is speaking the recorded speech track in the same manner as the original face.
- the source data set and/or the destination data set may be high resolution and the output may be rendered in high resolution (e.g., HD, 4K UHD, 4K, 8K, or 16K).
- an animator may manually refine the face-swapped image(s). For example, the face-swapping may results in a certain amount of blurriness as a result of pixel loss, particularly with respect to certain features, such as teeth.
- Image processing tools may be provided to sharpen the image or selected portions thereof. Further, image processing tools may be provided to remove or reduce undesirable shadowing.
- Figure 9 illustrates example destination images and the resultant output images with the original face replaced using an autoencoder with a CGI face.
- the foregoing process may be utilized to perform manipulation on various facial or body features.
- the foregoing process may be utilized to perform mouth manipulation, eye manipulation, body manipulation (optionally in combination with the face replacement process).
- the output of the process may generally maintain the integrity and likeness of the destination dataset, except as it relates to specified movements of specified facial or body features.
- image processing operations such as artificial intelligence engine training for identifying or swapping faces, or for performing face swapping
- image processing operations are complex for users to navigate. Therefore, conventionally, users may need to be highly skilled and trained.
- user interfaces that greatly simply the users experience in managing such image processing operations, and that reduce the need to navigate through multiple complex and confusing user interfaces.
- Figure 6 illustrates such an example user interface.
- the example user interface includes controls organized in function sets, such as a pre-training set of controls, a training set of controls, and a output video creation set of controls.
- a similar user interface (including a pre-training set of controls, an extract pre-training control, a specify number of processing units for pre-training control, an initiate pre training control, a terminate pre-training control, an initiate training control, a terminate training control, a select model control, select destination audio control, a select source audio control, select frame size) may be utilized to manage voice processing operations, such as the pre-training, training, and output voice creation.
- Other controls may include controls for using the trained autoencoders, controls for cleaning and preprocessing the image datasets, and/or the like.
- noisy images may be identified and removed from the dataset.
- noisy images may undergo an image de-noising process (using spatial domain filtering, variational denoising, transform techniques, CNN-based denoising methods, and/or using other techniques).
- the graphical user interface may include hidden layer controls that enable a user to specify and control, for the autoencoder, the number of hidden layers and/or the hidden layer width for each layer.
- the user interface may enable other tunable features to be specified, such as the use of reflection padding (where values are padded with the “reflection” or “mirror” of the values directly in the opposite direction of the edge of the “to be padded” shape), use of zero padding, use of casual padding, user of replication padding, specification of convolution kernel size, the use of an intermediate network within the autoencoder, the use of normalization (e.g., spectral normalization), the use of learn masks during training, and/or the like.
- This enables the user to optimize the autoencoder architecture for the desired resolution and fidelity (e.g., increasing the hidden layer width when higher resolution and fidelity is needed, and decreasing the hidden layer width when lower resolution and fidelity is needed to thereby reduce memory and processing utilization).
- the pre-training set of controls includes a select pre-training data set control, when activated, causes a file selection user interface to be presented.
- the file selection user interface may generate a list of pre-training data sets (e.g., videos or still images) from a pre-training data set data store. A user may select a desired pre-training data set to be used in training.
- An extract pre-training control when activated, causes frames from the selected pre-training data set to be extracted.
- a perform pre-training control when activated, causes the extracted frames from the selected pre-training data set to be provided to an artificial intelligence engine (e.g., an autoencoder) for pre-training.
- an artificial intelligence engine e.g., an autoencoder
- a specify number of GPUs for pre-training control when activated, causes a user interface to be presented via which the user may enter the number of GPUs in a GPU array that are to be used in performing the pre-training.
- the user interface may display the number of GPUs available based on a determination as to GPU availability.
- a specify pre-training batch size control when activated, causes a user interface to be presented via which the user may enter the number of extracted pre-training images that are to be used for a given training iteration (e.g., 0-32). For example, a relatively larger batch size result in a learning engine that more accurately identifies and classifies faces and/or facial features (e.g., eyes, nose, mouth), but may need more processing time and/or computing resources.
- An initiate pre-training control when activated, initiates the pre training process of the artificial intelligence engine (e.g., an autoencoder) as discussed elsewhere herein using the extracted frames from the selected training data set.
- the artificial intelligence engine e.g., an autoencoder
- a terminate pre-training control when activated, causes the pre training process to be manually halted. For example, a user may want to interrupt a pre-training process because it is taking too long or because the real-time results indicate that the current level of pre-training is adequate.
- the training set of controls includes a select destination data set control, when activated, causes a file selection user interface to be presented.
- the file selection user interface may generate a list of destination data sets (e.g., videos) from a destination data set data store. A user may select a desired destination data set to be used in training.
- a select source data set control when activated, causes a file selection user interface to be presented.
- the file selection user interface may generate a list of source data sets (e.g., videos) from a source data set data store.
- a user may select a desired source data set to be used in training.
- An extract training control when activated, causes frames from the selected destination and source data sets to be extracted.
- a specify number of GPUs for training control when activated, causes a user interface to be presented via which the user may enter the number of GPUs in a GPU array that are to be used in performing the training.
- the user interface may display the number of GPUs available based on a determination as to GPU availability.
- a specify training batch size control when activated, causes a user interface to be presented via which the user may enter the number of extracted training images that are to be used for a given training iteration (e.g., 0-32). For example, a relatively larger batch size result in a learning engine that more accurately performs face swapping, but may need more processing time and/or computing resources.
- An initiate training control when activated, initiates the training process of the artificial intelligence engine (e.g., an autoencoder, such as an generative adversarial network) as discussed elsewhere herein using the extracted frames from the selected destination and source data sets.
- the artificial intelligence engine e.g., an autoencoder, such as an generative adversarial network
- a terminate training control when activated, causes the training process to be manually halted. For example, a user may want to interrupt a training process because it is taking too long or because the real-time results indicate that the current level of training is adequate.
- the output video creation set of controls includes a select model control, when activated, causes a model selection user interface to be presented.
- the model selection user interface may generate a list of models (e.g., trained autoencoders) in a trained model data store.
- a user may select a desired trained model to be used in performing a face swapping operation.
- a model search field may be provided which enables the user to enter or select search criteria (e.g., a name, tags, creation date, last edit date, etc.).
- search engine may then locate models that match the search criteria and generate a search results list that is presented to the user and from which the user can select a desired model.
- the search may automatically be limited to models, rather than files and data objects in general.
- a select destination video control when activated, causes a file selection user interface to be presented.
- the file selection user interface may generate a list of destination videos from a destination data set data store.
- a user may select a desired destination video to be used in performing the face swapping operation.
- a select source video control when activated, causes a file selection user interface to be presented.
- the file selection user interface may generate a list of source videos from a source data set data store.
- a user may select a desired source video to be used in performing the face swapping operation.
- a select FPS control when activated, causes a frame per second selection user interface to be presented.
- the user interface may include a menu of FPS choices (e.g., 24, 30, 60, 120 fps) from which the user may select and/or the user interface may include a field via which the user may manually enter a desired FPS.
- a specify number of GPUs for swap control when activated, causes a user interface to be presented via which the user may enter the number of GPUs in a GPU array that are to be used in performing the face swapping process.
- the user interface may display the number of GPUs available based on a determination as to GPU availability.
- a specify batch size control when activated, causes a user interface to be presented via which the user may enter the number of source and destination images that are to be used for a given swap iteration (e.g., 0-32).
- a specify output file format control when activated, causes an output file format user interface to be presented.
- the user interface may include a menu of file choices from which the user may select, such as MPEG, JPEG, etc.
- a create video with swapped faces control when activated, causes the face swapping process, described elsewhere herein, to be performed.
- a terminate face swapping process control when activated, causes the face swapping process to be manually halted. For example, a user may want to interrupt a face swapping process because it is taking too long or because the real time results indicate that the output is unsatisfactory.
- a user interface may be provided that, in real time, shows at the same time the original destination image, the corresponding latent destination image, the original source image, the latent source image, and/or the estimated output of the face swapping process.
- Figure 7 illustrates such an example user interface, including original destination, destination image, original source, latent source, and estimated output columns. Each row may represent another iteration.
- Other information presented via the user interface may include network loss values during training, predicted/learned masks for preview faces, and/or the like (which may optionally be presented via respective columns).
- This interface may enable a user to monitor the training progress and/or performance of an engine, such as an autoencoder, in real time. Based on the monitored progress, a user may elect to terminate a pre- training process, a training process, or a face swapping process.
- voice swapping may be performed using certain techniques disclosed herein.
- the voice swapping may be optionally performed in conjunction with face swapping.
- a first voice in an audio recording may be swapped with a second voice while maintaining the text and other features (e.g., emotions, etc.) from the first voice.
- an autoencoder may be trained using voice samples.
- the autoencoder may include an input layer, an encoder configured to output a latent representation of the input voice data, and a decoder configured to attempt to reconstruct the input voice data from the latent representation of the input voice data.
- the autoencoder may include a neural network.
- the neural network may be trained using frame error (FE) minimization criteria and the corresponding weights may be adjusted to minimize or reduce the error (e.g., the error squared over the source-target, training data set).
- FE frame error
- GANs generative adversarial networks
- the generative adversarial networks may include a generator network that generates new data instances (e.g., synthesized voices in this example), while a discriminator network, evaluates the generated voice instances for authenticity (where the discriminator decides whether each reviewed voice instance belongs to the actual training dataset (e.g., of voices) or not.
- the discriminator takes in both real voices and fake voices generated by the generator and returns probabilities indicating the likelihood that the voice is real or a generated voice.
- the generator will continuously improve its generation of voices to “fool” the discriminator.
- a source voice file exhibiting a plurality of vocal expressions and transitions between vocal expressions may be accessed.
- the voice file may a subject dramatically reading a book, script, or the like.
- the voice file may include 10kFlz-20kFlz recording of phonetically-balanced read speech.
- the autoencoder or generator may be trained using the source voice file, and may also be trained using a destination voice file (e.g., of a destination voice dramatically reading a book, script, or the like, responding in an interview, etc.).
- the autoencoder training may be performed more quickly, using less processor and memory resources, while providing greater fidelity.
- the trained autoencoder or generator is used to generate an output where the voice in the destination voice record is swapped with the source voice, while preserving text and other characteristics (e.g., emotions, style, etc.) of the destination voice. For example, a male voice may be swapped with a female voice, or vice versa.
- Initial training may be performed using utterances from many speakers (e.g., several hours of speech).
- the training recordings may include hundreds or thousands of different speakers reading the same set of text (e.g., 5, 10, 20, or 30 sentences).
- the speakers may be of just once sex (e.g., male or female) or from both sexes (both male and female).
- the harmonics of the converted speech may be shifted to a lower frequency.
- the harmonics of the converted speech may be shifted to a higher frequency.
- the input to the voice autoencoder and/or to the autoencoder decoder targets may be digitized raw waveforms, fundamental frequencies, and/or mel-frequency cepstral coefficients (extracted from the digitized waveforms) spectrogram (representing the voice spectrum).
- the mel-frequency cepstral coefficients (which may be periodically extracted from the voice recording (e.g., every 1 ms, every 3 ms, every 5 ms, every 10 ms, or other period) may be used as filter parameters for a filter used to derive fundamental frequency estimates.
- the mel-cepstral coefficient vectors of the source voice and the target voice are aligned (e.g., using time warping) to account for the differences in duration of the utterances of the source and destination voices.
- a neural network may be utilized to perform a shift in pitch, frequency, and/or modulation, and/or synthesize audio with a similar pitch, frequency, and/or modulation to a source voice.
- a source audio dataset e.g., shifted audio or synthesized audio
- An encoder may be utilized to generate spectrograms for both the source and target audio (e.g., source and target voices).
- an encoder may be utilized to generate an autocorrelogram, a three-dimensional representation of sound where time, frequency and periodicity.
- the neural network may be utilized to manipulate the target spectrogram (or autocorrelogram) to bring it closer to the source spectrogram (or autocorrelogram).
- the neural network may be utilized to generate a new spectrogram the sound (e.g., speech) of the target but which resembles the pitch, frequency, and/or modulation of the source sound (e.g., speech).
- the neural network may utilize a trained vocoder for synthesizing the new target voice.
- the vocoder may utilize a neural network architecture configured to perform audio synthesis by predicting a given audio sample at a time based on previously generated samples and certain conditions, such as a sequence of phonemes and/or fundamental frequencies.
- Both the encoder and/or vocoder are optionally pre-trained on large datasets of human speech to provide generalized training.
- the encoder and/or vocoder may then be optionally trained and fine-tuned using the source audio.
- the neural network (which may be a dilated convolutional neural network) may optionally be used to synthesize the source audio (e.g., voice) spectrogram from text (to thereby perform text to speech conversion), and the neural network may be further used to adjust the pitch, frequency, and/or inflection of the source audio to match the target’s pitch, frequency, and/or inflection.
- the model may be coarsely training on a large training dataset, the model may then undergo fine tuning training using a specific voice.
- FIG 11 illustrates an example voice swap process.
- the source data set of voice records is provided to the artificial intelligence engine for training purposes.
- the destination data set of voice records is provided to the trained artificial intelligence engine.
- the trained artificial intelligence engine performs the voice swap (e.g., by feeding the destination data set voice records to the encoder trained using source and destination voice records and to the decoder trained using the source data records), where the output has the source voice while preserving the character (e.g., emotional prosody) and/or text of the voice in the destination voice records.
- the output audio record may be generated with the source voice and the destination text and/or emotional prosody.
- the audio record may be played via an audio playback device (including a speaker). If the destination voice data was associated with a video track recorded of the person speaking in the source voice record, the voice in the output audio record may be synchronized with the lips and facial expressions of the person in the video.
- one or more microphones may be utilized to generate a source voice training set by capturing a source voice speaking a plurality of words using varying speech parameters (such as those described herein), wherein the captured source voice is captured to train autoencoders.
- An autoencoder may be trained using the source voice training set and using a destination voice speaking words using varying speech parameters.
- the trained autoencoder and a face swapping network may be used to process audio/video media (e.g., from a video sharing site, a television show, a movie, etc.).
- the audio/video media may comprise a video track and an audio track, wherein the audio track includes the destination voice speaking words and the video track includes images of a destination face having lips synchronized with the destination voice.
- the audio/video media is accessed (e.g., from local memory, remote storage, via a streaming source, or otherwise).
- the trained voice swapping autoencoder may be used to generate a modified audio track using the destination voice in the original audio track as an input, where the destination voice is swapped with the source voice, while preserving the words of the destination voice, so that the source voice is speaking the words of the destination voice (optionally with the intonation, frequency, and/or pitch of the destination voice, or optionally with a modified intonation, frequency, and/or pitch).
- the face swapping network may be used to generate a modified video track wherein the face swapping network replaces the destination face likeness with a source face likeness while preserving the facial expressions of the destination face.
- the modified video track and the modified audio track may be used to generate modified audio/video media, optionally with the destination head (e.g., hair, ears, hat etc.) having the source face likeness speaking the destination voice words with certain destination voice characteristics (e.g., inflection, pacing, etc.) but using the source voice.
- the modified audio track may be synchronized with the modified video track, so that the source face (on the destination head) is speaking using the source voice, but with the facial and vocal expressions of the destination face and destination voice.
- the modified audio/video media may then be played by a media player and/or distributed (e.g., via a streaming platform, via a download platform, via physical memory media, or otherwise) for playing or further editing by user devices.
- the disclosed processes may be performed in whole or in part by a user device, a local system, and/or a cloud-based system.
- a secure, cloud based system comprised of co-located and/or geographically distributed server systems (which may include cloud-based GPU systems).
- Information may be received by the cloud-based system from one or more terminals.
- a terminal may include or be connected (via a wireless or wired connection) to one or more sensors, such as one or more microphones, one or more cameras (e.g., front facing and/or rear facing cameras, and/or the like.
- a terminal may include a display, a wired network interface, a wireless local network interface and/or wireless cellular interface.
- the methods and processes described herein may have fewer or additional steps or states and the steps or states may be performed in a different order. Not all steps or states need to be reached.
- the methods and processes described herein may be embodied in, and fully or partially automated via, software code modules executed by one or more general purpose computers.
- the code modules may be stored in any type of computer-readable medium or other computer storage device. Some or all of the methods may alternatively be embodied in whole or in part in specialized computer hardware.
- the systems described herein may optionally include displays, user input devices (e.g., touchscreen, keyboard, mouse, voice recognition, etc.), network interfaces, etc.
- results of the disclosed methods may be stored in any type of computer data repository, such as relational databases and flat file systems that use volatile and/or non-volatile memory (e.g., magnetic disk storage, optical storage, EEPROM and/or solid state RAM).
- volatile and/or non-volatile memory e.g., magnetic disk storage, optical storage, EEPROM and/or solid state RAM.
- a machine such as a general purpose processor device, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein.
- DSP digital signal processor
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- a general purpose processor device can be a microprocessor, but in the alternative, the processor device can be a controller, microcontroller, or state machine, combinations of the same, or the like.
- a processor device can include electrical circuitry configured to process computer- executable instructions.
- a processor device includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions.
- a processor device can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- a processor device may also include primarily analog components.
- a computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.
- a software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium.
- An exemplary storage medium can be coupled to the processor device such that the processor device can read information from, and write information to, the storage medium.
- the storage medium can be integral to the processor device.
- the processor device and the storage medium can reside in an ASIC.
- the ASIC can reside in a user terminal.
- the processor device and the storage medium can reside as discrete components in a user terminal.
- Conditional language used herein such as, among others, “can,” “may,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without other input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.
- Disjunctive language such as the phrase “at least one of X, Y, Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
- While the phrase “click” may be used with respect to a user selecting a control, menu selection, or the like, other user inputs may be used, such as voice commands, text entry, gestures, etc.
- User inputs may, by way of example, be provided via an interface, such as via text fields, wherein a user enters text, and/or via a menu selection (e.g., a drop down menu, a list or other arrangement via which the user can check via a check box or otherwise make a selection or selections, a group of individually selectable icons, etc.).
- a corresponding computing system may perform the corresponding operation.
- a system data store e.g., a database
- the notifications/alerts and user interfaces described herein may be provided via a Web page, a dedicated or non- dedicated phone application, computer application, a short messaging service message (e.g., SMS, MMS, etc.), instant messaging, email, push notification, audibly, a pop-up interface, and/or otherwise.
- SMS short messaging service message
- the user terminals described herein may be in the form of a mobile communication device (e.g., a cell phone), laptop, tablet computer, interactive television, game console, media streaming device, head-wearable display, networked watch, etc.
- the user terminals may optionally include displays, user input devices (e.g., touchscreen, keyboard, mouse, voice recognition, etc.), network interfaces, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Signal Processing (AREA)
- Acoustics & Sound (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Medical Informatics (AREA)
- Geometry (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Graphics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
L'invention concerne des systèmes et des procédés configurés pour entraîner un autocodeur à l'aide d'images qui comprennent des visages, l'autocodeur comprenant une couche d'entrée, un codeur configuré pour délivrer en sortie une image latente à partir d'une image d'entrée correspondante, et un décodeur configuré pour tenter de reconstruire l'image d'entrée à partir de l'image latente. Une séquence d'images d'un visage présentant une pluralité d'expressions faciales et des transitions entre des expressions faciales est générée et fait l'objet d'un accès. Des images de la pluralité d'expressions faciales et des transitions entre des expressions faciales sont capturées à partir d'une pluralité d'angles différents et à l'aide de différents éclairages. Un autocodeur est entraîné à l'aide d'images sources qui comprennent le visage ayant différentes expressions faciales capturées à différents angles avec différents éclairages, et à l'aide d'images de destination qui comprennent un visage de destination. L'autocodeur entraîné est utilisé pour générer une sortie où la similitude du visage dans les images de destination est échangée contre la similitude du visage source, tout en préservant les expressions du visage de destination.
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/544,673 | 2019-08-19 | ||
US16/544,673 US10552667B1 (en) | 2019-08-19 | 2019-08-19 | Methods and systems for image processing |
US16/700,724 | 2019-12-02 | ||
US16/700,724 US10803646B1 (en) | 2019-08-19 | 2019-12-02 | Methods and systems for image and voice processing |
US16/700,695 US10658005B1 (en) | 2019-08-19 | 2019-12-02 | Methods and systems for image and voice processing |
US16/700,695 | 2019-12-02 | ||
US16/700,684 US10671838B1 (en) | 2019-08-19 | 2019-12-02 | Methods and systems for image and voice processing |
US16/700,684 | 2019-12-02 | ||
US16/884,485 US10949715B1 (en) | 2019-08-19 | 2020-05-27 | Methods and systems for image and voice processing |
US16/884,485 | 2020-05-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021034463A1 true WO2021034463A1 (fr) | 2021-02-25 |
Family
ID=74659715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2020/043975 WO2021034463A1 (fr) | 2019-08-19 | 2020-07-29 | Procédés et systèmes de traitement d'image et de voix |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2021034463A1 (fr) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112990283A (zh) * | 2021-03-03 | 2021-06-18 | 网易(杭州)网络有限公司 | 图像生成方法、装置和电子设备 |
CN114171053A (zh) * | 2021-12-20 | 2022-03-11 | Oppo广东移动通信有限公司 | 一种神经网络的训练方法、音频分离方法、装置及设备 |
US11308657B1 (en) | 2021-08-11 | 2022-04-19 | Neon Evolution Inc. | Methods and systems for image processing using a learning engine |
CN114581812A (zh) * | 2022-01-12 | 2022-06-03 | 北京云辰信通科技有限公司 | 视觉语言识别方法、装置、电子设备及存储介质 |
US20220237751A1 (en) * | 2021-01-28 | 2022-07-28 | Disney Enterprises, Inc. | Techniques for enhancing skin renders using neural network projection for rendering completion |
WO2023142886A1 (fr) * | 2022-01-28 | 2023-08-03 | 华为技术有限公司 | Procédé de transfert d'expression, procédé d'apprentissage de modèle et dispositif |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110123118A1 (en) * | 2008-01-24 | 2011-05-26 | Nayar Shree K | Methods, systems, and media for swapping faces in images |
US20140204084A1 (en) * | 2012-02-21 | 2014-07-24 | Mixamo, Inc. | Systems and Methods for Animating the Faces of 3D Characters Using Images of Human Faces |
US20170004397A1 (en) * | 2015-06-30 | 2017-01-05 | Adobe Systems Incorporated | Procedural modeling using autoencoder neural networks |
US20190122329A1 (en) * | 2017-10-24 | 2019-04-25 | Vmaxx, Inc. | Face Replacement and Alignment |
US20190206101A1 (en) * | 2017-12-28 | 2019-07-04 | Facebook, Inc. | Systems and methods for swapping faces and face components based on facial recognition |
-
2020
- 2020-07-29 WO PCT/US2020/043975 patent/WO2021034463A1/fr active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110123118A1 (en) * | 2008-01-24 | 2011-05-26 | Nayar Shree K | Methods, systems, and media for swapping faces in images |
US20140204084A1 (en) * | 2012-02-21 | 2014-07-24 | Mixamo, Inc. | Systems and Methods for Animating the Faces of 3D Characters Using Images of Human Faces |
US20170004397A1 (en) * | 2015-06-30 | 2017-01-05 | Adobe Systems Incorporated | Procedural modeling using autoencoder neural networks |
US20190122329A1 (en) * | 2017-10-24 | 2019-04-25 | Vmaxx, Inc. | Face Replacement and Alignment |
US20190206101A1 (en) * | 2017-12-28 | 2019-07-04 | Facebook, Inc. | Systems and methods for swapping faces and face components based on facial recognition |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220237751A1 (en) * | 2021-01-28 | 2022-07-28 | Disney Enterprises, Inc. | Techniques for enhancing skin renders using neural network projection for rendering completion |
CN112990283A (zh) * | 2021-03-03 | 2021-06-18 | 网易(杭州)网络有限公司 | 图像生成方法、装置和电子设备 |
US11308657B1 (en) | 2021-08-11 | 2022-04-19 | Neon Evolution Inc. | Methods and systems for image processing using a learning engine |
CN114171053A (zh) * | 2021-12-20 | 2022-03-11 | Oppo广东移动通信有限公司 | 一种神经网络的训练方法、音频分离方法、装置及设备 |
CN114171053B (zh) * | 2021-12-20 | 2024-04-05 | Oppo广东移动通信有限公司 | 一种神经网络的训练方法、音频分离方法、装置及设备 |
CN114581812A (zh) * | 2022-01-12 | 2022-06-03 | 北京云辰信通科技有限公司 | 视觉语言识别方法、装置、电子设备及存储介质 |
WO2023142886A1 (fr) * | 2022-01-28 | 2023-08-03 | 华为技术有限公司 | Procédé de transfert d'expression, procédé d'apprentissage de modèle et dispositif |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11670024B2 (en) | Methods and systems for image and voice processing | |
US10658005B1 (en) | Methods and systems for image and voice processing | |
US10803646B1 (en) | Methods and systems for image and voice processing | |
US10671838B1 (en) | Methods and systems for image and voice processing | |
US11308657B1 (en) | Methods and systems for image processing using a learning engine | |
US10552667B1 (en) | Methods and systems for image processing | |
Lu et al. | Live speech portraits: real-time photorealistic talking-head animation | |
Habibie et al. | Learning speech-driven 3d conversational gestures from video | |
WO2021034463A1 (fr) | Procédés et systèmes de traitement d'image et de voix | |
Park et al. | Synctalkface: Talking face generation with precise lip-syncing via audio-lip memory | |
WO2021248473A1 (fr) | Conversion personnalisée de parole en vidéo avec régularisation de squelette tridimensionnel (3d) et poses corporelles expressives | |
CN109448083B (zh) | 一种从单幅图像生成人脸动画的方法 | |
KR102509666B1 (ko) | 텍스트 및 오디오 기반 실시간 얼굴 재연 | |
US20120130717A1 (en) | Real-time Animation for an Expressive Avatar | |
Chen et al. | C-face: Continuously reconstructing facial expressions by deep learning contours of the face with ear-mounted miniature cameras | |
Pham et al. | Generative adversarial talking head: Bringing portraits to life with a weakly supervised neural network | |
Willett et al. | Pose2Pose: Pose selection and transfer for 2D character animation | |
Wang et al. | High quality lip-sync animation for 3D photo-realistic talking head | |
US11581020B1 (en) | Facial synchronization utilizing deferred neural rendering | |
US20240013462A1 (en) | Audio-driven facial animation with emotion support using machine learning | |
Ma et al. | Dreamtalk: When expressive talking head generation meets diffusion probabilistic models | |
CN117237521A (zh) | 语音驱动人脸生成模型构建方法、目标人说话视频生成方法 | |
Ostermann et al. | Talking faces-technologies and applications | |
Bao et al. | Learning audio-driven viseme dynamics for 3d face animation | |
Paier et al. | Example-based facial animation of virtual reality avatars using auto-regressive neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20855324 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20855324 Country of ref document: EP Kind code of ref document: A1 |