Method for generating animation character, computing system and computer readable storage medium

Generating dance postures synchronized with music through neural network models solves the problem of difficult to achieve creative dance animations synchronized with music in the prior art, real-time dance animation generation is realized, and music experience is enhanced.

CN119169158APending Publication Date: 2024-12-20SNAP INC
View PDF 0 Cites 2 Cited by

Patent Information

Application Number
CN202411239567.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2020-09-30
Filing Date
2021-09-28
Publication Date
2024-12-20

AI Technical Summary

Technical Problem

The prior art is difficult to achieve creative and realistic dance animation generation synchronized with music, especially in real-time environments, and there is a lack of effective methods to generate animated characters that are compatible with the dynamic changes of music.

Method used

Using a neural network-based method, animated character pose data is generated through encoder and decoder, and a conditional recursive neural network model is used to combine music input signals and potential space to generate dance poses synchronized with music in real time, and animated characters are displayed through the processor.

Benefits of technology

Creative and realistic dance animation generation adapted to the dynamic changes of music is realized, allowing animated characters to dance with the music realistically in a real-time environment, enhancing the experience of synchronizing with the music.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119169158A_ABST
    Figure CN119169158A_ABST
Patent Text Reader

Abstract

The invention discloses a method, a computing system and a computer readable storage medium for generating an animated character in a dance posture along with music. The method comprises the following steps: receiving a potential space from a neural network encoder by at least one processor; generating currently generated gesture data using a neural network decoder, the currently generated gesture data based on previously generated gesture data of the previously generated gesture, the music input signal, and the potential space; and generating an animated character based on the currently generated gesture data.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the Chinese patent application filed on March 30, 2023, with application number 202180067185.6 and invention name “Music Reaction Animation of Human Characters”. The international filing date of the PCT international application corresponding to the above parent application is September 28, 2021, and the international application number is PCT / US2021 / 052364.

[0002] priority

[0003] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 085,755, filed on September 30, 2020, the entire contents of which are incorporated herein by reference. Technical Field

[0004] The present disclosure relates generally to music-responsive animation of human characters and, more particularly, to methods, computing systems, and non-transitory computer-readable storage media for generating animated characters in dance poses to music. Background Art

[0005] Humans are the only species known to express themselves through movement and music. It is a uniquely human form of communication and creativity. Having computer-animated avatars of people that react to their environment in real time allows people to share their experiences and connect with each other. Summary of the invention

[0006] According to one aspect of an embodiment of the present disclosure, there is provided a method for generating an animated character in dance poses to music, the method comprising: receiving, by at least one processor, a latent space from a neural network encoder; generating currently generated pose data using a neural network decoder, the currently generated pose data being based on previously generated pose data of previously generated poses, a music input signal, and the latent space; and generating an animated character based on the currently generated pose data.

[0007] According to another aspect of an embodiment of the present disclosure, a computing system is provided, comprising: at least one processor; and a memory storing instructions, which, when executed by the at least one processor, cause the computing system to perform operations including: receiving a latent space from a neural network encoder; generating currently generated gesture data using a neural network decoder, wherein the currently generated gesture data is based on previously generated gesture data of a previously generated gesture, a music input signal, and the latent space; and generating an animated character based on the currently generated gesture data.

[0008] According to another aspect of an embodiment of the present disclosure, a non-transitory computer-readable storage medium is provided, which includes instructions that, when executed by a computer, cause the computer to perform operations including: receiving a latent space from a neural network encoder; generating currently generated posture data using a neural network decoder, wherein the currently generated posture data is based on previously generated posture data of previously generated postures, a music input signal, and the latent space; and generating an animated character based on the currently generated posture data. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] In the drawings, which are not necessarily drawn to scale, the same numerals may describe similar components in different views. To easily identify the discussion of any particular element or action, the highest digit or digits in the reference numeral refer to the figure number in which the element was first introduced. Some non-limiting examples are shown in the figures of the accompanying drawings, in which:

[0010] Figure 1 A block diagram of a general machine learning model is shown.

[0011] Figure 2 A block diagram of an aspect of the subject matter according to some examples is shown.

[0012] Figure 3 A flow diagram of a routine 300 for generating an animated character in real-time dance poses to music is shown, according to some examples.

[0013] Figure 4 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, according to some examples.

[0014] Figure 5 is a diagrammatic representation of a messaging system having both client-side and server-side functionality according to some examples.

[0015] Figure 6 is a diagrammatic representation of data structures maintained in a database according to some examples.

[0016] Figure 7 is a graphical representation of messages according to some examples.

[0017] Figure 8 is a flow chart of an access restriction process according to some examples.

[0018] Fig. 9 is a diagrammatic representation of a machine in the form of a computer system according to some examples, within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein.

[0019] Fig.10is a block diagram illustrating a software architecture in which examples may be implemented. DETAILED DESCRIPTION

[0020] The following description includes systems, methods, techniques, instruction sequences and computing machine program products that implement the illustrative examples of the present disclosure. In the following description, for the purpose of illustration, many specific details are set forth to provide an understanding of the various examples of the subject matter of the invention. However, it will be apparent to those skilled in the art that the examples of the subject matter of the invention can be practiced without these specific details. Generally, known instruction instances, protocols, structures and techniques are not necessarily shown in detail.

[0021] Aspects of the present disclosure include systems, methods, techniques, instruction sequences, and computing machine program products for synthesizing choreographed movements synchronized with music that are realistic, creative, and responsive to music through machine learning. This can be used to generate graphical characters (e.g., avatars) that dance to music in real time. For example, when music is played in an environment captured using a video capture device (e.g., a mobile device executing an augmented reality video capture application), a foreground character is generated and displayed that dances to the music in a realistic and creative manner in real time. Another example use would be for those interested in creating new dance choreography, in which case artificial intelligence is employed to help artists choreograph dances to music in an inherent manner.

[0022] Another aspect of the present disclosure includes where the encoding neural network and the decoding neural network are based on a conditional recurrent neural network model.

[0023] A third aspect includes where the model output signal is a unit normal distribution or a Gaussian distribution.

[0024] The fourth aspect includes: generating current posture data also includes generating the average value and standard deviation of the model output signal.

[0025] A fifth aspect includes training, by at least one processor, an encoded neural network model to generate a model output signal using test previous gesture data, a music input signal, and test current gesture data, wherein the test previous gesture data is based on the current gesture data. During training, a batch of dance sequences are sampled. The length of the dance sequences is predetermined. The dance sequences can have equal lengths. All music features as well as input gestures and output gestures are normalized to a zero mean and one deviation along each axis.

[0026] Figure 1 A method of training and using a machine learning program according to some examples is shown. In some examples, a machine learning program (MLP), also referred to as a machine learning algorithm or tool, is used to perform operations associated with a search.

[0027] Machine learning (ML) is a technical approach and paradigm that provides computer systems with the ability to perform tasks by inferring based on patterns found in data analysis without explicit programming. Machine learning explores the learning and construction of algorithms (also referred to herein as tools) that can learn from existing data and make predictions about new data. Such machine learning algorithms operate by building an ML model 110 from example training data 106 to make data-driven predictions or decisions represented as outputs or evaluations 114. Although examples are given for several machine learning tools, the principles given herein can be applied to other machine learning tools.

[0028] Data representation refers to the method by which data is organized for storage on a computer system, including the structure used for the identified features and their values. In ML, data is usually represented as vectors or matrices in two or more dimensions. Data representation is important when dealing with large amounts of data and many features so that training can identify correlations within the data.

[0029] There are two common modes of ML: supervised ML and unsupervised ML. Supervised ML uses prior knowledge (e.g., examples that relate inputs to outputs or outcomes) to learn the relationship between inputs and outputs. The goal of supervised ML is to learn a function that, given some training data, best approximates the relationship between the training inputs and outputs, so that the ML model can achieve the same relationship when given an input to generate the corresponding output. Unsupervised ML is the training of an ML algorithm that uses information that is neither classified nor labeled and allows the algorithm to act on that information without guidance. Unsupervised ML is useful in exploratory analysis because it can automatically identify structure in the data.

[0030] Common tasks for supervised ML are classification problems and regression problems. Classification problems (also called categorization problems) aim to classify items into one of several category values ​​(e.g., is the object an apple or an orange?). Regression algorithms aim to quantify certain items (e.g., by providing scores to the values ​​of certain inputs). Some examples of commonly used supervised ML algorithms are logistic regression (LR), Naive-Bayes, random forests (RF), neural networks (NN), deep neural networks (DNN), matrix decomposition, and support vector machines (SVM). Self-supervised methods such as using long short-term memory (LSTM) autoencoder models can also be used. In some examples, the model can use a separate LSTM encoder 206 or LSTM decoder 216. In other examples, a shared LSTM is used for encoding and decoding and the output from an embedding model conditioned on a conditional variational autoencoder (VAE).

[0031] Some common tasks of unsupervised ML include clustering, representation learning, and density estimation. Some examples of commonly used unsupervised ML algorithms are K-means clustering, principal component analysis, and autoencoders.

[0032] The training data 106 includes examples of values ​​for the features 102a. In some examples, the training data 106 includes labeled data of examples with values ​​for the features 102a and tags indicating results, such as valid or invalid email addresses, bounced email addresses, typographical errors, etc. The machine learning algorithm uses the training data 106 to find correlations between the identified features 102a that affect the results. Features 102a are individual measurable characteristics of the observed phenomenon. The concept of features is related to the concept of explanatory variables used in statistical techniques such as linear regression. Selecting informative, discriminative, and independent features is important for the effective operation of ML in pattern recognition, classification, and regression. Features can be of different types, such as numeric features, strings, and graphics.

[0033] In one example, feature 102a may be of several types and may include one or more of the following: relative position of pose 102b; joint representation of 2D model 102c; joint representation of 3D model 102d; music sampling rate 102e; delta value of feature vector of music 102f; latent space representation of initial pose 102h, current pose 102i and possible pose 102g.

