WO2023106846A1 - Skeleton point-based service providing apparatus and method - Google Patents

Skeleton point-based service providing apparatus and method Download PDF

Info

Publication number
WO2023106846A1
WO2023106846A1 PCT/KR2022/019868 KR2022019868W WO2023106846A1 WO 2023106846 A1 WO2023106846 A1 WO 2023106846A1 KR 2022019868 W KR2022019868 W KR 2022019868W WO 2023106846 A1 WO2023106846 A1 WO 2023106846A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
motion
skeleton
skeleton point
service providing
Prior art date
Application number
PCT/KR2022/019868
Other languages
French (fr)
Korean (ko)
Inventor
김유두
김남호
김영준
정영재
성진우
Original Assignee
주식회사 에이치엔에이치
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020220169376A external-priority patent/KR20230087397A/en
Application filed by 주식회사 에이치엔에이치 filed Critical 주식회사 에이치엔에이치
Publication of WO2023106846A1 publication Critical patent/WO2023106846A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings

Definitions

  • Embodiments disclosed in this specification relate to an apparatus and method for providing a service based on skeleton points, and more specifically, to store only skeleton points, which are positional information of joints of a user's body performing an exercise, and to provide services using the skeleton points. It relates to an apparatus and method for providing a service based on a skeleton point that can be provided.
  • PT personal training
  • Patent Document 1 Korean Patent Registration No. 10-1989447 (Announced on June 14, 2019)
  • Embodiments disclosed in this specification are aimed at providing a skeleton point-based service providing apparatus and method capable of storing only skeleton points, which are positional information of a user's body joint performing an exercise, and providing a service using the stored skeleton points. there is.
  • an apparatus for providing a skeleton point-based service includes an input/output unit for detecting a user's movement operation; And from the detected movement of the user, a skeleton point, which is position information of body joints, is extracted and stored in a memory, and an eigen vector is calculated based on the skeleton point, so that in the movement of the user, the user It includes; a control unit for detecting a change in the movement posture of the.
  • a service providing method performed by a skeleton point based service providing apparatus may include detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
  • the recording medium is a computer readable recording medium on which a program for performing a service providing method is recorded.
  • the service providing method performed by the skeleton point based service providing apparatus may include: detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
  • the computer program is a computer program that is executed by a skeleton point-based service providing device and stored in a recording medium to perform a service providing method.
  • the service providing method performed by the skeleton point based service providing apparatus may include: detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
  • any one of the above-described problem solving means rather than storing and utilizing a large-capacity motion image for analyzing a user's motion, only a skeleton point, which is positional information of a user's body joint with a relatively small capacity than an image, is stored. Since the service is provided by using the storage space, there is an advantage in that the storage space can be used more efficiently.
  • any one of the above-described problem solving means instead of storing and using an image including the user's face for analyzing the user's motion, only skeleton points, which are position information of the user's body joints, are stored, and this is Since the service is provided by utilizing the storage space, there is an effect that even if the server, which is a storage space, is hacked by a hacker, the privacy of the user can be protected without being violated.
  • FIG. 1 is a functional block diagram of a skeleton point based service providing apparatus according to an embodiment.
  • FIG. 2 is an exemplary diagram for explaining an apparatus for providing a service based on a skeleton point according to an exemplary embodiment.
  • FIG. 3 is a flowchart of a service providing method according to an exemplary embodiment.
  • FIG. 1 is a functional block diagram of an apparatus for providing a service based on a skeleton point according to an embodiment
  • FIG. 2 is an exemplary view illustrating an apparatus for providing a service based on a skeleton point according to an embodiment.
  • the skeleton point-based service providing apparatus 100 may be implemented as an electronic terminal in which an application capable of interacting with a user is installed, may be implemented as a server, or may be implemented as a server-client system, and may be implemented as a server-client system. If it is, it may include an electronic terminal in which an application for an online service for interaction with a user is installed.
  • the electronic terminal may be implemented as a computer, portable terminal, television, wearable device, etc. capable of accessing a remote server through a network or connecting to other devices and servers.
  • the computer includes, for example, a laptop, desktop, or laptop equipped with a web browser
  • the portable terminal is, for example, a wireless communication device that ensures portability and mobility.
  • a wearable device is a type of information processing device that can be worn directly on the human body, such as, for example, a watch, glasses, accessories, clothes, shoes, etc. can be connected with
  • the server may be implemented as a computer capable of communicating over a network with an electronic terminal having an application for interaction with a user of the skeleton point-based service providing device 100 or a web browser, or may be implemented as a cloud computing server.
  • the server may include a storage device capable of storing data or may store data through a third server.
  • the skeleton point-based service providing device 100 may be implemented in any one form of an electronic terminal, a server, or a server-client system, and when implemented as a server, the skeleton point-based service providing device 100
  • the constituting unit may be performed on a plurality of physically separated servers or on one server.
  • an apparatus 100 for providing a service based on a skeleton point includes an input/output unit 110, a communication unit 120, a memory 130, and a control unit 140.
  • the input/output unit 110 may include an input unit for receiving an input from a user and an output unit for displaying information such as a result of performing a task or a state of the skeleton point based service providing apparatus 100 .
  • the input/output unit 110 may include an operation panel for receiving a user input and a display panel for displaying a screen.
  • the input/output unit 110 may detect a user's motion.
  • the input/output unit 100 may be a motion camera capable of photographing a user's movement and action, and through this, the user's movement and action may be photographed and sensed.
  • the input unit may include devices capable of receiving various types of inputs, such as a keyboard, a physical button, a touch screen, a camera, or a microphone.
  • the output unit may include a display panel or a speaker.
  • the input/output unit 110 is not limited thereto and may include a configuration supporting various input/outputs.
  • the communication unit 120 may perform wired/wireless communication with other devices (devices) and/or networks.
  • the communication unit 120 may include a communication module supporting at least one of various wired/wireless communication methods.
  • the communication module may be implemented in the form of a chipset.
  • wireless communication supported by the communication unit 120 includes, for example, Wi-Fi (Wireless Fidelity), Wi-Fi Direct, Bluetooth, Bluetooth Low Energy (BLE), and Ultra Wide Band (UWB). , Near Field Communication (NFC), LTE, LTE-Advanced, and the like.
  • wired communication supported by the communication unit 120 may be, for example, USB or High Definition Multimedia Interface (HDMI).
  • the memory 130 may install and store various types of data such as files, applications, and programs, and may include at least one of various types of memories such as RAM, HDD, and SSD.
  • the controller 140 to be described later may access and use data stored in the memory 130 or may store new data in the memory 130 .
  • the controller 140 may execute a program installed in the memory 130 .
  • a program for performing a service providing method according to an embodiment may be installed in the memory 130 .
  • the memory 130 may store the skeleton points extracted by the controller 140 to be described later. In this case, the skeleton point may mean location information of body joints.
  • the control unit 140 may extract a skeleton point composed of joints and bones based on the skeleton from the motion of the user detected by the input/output unit 100 .
  • a skeleton point is location information of joints such as the neck, right shoulder, right elbow, right wrist, left shoulder, left elbow, left wrist, right hip, right knee, right ankle, left hip, left knee, left ankle, etc. It may include, and may be displayed as 2D or 3D coordinate information.
  • the skeleton point since a user's motion is captured by a portable terminal such as a mobile phone, it may be information included in a 2D image frame. Therefore, the skeleton point according to an embodiment is preferably displayed as 2D coordinate information.
  • the present invention may estimate a directionality by calculating an eigenvector based on a skeleton point indicated by 2D coordinate information, and a more detailed description regarding this will be described later.
  • the skeleton points according to an embodiment may be stored for each time. That is, since the motion of the user changes based on time-series characteristics, the motion motion of the user can be detected in more detail by storing the skeleton points by time as described above.
  • the control unit 140 has a configuration including at least one processor such as a CPU, GPU, iOS, and the like, and may control the overall operation of the skeleton point based service providing apparatus 100 . That is, the control unit 140 may control other elements included in the skeleton point-based service providing apparatus 100 to perform an operation for providing a service. Also, the controller 140 may execute a program stored in the memory 130, read a file stored in the memory 130, or store a new file in the memory 130.
  • the control unit 140 may extract a skeleton point, which is position information of body joints, from the user's motion detected through the input/output unit 120 and store it in the memory 130 . More specifically, the controller 140 recognizes the user's skeleton from the user's motion, extracts joints and bones based on the skeleton, and then extracts spatial coordinate values for the joints from the extracted information, thereby obtaining a skeleton point. can be extracted.
  • the skeleton point may be two-dimensional coordinate information, and may be displayed as (x, y) values, for example.
  • the skeleton point including the 2D coordinate information is based on a point in one image frame including the user's motion (eg, a point when the upper left corner of the frame is set to (0, 0))
  • the x-axis value and the y-axis value can be extracted.
  • the skeleton point may be 3D coordinate information, and may be displayed as (x, y, z) values, for example.
  • the extraction of the skeleton point from the user's motion may be performed through a pre-learned artificial intelligence model.
  • a pretrained artificial intelligence model for extracting a skeleton point may use an OpenPose-based algorithm.
  • An artificial intelligence model using an OpenPose-based algorithm can recognize a person from a user-detected image and extract a skeleton point as the recognized person moves.
  • the OpenPose-based algorithm may be a known joint detection artificial intelligence algorithm that detects a moving user's posture in real time using multi-GPU-based deep learning and analyzes the user's movement.
  • the detected joint may be the neck, right shoulder, right elbow, right wrist, left shoulder, left elbow, left wrist, right hip, right knee, right ankle, left hip, left knee, left ankle, etc.
  • Joint position information including 2-dimensional or 3-dimensional coordinate information for may be extracted as a skeleton point.
  • the controller 140 may detect a change in the user's movement posture from the user's movement using a preset eigen vector.
  • the user's movement posture change may indicate, for example, whether the user's movement is upward or downward, and whether the movement posture change means a large motion or a small motion.
  • the eigen vector may be an eigen value capable of obtaining a direction in which the collected data coordinates form on the coordinate plane. Accordingly, when the controller 140 detects the user's motion using a preset eigen vector at the skeleton point, it can detect a change in the user's motion posture.
  • a normalization process may be required. Based on the skeleton points including the normalized coordinates, A change in the user's movement posture may be detected. That is, in the normalization process, for example, when a person standing close to the camera exercises and a person standing far from the camera exercises, even though the size and direction of the motion are actually the same, the user's movement posture is determined using the eigenvector. In the case of calculating the change, it is necessary to make the size of the user's movement constant, as the change in coordinates of a person standing close to the camera is calculated much larger. That is, the normalization process may be performed to similarly calculate the change in the user's movement posture regardless of the perspective of the camera that has photographed the user.
  • the upper left coordinates (A in FIG. 2) of the image frame including the user performing the motion operation can be set to (0,0), which is the coordinates of the upper left corner (B in FIG. 2) based on the user standing. It can be normalized by setting to (0,0) and changing the starting point of x and y coordinates.
  • the starting point is to set the upper left corner of the person standing at (0,0), divide the corresponding coordinates using the width and width, and use the x and y values relative to the width or height. there is.
  • the starting point for normalization can be calculated according to the formula below.
  • the 2D coordinates included in the normalized skeleton points may be converted according to the formula below.
  • the controller 140 detects a change in the user's movement posture based on the skeleton point including the coordinates that have undergone the normalization process described above, but may also detect the change in the user's movement posture through the following process.
  • the controller 140 detects a change in the user's movement posture based on a skeleton point including coordinates that have undergone the above-described normalization process, but the skeleton point used to detect the change in movement posture is based on the coordinates that have undergone the normalization process.
  • Data prior to the time when the included skeleton point is stored may be collected to detect a change in the user's movement posture. For example, if a skeleton point including normalized coordinates is stored at 11:11:11 on November 11, 2022, the skeleton points collected to detect a change in the user's movement posture are at November 11, 2022. It may be data up to 11:11:10 of the day.
  • the shape of the skeleton points collected to detect the change in the user's movement posture can be represented by the following matrix.
  • the user's movement direction may be determined according to the calculation result by substituting the matrices collected over time into the root formula as follows.
  • a negative number is obtained, and a matrix composed of data collected at time t-1 and If the matrix composed of the data collected at time t also has a negative number, it may be determined that the user's movement is in the same direction.
  • a negative number is obtained, and a matrix composed of data collected at time t-1 and If the matrix composed of the data collected at time t also has a positive number, it may be determined that the user's movement is in a different direction.
  • the controller 140 may obtain eigenvectors at each joint by using the collected skeleton points over time. More specifically, a matrix of each joint including the collected skeleton points is calculated as follows and expressed as a covariance matrix, and eigenvectors and eigenvalues may be calculated by calculating the covariance matrix as follows. In this case, the eigenvector may represent the user's movement direction, and the eigenvalue may represent the user's movement magnitude.
  • the controller 140 may detect a change in the user's movement posture by smoothing the eigenvectors obtained at each joint. Meanwhile, smoothing of eigenvectors can be performed by the following formula.
  • t is the time (time point)
  • T is the last time (time point)
  • e t is the prediction error within the sample one step ahead
  • y t may mean the sample.
  • the controller 140 may perform a subsequent process such as calorie calculation, which will be described later.
  • the controller 140 may determine whether the user's movement is in an exercise state by using a preset artificial intelligence technique based on a skeleton point.
  • the preset artificial intelligence technique may be a Long Short Term Memory (LSTM) model.
  • An LSTM (Long Short Term Memory) model may be an artificial intelligence model used for natural language processing. More specifically, LSTM is a model derived from a recurrent neural network (RNN), and may be configured in such a way that an output value of a previous model enters an input value of a next model.
  • RNN recurrent neural network
  • the data input to the LSTM model is a skeleton point collected at regular time intervals, not every time interval, by treating all joint position coordinates from a certain time ago to the current point in time as one instantaneous serial data.
  • the reason why skeleton points are collected at regular time intervals is that, when collected at every time interval, only positional coordinates of joints corresponding to similar postures are included in one instantaneous serial data. Therefore, in order to grasp the movement flow of the user, the skeleton points are collected at regular time intervals, and the positional coordinates of joints corresponding to different postures can be included in one instantaneous serial data.
  • the data input to the LSTM model It is possible to determine whether the user's motion is in an exercise state or not through
  • the accuracy may also be different. Therefore, no matter what device the LSTM model is loaded on, in order to be able to calculate similar accuracy performance, when learning an LSTM model, the number of input values is reduced by a certain offset from the maximum number By inserting the data together and learning by inserting a value of 0 for the remaining insufficient number using zero padding, similar accuracy can be calculated even if various numbers of values are input. According to the embodiment, it is possible to verify whether the motion of the user is in an exercise state by using the LSTM model as described above.
  • the calorie calculation operation described below may be performed.
  • controller 140 may calculate calories according to a change in the user's movement posture based on Equation 1 below.
  • result represents the amount of calories consumed according to the change in the user's movement posture
  • O represents the amount of oxygen consumption
  • represents the amount of oxygen consumption (MET) used by a body weight of 1 kg for 1 minute
  • w is mass
  • gravitational acceleration
  • t can represent time.
  • the oxygen consumption (MET) may be expressed as a value obtained by multiplying the eigen value ( ⁇ ), e, calculated as described above by the skeletal weight (w), which is summed by the total amount of oxygen consumed during movement. It could be.
  • the weight of the skeleton is given by varying specific gravity according to the size of the skeleton, and may be set between 0 and 1 in units of 0.1.
  • g may indicate gravitational acceleration
  • w may indicate a skeletal weight
  • g' may indicate a direction in which a joint moves based on a direction of gravity.
  • the calories calculated as described above may be provided to the user.
  • the calorie calculated as described above may be compared with the calorie calculated by the device that calculates the calorie according to a preset algorithm, and if the comparison result is out of the preset range, it is adjusted according to the more accurately calculated calorie. You can also correct the value.
  • the device that calculates calories according to a preset algorithm may be a smart watch worn by the user, but is not limited thereto, and any device capable of calculating calories may be used. At this time, the smart watch is excellent in accuracy as it calculates calories by considering complex factors such as the number of steps, heart rate, and body age.
  • the value when the calorie calculated as described above is compared with the calorie calculated by the smart watch, if the comparison result is out of a preset range, the value may be corrected with the calorie calculated by the smart watch, and the correction Numerical values may be stored in the memory 130.
  • the calorie calculated according to Equation 1 is 100 kcal and the calorie calculated by the smart watch is 120 kcal, a weight of 1.2 times may be set as a correction value.
  • the correction value is applied to the calorie calculated according to Equation 1 when a similar exercise is performed even if the user later exercises without wearing a smart watch, so that the user can obtain more accurate calorie information. .
  • the correction value according to the above description may also be utilized when correcting calorie information of other users. Therefore, for example, if a 1.2-fold correction value is set for 'squat' and the calories consumed by other users who have performed 'squat' exercise are calculated as 200 kcal according to Equation 1, the control unit 140 finally By applying a correction value of 1.2 to the calories consumed by other users, 240 kcal can be output as calorie information.
  • the change in the user's movement posture is not detected through the difference in inclination and size by comparing the image frames including the user's movement in the order of the front and back arranged according to the time sequence, but extracted It is to detect based on the skeleton point. Accordingly, there is an advantage in that the storage space can be utilized more efficiently by storing only the skeleton points, which are positional information of the joints of the user's body, which have a relatively smaller capacity than the image, and providing a service using the skeleton points.
  • the present invention calculates an eigenvector and determines the direction of the calculated eigenvector, detects a change in the user's movement posture in the user's movement motion, so that the user can exercise (for example, squat or lettuce).
  • the controller 140 calculates a skeleton point for a predetermined exercise and detects a change in movement posture by considering the angle between each joint, but for another predetermined exercise, the embodiment disclosed herein Resources required for operation of the service providing apparatus 100 can be saved by detecting only a change in the movement posture according to the .
  • the controller 140 may create an avatar.
  • the avatar may be a virtual character
  • the controller 140 obtains body information including any one of body shape and height based on the user's skeleton points, and generates an avatar corresponding to the obtained body information.
  • various types of avatars based on body information including a skeleton point may be stored in the memory 130 . For example, if the y1 and y2 coordinates included in the user's skeleton point are 1 and 5, since y represents the measured distance in terms of height, Since body information can be acquired, the controller 130 can select and create an avatar corresponding to the acquired body information from the memory 130 .
  • the controller 140 may select and create an avatar having body information corresponding to the user's skeleton points from the memory 130.
  • the avatar is a virtual character implemented as a graphic image based on a skeleton point, and according to the above, since the avatar is generated to correspond to body information obtained based on the user's skeleton point, the controller ( 140) may control the avatar to correspond to the user's movement based on the skeleton point by applying the user's skeleton point to the avatar.
  • the controller 140 may compare the motion of the avatar generated as described above with the motion of a preset model, and provide a service according to the comparison result.
  • the control unit 140 may compare the motion of the user and the motion of a preset model based on the skeleton points, and provide a service according to the comparison result (eg, a service of providing feedback information related to motions that do not match).
  • the preset model may be a person in the video performing the same motion as the avatar's motion, or a person in the video performing the same motion as the user's motion when the user performs the motion, for example. , If the exercise performed by the avatar or user is yoga, it may be an influencer with a reputation as a yoga expert.
  • the controller 140 corrects the avatar to correspond to a preset model based on body information such as body shape and/or height, and corrects the corrected avatar to match the preset model before comparing the avatar's motion with the preset model's motion. It can be overlaid on a model to compare its behavior. In this case, correcting the avatar to correspond to a preset model may be performed according to a preset body correction algorithm. As described above, the controller 140 may compare the motion of the generated avatar with the motion of the preset model, and if the motion of the avatar does not match the motion of the preset model, a warning sound is sent to inform the user that the motion is incorrect. can be made aware of. Accordingly, the user can further maximize the exercise effect by concentrating more on the motion of the preset model and having the correct exercise posture.
  • the controller 140 compares the motion of the generated avatar with the motion of a preset model, and if the motion of the avatar is inconsistent with the motion of the preset model, the controller 140 stores the inconsistent motion in the memory 130, and then the user When all of the exercise motions of are completed, a feedback service showing correct motions together with inconsistent motions may be provided to the user. Accordingly, the user can further maximize the exercise effect by confirming his/her wrong exercise motion and repeatedly mastering the correct exercise motion corresponding thereto.
  • the motion of the avatar does not match the motion of the preset model, it may be different from the calories calculated when the correct motion is performed. Therefore, when the motion of the avatar is inconsistent with the motion of the preset model, the final calorie according to the motion of the user is calculated using the following equation, so that more accurate calorie can be calculated and correct information can be provided to the user. .
  • FIG. 3 is a flowchart of a service providing method according to an exemplary embodiment.
  • the service providing method according to the embodiment shown in FIG. 3 includes steps processed time-sequentially in the skeleton point based service providing apparatus 100 shown in FIGS. 1 and 2 . Therefore, even if the contents are omitted below, the contents described above with respect to the skeleton point-based service providing apparatus 100 shown in FIGS. 1 and 2 can be applied to the service providing method according to the embodiment shown in FIG. 3 there is.
  • the skeleton point-based service providing apparatus 100 may detect a user's movement operation (S310).
  • the skeleton point-based service providing apparatus 100 may extract, from the user's movement motion detected in step S310, skeleton points, which are positional information of body joints, and store them in a memory (S320).
  • the skeleton point-based service providing apparatus 100 calculates an eigen vector based on the skeleton point, and may detect a change in the user's movement posture from the user's movement motion (S330).
  • ' ⁇ unit' used in the above embodiments means software or a hardware component such as a field programmable gate array (FPGA) or ASIC, and ' ⁇ unit' performs certain roles.
  • ' ⁇ part' is not limited to software or hardware.
  • ' ⁇ bu' may be configured to be in an addressable storage medium and may be configured to reproduce one or more processors. Therefore, as an example, ' ⁇ unit' refers to components such as software components, object-oriented software components, class components, and task components, processes, functions, properties, and procedures. , subroutines, segments of program patent code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays and variables.
  • components and ' ⁇ units' may be implemented to play one or more CPUs in a device or a secure multimedia card.
  • the service providing method may be implemented in the form of a computer-readable medium storing instructions and data executable by a computer.
  • instructions and data may be stored in the form of program codes, and when executed by a processor, a predetermined program module may be generated to perform a predetermined operation.
  • computer-readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media.
  • a computer-readable medium may be a computer recording medium, which is a volatile and non-volatile memory implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. It can include both volatile, removable and non-removable media.
  • the computer recording medium may be a magnetic storage medium such as HDD and SSD, an optical recording medium such as CD, DVD, and Blu-ray disc, or a memory included in a server accessible through a network.
  • the service providing method may be implemented as a computer program (or computer program product) including instructions executable by a computer.
  • a computer program includes programmable machine instructions processed by a processor and may be implemented in a high-level programming language, object-oriented programming language, assembly language, or machine language.
  • the computer program may be recorded on a tangible computer-readable recording medium (eg, a memory, a hard disk, a magnetic/optical medium, or a solid-state drive (SSD)).
  • SSD solid-state drive
  • a computing device may include at least some of a processor, a memory, a storage device, a high-speed interface connected to the memory and a high-speed expansion port, and a low-speed interface connected to a low-speed bus and a storage device.
  • a processor may include at least some of a processor, a memory, a storage device, a high-speed interface connected to the memory and a high-speed expansion port, and a low-speed interface connected to a low-speed bus and a storage device.
  • Each of these components are connected to each other using various buses and may be mounted on a common motherboard or mounted in any other suitable manner.
  • the processor may process commands within the computing device, for example, to display graphic information for providing a GUI (Graphic User Interface) on an external input/output device, such as a display connected to a high-speed interface.
  • GUI Graphic User Interface
  • Examples include instructions stored in memory or storage devices.
  • multiple processors and/or multiple buses may be used along with multiple memories and memory types as appropriate.
  • the processor may be implemented as a chipset comprising chips including a plurality of independent analog and/or digital processors.
  • Memory also stores information within the computing device.
  • the memory may consist of a volatile memory unit or a collection thereof.
  • the memory may be composed of a non-volatile memory unit or a collection thereof.
  • Memory may also be another form of computer readable medium, such as, for example, a magnetic or optical disk.
  • a storage device may provide a large amount of storage space to the computing device.
  • a storage device may be a computer-readable medium or a component that includes such a medium, and may include, for example, devices in a storage area network (SAN) or other components, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, flash memory, or other semiconductor memory device or device array of the like.
  • SAN storage area network

