Pose Recognition Node

Parses the output of Bodypose 2D model and augments metadata with human pose keypoints

Overview

This node parses the output of "Bodypose 2D" model to extract the human pose keypoints and line segments.

Requires Model Inference Node (Bodypose 2D) prior to it in order to function properly.

Inputs & Outputs

  • Inputs : 1, Media Format : Raw Video
  • Outputs : 1, Media Format: Raw Video
  • Output Metadata : None

Properties

Property

Value

draw_poses

If true, human pose points and body joints connections will be drawn on video

ex. true / false

draw_labels

If true, the text labels for body joints will be overlaid on video

ex. true / false

Metadata

Metadata Property

Description

nodes.<node_id>

Body poses information as described in the JSON below.

<node_id> for Pose Recognition Nodes is of the form annotate_poseX (ex. annotate_pose1)

{
    "nodes":{
        "parse_bodypose*":{
            "type":"annotate_pose",
            "poses_count":<int>,
            "poses":{
                "<pose_id>":{
                    "keypoints":{
                        "l_ank":{"x":<int>, "y":<int>},
                        "l_ear":{"x":<int>, "y":<int>},
                        "l_elb":{"x":<int>, "y":<int>},
                        "l_eye":{"x":<int>, "y":<int>},
                        "l_hip":{"x":<int>, "y":<int>},
                        "l_knee":{"x":<int>, "y":<int>},
                        "l_sho":{"x":<int>, "y":<int>},
                        "l_wri":{"x":<int>, "y":<int>},
                        "neck":{"x":<int>, "y":<int>},
                        "nose":{"x":<int>, "y":<int>},
                        "r_ank":{"x":<int>, "y":<int>},
                        "r_ear":{"x":<int>, "y":<int>},
                        "r_elb":{"x":<int>, "y":<int>},
                        "r_eye":{"x":<int>, "y":<int>},
                        "r_hip":{"x":<int>, "y":<int>},
                        "r_knee":{"x":<int>, "y":<int>},
                        "r_sho":{"x":<int>, "y":<int>},
                        "r_wri":{"x":<int>, "y":<int>}
                    },
                    "rect":[<int>, <int>, <int>, <int>],
                    "segments":[
                        ["neck", "r_sho"],
                        ["neck", "l_sho"],
                        ["r_sho", "r_elb"],
                        ["r_elb", "r_wri"],
                        ["l_sho", "l_elb"],
                        ["l_elb", "l_wri"],
                        ["neck", "r_hip"],
                        ["r_hip", "r_knee"],
                        ["r_knee", "r_ank"],
                        ["neck", "l_hip"],
                        ["l_hip", "l_knee"],
                        ["l_knee", "l_ank"],
                        ["neck", "nose"],
                        ["nose", "r_eye"],
                        ["r_eye", "r_ear"],
                        ["nose", "l_eye"],
                        ["l_eye", "l_ear"]
                    ]
                }
            }
        }
    }
}

Format

Key

Type

Description

poses_count

Integer

Total number of poses in the view right now

poses

Dict of pose IDs

Information about each detected human pose.

keypoints : The x,y position on image for each detected human joint.

The abbreviations on keypoints IDs translates to the following:
"l_ank" => left ankle
"l_ear" => left ear
"l_elb" => left elbow
"l_eye" => left eye
"l_hip" => left hip
"l_knee" => left knee
"l_sho" => left shoulder
"l_wri" => left wrist
"neck" => neck
"nose" => nose
"r_ank" => right ankle
"r_ear" => right ear
"r_elb" => right elbow
"r_eye" => right eye
"r_hip" => right hip
"r_knee" => right knee
"r_sho" => right shoulder
"r_wri" => right wrist

rect: The person bounding box that contains all the detected keypoints

segments: Relations between the detected keypoints to draw line segments

Please check the json example for more details.


Did this page help you?