[0034] During training 108, the ML algorithm analyzes training data 106 based on identification features 102a and configuration parameters 104 defined for training 108. The result of training 108 is an ML model 110 that is capable of taking inputs to produce evaluations.

[0035] Training an ML algorithm involves analyzing large amounts of data (e.g., from several gigabytes to terabytes or more) to find data correlations. The ML algorithm utilizes the training data 106 to find correlations between the identification features 102a that influence the outcome or evaluation 114. In some examples, the training data 106 includes labeled data, which is known data for one or more identification features 102a and one or more outcomes, such as a musical input and the ability to generate a unique set of dance sequences with ambient music, and to generate new and different unique dance sequences for the same musical input.

[0036] ML algorithms typically explore many possible functions and parameters before discovering what the ML algorithm identifies as the best correlation within the data; therefore, training 108 can utilize significant computing resources and time.

[0037] Many ML algorithms include configuration parameters 104, and the more complex the ML algorithm, the more parameters available to the user. Configuration parameters 104 define variables for the ML algorithm when searching for the best ML model. Training parameters include model parameters and hyperparameters. Model parameters are learned from training data, while hyperparameters are not learned from training data, but are provided to the ML algorithm.

[0038] Some examples of model parameters include maximum model size, maximum number of passes over the training data, data shuffling type, regression coefficients, decision tree split locations, etc. Hyperparameters may include the number of hidden layers in a neural network, the number of hidden nodes in each layer, learning rate (with various adaptive schemes for learning rate), regularization parameters, type of non-linear activation function, etc. Finding the right (or optimal) set of hyperparameters can be a very time-consuming task utilizing significant computer resources.

[0039] When the ML model 110 is used to perform the evaluation 114, the new data 112 is provided as input to the ML model 110, and the ML model 110 generates the evaluation 114 as output. For example, when checking a message for an action item, the machine learning program utilizes the message content and the message metadata to determine whether there is a request for an action in the message.

[0040] Feature extraction is a process used to reduce the number of resources required to describe large data sets. When performing analysis on complex data, one of the main problems stems from the number of variables involved. Analysis with a large number of variables often requires a lot of memory and computing power, and it can cause classification algorithms to overfit the training samples and generalize poorly to new samples. Feature extraction involves constructing combinations of variables to solve these large data set problems while still describing the data with enough accuracy to achieve the desired purpose.

[0041] In some examples, feature extraction starts with an initial set of measured data and constructs derived values ​​(features) that are intended to be informative and non-redundant, thereby facilitating subsequent learning and generalization steps. In addition, feature extraction is related to dimensionality reduction, such as reducing large vectors (sometimes with very sparse data) to smaller vectors that capture the same or similar amount of information.

[0042] Figure 2 Some examples using LSTM autoencoder ML models are shown. The design of this model can use conditional recursive variational autoencoders (VAEs) to synthesize dance sequences for music. This model is lightweight and can therefore be run on client devices such as smartphones and other such portable devices. During the working phase, only the decoder 216 side of the model is used, but during the training phase, both the encoder 206 side and the decoder 216 are used.

[0043] Each dance sequence Dk can be described as M k ∈R T×m The musical sequence and can be described as P k ∈R (T+1)×n . Here T is the number of frames, m is a representation of one or more dimensions of a musical feature, and n is a representation of one or more dimensions of a gesture feature of interest. The number of frames (T) can be, for example, 30 frames per second (fps), or can be set to a different frame rate if necessary. The gesture sequence consists of a current gesture or generated gesture 202a, a previous gesture 202b, and at the beginning of the sequence, the gesture sequence also includes an initial gesture (not shown). The gesture sequence is one element longer than the music sequence because it includes the initial gesture of the dance. The initial gesture can replace the previous gesture 202b at the beginning of the gesture sequence.

[0044] The music sequence is calculated as a feature vector, which takes the music at the sampling rate of the original music and calculates it as the original music signal 204. This process can be done in real time when the music is played in the environment. This music signal 204 is used as an input signal both during the training phase and during the actual working phase.

[0045] The pose sequence gives the position that the animated character is set to occupy. In some embodiments, the animated character can be a humanoid figure representing a user. The animated character is generated to occupy the position of the pose generated by the pose sequence set. The pose consists of joints connected by frames. Each joint is connected to at least one frame, and the vector assigned to the frame informs the direction of the frame relative to the joint. The representation is given for 2D characters and 3D characters relative to the position of the root joint on the animated character. The root joint can also be considered as a hip joint for animation. Other joints are described relative to the root joint. The number of joints used for 2D animation can be different from the number of joints used for 3D animation. For the 2D data set, the minimum number of joints used to represent the character is 24 joints. For the 3D data set, if individual finger joints are not considered, the minimum number of joints can be 26.

[0046] The number of possible poses is related to the number of joints and the number of dimensions of motion in which the animated character is presented. For example, a 2D animation with a 25 joint representation will have at least 50 possible poses from its current pose that can be considered for its next pose. However, a similar 3D animation based on the minimum number of joints may have 78 possible poses, since 26 joints will be considered in the representation of the 3D space.

[0047] Another representation of 3D is the joint quaternion representation [p r ,q r ,q j ],in, is the world position of the root joint, is the quaternion of the root joint rotation, and is the quaternion of the relative joint rotation with respect to the parent joint.

[0048] In the training phase, an encoder 206 is used to determine a set of latent space vectors to characterize possible postures, which can be z input 214 by finding the mean and standard deviation of these outputs. The z input 214 provides a latent space from which the decoder can sample when determining a newly generated posture, and allows randomization and creativity to be displayed in the dance. The output of the encoder is standardized to a zero mean 210 and has a deviation as a standard 212 along each axis. These are fed to the z input 214 to allow the decoder 216 to randomly sample a Gaussian distribution of possible postures. Therefore, the same piece of music can have different dances generated in an autoregressive manner using a recursive process. In the training phase, the music signal 204 can iteratively input the test previous posture 202b into the model to determine a set of possible outputs that can be used as the current posture 202a. In the training model, the test previous posture corresponds to the previous posture generated when the model has been trained. In this case, the input is not iteratively used to determine the current posture 202a. The training model retains as much relevant posture information as possible in the encoding and intelligently provides postures that can seamlessly transition from the previous posture 202b to the newly generated posture 202a. The training gradually switches from teacher-enforced training to auto-regressive training. The input sequence of postures is interleaved with real postures and self-generated postures [P1; P2; ...; Ps; Ps+1; ...; Ps+10; Ps+11; ...], where Pi is the self-generated posture (student-enforced step) and Pi is the real posture (teacher-enforced step). The student-enforced step s is 0 at the beginning of training and is incremented according to the schedule s=[0.002t e ] increases, where t e is the number of epochs. In each training epoch, a batch of dance sequences with equal length T are sampled from the dataset. For example, in the 2D dataset, for t, T=150, for the 3D dataset, T=300. All music features and gesture inputs / outputs are normalized to zero mean and one deviation along each axis.

[0049] By comparing the current pose 202a to the previous pose 202b, a loss value 218 may be attributed to the difference between the two poses. The loss value describes how similar the two poses are. The generated previous pose may be the same pose generated at a time immediately before the current time of interest. If generated at time t=t-1, the generated previous pose is generated by the model in the same manner as the current pose, and is recursively used by the model to arrive at the pose at time t.

[0050] Figure 3 A routine 300 is outlined that describes another alternative example for implementing a machine learning approach utilizing a recurrent neural network and a training model, wherein new gestures are generated based at least on previous output gestures.

[0051] In box 302, routine 300 generates a music input signal based on an acoustic signal associated with music. The music signal can be represented by a multidimensional vector. The multidimensional vector can include features based on Mel frequency cepstral coefficients (MFCC), chromaticity diagrams, onset values, delta values, beat indicators, or any combination thereof. The music features are equivalent to a set frame rate. For example, the frame rate can be 30fps, which makes the video experience from one frame to the next frame smoother. If desired, a higher frame rate can be used to create slow motion or other effects.

[0052] In box 304, routine 300 receives a model output signal from the encoding neural network. The model output is defined in the training phase. The output from the decoder is used as the input of the encoder to generate the next possible posture. All these possible postures are standardized to zero mean and a minimum deviation along each axis. Consider the case where the encoder is provided with a normalized distribution of possible postures sampled from the z input 214, and the potential space is output from the encoder. The use of the z input 214 allows the same music to have different output postures, and means that the system only needs to have past music data. The system can take reactive actions on the audio signal regardless of the length of the audio signal. If the mean is far from the standard normal distribution, the decoder can be prompted to ignore the z input 214.

[0053] In block 306 , the routine 300 generates a generated gesture using a decoding neural network, the generated gesture being based on previously generated gesture data, the music input signal, and the model output signal.

[0054] In block 308, the routine 300 generates an animated character based on the generated pose data. The current pose data is used to determine how the animated character should be displayed on the screen.

[0055] In block 310, the routine 300 causes an animated character to be displayed by a display device. The display device may be a client device such as a smart phone, computer, or other device.

[0056] Networked computing environment

[0057] Figure 4 4 is a block diagram illustrating an example messaging system 400 for exchanging data (e.g., messages and associated content) over a network. The messaging system 400 includes multiple instances of a client device 402, each instance hosting several applications including a messaging client 404 and other applications 406. Each messaging client 404 is communicatively coupled to other instances of messaging clients 404 (e.g., hosted on respective other client devices 402), messaging server systems 408, and third-party servers 410 via a network 412 (e.g., the Internet). The messaging client 404 may also communicate with the local host application 406 using an application program interface (API). Animated characters may be used within the messaging client 404.

[0058] The messaging clients 404 are able to communicate and exchange data with other messaging clients 404 and messaging server systems 408 via the network 412. The data exchanged between the messaging clients 404 and between the messaging clients 404 and messaging server systems 408 include functions (e.g., commands to activate functions) and payload data (e.g., text, audio, video, or other multimedia data).