Abstract

Disclosed are a skeleton point-based service providing apparatus and method. The skeleton point-based service providing apparatus comprises: an input/output unit that detects movement of a user; and a control unit that extracts skeleton points that are positional information for the joints of the body from the detected movement of the user, stores the skeleton points in a memory, calculates eigen vectors on the basis of the skeleton points, and detects a postural change from the movement of the user.

Description

스켈레톤 포인트 기반 서비스 제공 장치 및 방법Skeleton point based service providing device and method
본 명세서에서 개시되는 실시예들은 스켈레톤 포인트 기반 서비스 제공 장치 및 방법에 관한 것으로, 더욱 상세하게는, 운동을 수행하는 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공할 수 있는 스켈레톤 포인트 기반 서비스 제공 장치 및 방법에 관한 것이다. Embodiments disclosed in this specification relate to an apparatus and method for providing a service based on skeleton points, and more specifically, to store only skeleton points, which are positional information of joints of a user's body performing an exercise, and to provide services using the skeleton points. It relates to an apparatus and method for providing a service based on a skeleton point that can be provided.
본 출원은 2021년 12월 09일 및 2022년 12월 07일에 기초한 우선권을 주장하며, 해당 출원의 명세서 및 도면에 개시된 모든 내용은 본 출원에 원용된다.This application claims priority based on December 09, 2021 and December 07, 2022, and all contents disclosed in the specification and drawings of the application are incorporated into this application.
근래에 들어, 건강 및 다이어트에 많은 사람들이 관심을 보이고 있다. 이에 따라, 운동에 대한 관심 또한 증가하는 추세이다.In recent years, many people are interested in health and diet. Accordingly, interest in exercise also tends to increase.
하지만, 운동은 꾸준히 하는 것도 중요하지만, 부상의 방지를 위해 운동을 정확한 자세로 수행하는 것이 매우 중요하다.However, it is important to exercise steadily, but it is very important to perform the exercise in the correct posture to prevent injury.
이에 많은 사람들이, 퍼스널 트레이닝(이하, PT)을 통해 운동을 배우고자 하지만, PT는 비용이 많이 들고, 장소의 제약이 발생하는 문제점이 있다. 또한, 다양한 바이러스로 인해 비대면으로 운동을 하려는 사용자가 증가하고 있는 추세이다.Accordingly, many people want to learn exercise through personal training (hereinafter referred to as PT), but PT is expensive and has a problem in that location is limited. In addition, due to various viruses, the number of users who want to exercise non-face-to-face is increasing.
이에 따라, 사용자의 움직임을 촬영한 영상을 분석하고, 분석된 내용에 기초하여 사용자에게 피드백 서비스를 제공하는 기술이 개발되고 있다.Accordingly, a technique for analyzing an image of a user's movement and providing a feedback service to the user based on the analyzed content is being developed.
하지만, 상술된 바와 같은 종래기술은, 분석을 위해 사용되는 영상의 용량이 커서, 이를 저장하기 위한 공간인 서버의 용량이 충분하게 확보되어야 한다는 문제점이 있다. 또한, 사용자의 영상을 그대로 사용하는 경우, 해커에 의한 서버의 해킹으로 인해 해당 영상이 유출되면, 사생활 침해와 같은 문제점이 발생할 수 있다. However, in the prior art as described above, since the capacity of the image used for analysis is large, there is a problem in that the capacity of the server, which is a space for storing it, must be sufficiently secured. In addition, when a user's video is used as it is, if the corresponding video is leaked due to hacking of a server by a hacker, problems such as invasion of privacy may occur.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.On the other hand, the above-mentioned background art is technical information that the inventor possessed for derivation of the present invention or acquired in the process of derivation of the present invention, and cannot necessarily be said to be known art disclosed to the general public prior to filing the present invention. .
(특허문헌 1) 한국등록특허 제10-1989447호(2019.06.14 공고)(Patent Document 1) Korean Patent Registration No. 10-1989447 (Announced on June 14, 2019)
본 명세서에서 개시되는 실시예들은, 운동을 수행하는 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공할 수 있는 스켈레톤 포인트 기반 서비스 제공 장치 및 방법을 제공하는데 그 목적이 있다. Embodiments disclosed in this specification are aimed at providing a skeleton point-based service providing apparatus and method capable of storing only skeleton points, which are positional information of a user's body joint performing an exercise, and providing a service using the stored skeleton points. there is.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 일 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허청구범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.Other objects and advantages of the present invention may be understood from the following description, and will be more clearly understood by an embodiment. It will also be readily apparent that the objects and advantages of the present invention may be realized by means of the instrumentalities and combinations thereof set forth in the claims.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 스켈레톤 포인트 기반 서비스 제공 장치는, 사용자의 움직임 동작을 감지하는 입출력부; 및 상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하고, 상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 제어부;를 포함한다.As a technical means for achieving the above technical problem, an apparatus for providing a skeleton point-based service includes an input/output unit for detecting a user's movement operation; And from the detected movement of the user, a skeleton point, which is position information of body joints, is extracted and stored in a memory, and an eigen vector is calculated based on the skeleton point, so that in the movement of the user, the user It includes; a control unit for detecting a change in the movement posture of the.
다른 실시예에 따르면, 스켈레톤 포인트 기반 서비스 제공 장치가 수행하는 서비스 제공 방법은, 사용자의 움직임 동작을 감지하는 단계; 상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하는 단계; 및 상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 단계;를 포함한다. According to another embodiment, a service providing method performed by a skeleton point based service providing apparatus may include detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
또 다른 실시예에 따르면, 기록매체는, 서비스 제공 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체이다. 상기 스켈레톤 포인트 기반 서비스 제공 장치가 수행하는 서비스 제공 방법은, 사용자의 움직임 동작을 감지하는 단계; 상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하는 단계; 및 상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 단계;를 포함한다.According to another embodiment, the recording medium is a computer readable recording medium on which a program for performing a service providing method is recorded. The service providing method performed by the skeleton point based service providing apparatus may include: detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
또 다른 실시예에 따르면, 컴퓨터 프로그램은, 스켈레톤 포인트 기반 서비스 제공 장치에 의해 수행되며, 서비스 제공 방법을 수행하기 위해 기록 매체에 저장된 컴퓨터 프로그램이다. 상기 스켈레톤 포인트 기반 서비스 제공 장치가 수행하는 서비스 제공 방법은, 사용자의 움직임 동작을 감지하는 단계; 상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하는 단계; 및 상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 단계;를 포함한다.According to another embodiment, the computer program is a computer program that is executed by a skeleton point-based service providing device and stored in a recording medium to perform a service providing method. The service providing method performed by the skeleton point based service providing apparatus may include: detecting a motion of a user; extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and calculating an eigen vector based on the skeleton point, and detecting a change in the user's movement posture in the movement motion of the user.
전술한 과제 해결 수단 중 어느 하나에 의하면, 사용자의 움직임 분석을 위해 용량이 큰 움직임 영상을 저장하고 이를 활용하는 것이 아니라, 영상 보다 상대적으로 용량이 작은 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공하기 때문에, 저장 공간을 보다 효율적으로 활용할 수 있는 장점이 있다. According to any one of the above-described problem solving means, rather than storing and utilizing a large-capacity motion image for analyzing a user's motion, only a skeleton point, which is positional information of a user's body joint with a relatively small capacity than an image, is stored. Since the service is provided by using the storage space, there is an advantage in that the storage space can be used more efficiently.
또한, 전술한 과제 해결 수단 중 어느 하나에 의하면, 사용자의 움직임 분석을 위해 사용자의 얼굴이 포함된 영상을 저장하고 이를 활용하는 것이 아니라, 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공하기 때문에, 해커에 의해 저장 공간인 서버가 해킹되더라도, 사용자의 사생활이 침해되지 않고 보호될 수 있다는 효과가 있다. In addition, according to any one of the above-described problem solving means, instead of storing and using an image including the user's face for analyzing the user's motion, only skeleton points, which are position information of the user's body joints, are stored, and this is Since the service is provided by utilizing the storage space, there is an effect that even if the server, which is a storage space, is hacked by a hacker, the privacy of the user can be protected without being violated.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.Effects obtainable from the disclosed embodiments are not limited to those mentioned above, and other effects not mentioned are clear to those skilled in the art from the description below to which the disclosed embodiments belong. will be understandable.
이하, 첨부되는 도면들은 본 명세서에 개시되는 바람직한 실시예를 예시하는 것이며, 발명을 실시하기 위한 구체적인 내용들과 함께 본 명세서에 개시되는 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 명세서에 개시되는 내용은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.Hereinafter, the accompanying drawings illustrate preferred embodiments disclosed in this specification, and serve to further understand the technical idea disclosed in this specification together with specific details for carrying out the invention. The contents should not be construed as limited only to the matters described in such drawings.
도 1은 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치의 기능 블록도이다. 1 is a functional block diagram of a skeleton point based service providing apparatus according to an embodiment.
도 2는 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치를 설명하기 위한 예시도이다. 2 is an exemplary diagram for explaining an apparatus for providing a service based on a skeleton point according to an exemplary embodiment.
도 3은 일 실시예에 따른 서비스 제공 방법의 순서도이다. 3 is a flowchart of a service providing method according to an exemplary embodiment.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings. Embodiments described below may be modified and implemented in various different forms. In order to more clearly describe the characteristics of the embodiments, detailed descriptions of matters widely known to those skilled in the art to which the following embodiments belong are omitted. And, in the drawings, parts irrelevant to the description of the embodiments are omitted, and similar reference numerals are attached to similar parts throughout the specification.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.Throughout the specification, when a component is said to be “connected” to another component, this includes not only the case of being “directly connected” but also the case of being “connected with another component intervening therebetween”. In addition, when a certain component "includes" a certain component, this means that other components may be further included without excluding other components unless otherwise specified.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.
도 1은 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치의 기능 블록도, 도 2는 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치를 설명하기 위한 예시도이다. 1 is a functional block diagram of an apparatus for providing a service based on a skeleton point according to an embodiment, and FIG. 2 is an exemplary view illustrating an apparatus for providing a service based on a skeleton point according to an embodiment.
본 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치(100)는 사용자와 인터랙션할 수 있는 애플리케이션이 설치된 전자단말기로 구현되거나 서버로 구현되거나 또는 서버-클라이언트 시스템으로 구현될 수 있으며, 서버-클라이언트 시스템으로 구현되는 경우 사용자와의 인터랙션을 위한 온라인 서비스용 애플리케이션이 설치된 전자단말기를 포함할 수 있다. The skeleton point-based service providing apparatus 100 according to the present embodiment may be implemented as an electronic terminal in which an application capable of interacting with a user is installed, may be implemented as a server, or may be implemented as a server-client system, and may be implemented as a server-client system. If it is, it may include an electronic terminal in which an application for an online service for interaction with a user is installed.
이때 전자단말기는 네트워크를 통해 원격지의 서버에 접속하거나, 타 디바이스 및 서버와 연결 가능한 컴퓨터나 휴대용 단말기, 텔레비전, 웨어러블 디바이스(Wearable Device) 등으로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop)등을 포함하고, 휴대용 단말기는 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, PCS(Personal Communication System), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), GSM(Global System for Mobile communications), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet), 스마트폰(Smart Phone), 모바일 WiMAX(Mobile Worldwide Interoperability for Microwave Access) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다. 또한, 텔레비전은 IPTV(Internet Protocol Television), 인터넷 TV(Internet Television), 지상파 TV, 케이블 TV 등을 포함할 수 있다. 나아가 웨어러블 디바이스는 예를 들어, 시계, 안경, 액세서리, 의복, 신발 등 인체에 직접 착용 가능한 타입의 정보처리장치로서, 직접 또는 다른 정보처리장치를 통해 네트워크를 경유하여 원격지의 서버에 접속하거나 타 디바이스와 연결될 수 있다.At this time, the electronic terminal may be implemented as a computer, portable terminal, television, wearable device, etc. capable of accessing a remote server through a network or connecting to other devices and servers. Here, the computer includes, for example, a laptop, desktop, or laptop equipped with a web browser, and the portable terminal is, for example, a wireless communication device that ensures portability and mobility. , PCS(Personal Communication System), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), GSM(Global System for Mobile communications), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA (W-Code Division Multiple Access), Wibro (Wireless Broadband Internet), Smart Phone, Mobile WiMAX (Mobile Worldwide Interoperability for Microwave Access), etc. (Handheld)-based wireless communication device may be included. In addition, television may include IPTV (Internet Protocol Television), Internet TV (Internet Television), terrestrial TV, cable TV, and the like. Furthermore, a wearable device is a type of information processing device that can be worn directly on the human body, such as, for example, a watch, glasses, accessories, clothes, shoes, etc. can be connected with
그리고 서버는 스켈레톤 포인트 기반 서비스 제공 장치(100)의 사용자와의 인터랙션을 위한 애플리케이션이나 웹브라우저가 설치된 전자단말기와 네트워크를 통해 통신이 가능한 컴퓨터로 구현되거나 클라우드 컴퓨팅 서버로 구현될 수 있다. 또한, 서버는 데이터를 저장할 수 있는 저장장치를 포함하거나 제 3의 서버를 통해 데이터를 저장할 수 있다.In addition, the server may be implemented as a computer capable of communicating over a network with an electronic terminal having an application for interaction with a user of the skeleton point-based service providing device 100 or a web browser, or may be implemented as a cloud computing server. In addition, the server may include a storage device capable of storing data or may store data through a third server.
상술된 바와 같이 스켈레톤 포인트 기반 서비스 제공 장치(100)는 전자단말기, 서버 또는 서버-클라이언트 시스템 중 어느 하나의 형태로 구현될 수 있으며, 서버로 구현될 경우, 스켈레톤 포인트 기반 서비스 제공 장치(100)를 구성하는 구성부는 물리적으로 분리된 복수의 서버에서 수행되거나 하나의 서버에서 수행될 수 있다.As described above, the skeleton point-based service providing device 100 may be implemented in any one form of an electronic terminal, a server, or a server-client system, and when implemented as a server, the skeleton point-based service providing device 100 The constituting unit may be performed on a plurality of physically separated servers or on one server.
도 1을 참조하면, 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치(100)는 입출력부(110), 통신부(120), 메모리(130) 및 제어부(140)를 포함한다. Referring to FIG. 1 , an apparatus 100 for providing a service based on a skeleton point according to an embodiment includes an input/output unit 110, a communication unit 120, a memory 130, and a control unit 140.
입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와 작업의 수행결과 또는 스켈레톤 포인트 기반 서비스 제공 장치(100)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다. 일 실시예에 따르면, 입출력부(110)는 사용자의 움직임 동작을 감지할 수 있다. 예를 들어, 입출력부(100)는 사용자의 움직임 동작을 촬영할 수 있는 모션 카메라일 수 있으며, 이를 통해 사용자의 움직임 동작을 촬영하고 감지할 수 있다.The input/output unit 110 may include an input unit for receiving an input from a user and an output unit for displaying information such as a result of performing a task or a state of the skeleton point based service providing apparatus 100 . For example, the input/output unit 110 may include an operation panel for receiving a user input and a display panel for displaying a screen. According to an embodiment, the input/output unit 110 may detect a user's motion. For example, the input/output unit 100 may be a motion camera capable of photographing a user's movement and action, and through this, the user's movement and action may be photographed and sensed.
구체적으로 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(110)는 다양한 입출력을 지원하는 구성을 포함할 수 있다.Specifically, the input unit may include devices capable of receiving various types of inputs, such as a keyboard, a physical button, a touch screen, a camera, or a microphone. Also, the output unit may include a display panel or a speaker. However, the input/output unit 110 is not limited thereto and may include a configuration supporting various input/outputs.
통신부(120)는 다른 디바이스(장치) 및/또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(120)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예컨대, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다. The communication unit 120 may perform wired/wireless communication with other devices (devices) and/or networks. To this end, the communication unit 120 may include a communication module supporting at least one of various wired/wireless communication methods. For example, the communication module may be implemented in the form of a chipset.
한편, 통신부(120)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), 저전력블루투스(BLE; Bluetooth Low Energy), UWB(Ultra Wide Band), NFC(Near Field Communication), LTE, LTE-Advanced 등의 무선 이동통신 등일 수 있다. 또한, 통신부(120)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.Meanwhile, wireless communication supported by the communication unit 120 includes, for example, Wi-Fi (Wireless Fidelity), Wi-Fi Direct, Bluetooth, Bluetooth Low Energy (BLE), and Ultra Wide Band (UWB). , Near Field Communication (NFC), LTE, LTE-Advanced, and the like. In addition, wired communication supported by the communication unit 120 may be, for example, USB or High Definition Multimedia Interface (HDMI).
메모리(130)는 파일, 애플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터를 설치 및 저장할 수 있으며, RAM, HDD 및 SSD 등과 같이 다양한 종류의 메모리 중 적어도 하나를 포함하도록 구성될 수 있다. 후술하는 제어부(140)는 메모리(130)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(130)에 저장할 수도 있다. 또한, 제어부(140)는 메모리(130)에 설치된 프로그램을 실행할 수도 있다. 한편, 메모리(130)에는 일 실시예에 따른 서비스 제공 방법을 수행하기 위한 프로그램이 설치될 수 있다. 일 실시예에 따르면, 메모리(130)는 후술하는 제어부(140)에 의해 추출된, 스켈레톤 포인트를 저장할 수 있다. 이때, 스켈레톤 포인트는, 신체 관절의 위치 정보를 의미할 수 있다. 이때, 제어부(140)는 입출력부(100)가 감지한 사용자의 움직임 동작으로부터 골격을 기반으로 관절과 뼈로 구성되는 스켈레톤 포인트를 추출할 수 있다. 예를 들어, 스켈레톤 포인트는 목, 오른쪽 어깨, 오른쪽 팔꿈치, 오른쪽 손목, 왼쪽 어깨, 왼쪽 팔꿈치, 왼쪽 손목, 오른쪽 엉덩이, 오른쪽 무릎, 오른쪽 발목, 왼쪽 엉덩이, 왼쪽 무릎, 왼쪽 발목 등과 같은 관절의 위치 정보를 포함할 수 있으며, 2 차원 또는 3 차원 좌표 정보로 표시될 수 있다. 일 실시예에 따르면, 사용자의 움직임 동작은 핸드폰 등과 같은 휴대 단말기로 촬영되기 때문에 2 차원의 영상 프레임에 포함된 정보일 수 있다. 따라서, 일 실시예에 따른 스켈레톤 포인트는, 2 차원 좌표 정보로 표시되는 것이 바람직하다. 따라서, 일 실시예에 따른 본원발명은, 2 차원 좌표 정보로 표시된 스켈레톤 포인트를 기초로, 고유 벡터를 계산하여 방향성을 추정할 수 있으며, 이와 관련한 보다 상세한 설명은 후술하기로 한다. 한편, 일 실시예에 따른 스켈레톤 포인트는, 시간 별로 저장될 수 있다. 즉, 사용자의 동작은 시계열적 특성에 기초하여 변화되기 때문에, 상술된 바와 같이 스켈레톤 포인트를 시간 별로 저장함에 따라, 사용자의 움직임 동작을 보다 자세하게 검출할 수 있다. The memory 130 may install and store various types of data such as files, applications, and programs, and may include at least one of various types of memories such as RAM, HDD, and SSD. The controller 140 to be described later may access and use data stored in the memory 130 or may store new data in the memory 130 . Also, the controller 140 may execute a program installed in the memory 130 . Meanwhile, a program for performing a service providing method according to an embodiment may be installed in the memory 130 . According to an embodiment, the memory 130 may store the skeleton points extracted by the controller 140 to be described later. In this case, the skeleton point may mean location information of body joints. In this case, the control unit 140 may extract a skeleton point composed of joints and bones based on the skeleton from the motion of the user detected by the input/output unit 100 . For example, a skeleton point is location information of joints such as the neck, right shoulder, right elbow, right wrist, left shoulder, left elbow, left wrist, right hip, right knee, right ankle, left hip, left knee, left ankle, etc. It may include, and may be displayed as 2D or 3D coordinate information. According to an embodiment, since a user's motion is captured by a portable terminal such as a mobile phone, it may be information included in a 2D image frame. Therefore, the skeleton point according to an embodiment is preferably displayed as 2D coordinate information. Accordingly, the present invention according to an embodiment may estimate a directionality by calculating an eigenvector based on a skeleton point indicated by 2D coordinate information, and a more detailed description regarding this will be described later. Meanwhile, the skeleton points according to an embodiment may be stored for each time. That is, since the motion of the user changes based on time-series characteristics, the motion motion of the user can be detected in more detail by storing the skeleton points by time as described above.
제어부(140)는 CPU, GPU, 아두이노 등과 같은 적어도 하나의 프로세서를 포함하는 구성으로, 스켈레톤 포인트 기반 서비스 제공 장치(100)의 전체적인 동작을 제어할 수 있다. 즉, 제어부(140)는 서비스 제공을 위한 동작을 수행하도록 스켈레톤 포인트 기반 서비스 제공 장치(100)에 포함된 다른 구성들을 제어할 수 있다. 또한, 제어부(140)는 메모리(130)에 저장된 프로그램을 실행하거나, 메모리(130)에 저장된 파일을 읽어오거나 또는 새로운 파일을 메모리(130)에 저장할 수도 있다. The control unit 140 has a configuration including at least one processor such as a CPU, GPU, Arduino, and the like, and may control the overall operation of the skeleton point based service providing apparatus 100 . That is, the control unit 140 may control other elements included in the skeleton point-based service providing apparatus 100 to perform an operation for providing a service. Also, the controller 140 may execute a program stored in the memory 130, read a file stored in the memory 130, or store a new file in the memory 130.
실시예에 따르면, 제어부(140)는 입출력부(120)를 통해 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하고, 이를 메모리(130)에 저장할 수 있다. 보다 구체적으로, 제어부(140)는 사용자의 움직임 동작에서 사용자의 골격을 인식하고, 골격을 기반으로 관절과 뼈를 추출한 후, 추출된 정보에서 관절에 대한 공간상의 좌표값을 추출함으로써, 스켈레톤 포인트를 추출할 수 있다. 이때, 스켈레톤 포인트는 2 차원 좌표 정보일 수 있으며, 예를 들어, (x, y) 값으로 표시될 수 있다. 이때, 2차원 좌표 정보를 포함하는 스켈레톤 포인트는, 사용자의 동작이 포함된 하나의 영상 프레임에서 일 지점(예를 들어, 프레임의 좌측 상단 꼭지점을 (0, 0)이라 하였을 경우의 지점)을 기준으로 하여 x 축 값 및 y 축 값이 추출될 수 있다. 또한, 스켈레톤 포인트는 3 차원 좌표 정보일 수 있으며, 예를 들어, (x, y, z)값으로 표시될 수 있다. 이때, 사용자의 움직임 동작에서 스켈레톤 포인트를 추출하는 것은, 미리 학습된 인공지능 모델을 통해 수행될 수 있다. 예를 들어, 스켈레톤 포인트를 추출하는 미리 학습된 인공지능 모델은, 오픈포즈(OpenPose) 기반의 알고리즘을 사용한 것일 수 있다. 오픈포즈(OpenPose) 기반의 알고리즘을 사용한 인공지능 모델은, 사용자가 감지된 영상에서 사람을 인식하고, 인식된 사람이 동작함에 따라 스켈레톤 포인트를 추출할 수 있다. 이때, 오픈포즈(OpenPose) 기반의 알고리즘은 멀티 GPU 기반 딥러닝을 사용하여 움직이는 사용자의 자세를 실시간으로 감지하고, 사용자의 움직임을 분석하는 공지된 관절 검출 인공지능 알고리즘일 수 있다. 이때, 검출되는 관절은 목, 오른쪽 어깨, 오른쪽 팔꿈치, 오른쪽 손목, 왼쪽 어깨, 왼쪽 팔꿈치, 왼쪽 손목, 오른쪽 엉덩이, 오른쪽 무릎, 오른쪽 발목, 왼쪽 엉덩이, 왼쪽 무릎, 왼쪽 발목 등일 수 있으며, 검출된 관절에 대한 2 차원 또는 3 차원의 좌표 정보를 포함하는 관절의 위치 정보가 스켈레톤 포인트로 추출될 수 있다.According to the embodiment, the control unit 140 may extract a skeleton point, which is position information of body joints, from the user's motion detected through the input/output unit 120 and store it in the memory 130 . More specifically, the controller 140 recognizes the user's skeleton from the user's motion, extracts joints and bones based on the skeleton, and then extracts spatial coordinate values for the joints from the extracted information, thereby obtaining a skeleton point. can be extracted. In this case, the skeleton point may be two-dimensional coordinate information, and may be displayed as (x, y) values, for example. At this time, the skeleton point including the 2D coordinate information is based on a point in one image frame including the user's motion (eg, a point when the upper left corner of the frame is set to (0, 0)) As a result, the x-axis value and the y-axis value can be extracted. Also, the skeleton point may be 3D coordinate information, and may be displayed as (x, y, z) values, for example. In this case, the extraction of the skeleton point from the user's motion may be performed through a pre-learned artificial intelligence model. For example, a pretrained artificial intelligence model for extracting a skeleton point may use an OpenPose-based algorithm. An artificial intelligence model using an OpenPose-based algorithm can recognize a person from a user-detected image and extract a skeleton point as the recognized person moves. In this case, the OpenPose-based algorithm may be a known joint detection artificial intelligence algorithm that detects a moving user's posture in real time using multi-GPU-based deep learning and analyzes the user's movement. In this case, the detected joint may be the neck, right shoulder, right elbow, right wrist, left shoulder, left elbow, left wrist, right hip, right knee, right ankle, left hip, left knee, left ankle, etc. Joint position information including 2-dimensional or 3-dimensional coordinate information for may be extracted as a skeleton point.
제어부(140)는 메모리(130)에 저장된 스켈레톤 포인트를 기초로, 미리 설정된 고유 벡터(Eigen vector)를 이용해, 사용자의 움직임 동작에서 사용자의 움직임 자세 변화를 감지할 수 있다. 이때, 사용자의 움직임 자세 변화는 예를 들어, 사용자의 움직임이 상향 또는 하향인지, 움직임 자세 변화가 큰 동작을 의미하는지 또는 작은 동작을 의미하는지 등을 나타내는 것일 수 있다. 이때, 고유 벡터(Eigen vector)는 수집된 데이터 좌표들이 좌표 평면상에서 어느 방향을 이루고 있는지를 구할 수 있는 고유 값일 수 있다. 이에 따라, 제어부(140)는 스켈레톤 포인트에서 미리 설정된 고유 벡터(Eigen vector)를 이용하여 사용자의 움직임 동작을 감지하게 되면, 사용자의 움직임 자세 변화를 감지할 수 있다. 한편, 상술된 바에 따른 스켈레톤 포인트에 포함된 좌표는, 물리적 거리가 아닌 사용자의 움직임을 포함하는 프레임 안의 픽셀 좌표이기 때문에 정규화 과정이 필요할 수 있으며, 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트를 기초로 사용자의 움직임 자세 변화를 감지할 수 있다. 즉, 정규화 과정은, 예를 들어, 카메라에 가까이 서있는 사람이 운동을 하는 것과 카메라에서 멀리 서있는 사람이 운동하는 것은, 실제로는 움직임의 크기와 방향은 같을 지라도, 고유 벡터를 이용해서 사용자의 움직임 자세 변화를 산출하는 경우, 카메라에서 가까이 서있는 사람의 좌표 변화가 훨씬 크게 산출됨에 따라, 사용자의 움직임의 크기를 일정하게 만들기 위해 필요한 것이다. 즉, 정규화는 사용자를 촬영한 카메라의 원근과 상관없이 사용자의 움직임 자세 변화를 비슷하게 산출하기 위해 정규화 과정을 수행할 수 있다.Based on the skeleton points stored in the memory 130, the controller 140 may detect a change in the user's movement posture from the user's movement using a preset eigen vector. In this case, the user's movement posture change may indicate, for example, whether the user's movement is upward or downward, and whether the movement posture change means a large motion or a small motion. In this case, the eigen vector may be an eigen value capable of obtaining a direction in which the collected data coordinates form on the coordinate plane. Accordingly, when the controller 140 detects the user's motion using a preset eigen vector at the skeleton point, it can detect a change in the user's motion posture. On the other hand, since the coordinates included in the above-described skeleton points are not physical distances but pixel coordinates in a frame including the user's movement, a normalization process may be required. Based on the skeleton points including the normalized coordinates, A change in the user's movement posture may be detected. That is, in the normalization process, for example, when a person standing close to the camera exercises and a person standing far from the camera exercises, even though the size and direction of the motion are actually the same, the user's movement posture is determined using the eigenvector. In the case of calculating the change, it is necessary to make the size of the user's movement constant, as the change in coordinates of a person standing close to the camera is calculated much larger. That is, the normalization process may be performed to similarly calculate the change in the user's movement posture regardless of the perspective of the camera that has photographed the user.
이때, 상술된 정규화 과정은 다음과 같을 수 있다.At this time, the above-described normalization process may be as follows.
· 사용자가 서있는 기준으로 왼쪽 상단을 (0,0)으로 설정하고, 좌표의 x 및 y의 시작점을 바꾸어 정규화한다. 즉, 움직임 동작을 수행하는 사용자가 포함된 영상 프레임의 왼쪽 상단 좌표(도 2의 A)를 (0,0)으로 설정할 수 있는데, 이를 사용자가 서있는 기준으로 왼쪽 상단의 좌표(도 2의 B)를 (0,0)으로 설정하고 좌표의 x 및 y의 시작점을 바꾸어 정규화할 수 있다. 한편, 시작점은, 사람이 서있는 기준 왼쪽 상단을 (0,0)으로 설정하고, 폭과 너비를 이용해 해당 좌표를 나누어 너비 또는 높이 대비 x 값과 y 값이라 몇 퍼센트 비율로 차지하는지 치환 후 사용할 수 있다. 이때, 정규화를 위한 시작점은 아래의 공식에 따라 산출될 수 있다.Set the upper left corner to (0,0) based on where the user is standing, and normalize it by changing the starting points of x and y coordinates. That is, the upper left coordinates (A in FIG. 2) of the image frame including the user performing the motion operation can be set to (0,0), which is the coordinates of the upper left corner (B in FIG. 2) based on the user standing. It can be normalized by setting to (0,0) and changing the starting point of x and y coordinates. On the other hand, the starting point is to set the upper left corner of the person standing at (0,0), divide the corresponding coordinates using the width and width, and use the x and y values relative to the width or height. there is. At this time, the starting point for normalization can be calculated according to the formula below.
· x 좌표의 시작점 : (힙 정중앙)-(어깨 너비 / 2)· Starting point of x coordinate: (center of hip) - (shoulder width / 2)
· y 좌표의 시작점 : (힙 정중앙)-(어깨 너비)· Starting point of y-coordinate: (center of hip) - (shoulder width)
· 너비 : 어깨 너비Width: shoulder width
· 높이 : 어깨 너비 * 2· Height: shoulder width * 2
한편, 상술된 바에 따라 산출된 좌표의 시작점을 기초로, 정규화된 스켈레톤 포인트에 포함된 2 차원 좌표는 아래의 공식에 따라 변환될 수 있다. Meanwhile, based on the starting point of the coordinates calculated as described above, the 2D coordinates included in the normalized skeleton points may be converted according to the formula below.
· x ⇒ (최초의 x 좌표 - x 좌표 시작점) / 너비 * 100x ⇒ (initial x coordinate - x coordinate starting point) / width * 100
· y ⇒ (최초의 y 좌표 - y 좌표 시작점) / 너비 * 100y ⇒ (initial y coordinate - y coordinate starting point) / width * 100
한편, 제어부(140)는 상술된 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트를 기초로 사용자의 움직임 자세 변화를 감지하되, 아래와 같은 과정을 거쳐 사용자의 움직임 자세 변화를 감지할 수도 있다. Meanwhile, the controller 140 detects a change in the user's movement posture based on the skeleton point including the coordinates that have undergone the normalization process described above, but may also detect the change in the user's movement posture through the following process.
먼저, 제어부(140)는 상술된 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트를 기초로 사용자의 움직임 자세 변화를 감지하되, 움직임 자세 변화를 감지하기 위해 사용되는 스켈레톤 포인트는, 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트가 저장된 시간 이전까지의 데이터가, 사용자의 움직임 자세 변화를 감지하기 위한 것으로 수집될 수 있다. 예를 들어, 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트가 2022년 11월 11일 11시 11분 11초에 저장된 것이라면, 사용자의 움직임 자세 변화를 감지하기 위해 수집되는 스켈레톤 포인트는 2022년 11월 11일 11시 11분 10초까지의 데이터일 수 있다. 이때, 사용자의 움직임 자세 변화를 감지하기 위해 수집된 스켈레톤 포인트의 형태는 다음과 행렬로 나타낼 수 있다. First, the controller 140 detects a change in the user's movement posture based on a skeleton point including coordinates that have undergone the above-described normalization process, but the skeleton point used to detect the change in movement posture is based on the coordinates that have undergone the normalization process. Data prior to the time when the included skeleton point is stored may be collected to detect a change in the user's movement posture. For example, if a skeleton point including normalized coordinates is stored at 11:11:11 on November 11, 2022, the skeleton points collected to detect a change in the user's movement posture are at November 11, 2022. It may be data up to 11:11:10 of the day. At this time, the shape of the skeleton points collected to detect the change in the user's movement posture can be represented by the following matrix.
Figure PCTKR2022019868-appb-img-000001
Figure PCTKR2022019868-appb-img-000001
한편, 이와 같은 행렬을 근의 공식에 대입하면 양과 음의 두 가지 방향이 나타날 수 있다. 이때, 시간에 따라 수집된 행렬들을 아래와 같은 근의 공식에 대입하여 계산한 결과에 따라 사용자의 움직임 방향이 결정될 수 있다.On the other hand, if such a matrix is substituted into the root formula, two directions, positive and negative, may appear. At this time, the user's movement direction may be determined according to the calculation result by substituting the matrices collected over time into the root formula as follows.
[수집된 행렬들을 근의 공식에 대입한 식][Equation by substituting the collected matrices into the root formula]
Figure PCTKR2022019868-appb-img-000002
Figure PCTKR2022019868-appb-img-000002
예를 들어, t-2 시간에 수집된 데이터로 구성된 행렬과 t-1 시간에 수집된 데이터로 구성된 행렬을 근의 공식에 대입하여 음수가 나오고, t-1 시간에 수집된 데이터로 구성된 행렬과 t 시간에 수집된 데이터로 구성된 행렬도 음수가 나온 경우, 사용자의 움직임은 같은 방향인 것으로 결정될 수 있다. 반면, 즉, t-2 시간에 수집된 데이터로 구성된 행렬과 t-1 시간에 수집된 데이터로 구성된 행렬을 근의 공식에 대입하여 음수가 나오고, t-1 시간에 수집된 데이터로 구성된 행렬과 t 시간에 수집된 데이터로 구성된 행렬도 양수가 나온 경우, 사용자의 움직임은 다른 방향인 것으로 결정될 수 있다. For example, by substituting a matrix composed of data collected at time t-2 and a matrix composed of data collected at time t-1 into the root formula, a negative number is obtained, and a matrix composed of data collected at time t-1 and If the matrix composed of the data collected at time t also has a negative number, it may be determined that the user's movement is in the same direction. On the other hand, that is, by substituting a matrix composed of data collected at time t-2 and a matrix composed of data collected at time t-1 into the root formula, a negative number is obtained, and a matrix composed of data collected at time t-1 and If the matrix composed of the data collected at time t also has a positive number, it may be determined that the user's movement is in a different direction.
이후, 제어부(140)는 수집된 시간 상의 스켈레톤 포인트를 이용하여, 각 관절에서의 고유 벡터를 획득할 수 있다. 보다 구체적으로, 수집된 스켈레톤 포인트를 포함하는 각 관절의 행렬을 아래와 같이 계산하여 공분산 행렬로 나타내고, 아래와 같이 공분산 행렬을 계산하여 고유 벡터 및 고유 값을 산출할 수 있다. 이때, 고유 벡터는 사용자의 움직임 방향을 나타내고, 고유 값은 사용자의 움직임 크기를 나타낼 수 있다. Thereafter, the controller 140 may obtain eigenvectors at each joint by using the collected skeleton points over time. More specifically, a matrix of each joint including the collected skeleton points is calculated as follows and expressed as a covariance matrix, and eigenvectors and eigenvalues may be calculated by calculating the covariance matrix as follows. In this case, the eigenvector may represent the user's movement direction, and the eigenvalue may represent the user's movement magnitude.
[공분산 행렬 계산식][Covariance matrix formula]
Figure PCTKR2022019868-appb-img-000003
Figure PCTKR2022019868-appb-img-000003
[고유 벡터 및 고유 값(λ) 산출 계산식][Calculation formula for calculating eigenvectors and eigenvalues (λ)]
Figure PCTKR2022019868-appb-img-000004
Figure PCTKR2022019868-appb-img-000004
이후, 제어부(140)는 각 관절에서 획득된 고유 벡터를 평활화하여 사용자의 움직임 자세 변화를 감지할 수 있다. 한편, 고유 벡터의 평활화는 아래의 계산식에 의해 수행될 수 있다.Thereafter, the controller 140 may detect a change in the user's movement posture by smoothing the eigenvectors obtained at each joint. Meanwhile, smoothing of eigenvectors can be performed by the following formula.
[고유 벡터의 평활화 계산식][Eigenvector smoothing formula]
Figure PCTKR2022019868-appb-img-000005
Figure PCTKR2022019868-appb-img-000005
여기서, t는 시간(시점), T는 최종 시간(시점), et는 한 단계 앞 표본 내 예측 오차 그리고, yt는 표본을 의미할 수 있다. Here, t is the time (time point), T is the last time (time point), e t is the prediction error within the sample one step ahead, and y t may mean the sample.
이처럼, 사용자의 움직임 자세 변화를 감지하면, 제어부(140)는 후술되는 칼로리 산출 등의 후속되는 프로세스를 수행할 수도 있다. As such, upon detecting a change in the user's movement posture, the controller 140 may perform a subsequent process such as calorie calculation, which will be described later.
한편, 제어부(140)는 스켈레톤 포인트를 기초로 미리 설정된 인공지능 기법을 이용하여, 사용자의 움직임이 운동 상태인지 여부를 판단할 수 있다. 이때, 미리 설정된 인공지능 기법은 LSTM(Long Short Term Memory) 모델이 수 있다. LSTM(Long Short Term Memory) 모델은 자연어 처리에 사용되는 인공지능 모델일 수 있다. 보다 구체적으로, LSTM은 RNN(Recurrent neural network)에서 파생된 형태의 모델로, 전 모델에서의 출력(output) 값이, 다음 모델의 입력(input) 값으로 들어가는 형태로 구성될 수 있다. 이때, LSTM 모델에 입력(input)되는 데이터는, 일정 시간 이전부터 현재 시점까지의 관절의 위치 좌표 전체를 하나의 순간 시리얼 데이터로 취급하여, 매 시간 간격이 아닌 일정 시간 간격으로 수집된 스켈레톤 포인트일 수 있다. 상술된 바와 같이, 스켈레톤 포인트를 수집함에 있어서, 일정 시간 간격으로 수행하는 이유는, 매 시간 간격으로 수집하는 경우, 비슷한 자세에 대응되는 관절의 위치 좌표만 하나의 순간 시리얼 데이터에 포함되기 때문이다. 따라서, 사용자의 움직임 흐름을 파악하기 위해서, 일정 시간 간격으로 스켈레톤 포인트를 수집하여, 서로 다른 자세에 대응되는 관절의 위치 좌표가 하나의 순간 시리얼 데이터에 포함될 수 있음에 따라, LSTM 모델에 입력되는 데이터를 통해 사용자의 움직임이 운동 상태인지 아닌지 여부를 판단할 수 있다.Meanwhile, the controller 140 may determine whether the user's movement is in an exercise state by using a preset artificial intelligence technique based on a skeleton point. At this time, the preset artificial intelligence technique may be a Long Short Term Memory (LSTM) model. An LSTM (Long Short Term Memory) model may be an artificial intelligence model used for natural language processing. More specifically, LSTM is a model derived from a recurrent neural network (RNN), and may be configured in such a way that an output value of a previous model enters an input value of a next model. At this time, the data input to the LSTM model is a skeleton point collected at regular time intervals, not every time interval, by treating all joint position coordinates from a certain time ago to the current point in time as one instantaneous serial data. can As described above, the reason why skeleton points are collected at regular time intervals is that, when collected at every time interval, only positional coordinates of joints corresponding to similar postures are included in one instantaneous serial data. Therefore, in order to grasp the movement flow of the user, the skeleton points are collected at regular time intervals, and the positional coordinates of joints corresponding to different postures can be included in one instantaneous serial data. Thus, the data input to the LSTM model It is possible to determine whether the user's motion is in an exercise state or not through
한편, 상술된 LSTM 모델의 학습 시, LSTM 모델이 탑재된 장치의 성능이 상이함에 따라, 그 정확도도 또한 상이해질 수 있다. 따라서, LSTM 모델이 어느 장치에 탑재되더라도, 정확도의 성능이 비슷하게 산출될 수 있도록 하기 위해, LSTM 모델을 학습하는 경우, 입력(input) 값의 개수를 최대 개수에서 일정 오프셋(offset) 만큼은, 적게 하는 데이터도 같이 넣고, 나머지 부족한 개수는 제로 패딩(zero padding)을 이용해서 0 값을 넣어 학습시킴으로써, 다양한 개수의 값이 입력되더라도 비슷한 정확도가 산출되도록 할 수 있다. 실시예에 따르면, 상술된 바에 따른 LSTM 모델을 이용하여, 사용자의 동작이 운동 상태인지 여부를 검증할 수 있다. 즉, 사용자의 움직임 동작에서 추출된 스켈레톤 포인트를 기초로 고유 벡터를 계산하여, 사용자의 움직임 자세 변화를 감지할 수 있는데, 이때, 고유 벡터의 계산에 이용된 스켈레톤 포인트를 LSTM 모델에 입력(input) 함으로써, 고유 벡터를 기반으로 계산된 결과가 맞는지 즉, 사용자의 동작이 운동 상태인지 여부에 관한 결과가 맞는지를 검증할 수 있다. 예를 들어, 고유 벡터를 계산하여 감지된 사용자의 움직임 자세 변화와, LSTM 모델을 이용하여 감지된 사용자의 움직임 자세 변화가 일치하는 경우에 한해, 후술되는 바에 따른 칼로리 산출 동작을 수행할 수 있다. Meanwhile, when learning the above-described LSTM model, as the performance of the device equipped with the LSTM model is different, the accuracy may also be different. Therefore, no matter what device the LSTM model is loaded on, in order to be able to calculate similar accuracy performance, when learning an LSTM model, the number of input values is reduced by a certain offset from the maximum number By inserting the data together and learning by inserting a value of 0 for the remaining insufficient number using zero padding, similar accuracy can be calculated even if various numbers of values are input. According to the embodiment, it is possible to verify whether the motion of the user is in an exercise state by using the LSTM model as described above. That is, it is possible to detect a change in the user's movement posture by calculating an eigenvector based on a skeleton point extracted from the user's movement motion. At this time, the skeleton point used in the calculation of the eigenvector is input to the LSTM model. By doing so, it is possible to verify whether the result calculated based on the eigenvector is correct, that is, whether the user's motion is correct. For example, only when a change in the user's movement posture detected by calculating the eigenvector matches a change in the user's movement posture detected using the LSTM model, the calorie calculation operation described below may be performed.
또한, 제어부(140)는 아래의 수학식 1에 기초하여, 사용자의 움직임 자세 변화에 따른 칼로리를 산출할 수도 있다.In addition, the controller 140 may calculate calories according to a change in the user's movement posture based on Equation 1 below.
[수학식 1][Equation 1]
Figure PCTKR2022019868-appb-img-000006
Figure PCTKR2022019868-appb-img-000006
여기서, result는 사용자의 움직임 자세 변화에 따라 소모된 칼로리량, O는 산소소비량을 나타낸다. 또한, β는 체중 1kg이 1분 동안 사용하는 산소소비량(MET)을 나타내고, w는 질량, α는 중력 가속도 그리고, t는 시간을 나타낼 수 있다. 한편, 산소소비량(MET)은 상술된 바에 따라 계산된 고유 값(eigen value)(λ)인 e에 골격 가중치(w)를 곱한 값으로 나타낼 수도 있으며, 이는 움직임에 따 소비된 산소의 총량으로 합산될 수도 있다. 이때, 골격 가중치는, 골격의 크기에 따라 비중을 서로 달리하여 부여되는 것으로, 0 내지 1 사이에서 0.1 단위로 설정되어 부여될 수 있다. 또한, α를 산출함에 있어서, g는 중력 가속도, w는 골격 가중치, g'은 관절이 중력 방향을 기준으로 움직이는 방향을 나타낼 수 있다.Here, result represents the amount of calories consumed according to the change in the user's movement posture, and O represents the amount of oxygen consumption. In addition, β represents the amount of oxygen consumption (MET) used by a body weight of 1 kg for 1 minute, w is mass, α is gravitational acceleration, and t can represent time. On the other hand, the oxygen consumption (MET) may be expressed as a value obtained by multiplying the eigen value (λ), e, calculated as described above by the skeletal weight (w), which is summed by the total amount of oxygen consumed during movement. It could be. In this case, the weight of the skeleton is given by varying specific gravity according to the size of the skeleton, and may be set between 0 and 1 in units of 0.1. In addition, in calculating α, g may indicate gravitational acceleration, w may indicate a skeletal weight, and g' may indicate a direction in which a joint moves based on a direction of gravity.
한편, 상술된 바에 따라 산출된 칼로리는, 사용자에게 제공될 수 있다.Meanwhile, the calories calculated as described above may be provided to the user.
한편, 상술된 바에 따라 산출된 칼로리는, 미리 설정된 알고리즘에 따라 칼로리를 산출하는 기기에 의해 산출된 칼로리와 비교될 수 있으며, 비교 결과가 미리 설정된 범위를 벗어나면, 보다 정확하게 산출된 칼로리에 맞춰 그 값을 보정할 수도 있다. 이때, 미리 설정된 알고리즘에 따라 칼로리를 산출하는 기기는, 사용자가 착용한 스마트 워치일 수 있으며, 이에 한하지 않고 칼로리를 산출할 수 있는 기기이면 관계없다. 이때, 스마트 워치는 걸음 수, 심박수, 신체 나이 등과 같은 복합적인 요소들을 고려하여 칼로리를 산출함에 따라 그 정확도가 뛰어나다. 따라서, 상술된 바에 따라 산출된 칼로리는 스마트 워치에 의해 산출된 칼로리와 비교되는 경우, 비교 결과가 미리 설정된 범위를 벗어나면, 스마트 워치에 의해 산출된 칼로리로 그 값을 보정할 수도 있고, 보정을 위한 수치가 메모리(130)에 저장될 수 있다. 예를 들어, 수학식 1에 따라 산출된 칼로리가 100kcal이고, 스마트 워치에 의해 산출된 칼로리가 120kcal 일 때, 1.2 배의 가중치가 보정값으로 설정될 수 있다. 상술된 바에 따라 보정값은, 추후 유저가 스마트 워치를 착용하지 않고 운동을 수행하더라도, 비슷한 운동을 한 경우, 수학식 1에 따라 산출된 칼로리에 적용되어 유저는 보다 정확한 칼로리 정보를 획득할 수 있다. 또한, 상술된 바에 따른 보정값은, 타 유저의 칼로리 정보 보정 시에도 활용될 수 있다. 따라서, 예를 들어, '스쿼트'에 대해 1.2 배의 보정값이 설정된 경우, '스쿼트' 운동을 한 타유저가 소모한 칼로리가 수학식 1에 따라 200kcal로 산출된다면, 제어부(140)는 최종적으로 타유저가 소모한 칼로리에 보정값인 1.2를 적용시켜, 칼로리 정보로 240kcal를 출력할 수 있다. On the other hand, the calorie calculated as described above may be compared with the calorie calculated by the device that calculates the calorie according to a preset algorithm, and if the comparison result is out of the preset range, it is adjusted according to the more accurately calculated calorie. You can also correct the value. In this case, the device that calculates calories according to a preset algorithm may be a smart watch worn by the user, but is not limited thereto, and any device capable of calculating calories may be used. At this time, the smart watch is excellent in accuracy as it calculates calories by considering complex factors such as the number of steps, heart rate, and body age. Therefore, when the calorie calculated as described above is compared with the calorie calculated by the smart watch, if the comparison result is out of a preset range, the value may be corrected with the calorie calculated by the smart watch, and the correction Numerical values may be stored in the memory 130. For example, when the calorie calculated according to Equation 1 is 100 kcal and the calorie calculated by the smart watch is 120 kcal, a weight of 1.2 times may be set as a correction value. As described above, the correction value is applied to the calorie calculated according to Equation 1 when a similar exercise is performed even if the user later exercises without wearing a smart watch, so that the user can obtain more accurate calorie information. . In addition, the correction value according to the above description may also be utilized when correcting calorie information of other users. Therefore, for example, if a 1.2-fold correction value is set for 'squat' and the calories consumed by other users who have performed 'squat' exercise are calculated as 200 kcal according to Equation 1, the control unit 140 finally By applying a correction value of 1.2 to the calories consumed by other users, 240 kcal can be output as calorie information.
상술된 바에 따르면, 사용자의 움직임 자세 변화는, 시간 순서에 따라 배치된 앞, 뒤 순서에 있는 사용자의 움직임이 포함된 영상 프레임을 비교하여, 기울기와 크기의 차이를 통해 감지하는 것이 아니라, 추출된 스켈레톤 포인트를 기반으로 감지하는 것이다. 따라서, 영상 보다 상대적으로 용량이 작은 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공함으로써, 저장 공간을 보다 효율적으로 활용할 수 있는 장점이 있다. 또한, 사용자의 움직임 분석을 위해 사용자의 얼굴이 포함된 영상을 저장하고 이를 활용하는 것이 아니라, 사용자의 신체 관절의 위치 정보인 스켈레톤 포인트만을 저장하고, 이를 활용하여 서비스를 제공하기 때문에, 해커에 의해 저장 공간인 서버가 해킹되더라도, 사용자의 사생활이 침해되지 않고 보호될 수 있다는 효과가 있다. 또한, 상술된 바에 따르면, 본원발명은 고유 벡터를 계산하고 계산된 고유 벡터의 방향을 결정하여, 사용자의 움직임 동작에서 사용자의 움직임 자세 변화를 감지함으로써, 사용자가 운동(예를 들어, 스쿼트 또는 렛풀다운과 같이 사용자의 움직임 자세 변화(팔의 이동)가 위 또는 아래로 이동하는 운동)을 올바르게 하고 있는지 간단하게 결정하므로, 사용자의 움직임 자세 변화를 감지하기 위해 사용되는 리소스를 최소한으로 사용할 수 있다. 실시예에 따르면, 제어부(140)는 소정의 운동에 대해서는 스켈레톤 포인트를 산출하고, 각 관절 간의 각도 등을 고려하여 움직임 자세 변화를 감지하나, 또 다른 소정의 운동에 대해서는, 본 명세서에 개시된 실시예에 따른 움직임 자세 변화만을 감지함으로써, 서비스 제공 장치(100)의 동작에 필요한 리소스를 절약할 수 있다. As described above, the change in the user's movement posture is not detected through the difference in inclination and size by comparing the image frames including the user's movement in the order of the front and back arranged according to the time sequence, but extracted It is to detect based on the skeleton point. Accordingly, there is an advantage in that the storage space can be utilized more efficiently by storing only the skeleton points, which are positional information of the joints of the user's body, which have a relatively smaller capacity than the image, and providing a service using the skeleton points. In addition, since an image containing the user's face is not stored and used to analyze the user's movement, only the skeleton point, which is the location information of the user's body joints, is stored and the service is provided using this, Even if the server, which is a storage space, is hacked, there is an effect that the user's privacy can be protected without being violated. In addition, according to the foregoing, the present invention calculates an eigenvector and determines the direction of the calculated eigenvector, detects a change in the user's movement posture in the user's movement motion, so that the user can exercise (for example, squat or lettuce). Since it is simply determined whether the user's movement posture change (movement of the arm) is correctly performed, such as pull-down, the resources used to detect the user's movement posture change can be minimized. According to an embodiment, the controller 140 calculates a skeleton point for a predetermined exercise and detects a change in movement posture by considering the angle between each joint, but for another predetermined exercise, the embodiment disclosed herein Resources required for operation of the service providing apparatus 100 can be saved by detecting only a change in the movement posture according to the .
일 실시예에 따르면, 제어부(140)는 아바타를 생성할 수 있다. 이때, 아바타는 가상의 캐릭터일 수 있으며, 제어부(140)는 사용자의 스켈레톤 포인트에 기초하여 체형 또는 키 중 어느 하나를 포함하는 신체 정보를 획득하고, 상기 획득한 신체 정보에 대응하는 아바타를 생성할 수 있다. 이때, 메모리(130)에는 스켈레톤 포인트를 포함하는 신체 정보에 기초한 다양한 형태의 아바타들이 저장될 수 있다. 예를 들어, 사용자의 스켈레톤 포인트에 포함된 y1, y2 좌표가 1 및 5인 경우, y는 높이적인 측면에서 고려되어 측정된 거리를 나타내므로, 미리 설정된 키 산출 알고리즘에 따라 사용자의 키를 포함하는 신체 정보를 획득할 수 있어, 제어부(130)는 획득된 신체 정보에 대응하는 아바타를 메모리(130)에서 선택하여 생성할 수 있다. 또한, 메모리(130)에 저장된 아바타들은 스켈레톤 포인트를 포함하는 신체 정보를 가지고 있기 때문에, 제어부(140)는 사용자의 스켈레톤 포인트에 대응하는 신체 정보를 가진 아바타를 메모리(130)에서 선택하여 생성할 수도 있다. 한편, 일 실시예에 따른 아바타는 스켈레톤 포인트를 기초로 그래픽 이미지로 구현된 가상의 캐릭터이고, 상술된 바에 따르면 아바타는 사용자의 스켈레톤 포인트에 기초하여 획득된 신체 정보에 대응되도록 생성되기 때문에, 제어부(140)는 사용자의 스켈레톤 포인트를 아바타에 적용시킴으로써, 스켈레톤 포인트에 기초한 사용자의 움직임에 대응되도록 아바타를 제어할 수 있다. According to an embodiment, the controller 140 may create an avatar. At this time, the avatar may be a virtual character, and the controller 140 obtains body information including any one of body shape and height based on the user's skeleton points, and generates an avatar corresponding to the obtained body information. can In this case, various types of avatars based on body information including a skeleton point may be stored in the memory 130 . For example, if the y1 and y2 coordinates included in the user's skeleton point are 1 and 5, since y represents the measured distance in terms of height, Since body information can be acquired, the controller 130 can select and create an avatar corresponding to the acquired body information from the memory 130 . In addition, since avatars stored in the memory 130 have body information including skeleton points, the controller 140 may select and create an avatar having body information corresponding to the user's skeleton points from the memory 130. there is. On the other hand, according to an embodiment, the avatar is a virtual character implemented as a graphic image based on a skeleton point, and according to the above, since the avatar is generated to correspond to body information obtained based on the user's skeleton point, the controller ( 140) may control the avatar to correspond to the user's movement based on the skeleton point by applying the user's skeleton point to the avatar.
또한, 일 실시예에 따르면, 제어부(140)는 상술된 바에 따라 생성된 아바타의 동작과 미리 설정된 모델의 동작을 비교하고, 비교 결과에 따른 서비스를 제공할 수도 있다. 또한, 제어부(140)는 유저의 동작과 미리 설정된 모델의 동작을 스켈레톤 포인트를 기초로 비교하여, 비교 결과에 따른 서비스(예컨대, 동작이 불일치하는 경우 관련된 피드백 정보를 제공하는 서비스)를 제공할 수도 있다. 이때, 미리 설정된 모델은 아바타의 운동 동작과 같은 동작을 실행하는 영상 속의 인물이거나, 유저가 운동 동작을 수행할 때, 유저의 운동 동작과 같은 동작을 실행하는 영상 속의 인물일 수 있으며, 예를 들어, 아바타 또는 유저가 수행하는 운동이 요가인 경우, 요가 전문가로 명성이 있는 인플루언서(influencer)일 수 있다. 한편, 제어부(140)는 아바타의 동작과 미리 설정된 모델의 동작을 비교함에 앞서, 아바타를 체형 및/또는 키 등과 같은 신체 정보에 기반하여 미리 설정된 모델에 대응되도록 보정하고, 보정된 아바타를 미리 설정된 모델에 오버레이(overlay)시켜 동작을 비교할 수 있다. 이때, 아바타를 미리 설정된 모델에 대응되도록 보정하는 것은, 미리 설정된 신체 보정 알고리즘에 따라 수행될 수 있다. 상술된 바에 따라, 제어부(140)는 생성된 아바타의 동작과 미리 설정된 모델의 동작을 비교할 수 있으며, 아바타의 동작이 미리 설정된 모델의 동작과 불일치하는 경우, 경고음을 송출하여 사용자에게 동작이 올바르지 못함을 인지시킬 수 있다. 이에 따라, 사용자는 미리 설정된 모델의 동작에 더욱 집중하여 올바른 운동 자세를 갖게 함으로써, 운동 효과를 보다 극대화시킬 수 있다.Also, according to an embodiment, the controller 140 may compare the motion of the avatar generated as described above with the motion of a preset model, and provide a service according to the comparison result. In addition, the control unit 140 may compare the motion of the user and the motion of a preset model based on the skeleton points, and provide a service according to the comparison result (eg, a service of providing feedback information related to motions that do not match). there is. At this time, the preset model may be a person in the video performing the same motion as the avatar's motion, or a person in the video performing the same motion as the user's motion when the user performs the motion, for example. , If the exercise performed by the avatar or user is yoga, it may be an influencer with a reputation as a yoga expert. On the other hand, the controller 140 corrects the avatar to correspond to a preset model based on body information such as body shape and/or height, and corrects the corrected avatar to match the preset model before comparing the avatar's motion with the preset model's motion. It can be overlaid on a model to compare its behavior. In this case, correcting the avatar to correspond to a preset model may be performed according to a preset body correction algorithm. As described above, the controller 140 may compare the motion of the generated avatar with the motion of the preset model, and if the motion of the avatar does not match the motion of the preset model, a warning sound is sent to inform the user that the motion is incorrect. can be made aware of. Accordingly, the user can further maximize the exercise effect by concentrating more on the motion of the preset model and having the correct exercise posture.
한편, 제어부(140)는 생성된 아바타의 동작과 미리 설정된 모델의 동작을 비교하여, 아바타의 동작이 미리 설정된 모델의 동작과 불일치하는 경우, 불일치된 동작을 메모리(130)에 저장한 후, 사용자의 모든 운동 동작이 종료되면, 불일치된 동작과 함께 올바른 운동 동작을 사용자에게 보여주는 피드백 서비스를 제공할 수도 있다. 이에 따라, 사용자는 자신의 잘못된 운동 동작을 확인하고, 이에 대응하는 올바른 운동 동작을 반복 숙달함으로써, 운동 효과를 보다 극대화시킬 수 있다. 한편, 아바타의 동작이 미리 설정된 모델의 동작과 불일치하는 경우, 올바른 동작을 수행하였을 때 산출된 칼로리와 상이할 수 있다. 따라서, 아바타의 동작이 미리 설정된 모델의 동작과 불일치하는 경우에는 아래와 같은 수학식을 이용하여 사용자의 동작에 따른 최종 칼로리를 산출함으로써, 보다 정확한 칼로리가 산출되도록 하여 사용자에게 올바른 정보를 제공할 수도 있다.On the other hand, the controller 140 compares the motion of the generated avatar with the motion of a preset model, and if the motion of the avatar is inconsistent with the motion of the preset model, the controller 140 stores the inconsistent motion in the memory 130, and then the user When all of the exercise motions of are completed, a feedback service showing correct motions together with inconsistent motions may be provided to the user. Accordingly, the user can further maximize the exercise effect by confirming his/her wrong exercise motion and repeatedly mastering the correct exercise motion corresponding thereto. On the other hand, if the motion of the avatar does not match the motion of the preset model, it may be different from the calories calculated when the correct motion is performed. Therefore, when the motion of the avatar is inconsistent with the motion of the preset model, the final calorie according to the motion of the user is calculated using the following equation, so that more accurate calorie can be calculated and correct information can be provided to the user. .
<수학식 2><Equation 2>
최종 칼로리 = 수학식 1에 따라 산출된 칼로리 * 일치율Final calorie = Calorie calculated according to Equation 1 * Concordance rate
일치율 = (총 운동 동작 횟수 - 불일치된 운동 동작 횟수) / 총 운동 동작 횟수Concordance rate = (total number of motions - number of discrepant motions) / total number of motions
도 3은 일 실시예에 따른 서비스 제공 방법의 순서도이다.3 is a flowchart of a service providing method according to an exemplary embodiment.
도 3에 도시된 실시예에 따른 서비스 제공 방법은 도 1 내지 도 2에 도시된 스켈레톤 포인트 기반 서비스 제공 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도, 도 1 내지 도 2에 도시된 스켈레톤 포인트 기반 서비스 제공 장치(100)에 관하여 이상에서 기술한 내용은 도 3에 도시된 실시예에 따른 서비스 제공 방법에도 적용될 수 있다. The service providing method according to the embodiment shown in FIG. 3 includes steps processed time-sequentially in the skeleton point based service providing apparatus 100 shown in FIGS. 1 and 2 . Therefore, even if the contents are omitted below, the contents described above with respect to the skeleton point-based service providing apparatus 100 shown in FIGS. 1 and 2 can be applied to the service providing method according to the embodiment shown in FIG. 3 there is.
도 3을 참조하면, 일 실시예에 따른 스켈레톤 포인트 기반 서비스 제공 장치(100)는, 사용자의 움직임 동작을 감지할 수 있다(S310).Referring to FIG. 3 , the skeleton point-based service providing apparatus 100 according to an embodiment may detect a user's movement operation (S310).
다음으로, 스켈레톤 포인트 기반 서비스 제공 장치(100)는, S310 단계에서 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장할 수 있다(S320).Next, the skeleton point-based service providing apparatus 100 may extract, from the user's movement motion detected in step S310, skeleton points, which are positional information of body joints, and store them in a memory (S320).
다음으로, 스켈레톤 포인트 기반 서비스 제공 장치(100)는, 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 사용자의 움직임 동작에서 사용자의 움직임 자세 변화를 감지할 수 있다(S330).Next, the skeleton point-based service providing apparatus 100 calculates an eigen vector based on the skeleton point, and may detect a change in the user's movement posture from the user's movement motion (S330).
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.The term '~unit' used in the above embodiments means software or a hardware component such as a field programmable gate array (FPGA) or ASIC, and '~unit' performs certain roles. However, '~ part' is not limited to software or hardware. '~bu' may be configured to be in an addressable storage medium and may be configured to reproduce one or more processors. Therefore, as an example, '~unit' refers to components such as software components, object-oriented software components, class components, and task components, processes, functions, properties, and procedures. , subroutines, segments of program patent code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays and variables.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.Functions provided within components and '~units' may be combined into smaller numbers of components and '~units' or separated from additional components and '~units'.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.In addition, components and '~units' may be implemented to play one or more CPUs in a device or a secure multimedia card.
한편, 본 명세서를 통해 설명된 일실시예에 따른 서비스 제공 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다. 예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.Meanwhile, the service providing method according to an embodiment described through this specification may be implemented in the form of a computer-readable medium storing instructions and data executable by a computer. In this case, instructions and data may be stored in the form of program codes, and when executed by a processor, a predetermined program module may be generated to perform a predetermined operation. Also, computer-readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. Also, a computer-readable medium may be a computer recording medium, which is a volatile and non-volatile memory implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. It can include both volatile, removable and non-removable media. For example, the computer recording medium may be a magnetic storage medium such as HDD and SSD, an optical recording medium such as CD, DVD, and Blu-ray disc, or a memory included in a server accessible through a network.
또한, 본 명세서를 통해 설명된 일실시예에 따른 서비스 제공 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다. In addition, the service providing method according to one embodiment described through this specification may be implemented as a computer program (or computer program product) including instructions executable by a computer. A computer program includes programmable machine instructions processed by a processor and may be implemented in a high-level programming language, object-oriented programming language, assembly language, or machine language. . Also, the computer program may be recorded on a tangible computer-readable recording medium (eg, a memory, a hard disk, a magnetic/optical medium, or a solid-state drive (SSD)).
따라서, 본 명세서를 통해 설명된 일실시예에 따른 서비스 제공 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로서 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 마더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다. Accordingly, the service providing method according to an embodiment described through this specification may be implemented by executing the computer program as described above by a computing device. A computing device may include at least some of a processor, a memory, a storage device, a high-speed interface connected to the memory and a high-speed expansion port, and a low-speed interface connected to a low-speed bus and a storage device. Each of these components are connected to each other using various buses and may be mounted on a common motherboard or mounted in any other suitable manner.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다. Here, the processor may process commands within the computing device, for example, to display graphic information for providing a GUI (Graphic User Interface) on an external input/output device, such as a display connected to a high-speed interface. Examples include instructions stored in memory or storage devices. As another example, multiple processors and/or multiple buses may be used along with multiple memories and memory types as appropriate. Also, the processor may be implemented as a chipset comprising chips including a plurality of independent analog and/or digital processors.
또한, 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다. Memory also stores information within the computing device. In one example, the memory may consist of a volatile memory unit or a collection thereof. As another example, the memory may be composed of a non-volatile memory unit or a collection thereof. Memory may also be another form of computer readable medium, such as, for example, a magnetic or optical disk.
그리고, 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.And, the storage device may provide a large amount of storage space to the computing device. A storage device may be a computer-readable medium or a component that includes such a medium, and may include, for example, devices in a storage area network (SAN) or other components, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, flash memory, or other semiconductor memory device or device array of the like.
상술한 실시예들은 예시를 위한 것이며, 상술한 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술한 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The above-described embodiments are for illustrative purposes, and those skilled in the art to which the above-described embodiments belong can easily transform into other specific forms without changing the technical idea or essential features of the above-described embodiments. You will understand. Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive. For example, each component described as a single type may be implemented in a distributed manner, and similarly, components described as distributed may be implemented in a combined form.
본 명세서를 통해 보호받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope to be protected through this specification is indicated by the claims to be described later rather than the detailed description above, and all changes or modifications derived from the meaning and scope of the claims and equivalent concepts thereof are included in the scope of the present invention. should be interpreted as being

