Patent Publication Number: US-11386806-B2

Title: Physical movement analysis

Description:
RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Patent Application No. 62/659,848, filed Apr. 19, 2018, the entire contents of which are hereby incorporated by reference herein. 
    
    
     TECHNICAL FIELD 
     The present disclosure is generally related to computer systems, and is more specifically related to systems and methods for physical movement analysis. 
     BACKGROUND 
     Three dimensional (3D) motion visualization and data is used to analyze human motion in sports and health applications. 3D systems can provide useful information of angles, speed, etc. which can be used to identify poor movement for performance or health. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present disclosure is illustrated by way of example, and not by way of limitation, and can be more fully understood with reference to the following detailed description when considered in connection with the figures in which: 
         FIG. 1  depicts a high-level component diagram of an illustrative system architecture, in accordance with one or more aspects of the present disclosure. 
         FIG. 2  is a flow diagram illustrating a physical movement analysis method in accordance with one or more aspects of the present disclosure. 
         FIG. 3  is a flow diagram illustrating a reference data set determination method in accordance with one or more aspects of the present disclosure. 
         FIG. 4  is a flow diagram illustrating a recommendation generation method in accordance with one or more aspects of the present disclosure. 
         FIG. 5  depicts an example computer system which can perform any one or more of the methods described herein, in accordance with one or more aspects of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments for physical movement analysis are described herein. In one embodiment, an intelligent analysis framework is used to optimize human motion using three dimensional (3D) motion data captured and compared against a dynamically growing reference motion data set. The analysis frameworks uses a machine learning algorithm to dynamically create a series of personalized recommendations for a user, not just against a global ideal, but based on personal characteristics compared to those most similar to the user&#39;s. 
     Conventional systems can provide vast amounts of feedback information, but generally require an operator to go through all the data, graphs, etc., and to know what they are looking for and which information will be relevant to the user being analyzed. If such a system utilizes reference data at all, it generally still requires the operator to manually compare the captured data to the reference data and to make appropriate determinations about the captured movement being analyzed. This approach requires a deep understanding of optimal human movement and a potentially very time consuming process of filtering through the reference data and making comparisons to the captured motion data. 
     Aspects of the present disclosure address the above and other considerations by providing the intelligent analysis framework which utilizes a machine learning solution where new 3D motion data is captured and compared to a dynamically created personalized reference data subset based on personal characteristics of the user or users being analyzed. These characteristics can include, for example, demographics, level of proficiency, any user motion characteristics such as limitations of movement, desired outcomes, etc., and can be used to make personalized recommendations of adjustments and injury risk analysis, as well as a series of recommendations to make these adjustments in the form of text, images, video, audio etc. 
     The framework system may present this personalized analysis in such a way that the operator is not required to go through each data set and graph manually. Instead, they may be provided a dynamic recommendation report, which optionally includes a personalized training plan with recommendations to modify and/or improve the motion being performed in the motion capture analysis. As the user follows these recommendations and improves the motion, they may reduce the number of inefficient or improper movements until the system detects a satisfactory level of improvement from analysis of subsequent motion capture data. 
       FIG. 1  depicts a high-level component diagram of an illustrative system architecture  100 , in accordance with one or more aspects of the present disclosure. System architecture  100  includes a computing device  110 , a repository  120 , and a server machine  150  connected to a network  130 . Network  130  may be a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof. 
     The computing device  110  may perform physical movement analysis using artificial intelligence to effectively optimize one or more body movements associated with a subject user  140  performing a physical activity. In one embodiment, computing device  110  may be a desktop computer, a laptop computer, a smartphone, a tablet computer, a server, or any suitable computing device capable of performing the techniques described herein. In one embodiment, a plurality of motion capture sensors  142 , which may be affixed to one or more body parts of the subject user  140  while they are performing the physical activity, capture 3D motion capture data  144  corresponding to the subject user  140 . In other embodiments, the motion capture sensors  142  may be affixed to any relevant object being manipulated by the subject user  140  while performing the physical activity, such as to a golf club, baseball bat, tennis racquet, can, crutches, prosthetics, etc. The 3D motion capture data  144  may be received by the computing device  110 . 
     The 3D motion capture data  144  may be received in any suitable manner. For example, the motion capture sensors  142  may be wireless inertial sensors, each including for example, a gyroscope, magnetometer, accelerometer, and/or other components to measure sensor data including relative positional data, rotational data, and acceleration data. The 3D motion capture data  144  may include this sensor data and/or other data derived or calculated from the sensor data. The motion capture sensors  142  may transmit the 3D motion capture data  144  including, raw sensor data, filtered sensor data, or calculated sensor data, wirelessly to computing device  110  using internal radios or other communication mechanisms. In other embodiments, other systems may be used to capture 3D motion capture data  144 , such as an optical system, using one or more cameras, a mechanical motion system, an electro-magnetic system, an infra-red system, etc. In addition, in other embodiments, the 3D motion capture data  144  may have been previously captured and stored in a database or other data store. In this embodiment, computing device  110  may receive the 3D motion capture data  144  from another computing device or storage device where the 3D motion capture data  144  is maintained. In still other embodiments, the 3D motion capture data  144  may be associated with other users besides subject user  140  performing the physical activity. 
     The 3D motion capture data  144  may be used to train a set of machine learning models or may be a new data for which physical movement analysis is to be performed. Accordingly, in the preliminary stages of processing, the 3D motion capture data  144  can be prepared for training the set of machine learning models or subsequent analysis. 
     The physical activity can be for example, swinging a golf club, throwing a ball, running, walking, jumping, sitting standing, or any other physical activity. When performing the physical activity, the subject user  140  and the other users in the group of users may make one or more body movements that together enable performance of the physical activity. For example, when swinging a golf club, the user may rotate their hips and shoulders, swing their arms, hinge their wrists, etc., each of which can be considered a separate body movement associated with performing the physical activity. Each physical activity may have its own unique set of associated body movements. 
     In one embodiment, computing device  110  may include a reference data set engine  111  and a physical movement analysis engine  112 . The reference data set engine  111  and the physical movement analysis engine  112  may each include instructions stored on one or more tangible, machine-readable storage media of the computing device  110  and executable by one or more processing devices of the computing device  110 . In one embodiment, reference data set engine  111  determines a personalized reference data set  122  for the subject user  140  based on 3D motion capture data associated with a group of users performing the same physical activity as subject user  140 . For example, reference data set engine  111  may further receive attribute data  146  associated with the subject user  140 . The attribute data  146  may include, for example, physical characteristic data associated with the subject user  140 , such as age, height, weight, gender, and/or other information, range of motion data, and/or or functional movement data. The range of motion data may define, for example, how far the subject user  140  can rotate a particular joint, and the functional movement data may indicate, for example, how well the subject user  140  can perform certain standardized body movements. Computing device  110  may receive the attribute data  146  from some other computing device, from a storage device, such as repository  120 , or via direct user input. To determine the personalized reference data set  122 , reference data set engine  111  may filter a collection of reference data set candidate data to identify a group of users based on a correlation of their attribute data with the attribute data  146  of the subject user, as will be described in more detail below. 
     In one embodiment, the physical movement analysis engine  112  may use a set of trained machine learning models  114  that are trained and used to analyze the 3D motion capture data  144  and provide a recommendation for the subject user  140  pertaining to improvement of the physical activity. The physical movement analysis engine  112  may also preprocess any received 3D motion capture data, such as 3D motion capture data  144 , prior to using the data for training of the set of machine learning models  114  and/or applying the set of trained machine learning models  114  to the data. In some instances, the set of trained machine learning models  114  may be part of the physical movement analysis engine  112  or may be accessed on another machine (e.g., server machine  150 ) by the physical movement analysis engine  112 . Based on the output of the set of trained machine learning models  114 , the physical movement analysis engine  112  may obtain a recommendation for the subject user  140  pertaining to improvement of the physical activity. 
     Server machine  150  may be a rackmount server, a router computer, a personal computer, a portable digital assistant, a mobile phone, a laptop computer, a tablet computer, a camera, a video camera, a netbook, a desktop computer, or any combination of the above. The server machine  150  may include a training engine  151 . The set of machine learning models  114  may refer to model artifacts that are created by the training engine  151  using the training data that includes training inputs and corresponding target outputs (i.e., correct answers for respective training inputs). During training, patterns in the training data that map the training input to the target output (i.e., the answer to be predicted) can be found, and are subsequently used by the machine learning models  114  for future predictions. As described in more detail below, the set of machine learning models  114  may be composed of, e.g., a single level of linear or non-linear operations (e.g., a support vector machine [SVM]) or may be a deep network, i.e., a machine learning model that is composed of multiple levels of non-linear operations). Examples of deep networks are neural networks including convolutional neural networks, recurrent neural networks with one or more hidden layers, and fully connected neural networks. Convolutional neural networks include architectures that may provide efficient physical movement analysis. Convolutional neural networks may include several convolutional layers and subsampling layers that apply filters to portions of the data to detect certain attributes/features. Whereas many machine learning models used for personalized recommendations often suffer from a lack of information about users and their behavior, as well as a lack of relevant input data, physical movement analysis engine  112  has the benefit of high quality information about the users, their physical and demographic attributes, goals and a large amount of movement data. As such, the set of machine learning models  114 , and/or other artificial intelligence models may include, for example, content personalization, collaborative filtering, neural networks or statistical analysis to create high quality movement change recommendations to achieve the desired results. This level of information can allow physical movement analysis engine  112  to make very specific goal based recommendations directed to, for example, more power, speed, accuracy, flexibility, etc. 
     As noted above, the set of machine learning models  114  may be trained to determine a recommendation for the subject user  140  pertaining to an improvement of the physical activity using training data, as further described below. Once the set of machine learning models  114  are trained, the set of machine learning models  114  can be provided to physical movement analysis engine  112  for analysis of new 3D motion capture data. For example, reference data set engine  111  may determine a new reference data set  122  and physical movement analysis engine  112  may input the new reference data set  122  into the set of machine learning models  114 . The physical movement analysis engine  112  may then obtain one or more outputs from the set of trained machine learning models  114 . For example, the set of machine learning models  114  may identify, from the personalized reference data set  122 , a first subset of the group of users for which a corresponding proficiency ranking is greater than a first threshold, identify, from the personalized reference data set  122 , a second subset of the group of users for which a corresponding proficiency ranking is less than a second threshold, and determine at least one difference between the motion capture data associated with the first subset and the motion capture data associated with the second subset. This difference between the high performers and the lower performers corresponds to a body movement associated with performing the physical activity and the recommendation for the subject user  140  can be based on this difference. In one embodiment, the recommendation for the subject user  140  includes an indication of one or more sub-optimal body movements associated with the subject user  140  performing the physical activity. In another embodiment, the recommendation for the subject user  140  further includes an indication of at least one of a practice drill associated with the one or more sub-optimal body movements, or an image or video demonstrating a correct version of the one or more sub-optimal body movements. 
     The repository  120  is a persistent storage that is capable of storing 3D motion capture data  144 , attribute data  146 , reference data set candidate data, and a personalized reference data set  122 , as well as data structures to tag, organize, and index this data. Repository  120  may be hosted by one or more storage devices, such as main memory, magnetic or optical storage based disks, tapes or hard drives, NAS, SAN, and so forth. Although depicted as separate from the computing device  110 , in an implementation, the repository  120  may be part of the computing device  110 . In some implementations, repository  120  may be a network-attached file server, while in other embodiments, repository  120  may be some other type of persistent storage such as an object-oriented database, a relational database, and so forth, that may be hosted by a server machine or one or more different machines coupled to the via the network  130 . 
       FIG. 2  is a flow diagram illustrating a physical movement analysis method, in accordance with one or more aspects of the present disclosure. The method  200  may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), firmware, or a combination thereof. In one embodiment, method  200  may be performed by computing device  110  including reference data set engine  111  and physical movement analysis engine  112 , as shown in  FIG. 1 . 
     Referring to  FIG. 2 , at block  210 , method  200  captures 3D motion capture data  144  corresponding to a subject user  140  using a plurality of motion capture sensors  142  affixed to one or more body parts of the subject user  140  while the subject user  140  is performing the physical activity. In one embodiment, the motion capture sensors  142  are wireless inertial sensors, each including a gyroscope, magnetometer, accelerometer, and/or other components to measure relative positional data, rotational data, acceleration data, and/or other data. The 3D motion capture data  144  includes data representing one or more body motions associated with performing the physical activity. At block  220 , method  200  receives the 3D motion capture data  144  corresponding to a subject user  140  performing the physical activity. In one embodiment, computing device  110  receives the 3D motion capture data  144  from the motion capture sensors  142  over a wireless communication link (e.g., Bluetooth). In other embodiments, the 3D motion capture data  144  may have been previously captured and stored in a database or other data store, such as repository  120 . In one embodiment, the 3D motion capture data  144  is accompanied by a request or instruction to perform a physical movement analysis to generate a recommendation for the subject user  140  pertaining to improvement of the physical activity. The request may be received from a user of computing device  110 , from a user of a client device coupled to computing device  110  via network  130 , or from some other requestor. In one embodiment, reference data set engine  111  receives the 3D motion capture data  144  and stores the 3D motion capture data  144  in repository  120 . 
     At block  230 , method  200  receives attribute data  146  associated with the subject user  140 . The attribute data  146  may include, for example, physical characteristic data associated with the subject user  140 , such as age, height, weight, gender, and/or other information, range of motion data, and/or or functional movement data. The range of motion data may define, for example, how far the subject user  140  can rotate a particular joint. For example, the range of motion data may include measurements for a joint across all three axis, internal/external rotation, flexion/extension and adduction/abduction. Functional movement data may indicate, for example, how well the subject user  140  can perform certain standardized body movements such as a deep squat, jump, single leg raise, etc. In one embodiment, the attribute data  146  is received as metadata associated with the 3D motion capture data  144 . 
     At block  240 , method  200  determines a personalized reference data set  122  for the subject user  140  based on 3D motion capture data associated with a group of users performing the physical activity. In one embodiment, reference data set engine  111  generates the personalized reference data set  122  such that each user from the group of users shares at least a portion of the attribute data  146  with the subject user  140 . For example, reference data set engine  111  compares the attribute data  146  associated with the subject user  140  to attribute data associated with a plurality of reference data set candidates and identifies the group of users from the plurality of reference data set candidates based on a correlation of the attribute data. Additional details with respect to determining the personalized reference data set  122  are described below with respect to  FIG. 3 . 
     At block  250 , method  200  provides the personalized reference data set  122  as an input to one or more of trained machine learning models  114 . In one embodiment, the set of machine learning models  114  may be composed of a single level of linear or non-linear operations, such as an SVM or deep network (i.e., a machine learning model that is composed of multiple levels of non-linear operations), such as a convolutional neural network. In one embodiment, the convolutional neural network is trained using a training data set formed from examples of motion capture data associated with users performing the physical activity as a training input and proficiency rankings that indicate how well each of the users performs the physical activity as a target output. 
     At block  260 , method  200  obtains an output of the trained machine learning model, wherein the output comprises a recommendation for the subject user  140  pertaining to improvement of the physical activity. In one embodiment, the recommendation for the subject user  140  includes an indication of one or more sub-optimal body movements associated with the subject user  140  performing the physical activity. In another embodiment, the recommendation for the subject user  140  further includes an indication of at least one of a practice drill associated with the one or more sub-optimal body movements, or an image or video demonstrating a correct version of the one or more sub-optimal body movements. At block  270 , method  200  provides the requestor with the recommendation, such as on an attached display device. 
       FIG. 3  is a flow diagram illustrating a reference data set determination method, in accordance with one or more aspects of the present disclosure. The method  300  may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), firmware, or a combination thereof. In one embodiment, method  300  may be performed by computing device  110  including reference data set engine  111  and physical movement analysis engine  112 , as shown in  FIG. 1 . 
     Referring to  FIG. 3 , at block  310 , method  300  receives reference data set candidate data including corresponding attribute data. In one embodiment, the reference data set candidate data includes 3D motion capture data corresponding to a number of users performing a physical activity, as well as the attribute data, such as physical characteristic data, range of motion data and/or functional movement data, associated with each of the number of users. In one embodiment, the reference data set candidate data is captured in the same manner as described above, using motion capture sensors  142 . In another embodiment, the reference data asset candidate data was previously captured and stored in a data store, such as repository  120 , from which it can be accessed by reference data set engine  111 . The reference data set candidate data preferably includes 3D motion capture data corresponding to a diverse group of users having different attribute data to increase the chances of finding a candidate that shares at least a portion of the attribute data  146  with a subject user  140  being analyzed. 
     At block  320 , method  300  filters the reference data set candidate data using physical characteristic data associated with the subject user  140  from attribute data  146 . In one embodiment, reference data set engine  111  identifies a subset of the users represented in the reference data set candidate data that share the same or similar physical characteristic data as the subject user  140 . For example, reference data set engine  111  may compare the attribute data  146  associated with the subject user  140  to the physical characteristic data associated with each of the users from the reference data set candidate data to identify either an exact match or a feature vector that is sufficiently similar (i.e., that meets or exceeds a similarity threshold criterion). 
     At block  330 , method  300  filters the reference data set candidate data using range of motion data and functional movement data associated with the subject user  140  from attribute data  146 . In one embodiment, reference data set engine  111  identifies a further subset of the users that share the same or similar physical characteristic data as the subject user  140 . In this further subset, reference data set engine  111  examines the range of motion data and functional movement data. For example, reference data set engine  111  may compare the attribute data  146  associated with the subject user  140  to the range of motion data and functional movement data associated with each of the users from the first subset to identify either an exact match or another feature vector that is sufficiently similar (i.e., that meets or exceeds a similarity threshold criterion). 
     At block  340 , method  300  identifies the group of users to populate the personalized reference data set  122  for the subject user  140 . In one embodiment, this group of users represented in the reference data set candidate data and that match the physical characteristic data and range of motion/functional movement data of the subject user  140  are included in the personalized reference data set  122 . In one embodiment, the personalized reference data set  122  is stored in repository  120  for later use by physical movement analysis engine  112 . 
       FIG. 4  is a flow diagram illustrating a recommendation generation method, in accordance with one or more aspects of the present disclosure. The method  400  may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), firmware, or a combination thereof. In one embodiment, method  200  may be performed by computing device  110  including reference data set engine  111  and physical movement analysis engine  112 , in connection with the set of machine learning models  114 , as shown in  FIG. 1 . 
     Referring to  FIG. 4 , at block  410 , method  400  identifies a proficiency ranking for each user of the group of users in the personalized reference data set  122 . In one embodiment, the proficiency ranking is an indication of how well the corresponding user performs the physical activity. An administrator or other reviewer may subjectively assign the proficiency ranking to each user to indicate their performance relative to other users. In other embodiments, the proficiency ranking may be based on objective criteria, such as speed, distance, time, etc. In one embodiment, there are separate proficiency rankings for how well the corresponding user performs each separate body movement involved in the physical activity. Once determined, the proficiency ranking data may be added to the personalized reference data set  122  and stored in repository  120 . 
     At block  420 , method  400  segments the group of users in the personalized reference data set  122  based on the corresponding proficiency rankings. In one embodiment, for example, physical movement analysis engine  112 , in connection with the set of machine learning models  114  may order the group of users based on proficiency ranking (e.g., from highest to lowest) and divide the group of users into a number of segments. Depending on the embodiment, each segment may have an equal number of users (e.g., one fourth of the total users) or each segment may span an equal range of proficiency rankings (e.g., all users with a proficiency ranking from 75-100). In other embodiments, there may be any number of segments and/or the group of users may be placed in the segments according to some other criteria. 
     At block  430 , method  400  identifies, from the personalized reference data set  122 , a first subset of the group of users for which a corresponding proficiency ranking is greater than a first threshold. In one embodiment, physical movement analysis engine  112 , in connection with the set of machine learning models  114 , may identify the highest performing segment of users according to proficient ranking. For example, the highest performing segment may include the segment of users for which the proficiency ranking of each user meets or exceeds a first threshold (e.g., a proficiency ranking of 75). 
     At block  440 , method  400  identifies, from the personalized reference data set  122 , a second subset of the group of users for which a corresponding proficiency ranking is less than a second threshold. In one embodiment, physical movement analysis engine  112 , in connection with the set of machine learning models  114 , may identify the lowest performing segment of users according to proficient ranking. For example, the lowest performing segment may include the segment of users for which the proficiency ranking of each user is below a second threshold (e.g., a proficiency ranking of 25). 
     At block  450 , method  400  determines at least one difference between the motion capture data associated with the first subset and the motion capture data associated with the second subset, where the at least one difference corresponds to a body movement associated with performing the physical activity. For example, assume that subject user  140  is a 50 year male old golfer with an 18 handicap who practices once a week and plays twice a month and would like to become a 14 handicap in 6 months. In one embodiment, reference data set engine  111 , can create a personalized reference data set  122  of people who have all the characteristics of the subject user  140  where the first subset includes users with a 14 handicap and the second subset includes users with an 18 handicap. In one embodiment, physical movement analysis engine  112 , in connection with the set of machine learning models  114  may determine that most of the users with 14 handicaps in the personalized reference data set  122  pronate their lead wrist at least 10 degrees in the transition of their swing while John (and other users with 18 handicaps) does/do not pronate at all, but goes/go right into supination. While there may have been any number of key differences between the subject user  140  and target reference group (i.e., the first subset), physical movement analysis engine  112  may recommend this particular change because it had the highest incidence (95% of the target group performed the pronation of the lead wrist at transition) and the amount of difference was the greatest (10 degrees of pronation compared to 0). In one embodiment, the output of the machine learning models  114  may include a rank order the differences between movements of the subject user  140  and of other users in the second subset and the target groups movements (i.e., the first subset) based on incidence and movement variance amounts. 
     At block  460 , method  400  generates, based at least in part on the at least one difference, an indication of one or more sub-optimal body movements associated with the subject user  140  performing the physical activity. At block  470 , method  400  generates, based at least in part on the at least one difference, an indication of a practice drill associated with the one or more sub-optimal body movements, or an image or video demonstrating a correct version of the one or more sub-optimal body movements. 
       FIG. 5  depicts an example computer system  500  which can perform any one or more of the methods described herein, in accordance with one or more aspects of the present disclosure. In one example, computer system  500  may correspond to a computing device capable of executing reference data set engine  111  and/or physical movement analysis engine  112  of  FIG. 1 . In another example, computer system  500  may correspond to a computing device capable of executing training engine  151  of  FIG. 1 . The computer system  500  may be connected (e.g., networked) to other computer systems in a LAN, an intranet, an extranet, or the Internet. The computer system  500  may operate in the capacity of a server in a client-server network environment. The computer system  500  may be a personal computer (PC), a tablet computer, a set-top box (STB), a personal Digital Assistant (PDA), a mobile phone, a camera, a video camera, or any device capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that device. Further, while only a single computer system is illustrated, the term “computer” shall also be taken to include any collection of computers that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methods discussed herein. 
     The exemplary computer system  500  includes a processing device  502 , a main memory  504  (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory  506  (e.g., flash memory, static random access memory (SRAM)), and a data storage device  518 , which communicate with each other via a bus  530 . 
     Processing device  502  represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device  502  may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processing device  502  may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device  502  is configured to execute instructions for performing the operations and steps discussed herein. 
     The computer system  500  may further include a network interface device  508 . The computer system  500  also may include a video display unit  510  (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device  512  (e.g., a keyboard), a cursor control device  514  (e.g., a mouse), and a signal generation device  516  (e.g., a speaker). In one illustrative example, the video display unit  510 , the alphanumeric input device  512 , and the cursor control device  514  may be combined into a single component or device (e.g., an LCD touch screen). 
     The data storage device  518  may include a computer-readable medium  528  on which the instructions  522  (e.g., implementing reference data set engine  111 , physical movement analysis engine  112 , or training engine  151 ) embodying any one or more of the methodologies or functions described herein is stored. The instructions  522  may also reside, completely or at least partially, within the main memory  504  and/or within the processing device  502  during execution thereof by the computer system  500 , the main memory  504  and the processing device  502  also constituting computer-readable media. The instructions  522  may further be transmitted or received over a network via the network interface device  508 . 
     While the computer-readable storage medium  528  is shown in the illustrative examples to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media. 
     Although the operations of the methods herein are shown and described in a particular order, the order of the operations of each method may be altered so that certain operations may be performed in an inverse order or so that certain operation may be performed, at least in part, concurrently with other operations. In certain implementations, instructions or sub-operations of distinct operations may be in an intermittent and/or alternating manner. 
     It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. 
     In the above description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the aspects of the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure. 
     Some portions of the detailed descriptions above are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “receiving,” “determining,” “selecting,” “storing,” “setting,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus. 
     The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description. In addition, aspects of the present disclosure are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the present disclosure as described herein. 
     Aspects of the present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any procedure for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.). 
     The words “example” or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Moreover, use of the term “an embodiment” or “one embodiment” or “an implementation” or “one implementation” throughout is not intended to mean the same embodiment or implementation unless described as such. Furthermore, the terms “first,” “second,” “third,” “fourth,” etc. as used herein are meant as labels to distinguish among different elements and may not necessarily have an ordinal meaning according to their numerical designation.