[0059] The messaging server system 408 provides server-side functionality to a particular messaging client 404 via the network 412. Although certain functions of the messaging system 400 are described herein as being performed by the messaging client 404 or by the messaging server system 408, the location of certain functions within the messaging client 404 or messaging server system 408 may be a design choice. For example, it may be technically preferred to initially deploy certain technologies and functions within the messaging server system 408, but later migrate the technologies and functions to the messaging client 404 where the client device 402 has sufficient processing power.

[0060] The messaging server system 408 supports various services and operations provided to the messaging clients 404. Such operations include sending data to the messaging clients 404, receiving data from the messaging clients 404, and processing data generated by the messaging clients 404. As examples, the data may include message content, client device information, geolocation information, media enhancements and overlays, message content persistence conditions, social network information, and live event information. The data exchange within the messaging system 400 is activated and controlled by functions available via the user interface (UI) of the messaging clients 404.

[0061] Turning now specifically to the messaging server system 408, an application program interface (API) server 416 is coupled to and provides a programming interface to the application server 414. The application server 414 is communicatively coupled to a database server 420, which facilitates access to a database 426 that stores data associated with messages processed by the application server 414. Similarly, a web server 428 is coupled to the application server 414 and provides a web-based interface to the application server 414. To this end, the web server 428 processes incoming network requests via the Hypertext Transfer Protocol (HTTP) and several other related protocols.

[0062] The application program interface (API) server 416 receives and sends message data (e.g., commands and message payloads) between the client device 402 and the application server 414. Specifically, the application program interface (API) server 416 provides a set of interfaces (e.g., routines and protocols) that the messaging client 404 can call or query to activate the functions of the application server 414. An application program interface (API) server 416 exposes various functions supported by application server 414, including: account registration; login functionality; sending messages from a particular messaging client 404 to another messaging client 404 via application server 414; sending media files (e.g., images or videos) from a messaging client 404 to messaging server 418 and for possible access by another messaging client 404; setting up a collection of media data (e.g., a story); retrieving a friend list of a user of client device 402; retrieving such a collection; retrieving messages and content; adding and removing entities (e.g., friends) from an entity graph (e.g., a social graph); locating friends in a social graph; and opening application events (e.g., related to messaging client 404).

[0063] The application server 414 hosts several server applications and subsystems, including, for example, a messaging server 418, an image processing server 422, and a social network server 424. The messaging server 418 implements several message processing technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client 404. As will be described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). These collections are then made available to the messaging client 404. In view of the hardware requirements for such processing, other processor- and memory-intensive processing of data can also be performed on the server side by the messaging server 418.

[0064] The application server 414 also includes an image processing server 422 that is dedicated to performing various image processing operations, typically with respect to images or videos within the payload of messages sent from or received at the messaging server 418.

[0065] The social network server 424 supports various social networking functions and services and makes these functions and services available to the messaging server 418. To this end, the social network server 424 maintains and accesses an entity graph (not shown) within the database 426. Examples of functions and services supported by the social network server 424 include identifying other users in the messaging system 400 who have a relationship with a particular user or who the particular user is "following," and identifying interests and other entities of a particular user.

[0066] Returning to the messaging client 404, the features and functions of the external resource (e.g., application 406 or applet) are available to the user via the interface of the messaging client 404. In this context, "external" refers to the fact that the application 406 or applet is outside the messaging client 404. External resources are usually provided by a third party, but can also be provided by the creator or provider of the messaging client 404. The messaging client 404 receives a user selection of an option to launch or access the features of such an external resource. The external resource can be an application 406 installed on the client device 402 (e.g., a "local app"), or a small-scale version of an application (e.g., a "small application") hosted on the client device 402 or located at the far end of the client device 402 (e.g., on a third-party server 410). The small-scale version of the application includes a subset of the features and functions of the application (e.g., a full-scale, native version of the application) and is implemented using a markup language document. In one example, a small-scale version of an application (e.g., a "applet") is a web-based markup language version of the application and is embedded in the messaging client 404. In addition to using markup language documents (e.g., .*ml files), the applet may also include scripting languages ​​(e.g., .*js files or .json files) and style sheets (e.g., .*ss files).

[0067] In response to receiving a user selection of an option to launch or access a feature of an external resource, the messaging client 404 determines whether the selected external resource is a web-based external resource or a locally installed application 406. In some cases, the application 406 installed locally on the client device 402 can be independent of the messaging client 404 and launched separately from the messaging client 404, such as by selecting an icon corresponding to the application 406 on a home screen of the client device 402. A small-scale version of such an application can be launched or accessed via the messaging client 404, and in some examples, no portion of the small-scale application (or only a limited portion) can be accessed outside of the messaging client 404. The small-scale application can be launched by the messaging client 404 receiving, for example, a markup language document associated with the small-scale application from a third-party server 410 and processing such a document.

[0068] In response to determining that the external resource is a locally installed application 406, the messaging client 404 instructs the client device 402 to launch the external resource by executing the locally stored code corresponding to the external resource. In response to determining that the external resource is a web-based resource, the messaging client 404 (for example) communicates with the third-party server 410 to obtain a markup language document corresponding to the selected external resource. The messaging client 404 then processes the obtained markup language document to present the web-based external resource within the user interface of the messaging client 404.

[0069] Messaging client 404 can notify the user of client device 402 or other users (e.g., "friends") associated with such users of activities occurring in one or more external resources. For example, messaging client 404 can provide participants in a conversation (e.g., a chat session) in messaging client 404 with notifications related to the current or recent use of external resources by one or more members of a group of users. One or more users can be invited to join a valid external resource or to start an external resource (in the group of friends) that has been recently used but is currently invalid. External resources can provide participants in the conversation who use the corresponding messaging client 404 to share items, states, conditions, or locations in an external resource with one or more members of a group of users in a chat session. Shared items can be interactive chat cards, and members of the chat can interact with the interactive chat cards, for example, to start the corresponding external resource, view specific information in the external resource, or bring members of the chat to a specific location or state in the external resource. In a given external resource, a response message can be sent to the user on messaging client 404. The external resource may selectively include different media items in the response based on the current context of the external resource.

[0070] The messaging client 404 may present a list of available external resources (e.g., applications 406 or applets) to the user to launch or access a given external resource. The list may be presented in a context-sensitive menu. For example, icons representing different applications 406 (or applets) may vary based on how the user launches the menu (e.g., from a conversational interface or from a non-conversational interface).

[0071] System Architecture

[0072] Figure 55 is a block diagram showing further details about a messaging system 504 according to some examples. Specifically, the messaging system 504 is shown to include a messaging client 508 and an application server 520. The messaging system 504 contains several subsystems that are supported on the client side by the messaging client 508 and on the server side by the application server 520. These subsystems include, for example, a transient timer system 502, a collection management system 506, an enhancement system 512, a map system 514, a game system 516, and an external resource system 518. An animated character can be sent as a message to a client or third-party device by one of the messaging system subsystems, such as the enhancement system or the messaging client.

[0073] The transient timer system 502 is responsible for enforcing temporary or time-limited access to content by the messaging client 508 and the messaging server 418. The transient timer system 502 includes a number of timers that selectively enable access (e.g., for presentation and display) of messages and associated content via the messaging client 508 based on duration and display parameters associated with a message or collection of messages (e.g., a story). Additional details regarding the operation of the transient timer system 502 are provided below.