Claims (15)

  1. 사용자의 움직임 동작을 감지하는 입출력부; 및 an input/output unit that senses a user's motion; and
    상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하고, 상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 제어부;를 포함하는 스켈레톤 포인트 기반 서비스 제공 장치.From the detected movement of the user, a skeleton point, which is position information of body joints, is extracted and stored in a memory, and an eigen vector is calculated based on the skeleton point. A skeleton point-based service providing apparatus including a control unit that detects a change in movement posture.
  2. 제 1 항에 있어서,According to claim 1,
    상기 제어부는,The control unit,
    상기 스켈레톤 포인트를 기초로 미리 설정된 인공지능 기법(LSTM)을 이용하여, 상기 사용자의 움직임이 운동 상태인지 여부를 판단하는 것을 특징으로 하는 스켈레톤 포인트 기반 서비스 제공 장치.Skeleton point-based service providing apparatus, characterized in that for determining whether the motion of the user is in an exercise state using a preset artificial intelligence technique (LSTM) based on the skeleton point.
  3. 제 1 항에 있어서,According to claim 1,
    상기 제어부는,The control unit,
    상기 미리 설정된 고유 벡터를 이용하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하되, Using the preset eigenvector, detecting a change in the user's movement posture in the movement motion of the user;
    아래의 수학식에 기초하여, 사용자의 움직임 자세 변화에 따른 칼로리를 산출하는 것을 특징으로 하는 스켈레톤 포인트 기반 서비스 제공 장치.An apparatus for providing a service based on skeleton points, which calculates calories according to a change in a user's movement posture based on the following equation.
    <수학식><mathematical expression>
    Figure PCTKR2022019868-appb-img-000007
    Figure PCTKR2022019868-appb-img-000007
    여기서, result는 사용자의 움직임 자세 변화에 따라 소모된 칼로리량, O는 산소 소비량을 나타내고, β는 체중 1kg이 1분 동안 사용하는 산소소비량(MET), W는 질량, α는 중력 가속도 그리고, t는 시간, g는 중력 가속도, w는 골격 가중치, g'은 관절이 중력 방향을 기준으로 움직이는 방향.Here, result is the amount of calories consumed according to the change in the user's movement posture, O represents the amount of oxygen consumed, β is the amount of oxygen consumed for 1 minute by a body weight of 1 kg (MET), W is the mass, α is the gravitational acceleration, and t is time, g is the gravitational acceleration, w is the skeletal weight, and g' is the direction in which the joint moves relative to the direction of gravity.
  4. 제 1 항에 있어서,According to claim 1,
    상기 제어부는,The control unit,
    상기 스켈레톤 포인트에 기초하여 아바타를 생성하고, 상기 아바타를 상기 사용자의 동작에 대응되도록 제어하는 것을 특징으로 하는 스켈레톤 포인트 기반 서비스 제공 장치.A skeleton point-based service providing apparatus characterized in that an avatar is created based on the skeleton point, and the avatar is controlled to correspond to the user's motion.
  5. 제 4 항에 있어서,According to claim 4,
    상기 제어부는,The control unit,
    상기 사용자의 스켈레톤 포인트에 기초하여 체형 또는 키 중 어느 하나를 포함하는 신체 정보를 획득하고, 상기 획득한 신체 정보에 대응하는 아바타를 생성하는 것을 특징으로 하는 스켈레톤 포인트 기반 서비스 제공 장치.The apparatus for providing a skeleton point-based service, characterized in that acquiring body information including any one of body shape and height based on the user's skeleton points, and generating an avatar corresponding to the acquired body information.
  6. 제 5 항에 있어서,According to claim 5,
    상기 제어부는,The control unit,
    상기 생성된 아바타와 미리 설정된 모델의 동작을 비교하고, 비교 결과에 따른 서비스를 제공하는 것을 특징으로 하는 스켈레톤 포인트 기반 서비스 제공 장치.A skeleton point-based service providing apparatus that compares the generated avatar with a motion of a preset model and provides a service according to the comparison result.
  7. 스켈레톤 포인트 기반 서비스 제공 장치가 수행하는, 서비스 제공 방법에 있어서, A service providing method performed by a skeleton point based service providing apparatus,
    사용자의 움직임 동작을 감지하는 단계;detecting a user's motion;
    상기 감지된 사용자의 움직임 동작에서, 신체 관절의 위치 정보인 스켈레톤 포인트를 추출하여 메모리에 저장하는 단계; 및 extracting a skeleton point, which is position information of a body joint, from the detected motion of the user and storing it in a memory; and
    상기 스켈레톤 포인트를 기초로 고유 벡터(Eigen vector)를 계산하여, 상기 사용자의 움직임 동작에서 상기 사용자의 움직임 자세 변화를 감지하는 단계;를 포함하는 서비스 제공 방법.A service providing method comprising: calculating an eigen vector based on the skeleton points and detecting a change in the user's movement posture in the movement motion of the user.
  8. 제 7 항에 있어서,According to claim 7,
    상기 사용자의 움직임 자세 변화를 감지하는 단계는,The step of detecting a change in the user's movement posture,
    상기 스켈레톤 포인트를 기초로 미리 설정된 인공지능 기법(LSTM)을 이용하여, 상기 사용자의 움직임이 운동 상태인지 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 서비스 제공 방법.and determining whether the motion of the user is in an exercise state by using a preset artificial intelligence method (LSTM) based on the skeleton point.
  9. 제 7 항에 있어서,According to claim 7,
    상기 사용자의 움직임 자세 변화를 감지하는 단계는,The step of detecting a change in the user's movement posture,
    아래의 수학식에 기초하여, 사용자의 움직임 자세 변화에 따른 칼로리를 산출하는 것을 특징으로 하는 서비스 제공 방법.Based on the equation below, a service providing method characterized in that for calculating the calories according to the change in the movement posture of the user.
    <수학식><mathematical expression>
    Figure PCTKR2022019868-appb-img-000008
    Figure PCTKR2022019868-appb-img-000008
    여기서, result는 사용자의 움직임 자세 변화에 따라 소모된 칼로리량, O는 산소 소비량을 나타내고, β는 체중 1kg이 1분 동안 사용하는 산소소비량(MET), W는 질량, α는 중력 가속도 그리고, t는 시간, g는 중력 가속도, w는 골격 가중치, g'은 관절이 중력 방향을 기준으로 움직이는 방향.Here, result is the amount of calories consumed according to the change in the user's movement posture, O represents the amount of oxygen consumed, β is the amount of oxygen consumed for 1 minute by a body weight of 1 kg (MET), W is the mass, α is the gravitational acceleration, and t is time, g is the gravitational acceleration, w is the skeletal weight, and g' is the direction in which the joint moves relative to the direction of gravity.
  10. 제 7 항에 있어서,According to claim 7,
    상기 방법은,The method,
    상기 스켈레톤 포인트에 기초하여 아바타를 생성하는 단계; 및generating an avatar based on the skeleton point; and
    상기 아바타를 상기 사용자의 동작에 대응되도록 제어하는 단계;를 더 포함하는 것을 특징으로 하는 서비스 제공 방법.and controlling the avatar to correspond to the motion of the user.
  11. 제 10 항에 있어서,According to claim 10,
    상기 아바타를 생성하는 단계는,The step of creating the avatar,
    상기 사용자의 스켈레톤 포인트에 기초하여 체형 또는 키 중 어느 하나를 포함하는 신체 정보를 획득하고, 상기 획득한 신체 정보에 대응하는 아바타를 생성하는 단계를 포함하는 것을 특징으로 하는 서비스 제공 방법.and obtaining body information including any one of a body shape and height based on the user's skeleton points, and generating an avatar corresponding to the acquired body information.
  12. 제 11 항에 있어서,According to claim 11,
    상기 방법은, The method,
    상기 생성된 아바타와 미리 설정된 모델의 동작을 비교하고, 비교 결과에 따른 서비스를 제공하는 단계를 더 포함하는 것을 특징으로 하는 서비스 제공 방법.The service providing method further comprising the step of comparing the generated avatar with the operation of a preset model and providing a service according to the comparison result.
  13. 제 7 항에 있어서,According to claim 7,
    상기 사용자의 움직임 자세 변화를 감지하는 단계는,The step of detecting a change in the user's movement posture,
    스켈레톤 포인트에 포함된 좌표를 정규화하는 단계;normalizing coordinates included in the skeleton points;
    상기 정규화 과정을 거친 좌표를 포함하는 스켈레톤 포인트를 일정 시간 간격으로 수집하고, 상기 수집된 스켈레톤 포인트를 이용하여 각 관절에서의 고유 벡터를 획득하는 단계; 및collecting skeleton points including coordinates that have undergone the normalization process at regular time intervals, and acquiring eigenvectors at each joint using the collected skeleton points; and
    상기 각 관절에서 획득된 고유 벡터를 평활화하여 사용자의 움직임 자세 변화를 감지하는 단계;를 포함하는 것을 특징으로 하는 서비스 제공 방법.and detecting a change in the user's movement posture by smoothing the eigenvector obtained from each joint.
  14. 제 7 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.A computer readable recording medium in which a program for performing the method according to claim 7 is recorded.
  15. 스켈레톤 포인트 기반 서비스 제공 장치에 의해 수행되며, 제 7 항에 기재된 방법을 수행하기 위해 기록 매체에 저장된 컴퓨터 프로그램.A computer program stored in a recording medium to perform the method according to claim 7 and executed by a skeleton point-based service providing device.