[0074] The collection management system 506 is responsible for managing collections or collections of media (e.g., collections of text, images, video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into "event galleries" or "event stories." Such collections can be made available for a specified time period (e.g., the duration of an event to which the content is related). For example, content related to a concert can be made available as a "story" for the duration of the concert. The collection management system 506 can also be responsible for publishing an icon to the user interface of the messaging client 508 that provides notification that a particular collection exists.

[0075] In addition, the collection management system 506 also includes a curation interface 510 that enables collection managers to manage and curate specific collections of content. For example, the curation interface 510 enables event organizers to curate content collections related to specific events (e.g., remove inappropriate content or redundant messages). In addition, the collection management system 506 uses machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, users can be paid compensation for including user-generated content in a collection. In such cases, the collection management system 506 operates to automatically pay such users for using their content.

[0076] The enhancement system 512 provides various functions that enable a user to enhance (e.g., annotate or otherwise modify or edit) media content associated with a message. For example, the enhancement system 512 provides functions related to generating and publishing media overlays (media overlays) for messages processed by the messaging system 504. The enhancement system 512 is operable to provide media overlays or enhancements (e.g., image filters) to the messaging client 508 based on the geographic location of the client device 402. In another example, the enhancement system 512 is operable to provide media overlays to the messaging client 508 based on other information such as social network information of the user of the client device 402. The media overlay can include audio and visual content and visual effects. The media overlay can also include an animated character dancing to music, wherein the dance is generated in real time. Examples of audio and visual content include pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects can be applied to media content items (e.g., photos) at the client device 402. For example, the media overlay can include text or images that can be overlaid on photos taken by the client device 402. In another example, the media overlay includes a location identification (e.g., Venice Beach) overlay, the name of a live event, or a business name (e.g., Beach Cafe) overlay. In another example, the enhancement system 512 uses the geolocation of the client device 402 to identify a media overlay that includes the name of the business at the geolocation of the client device 402. The media overlay may include other tags associated with the business. The media overlay may be stored in the database 618 and accessed by the database server 420.

[0077] In some examples, the enhancement system 512 provides a user-based publishing platform that enables a user to select a geolocation on a map and upload content associated with the selected geolocation. The user can also specify situations where a particular media overlay should be provided to other users. The enhancement system 512 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geolocation.

[0078] In other examples, augmentation system 512 provides the user with the ability to insert a dancing animation or avatar generated as described herein itself as a media overlay.

[0079] In other examples, the enhancement system 512 provides a merchant-based publishing platform that enables merchants to select specific media coverage associated with a geographic location via a bidding process. For example, the enhancement system 512 associates the media coverage of the highest bidding merchant with the corresponding geographic location for a predefined amount of time.

[0080] The mapping system 514 provides various geolocation functions and supports the presentation of map-based media content and messages by the messaging client 508. For example, the mapping system 514 can display user icons or avatars (e.g., stored in the profile data 616) on a map to indicate the current or past locations of the user's "friends", as well as media content (e.g., a collection of messages including photos and videos) generated by these friends within the context of the map. For example, on the map interface of the messaging client 508, messages posted by the user to the messaging system 504 from a specific geolocation can be displayed to the "friends" of a particular user within the context of that specific location on the map. The user can also share his or her location and status information with other users of the messaging system 504 (e.g., using appropriate status avatars) via the messaging client 508, where the location and status information is displayed to the selected user within the context of the mapping interface of the messaging client 508.

[0081] The gaming system 516 provides various gaming functions within the context of the messaging client 508. The messaging client 508 provides a gaming interface that provides a list of available games that can be launched by a user within the context of the messaging client 508 and played with other users of the messaging system 504. The messaging system 504 also enables a particular user to invite other users to participate in playing a particular game by sending an invitation to such other users from the messaging client 508. The messaging client 508 also supports both voice messaging and text messaging (e.g., chatting) in the context of game play, provides leaderboards for games, and also supports providing in-game rewards (e.g., game coins and items).

[0082] The external resource system 518 provides an interface for the messaging client 508 to communicate with a remote server (e.g., a third-party server 410) to start or access external resources (i.e., applications or small applications). Each third-party server 410, for example, hosts an application based on a markup language (e.g., HTML5) or a small-scale version of an application (e.g., a game application, a utility application, a payment application, or a ride-sharing application). The messaging client 508 can start a web-based resource (e.g., an application) by accessing an HTML5 file from a third-party server 410 associated with a web-based resource. In some examples, the application hosted by the third-party server 410 is programmed in JavaScript using a software development kit (SDK) provided by the messaging server system 408. The SDK includes an application programming interface (API), which has functions that can be called or activated by a web-based application. In some examples, the messaging server 418 includes a JavasScript library that provides access to a given external resource to certain user data of the messaging client 508. HTML5 is used as an example technology for programming games, but applications and resources programmed based on other technologies can be used.

[0083] To integrate the functionality of the SDK into a web-based resource, the SDK is downloaded by the third-party server 410 from the messaging server 418, or received by the third-party server 410 in other ways. Once downloaded or received, the SDK is included as part of the application code of the web-based external resource. The code of the web-based resource can then call or activate certain functions of the SDK to integrate the features of the messaging client 508 into the web-based resource.

[0084] The SDK stored on the messaging server 418 effectively provides a bridge between an external resource (e.g., an application 1006 or a small application) and a messaging client 508. This provides users with a seamless experience of communicating with other users on the messaging client 508 while also retaining the look and feel of the messaging client 508. In order to bridge the communication between the external resource and the messaging client 508, in some examples, the SDK facilitates the communication between the third-party server 410 and the messaging client 508. In some examples, the WebViewJavaScriptBridge running on the client device 402 establishes two one-way communication channels between the external resource and the messaging client 508. Messages are sent asynchronously between the external resource and the messaging client 508 via these communication channels. Each SDK function call is sent as a message and a callback. Each SDK function is implemented by constructing a unique callback identifier and sending a message with the callback identifier.

[0085] By using the SDK, not all information from the messaging client 508 is shared with the third-party server 410. The SDK limits which information is shared based on the needs of the external resource. In some examples, each third-party server 410 provides an HTML5 file corresponding to a web-based external resource to the messaging server 418. The messaging server 418 can add a visual representation (such as a box design or other graphics) of the web-based external resource in the messaging client 508. Once the user selects a visual representation or instructs the messaging client 508 to access a feature of a web-based external resource through the GUI of the messaging client 508, the messaging client 508 obtains the HTML5 file and instantiates the resources required for accessing the feature of the web-based external resource.

[0086] Messaging client 508 presents a graphical user interface (e.g., a login page or title screen) for an external resource. During, before, or after presenting the login page or title screen, messaging client 508 determines whether the external resource started has been previously authorized to access the user data of messaging client 508. In response to determining that the external resource started has previously been authorized to access the user data of messaging client 508, messaging client 508 presents another graphical user interface of the external resource including the functions and features of the external resource. In response to determining that the external resource started has not previously been authorized to access the user data of messaging client 508, after a threshold time period (e.g., 3 seconds) of the login page or title screen of the external resource is displayed, messaging client 508 slides up a menu (e.g., animating the menu to emerge from the bottom of the screen to the middle of the screen or other parts) for authorizing the external resource to access the user data. The type of user data that the menu identification external resource will be authorized to use. In response to receiving the user selection of the accept option, the messaging client 508 adds the external resource to the list of authorized external resources and allows the external resource to access the user data from the messaging client 508. In some examples, the external resource is authorized by the messaging client 508 to access the user data according to the OAuth 2 framework.

[0087] The messaging client 508 controls the type of user data shared with the external resource based on the type of external resource that is authorized. For example, an external resource including a full-scale application (e.g., application 406) is provided with access to a first type of user data (e.g., only a two-dimensional avatar of a user with or without different avatar features). As another example, an external resource including a small-scale version of an application (e.g., a web-based version of the application) is provided with access to a second type of user data (e.g., payment information, a two-dimensional avatar of a user, a three-dimensional avatar of a user, and an avatar with various avatar features). Avatar features include different ways to customize the look and feel of an avatar (e.g., different poses, facial features, clothing, etc.).

[0088] Data Architecture

[0089] Figure 6 is a schematic diagram illustrating a data structure 600 that may be stored in a database 618 of a messaging server system 408 according to certain examples. Although the contents of the database 618 are illustrated as including several tables, it will be appreciated that the data may be stored in other types of data structures (e.g., as an object-oriented database).

[0090] Database 618 includes message data stored in message table 602. For any particular message, the message data includes at least message sender data, message recipient (or receiver) data, and payload. Figure 7 Additional details regarding information that may be included in a message and included in the message data stored in message table 602 are described.

[0091] Entity table 606 stores entity data and is linked (e.g., referenced) to entity graph 608 and profile data 616. Entities for which records are maintained within entity table 606 may include individuals, corporate entities, organizations, objects, places, events, etc. Regardless of the entity type, any entity for which messaging server system 408 stores data may be an identified entity. Each entity is provided with a unique identifier as well as an entity type identifier (not shown).

[0092] The entity graph 608 stores information about the relationships and associations between entities. As examples only, such relationships may be interest-based or activity-based social relationships, professional relationships (e.g., working in a common company or organization).

[0093] Profile data 616 stores multiple types of profile data about a particular entity. Based on the privacy settings specified by the particular entity, profile data 616 can be selectively used and presented to other users of messaging system 504. In the case where the entity is a person, profile data 616 includes, for example, user name, phone number, address, settings (e.g., notification and privacy settings), and user-selected avatar representations (or a collection of such avatar representations). A particular user can then selectively include one or more of these avatar representations in the content of messages transmitted via messaging system 504 and on a map interface displayed to other users by messaging client 508. The collection of avatar representations can include a "status avatar" that presents a graphical representation of the state or activity that a user may choose to communicate at a particular time.

[0094] Where the entity is a group, the profile data 616 for the group may similarly include one or more avatar representations associated with the group, in addition to the group name, members, and various settings related to the group (eg, notifications).

[0095] Database 618 also stores enhancement data, such as overlays or filters, in enhancement table 610. Enhancement data is associated with and applied to videos (data for videos is stored in video table 604) and images (data for images is stored in image table 612).

[0096] In one example, a filter is an overlay displayed as an overlay on an image or video during presentation to a recipient user. The filter can be of various types, including a filter selected by a user from a set of filters presented to a sending user by a messaging client 508 when the sending user is composing a message. Other types of filters include geolocation filters (also referred to as geofilters), which can be presented to a sending user based on a geographic location. For example, a geolocation filter specific to a nearby or special location can be presented by a messaging client 508 within a user interface based on geolocation information determined by a global positioning system (GPS) unit of a client device 402.

[0097] Another type of filter is a data filter, which can be selectively presented to the sending user by the messaging client 508 based on other input or information collected during the message creation process by the client device 402. Examples of data filters include the current temperature at a particular location, the current speed at which the sending user is traveling, the battery life of the client device 402, or the current time.

[0098] Other augmented data that may be stored in the image table 612 include augmented reality content items (eg, corresponding to application lenses or augmented reality experiences). Augmented reality content items may be real-time special effects and sounds that may be added to an image or video.

[0099] As described above, augmented data includes augmented reality content items, overlays, image transformations, AR images, and similar terms refer to modifications that can be applied to image data (e.g., videos or images). This includes real-time modifications, which modify the image when it is captured using the device sensor (e.g., one or more cameras) of the client device 402 and then display the image on the screen of the client device 402 with the modification. This also includes modifications to stored content, such as modifications to video clips in a gallery that can be modified. For example, in a client device 402 that can access multiple augmented reality content items, a user can use a single video clip with multiple augmented reality content items to see how different augmented reality content items will modify the stored clips. This includes generating an animated dance as described herein. For example, by selecting different augmented reality content items for the content, multiple augmented reality content items that apply different pseudo-random motion models can be applied to the same content. Similarly, real-time video capture can be used with the modifications shown to show how the video image currently captured by the sensor of the client device 402 will modify the captured data. Such data may simply be displayed on the screen without being stored in memory, or content captured by the device sensors may be recorded and stored in memory with or without modification (or both). In some systems, a preview function may simultaneously display how different augmented reality content items will look in different windows of the display. For example, this may enable viewing multiple windows with different pseudo-random animations on the display at the same time.

[0100] Thus, various systems using augmented reality content items or other such transformation systems and data that use the data to modify content may involve detection of objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.) in video frames, tracking of these objects as they leave the field of view, enter the field of view, and move around the field of view, and modification or transformation of these objects as they are tracked. In various examples, different methods for implementing such transformations may be used. Some examples may involve generating a 6-dimensional mesh model of one or more objects, and using transformations and animated textures of the model within the video to implement the transformation. In other examples, tracking of points on an object may be used to place an image or texture (which may be two-dimensional or three-dimensional) at the tracked location. In further examples, neural network analysis of video frames may be used to place images, models, or textures in content (e.g., images or video frames). Thus, augmented reality content items refer to both images, models, and textures used to create transformations in content, and additional modeling and analysis information required to implement such transformations through object detection, tracking, and placement.

[0101] Real-time video processing can be performed using any type of video data (e.g., video streams, video files, etc.) stored in the memory of any type of computerized system. For example, a user can load a video file and save it in the memory of the device, or a video stream can be generated using the device's sensors. In addition, computer animation models can be used to process any object, such as a person's face and parts of a person's body, an animal, or a non-living thing (such as a chair, a car, or other objects). Computer animation can also use the model to generate real-time dances for animated characters.

[0102] In some examples, when a specific modification is selected together with the content to be transformed, the element to be transformed is identified by the computing device, and then if the element to be transformed is present in the frame of the video, it is detected and tracked. The elements of the object are modified according to the modification request, thereby transforming the frame of the video stream. For different kinds of transformations, the transformation of the frame of the video stream can be performed by different methods. For example, for the transformation of the frame that mainly refers to the form of the elements of the object to be changed, the feature points of each element of the object are calculated (for example, using the active shape model (ASM) or other known methods). Then, a grid based on the feature points is generated for each of at least one element of the object. The grid is used for the subsequent stage of tracking the elements of the object in the video stream. During the tracking process, the grid of each element mentioned is aligned with the position of each element. Then, additional points are generated on the grid. A first set of first points is generated for each element based on the modification request, and a set of second points is generated for each element based on the set of first points and the modification request. Then, the frame of the video stream can be transformed by modifying the elements of the object based on the set of first points and the set of second points and the grid. In this method, the background of the modified object can also be changed or deformed by tracking and modifying the background.

[0103] In some examples, a transformation that changes some areas of an object using elements of an object can be performed by calculating feature points of each element of the object and generating a grid based on the calculated feature points. Points are generated on the grid, and then various areas are generated based on these points. Then, the elements of the object are tracked by aligning the area of ​​each element with the position of each of at least one element, and the properties of the area can be modified based on the request for modification, thereby converting the frame of the video stream. Depending on the specific modification request, the properties of the mentioned area can be transformed in different ways. Such modifications may involve: changing the color of the area; removing at least some parts of the area from the frame of the video stream; including one or more new objects in the area based on the modification request; and modifying or deforming the elements of the area or object. In various examples, any combination of such modifications or other similar modifications may be used. For certain models to be animated, some feature points can be selected as control points for determining the entire state space of options for model animation.

[0104] In some examples of computer animation models that use face detection to transform image data, faces are detected on an image using a specific face detection algorithm (e.g., Viola-Jones). An active shape model (ASM) algorithm is then applied to the face region of the image to detect facial feature reference points.

[0105] Other methods and algorithms suitable for face detection may be used. For example, in some examples, features are located using landmarks that represent distinguishable points that are present in most of the images considered. For example, for facial landmarks, the location of the left eye pupil may be used. If the initial landmarks are not recognizable (for example, if the person has an eye patch), secondary landmarks may be used. Such a landmark recognition process may be used for any such object. In some examples, a set of landmarks forms a shape. The shape may be represented as a vector using the coordinates of the points in the shape. One shape is aligned with another shape using a similarity transformation (allowing translation, scaling, and rotation) that minimizes the average Euclidean distance between the shape points. The average shape is the average of the aligned training shapes.

[0106] In some examples, the landmark search begins with an average shape that aligns with the position and size of the face determined by a global face detector. Such a search then repeats the steps of suggesting tentative shapes by adjusting the positions of shape points by template matching of the image texture around each point, and then conforming the tentative shapes to the global shape model until convergence occurs. In some systems, individual template matches are unreliable, and the shape model pools the results of weak template matches to form a stronger overall classifier. The entire search is repeated at each level of the image pyramid from coarse resolution to fine resolution.

[0107] The transformation system can capture an image or video stream on a client device (e.g., client device 402) and perform complex image manipulations locally on the client device 402 while maintaining an appropriate user experience, computational time, and power consumption. Complex image manipulations can include size and shape changes, emotion transformations (e.g., changing a face from a frown to a smile), state transitions (e.g., aging an object, reducing apparent age, changing gender), style transfer, application of graphical elements, and any other suitable image or video manipulations enabled by a convolutional neural network that has been configured to execute efficiently on the client device 402.

[0108] In some examples, a computer animation model for transforming image data can be used by a system in which a user can capture an image or video stream of the user (e.g., a selfie) using a client device 402 having a neural network that operates as part of a messaging client 508 operating on the client device 402. A transformation system operating within the messaging client 508 determines the presence of a face in the image or video stream and provides a modification icon associated with the computer animation model to transform the image data, or the computer animation model can be presented as associated with an interface described herein. The modification icon includes the following changes, which can be the basis for modifying the user's face in the image or video stream as part of the modification operation. Once the modification icon is selected, the transformation system initiates a process of transforming the user's image to reflect the selected modification icon (e.g., generating a smiley face on the user). Once the image or video stream is captured and the specified modification is selected, the modified image or video stream can be presented in a graphical user interface displayed on the client device 402. The transformation system can implement a complex convolutional neural network on a portion of the image or video stream to generate and apply the selected modification. That is, once a modification icon is selected, the user can capture an image or video stream and be presented with the modification results in real time or near real time. In addition, when the video stream is being captured, the modification can be persistent and the selected modification icon remains toggled. Machine-taught neural networks can be used to implement such modifications.

[0109] The graphical user interface presenting the modifications performed by the transformation system can provide additional interactive options for the user. Such options can be based on an interface for initiating content capture and selection of a specific computer animation model (e.g., initiated from a content creator user interface). In various examples, the modification can be persistent after the initial selection of the modification icon. The user can turn the modification on or off by tapping or otherwise selecting a face modified by the transformation system, and store it for later viewing or browsing to other areas of the imaging application. In the case of multiple faces modified by the transformation system, the user can globally turn the modification on or off by tapping or selecting a single face modified and displayed within the graphical user interface. In some examples, each face in a group of multiple faces can be modified individually by tapping or selecting an individual face or a series of faces displayed within the graphical user interface, or such modifications can be switched individually. .

[0110] The story table 614 stores data about a collection of messages and associated images, videos, or audio data that are compiled into a collection (e.g., a story or gallery). The creation of a particular collection can be initiated by a particular user (e.g., each user whose record is stored in the entity table 606). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcasted by the user. To this end, the user interface of the messaging client 508 may include user-selectable icons to enable the sending user to add specific content to his or her personal story.

[0111] The collection can also constitute a "live story" as a collection of content from multiple users, which is created manually, automatically, or using a combination of manual and automatic techniques. For example, a "live story" can constitute a curated stream of content submitted by users from different locations and events. Users whose client devices have location services enabled and are at a common location event at a specific time can be presented with the option of contributing content to a specific live story, for example, via the user interface of the messaging client 508. Live stories can be identified to users by the messaging client 508 based on his or her location. The final result is a "live story" told from a group perspective.

[0112] Another type of content collection is called a "location story," which enables users whose client devices 402 are located within a particular geographic location (e.g., on a college or university campus) to contribute to a particular collection. In some examples, contributions to location stories may require secondary authentication to verify that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).

[0113] As mentioned above, the video table 604 stores video data, which in one example is associated with a message whose record is stored in the message table 602. Similarly, the image table 612 stores image data, which is associated with a message whose message data is stored in the entity table 606. The entity table 606 can associate various enhancements from the enhancement table 610 with the various images and videos stored in the image table 612 and the video table 604.

[0114] Data communication architecture

[0115] Figure 7is a schematic diagram illustrating the structure of a message 700 according to some examples, the message 700 being generated by a messaging client 508 for transmission to another messaging client 508 or a messaging server 418. The content of a particular message 700 is used to populate a message table 602 stored in a database 618, which is accessible by a messaging server 418. Similarly, the content of the message 700 is stored in memory as "in-flight" or "in-flight" data of a client device 402 or an application server 520. The message 700 is shown as including the following example components:

[0116] Message identifier 702 : a unique identifier that identifies the message 700 .

[0117] Message text payload 704 : Text to be generated by a user via the user interface of client device 402 and included in message 700 .

[0118] Message image payload 706 : image data captured by the camera component of the client device 402 or retrieved from the memory component of the client device 402 and included in the message 700 . The image data of the message 700 sent or received may be stored in the image table 612 .

[0119] Message video payload 708 : Video data captured by the camera component or retrieved from the memory component of the client device 402 and included in the message 700 . The video data of the message 700 sent or received may be stored in the video table 604 .

[0120] Message audio payload 710 : audio data captured by a microphone or retrieved from a memory component of the client device 402 and included in the message 700 .

[0121] Message enhancement data 712: Enhancement data (e.g., filters, stickers, or other annotations or enhancements) representing enhancements to be applied to the message image payload 706, message video payload 708, or message audio payload 710 of the message 700. The enhancement data for a sent or received message 700 may be stored in the enhancement table 610.

[0122] Message duration parameter 714: A parameter value indicating the amount of time in seconds that the content of the message (e.g., message image payload 706, message video payload 708, message audio payload 710) will be presented to or made accessible to the user via the messaging client 508.

[0123] Message geolocation parameters 716: Geolocation data (e.g., latitude and longitude coordinates) associated with the content payload of the message. Multiple message geolocation parameter 716 values ​​may be included in the payload, with each of these parameter values ​​being associated with a content item included in the content (e.g., a specific image within the message image payload 706 or a specific video in the message video payload 708).

[0124] Message story identifier 718: An identifier value that identifies one or more content collections (e.g., "stories" identified in story table 614) with which a particular content item in message image payload 706 of message 700 is associated. For example, multiple images within message image payload 706 may each be associated with multiple content collections using an identifier value.