PCT/KR2022/019868 2021-12-09 2022-12-08 Skeleton point-based service providing apparatus and method WO2023106846A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20210176139 2021-12-09
KR10-2021-0176139 2021-12-09
KR1020220169376A KR20230087397A (en) 2021-12-09 2022-12-07 Apparatus and method for providing service based on skeleton point
KR10-2022-0169376 2022-12-07

Publications (1)

Publication Number Publication Date
WO2023106846A1 true WO2023106846A1 (en) 2023-06-15

Family

ID=86730991

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/019868 WO2023106846A1 (en) 2021-12-09 2022-12-08 Skeleton point-based service providing apparatus and method

Country Status (1)

Country Link
WO (1) WO2023106846A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096473A (en) * 2015-02-05 2016-08-16 한국전자통신연구원 System and method for motion evaluation
KR101902192B1 (en) * 2016-03-07 2018-10-01 한국전자통신연구원 Method for searching similar choreography based on three dimensions and apparatus using the same
JP2019191981A (en) * 2018-04-26 2019-10-31 Kddi株式会社 Behavior recognition device, model construction device, and program
KR102125349B1 (en) * 2018-11-30 2020-06-22 연세대학교 산학협력단 Apparatus and method for inferring behavior pattern
KR102173335B1 (en) * 2019-12-30 2020-11-03 주식회사 그림에스앤씨 A method and an apparatus for analyzing personal physical ability based on motion recognition

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096473A (en) * 2015-02-05 2016-08-16 한국전자통신연구원 System and method for motion evaluation
KR101902192B1 (en) * 2016-03-07 2018-10-01 한국전자통신연구원 Method for searching similar choreography based on three dimensions and apparatus using the same
JP2019191981A (en) * 2018-04-26 2019-10-31 Kddi株式会社 Behavior recognition device, model construction device, and program
KR102125349B1 (en) * 2018-11-30 2020-06-22 연세대학교 산학협력단 Apparatus and method for inferring behavior pattern
KR102173335B1 (en) * 2019-12-30 2020-11-03 주식회사 그림에스앤씨 A method and an apparatus for analyzing personal physical ability based on motion recognition