[0125] Message tags 720: Each message 700 may be tagged with a plurality of tags, each of which indicates the subject of the content included in the message payload. For example, where a particular image included in the message image payload 706 depicts an animal (e.g., a lion), a tag value indicating the relevant animal may be included in the message tags 720. The tag values ​​may be manually generated based on user input, or may be automatically generated using, for example, image recognition.

[0126] • Message sender identifier 722: An identifier (eg, a messaging system identifier, an email address, or a device identifier) ​​that indicates the user of client device 402 on which message 700 was generated and from which message 700 was sent.

[0127] • Message recipient identifier 724: Indicates an identifier (eg, a messaging system identifier, an email address, or a device identifier) ​​of the user of client device 402 to which message 700 is addressed.

[0128] The content (e.g., value) of the various components of message 700 may be pointers to locations in a table in which the content data values ​​are stored. For example, the image value in message image payload 706 may be a pointer (or address) to a location in image table 612. Similarly, the value within message video payload 708 may point to data stored in video table 604, the value stored within message enhancement may point to data stored in enhancement table 610, the value stored within message story identifier 718 may point to data stored in story table 614, and the values ​​stored within message sender identifier 722 and message recipient identifier 724 may point to user records stored in entity table 306.

[0129] Time-based access restriction architecture

[0130] Figure 8 800 is a schematic diagram illustrating an access restriction process 800, according to which access to content (e.g., a multimedia payload of an ephemeral message 802 and associated data) or a collection of content (e.g., an ephemeral message group 804) may be time-limited (e.g., made ephemeral). An animated character may be included in the ephemeral message 802.

[0131] The ephemeral message 802 is shown associated with a message duration parameter 806, the value of which determines the amount of time that the messaging client 508 will display the ephemeral message 802 to the receiving user of the ephemeral message 802. In one example, the receiving user may view the ephemeral message 802 for up to 10 seconds, depending on the amount of time specified by the sending user using the message duration parameter 806.

[0132] The message duration parameter 806 and the message recipient identifier 724 are shown as inputs to a message timer 810, which is responsible for determining the amount of time that the transient message 802 is shown to a particular receiving user identified by the message recipient identifier 724. In particular, the transient message 802 is shown to the associated receiving user only for a period of time determined by the value of the message duration parameter 806. The message timer 810 is shown as providing an output to a more general transient timer system 502, which is responsible for the overall timing of displaying content (e.g., the transient message 802) to the receiving user.

[0133] Figure 8 802 is included in an ephemeral message group 804 (e.g., a collection of messages in a personal story or event story). The ephemeral message group 804 has an associated group duration parameter 808, the value of which determines the duration for which the ephemeral message group 804 is presented and accessible to users of the messaging system 504. For example, the group duration parameter 808 may be the duration of a concert, wherein the ephemeral message group 804 is a collection of content related to the concert. Alternatively, a user (an owning user or a curator user) may specify a value for the group duration parameter 808 when performing setup and creation of the ephemeral message group 804.

[0134] In addition, each ephemeral message 802 within the ephemeral message group 804 has an associated group participation parameter 812, the value of which determines the duration for which the ephemeral message 802 will be accessible within the context of the ephemeral message group 804. Thus, a particular ephemeral message group 804 may "expire" and become inaccessible within the context of the ephemeral message group 804 before the ephemeral message group 804 itself expires according to the group duration parameter 808. The group duration parameter 808, the group participation parameter 812, and the message recipient identifier 724 each provide inputs to a group timer 814, which is operable to first determine whether a particular ephemeral message 802 of the ephemeral message group 804 is to be displayed to a particular receiving user, and if so, how long to display it. Note that the identity of the particular receiving user is also known to the ephemeral message group 804 due to the message recipient identifier 724.

[0135] Thus, the group timer 814 is operable to control the total life span of the associated ephemeral message group 804 and the individual ephemeral messages 802 included in the ephemeral message group 804. In one example, each ephemeral message 802 within the ephemeral message group 804 remains viewable and accessible for a period of time specified by the group duration parameter 808. In another example, within the context of the ephemeral message group 804, a particular ephemeral message 802 may expire based on the group participation parameter 812. Note that even within the context of the ephemeral message group 804, the message duration parameter 806 may still determine the duration for which a particular ephemeral message 802 is displayed to a receiving user. Thus, the message duration parameter 806 determines the duration for which a particular ephemeral message 802 is displayed to a receiving user, regardless of whether the receiving user is viewing the ephemeral message 802 within or outside the context of the ephemeral message group 804.

[0136] The transient timer system 502 may also be operable to remove a particular transient message 802 from the transient message group 804 based on determining that the particular transient message 802 has exceeded the associated group participation parameter 812. For example, when the sending user has established a group participation parameter 812 of 24 hours from posting, the transient timer system 502 will remove the associated transient message 802 from the transient message group 804 after the specified 24 hours. The transient timer system 502 is also operable to remove a transient message group 804 when the group participation parameter 812 for each transient message 802 within the transient message group 804 has expired, or when the transient message group 804 itself has expired according to the group duration parameter 808.

[0137] In some use cases, the creator of a particular ephemeral message group 804 may specify an indefinite group duration parameter 808. In this case, the expiration of the group participation parameter 812 for the last remaining ephemeral message 802 within the ephemeral message group 804 will determine when the ephemeral message group 804 itself expires. In this case, a new ephemeral message 802 with a new group participation parameter 812 added to the ephemeral message group 804 effectively extends the life of the ephemeral message group 804 to a value equal to the group participation parameter 812.

[0138] In response to the transient timer system 502 determining that the transient message group 804 has expired (e.g., is no longer accessible), the transient timer system 502 communicates with the messaging system 504 (and, for example, in particular, the messaging client 508) to cause the indicia (e.g., icon) associated with the relevant transient message group 804 to no longer be displayed within the user interface of the messaging client 508. Similarly, when the transient timer system 502 determines that the message duration parameter 806 for a particular transient message 802 has expired, the transient timer system 502 causes the messaging client 508 to no longer display the indicia (e.g., icon or text identification) associated with the transient message 802.

[0139] Machine Architecture

[0140] Fig. 9It is a diagrammatic representation of a machine 900 within which instructions 910 (e.g., software, programs, applications, applet, app, or other executable code) for causing the machine 900 to perform any one or more of the methods discussed herein may be executed. For example, the instructions 910 may cause the machine 900 to perform any one or more of the methods described herein. The instructions 910 convert a general non-programmed machine 900 into a specific machine 900 that is programmed to perform the functions described and shown in the manner described. The machine 900 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 900 may operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 900 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of sequentially or otherwise executing instructions 910 specifying actions to be taken by the machine 900. In addition, although only a single machine 900 is shown, the term "machine" should also be considered to include a collection of machines that individually or jointly execute instructions 910 to perform any one or more of the methods discussed herein. For example, the machine 900 may include any of the client device 402 or a number of server devices that form part of the messaging server system 408. In some examples, the machine 900 may also include both a client and server system, wherein certain operations of a particular method or algorithm are performed on the server side and certain operations of a particular method or algorithm are performed on the client side. These operations may include instructions for creating a real-time dance sequence for an animated character.

[0141] The machine 900 may include a processor 904, a memory 906, and an input / output (I / O) component 902 that may be configured to communicate with each other via a bus 940. In an example, the processor 904 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 908 and a processor 912 that execute instructions 910. The term "processor" is intended to include a multi-core processor that may include two or more independent processors (sometimes referred to as "cores") that may execute instructions simultaneously. Although Fig. 9 Multiple processors 904 are shown, but the machine 900 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.

[0142] The memory 906 includes a main memory 914, a static memory 916, and a storage unit 918 that are accessible to the processor 904 via the bus 940. The main memory 906, the static memory 916, and the storage unit 918 store instructions 910 that implement any one or more of the methods or functions described herein. The instructions 910 may also reside, completely or partially, within the main memory 914, within the static memory 916, within the machine-readable medium 920 within the storage unit 918, within at least one of the processors 904 (e.g., within a cache memory of a processor), or within any suitable combination thereof during execution thereof by the machine 900.

[0143] I / O components 902 may include a variety of components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurements, etc. The specific I / O components 902 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine will be less likely to include such a touch input device. It will be appreciated that I / O components 902 may include Fig. 9928. In various examples, the I / O components 902 may include a user output component 926 and a user input component 928. The user output component 926 may include a visual component (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor, a resistance mechanism), other signal generators, etc. The user input component 928 may include an alphanumeric input component (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input component), a point-based input component (e.g., a mouse, a touch pad, a trackball, a joystick, a motion sensor, or other pointing instrument), a tactile input component (e.g., a physical button, a touch screen that provides the location and force of a touch or touch gesture, or other tactile input component), an audio input component (e.g., a microphone), etc.

[0144] In other examples, the I / O component 902 may include a biometric component 930, a motion component 932, an environmental component 934, or a positioning component 936, as well as various other components. For example, the biometric component 930 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 932 includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, and a rotation sensor component (e.g., a gyroscope).

[0145] Environmental components 934 include, for example, one or more cameras (with still image / photo and video capabilities), an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects concentrations of hazardous gases for safety or measures pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.

[0146] With respect to cameras, client device 402 can have a camera system including, for example, a front-facing camera on the front surface of client device 402 and a rear-facing camera on the rear surface of client device 402. The front-facing camera can, for example, be used to capture still images and videos (e.g., "selfies") of a user of client device 402, which can then be enhanced with the enhancement data (e.g., filters) described above. For example, the rear-facing camera can be used to capture still images and videos in a more traditional camera mode, which are similarly enhanced using the enhancement data. In addition to the front-facing camera and the rear-facing camera, client device 402 can also include a 360° camera for capturing 360° photos and videos. The audio signal from the video can be used in real time to create a current dance pose for an animated character that can be added to the video.

[0147] Additionally, the camera system of the client device 402 may include dual rear cameras (e.g., a main camera and a depth sensing camera), or even triple, quad, or quintuple rear camera configurations on the front and back sides of the client device 402. For example, these multi-camera systems may include a wide-angle camera, an ultra-wide-angle camera, a telephoto camera, a macro camera, and a depth sensor.

[0148] The positioning component 936 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or a barometer that detects air pressure that can obtain the altitude), an orientation sensor component (e.g., a magnetometer), and the like.

[0149] A variety of technologies may be used to implement communications. The I / O component 902 also includes a communication component 938 that is operable to couple the machine 900 to the network 922 or device 924 via a corresponding coupling or connection. For example, the communication component 938 may include a network interface component or another suitable device to interface with the network 922. In other examples, the communication component 938 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, Parts (e.g. Low power consumption), Components and other communication components that provide communication via other forms. Device 924 can be any peripheral device among other machines or various peripheral devices (for example, a peripheral device coupled via USB).

[0150] In addition, the communication component 938 can detect the identifier or include components operable to detect the identifier. For example, the communication component 938 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional bar codes such as universal product code (UPC) bar codes, multi-dimensional bar codes such as quick response (QR) codes, Aztec codes, data matrix, data symbol (Dataglyph), MaxiCode, PDF417, UltraCode, UCC RSS-2D bar codes, and other optical codes) or an acoustic detection component (e.g., a microphone for identifying an audio signal of a tag). In addition, various information can be derived via the communication component 938, such as a location via Internet Protocol (IP) geolocation, a location via Internet Protocol (IP), ... The location of signal triangulation, the location of an NFC beacon signal via detection that can indicate a specific location, etc.

[0151] Various memories (e.g., main memory 914, static memory 916, and memory of processor 904) and storage unit 918 may store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. These instructions (e.g., instructions 910) when executed by processor 904 cause various operations to implement the disclosed examples.

[0152] The instructions 910 may be sent or received via a network interface device (e.g., a network interface component included in the communications component 938) using a transmission medium and using any of several well-known transmission protocols (e.g., the Hypertext Transfer Protocol (HTTP)) over the network 922. Similarly, the instructions 910 may be sent or received via a coupling (e.g., a peer-to-peer coupling) to the device 924 using a transmission medium.

[0153] Software Architecture

[0154] Fig.101000 is a block diagram illustrating a software architecture 1004 that can be installed on any one or more of the devices described herein. The software architecture 1004 is supported by hardware, such as a machine 1002 including a processor 1020, a memory 1026, and an I / O component 1038. In this example, the software architecture 1004 can be conceptualized as a stack of layers in which each layer provides specific functionality. The software architecture 1004 includes layers such as an operating system 1012, a library 1010, a framework 1008, and an application 1006. In operation, the application 1006 activates an API call 1050 through the software stack and receives a message 1052 in response to the API call 1050. A lightweight machine learning model can run on the software architecture 1004.

[0155] The operating system 1012 manages hardware resources and provides public services. The operating system 1012 includes, for example, a kernel 1014, a service 1016, and a driver 1022. The kernel 1014 acts as an abstraction layer between the hardware layer and other software layers. For example, the kernel 1014 provides memory management, processor management (e.g., scheduling), component management, network and security settings, and other functions. The service 1016 can provide other public services to other software layers. The driver 1022 is responsible for controlling or interfacing with the underlying hardware. For example, the driver 1022 may include a display driver, a camera driver, or Low-power drivers, Flash drivers, Serial communication drivers (e.g., USB drivers), Drivers, audio drivers, power management drivers, etc.

[0156] The library 1010 provides a common low-level infrastructure used by the application 1006. The library 1010 may include a system library 1018 (e.g., a C standard library) that provides functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 1010 may include an API library 1024, such as a media library (e.g., a library for supporting the presentation and operation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., an OpenGL framework for presenting in two dimensions (2D) and three dimensions (3D) in graphical content on a display), a database library (e.g., SQLite providing various relational database functions), a web library (e.g., WebKit providing web browsing functions), etc. The library 1010 may also include a variety of other libraries 1028 to provide many other APIs to the application 1006 .

[0157] The framework 1008 provides a common high-level infrastructure used by the applications 1006. For example, the framework 1008 provides various graphical user interface (GUI) functions, high-level resource management, and high-level positioning services. The framework 1008 can provide a wide range of other APIs that can be used by the applications 1006, some of which can be specific to a specific operating system or platform.