Similar Documents

Publication Publication Date Title
Jiang et al. Seeing invisible poses: Estimating 3d body pose from egocentric video
WO2018228218A1 (en) Identification method, computing device, and storage medium
US11423699B2 (en) Action recognition method and apparatus and electronic equipment
CN113850248B (en) Motion attitude evaluation method and device, edge calculation server and storage medium
WO2020062493A1 (en) Image processing method and apparatus
CN110738154A (en) pedestrian falling detection method based on human body posture estimation
US11403882B2 (en) Scoring metric for physical activity performance and tracking
WO2017161734A1 (en) Correction of human body movements via television and motion-sensing accessory and system
CN107545252A (en) Face identification method and device in video based on multi-pose Face model
WO2019033567A1 (en) Method for capturing eyeball movement, device and storage medium
Rani et al. Kinematic joint descriptor and depth motion descriptor with convolutional neural networks for human action recognition
CN108153421B (en) Somatosensory interaction method and device and computer-readable storage medium
CN112528957A (en) Human motion basic information detection method and system and electronic equipment
JP2022542199A (en) KEYPOINT DETECTION METHOD, APPARATUS, ELECTRONICS AND STORAGE MEDIA
CN112749684A (en) Cardiopulmonary resuscitation training and evaluating method, device, equipment and storage medium
US20220358662A1 (en) Image generation method and device
Ho et al. MMU GASPFA: a COTS multimodal biometric database
Santhalingam et al. Synthetic smartwatch imu data generation from in-the-wild asl videos
Hachaj et al. Human actions recognition on multimedia hardware using angle-based and coordinate-based features and multivariate continuous hidden Markov model classifier
WO2023106846A1 (en) Skeleton point-based service providing apparatus and method
JP6992900B2 (en) Information processing equipment, control methods, and programs
CN113239849B (en) Body-building action quality assessment method, body-building action quality assessment system, terminal equipment and storage medium
Gallo et al. View-independent hand posture recognition from single depth images using PCA and Flusser moments
US20210286983A1 (en) Estimation method, and computer-readable recording medium recording estimation program
KR102363435B1 (en) Apparatus and method for providing feedback on golf swing motion

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22904675

Country of ref document: EP

Kind code of ref document: A1