[0158] In an example, applications 1006 may include a home application 1036, a contacts application 1030, a browser application 1032, a book reader application 1034, a location application 1042, a media application 1044, a messaging application 1046, a game application 1048, and a variety of other applications such as third-party applications 1040. Applications 1006 are programs that execute functions defined in the program. Various programming languages ​​may be used to create one or more of the applications 1006 constructed in various ways, such as an object-oriented programming language (e.g., Objective-C, Java, or C++) or a procedural programming language (e.g., C or assembly language). In a specific example, third-party applications 1040 (e.g., applications created by an entity other than the vendor of a particular platform using ANDROID TM or IOS TM Software Development Kit (SDK) can be used to develop applications on platforms such as IOS TM ANDROID TM , Mobile software running on the mobile operating system of the phone or other mobile operating systems. In this example, third-party applications 1040 can activate API calls 1050 provided by the operating system 1012 to facilitate the functions described herein.

[0159] The above description includes systems, methods, devices, instructions and computer media (e.g., computing machine program products) that embody illustrative examples of the present disclosure. In the description, for the purpose of illustration, many specific details are set forth to provide an understanding of various examples of the subject matter of the present invention. However, it will be apparent to those skilled in the art that the examples of the subject matter of the present invention can be practiced without these specific details. Generally, known instruction examples, protocols, structures and techniques are not necessarily shown in detail.

[0160] A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights. The following notice applies to the software and data described above and to the drawings that form a part of this document: Copyright 2016, SNAPCHAT, Inc. All rights reserved.

[0161] Regarding the implementation methods including the above embodiments, the following technical solutions are also disclosed:

[0162] Solution 1. A method for generating an animated character in a dance pose to music, the method comprising:

[0163] generating, by at least one processor, a music input signal based on an acoustic signal associated with the music;

[0164] receiving, by the at least one processor, a model output signal from the encoded neural network;

[0165] generating, by the at least one processor using a decoding neural network, currently generated gesture data based on previously generated gesture data for a previously generated gesture, the music input signal, and the model output signal;

[0166] generating, by the at least one processor, an animated character based on the currently generated gesture data; and

[0167] The at least one processor causes the animated character to be displayed by a display device.

[0168] Option 2. The method according to Option 1, wherein the encoding neural network and the decoding neural network are based on a conditional recurrent neural network model.

[0169] Option 3. A method according to Option 1, wherein the model output signal is a unit normal distribution or a Gaussian distribution.

[0170] Solution 4. The method according to Solution 3, wherein generating the currently generated posture data further comprises:

[0171] The mean and standard deviation of the model output signal are generated.

[0172] Solution 5. The method according to Solution 4, wherein generating the currently generated posture data further comprises:

[0173] A plurality of posture data is sampled from postures generated during the training step from the model output signal.

[0174] Solution 6. The method according to Solution 1, wherein generating the animated character further comprises:

[0175] Associating one or more parts, wherein at least one of the one or more parts includes a set of joints connected to a set of frames, the set of frames being used to represent the animated character using the currently generated pose data.

[0176] Solution 7. The method according to Solution 1, wherein generating the music input signal further comprises:

[0177] The real-time music feature is generated based on at least one of: Mel-Frequency Cepstral Coefficients (MFCC), a chromaticity map, an onset value, a delta value, and a beat indicator.

[0178] Wherein, the music input signal is a music input vector.

[0179] Solution 8. The method according to Solution 1, wherein generating the animated character further comprises:

[0180] generating a plurality of animated characters based on the currently generated gesture data; and

[0181] The plurality of animated characters are caused to be displayed on a display device in an animation sequence.

[0182] Solution 9. The method according to Solution 1 further includes:

[0183] training the encoding neural network by the at least one processor to generate the model output signal including previous gesture data, the music input signal and test current gesture data,

[0184] Wherein, the previous posture data is based on the current posture data.

[0185] Solution 10. A computing device comprising:

[0186] at least one processor; and

[0187] a memory storing instructions that, when executed by the at least one processor, configure the apparatus to:

[0188] generating a music input signal based on the associated music acoustic signal;

[0189] receiving a model output signal from an encoding neural network;

[0190] generating currently generated gesture data using a decoding neural network, the currently generated gesture data being based on previously generated gesture data for a previously generated gesture, the music input signal, and the model output signal;

[0191] generating an animated character based on the currently generated gesture data; and

[0192] The animation character is displayed by a display device.

[0193] Option 11. A computing device according to Option 10, wherein the encoding neural network and the decoding neural network are based on a conditional recurrent neural network model.

[0194] Solution 12. The computing device according to Solution 10, wherein generating the animated character further comprises:

[0195] Associating one or more parts, wherein at least one of the one or more parts includes a set of joints connected to a set of frames, the set of frames being used to represent the animated character using the currently generated pose data.

[0196] Solution 13. The computing device of solution 10, wherein the instructions further configure the computing device to:

[0197] training the encoding neural network by at least one processor to generate the model output signal using test previous gesture data, the music input signal and test current gesture data,

[0198] Wherein, the test previous posture data is based on the current posture data.

[0199] Option 14. A computing device according to Option 13, wherein training the computing device also jointly trains a 2D dataset and a 3D dataset; wherein the 2D dataset has at least 25 joint representations for a humanoid figure, and the 3D dataset has at least 26 joint representations for the humanoid figure.

[0200] Solution 15. The computing device according to Solution 10, wherein generating the animated character further comprises:

[0201] generating a plurality of animated characters based on the currently generated gesture data; and

[0202] The plurality of animated characters are caused to be displayed on a display device in an animation sequence.

[0203] Embodiment 16. A non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to:

[0204] generating, by at least one processor, a music input signal based on the associated musical sound;

[0205] receiving, by at least one processor, a model output signal from the encoding neural network;

[0206] generating, by at least one processor using a decoding neural network, currently generated gesture data based on a previously generated gesture of a previously generated gesture, the music input signal, and the model output signal;

[0207] generating, by at least one processor, an animated character based on the currently generated gesture data; and

[0208] The at least one processor causes the animated character to be displayed by a display device.

[0209] Embodiment 17. The non-transitory computer-readable storage medium of embodiment 16, wherein the instructions further configure the computer to:

[0210] training an encoding neural network by at least one processor to generate the model output signal using test previous gesture data, the music input signal and test current gesture data,

[0211] Wherein, the test previous posture data is based on the current posture data, the average value of the model output signal and the standard deviation of the model output signal.

[0212] Solution 18. The non-transitory computer-readable storage medium according to Solution 16, wherein generating the animated character further comprises:

[0213] Associating one or more parts, wherein at least one of the one or more parts includes a set of joints connected to a set of frames, the set of frames being used to represent the animated character using the currently generated pose data.

[0214] Option 19. A non-transitory computer-readable storage medium according to Option 16, wherein generating the animated character further comprises: generating a plurality of animated characters based on the currently generated posture data and displaying the plurality of animated characters in an animation sequence on a display device.

[0215] Embodiment 20. A non-transitory computer-readable storage medium according to Embodiment 17, wherein the model output signal is generated by switching from initially forced training to autoregressive training in a predetermined number of iterations.

[0216] Glossary

[0217] "Carrier signal" refers to any intangible medium that can store, encode or carry instructions for execution by a machine and includes digital or analog communications signals or other intangible media to facilitate communication of such instructions. Instructions may be sent or received over a network using a transmission medium via a network interface device.

[0218] "Client Device" refers to any machine that interfaces with a communications network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smart phone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communications device that a user may use to access a network.

[0219] "Communications network" means one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, A network, other type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless network or a cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rate for GSM evolution (EDGE) technology, including the third generation partnership project (3GPP) of 3G, fourth generation wireless (4G) network, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standard, other data transmission technologies defined by various standard setting organizations, other long distance protocols, or other data transmission technologies.

[0220] "Component" refers to a device, physical entity or logic with the following boundaries, which is defined by function or subroutine calls, branch points, APIs or other technologies that provide partitioning or modularization for specific processing or control functions. Components can be combined with other components via their interfaces to perform machine processing. Components can be packaged functional hardware units designed for use with other components, and can be part of a program that generally performs specific functions in related functions. Components can constitute software components (e.g., codes implemented on machine-readable media) or hardware components. "Hardware components" are tangible units that can perform certain operations and can be configured or arranged in a certain physical manner. In various examples, one or more computer systems (e.g., independent computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured as hardware components for performing certain operations described herein by software (e.g., applications or application parts). Hardware components can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component may include a dedicated circuit system or logic that is permanently configured to perform certain operations. The hardware component may be a dedicated processor such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware component may also include a programmable logic or circuit system that is temporarily configured to perform certain operations by software. For example, the hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function, and is no longer a general-purpose processor. It will be understood that it can be decided to implement the hardware component mechanically, in a dedicated and permanently configured circuit or in a temporarily configured (e.g., configured by software) circuit for cost and time considerations. Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering an example where a hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each hardware component in the hardware component at any one time. For example, in the case where a hardware component includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware components) at different times. The software configures one or more specific processors accordingly to constitute a specific hardware component, for example, at one time, and to constitute different hardware components at different times. Hardware components can provide information to other hardware components and receive information from other hardware components. Therefore, the described hardware components can be considered to be communicatively coupled.In the case of multiple hardware components being present at the same time, communication can be achieved by signal transmission between or among two or more hardware components (e.g., through appropriate circuits and buses). In examples where multiple hardware components are configured or instantiated at different times, communication between such hardware components can be achieved, for example, by storing information in a memory structure accessed by multiple hardware components and retrieving information in the memory structure. For example, a hardware component can perform an operation, and the output of the operation is stored in a memory device to which it is communicatively coupled. Then, other hardware components can access the memory device at a subsequent time to retrieve the stored output and process the stored output. The hardware component can also initiate communication with an input device or an output device, and can operate on resources (e.g., the collection of information). The various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform related operations. Whether temporarily configured or permanently configured, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, "processor-implemented components" refer to hardware components implemented using one or more processors. Similarly, the method described herein can be implemented at least in part by a processor, wherein specific one or more processors are examples of hardware. For example, at least some operations of the method can be performed by one or more processors or the parts implemented by the processor. In addition, the one or more processors can also be operated to support the execution of the related operations in the "cloud computing" environment or operate as "software as a service" (SaaS). For example, at least some operations in the operation can be performed by a computer group (as an example of a machine including a processor), wherein these operations can be accessed via a network (for example, the Internet) and via one or more appropriate interfaces (for example, API). The execution of some operations can be distributed between processors, not only resident in a single machine, but deployed across multiple machines. In some examples, a processor or the parts implemented by a processor can be located in a single geographic location (for example, in a home environment, an office environment or a server group). In other examples, a processor or the parts implemented by a processor can be distributed across several geographic locations.

[0221] "Computer-readable storage media" refers to both machine storage media and transmission media. Therefore, these terms include both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium", "computer-readable medium" and "device-readable medium" mean the same thing and can be used interchangeably in this disclosure.

[0222] “Machine storage media” refers to a single or multiple storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Thus, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and / or device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms “machine storage media,” “device storage media,” and “computer storage media” mean the same thing and are used interchangeably in this disclosure. The terms “machine storage media,” “computer storage media,” and “device storage media” expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are encompassed by the term “signal media.”

[0223] “Non-transitory computer-readable storage medium” refers to tangible media capable of storing, encoding, or carrying instructions to be executed by a machine.

[0224] "Signal medium" refers to any intangible medium that is capable of storing, encoding or carrying instructions executed by a machine, and includes digital or analog communication signals or other intangible media to facilitate the communication of software or data. The term "signal medium" should be deemed to include any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. The terms "transmission medium" and "signal medium" refer to the same thing and may be used interchangeably in this disclosure.

[0225] A "timestamp" in this context refers to a sequence of characters or coded information that identifies when some event occurred, such as giving the date and time of day, sometimes to within a fraction of a second.

Claims

1. A method for generating an animated character in a dance pose to music, the method comprising: receiving, by at least one processor, a latent space from a neural network encoder; generating, using a neural network decoder, currently generated gesture data based on previously generated gesture data for a previously generated gesture, a music input signal, and the latent space; as well as An animated character is generated based on the currently generated gesture data.

2. The method according to claim 1, wherein: The neural network encoder and the neural network decoder are based on a conditional recurrent neural network model.

3. The method according to claim 1, wherein: The latent space is a unit normal distribution or a Gaussian distribution.

4. The method according to claim 1, wherein: Generating the currently generated posture data further includes: Generate the mean and standard deviation of the latent space.

5. The method according to claim 4, wherein: Generating the currently generated posture data further includes: A plurality of pose data is sampled from the poses generated during the training step from the latent space.

6. The method according to claim 1, wherein: Generating the animation character further includes: One or more parts of the animated character using the currently generated pose data are positioned, wherein at least one of the one or more parts includes a set of joints connected to a set of frames.

7. The method according to claim 1, further comprising: The music input signal is generated based on an acoustic signal associated with the music, wherein the music input signal is a vector.

8. The method according to claim 1, wherein: Generating the animation character further includes: generating a plurality of characters based on the currently generated gesture data; and The plurality of characters are caused to be displayed on a display device in an animation sequence.

9. The method according to claim 1, further comprising: The neural network encoder is trained to generate the latent space including test previous gesture data, the music input signal and test current gesture data.

10. A computing system comprising: at least one processor; as well as a memory storing instructions that, when executed by the at least one processor, cause the computing system to perform operations including: Receive the latent space from the neural network encoder; generating, using a neural network decoder, currently generated gesture data based on previously generated gesture data for a previously generated gesture, a music input signal, and the latent space; as well as An animated character is generated based on the currently generated gesture data.

11. The computing system of claim 10, wherein: The neural network encoder and the neural network decoder are based on a conditional recurrent neural network model.

12. The computing system of claim 10, wherein: Generating the animation character further includes: One or more parts of the animated character using the currently generated pose data are positioned, wherein at least one of the one or more parts includes a set of joints connected to a set of frames.

13. The computing system of claim 10, wherein: Generating the animation character further includes: generating a plurality of characters based on the currently generated gesture data; and The plurality of characters are caused to be displayed on a display device in an animation sequence.

14. The computing system of claim 10, the operations further comprising: The neural network encoder is trained to generate the latent space including test previous gesture data, the music input signal and test current gesture data.

15. The computing system of claim 14, wherein: Training the neural network encoder comprises: The training is performed jointly based on a 2D dataset and a 3D dataset; wherein the 2D dataset has at least 25 joints representing a 2D humanoid figure, and the 3D dataset has at least 26 joints representing a 3D humanoid figure.

16. A non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to perform operations comprising: Receive the latent space from the neural network encoder; generating, using a neural network decoder, currently generated gesture data based on previously generated gesture data for a previously generated gesture, a music input signal, and the latent space; as well as An animated character is generated based on the currently generated gesture data.

17. The non-transitory computer readable storage medium of claim 16, the operations further comprising: The neural network encoder is trained to generate the latent space including test previous gesture data, the music input signal and test current gesture data.

18. The non-transitory computer-readable storage medium of claim 16, wherein the latent space is generated by switching from initially forced training to auto-regressive training for a predetermined number of iterations.

19. The non-transitory computer readable storage medium of claim 16, wherein: Generating the animation character further includes: One or more parts of the animated character using the currently generated pose data are positioned, wherein at least one of the one or more parts includes a set of joints connected to a set of frames.

20. The non-transitory computer readable storage medium of claim 16, wherein: Generating the animation character further includes: generating a plurality of characters based on the currently generated gesture data; and The plurality of characters are caused to be displayed on a display device in an animation sequence.

Citation Information

Cited By

  • Management of pseudorandom animation system

    US12488525B2

  • Avatar dance animation system

    US12646240B2