Closed m-decoster closed 4 years ago
You can look in the source code of OpenPose, and you will find POSE_BODY_25_BODY_PARTS (as the page you link shows), as well as POSE_BODY_135_BODY_PARTS. Anything that applies in that page can be found in the source code, and close to the 25 version, you can find its 135 analog. (Feel free to ask again if something is not clear)
I would like to use the new model since it looks like it performs better on a dataset I am using.
I was wondering if there is information available about the keypoint ordering and indices, like there is on the original OpenPose repository, on this page, preferably without having to compile OpenPose.
Specifically, is it just 2 keypoints that are deleted, or are there any that are changed? If so, which?
Hey! Did you find POSE_BODY_135_BODY_PARTS?
@Aigul95 Sorry for the late reply, the keypoints are available here: https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/41d8c087459fae844e477dda50a6f732e70f2cb8/src/openpose/pose/poseParameters.cpp#L149
For future reference:
{0, "Nose"},
{1, "LEye"},
{2, "REye"},
{3, "LEar"},
{4, "REar"},
{5, "LShoulder"},
{6, "RShoulder"},
{7, "LElbow"},
{8, "RElbow"},
{9, "LWrist"},
{10, "RWrist"},
{11, "LHip"},
{12, "RHip"},
{13, "LKnee"},
{14, "RKnee"},
{15, "LAnkle"},
{16, "RAnkle"},
{17, "UpperNeck"},
{18, "HeadTop"},
{19, "LBigToe"},
{20, "LSmallToe"},
{21, "LHeel"},
{22, "RBigToe"},
{23, "RSmallToe"},
{24, "RHeel"},
// Left hand
{H135+0, "LThumb1CMC"}, {H135+1, "LThumb2Knuckles"}, {H135+2, "LThumb3IP"}, {H135+3, "LThumb4FingerTip"},
{H135+4, "LIndex1Knuckles"}, {H135+5, "LIndex2PIP"}, {H135+6, "LIndex3DIP"}, {H135+7, "LIndex4FingerTip"},
{H135+8, "LMiddle1Knuckles"}, {H135+9, "LMiddle2PIP"}, {H135+10, "LMiddle3DIP"},{H135+11, "LMiddle4FingerTip"},
{H135+12, "LRing1Knuckles"}, {H135+13, "LRing2PIP"}, {H135+14, "LRing3DIP"}, {H135+15, "LRing4FingerTip"},
{H135+16, "LPinky1Knuckles"}, {H135+17, "LPinky2PIP"}, {H135+18, "LPinky3DIP"}, {H135+19, "LPinky4FingerTip"},
// Right hand
{H135+20, "RThumb1CMC"}, {H135+21, "RThumb2Knuckles"},{H135+22, "RThumb3IP"}, {H135+23, "RThumb4FingerTip"},
{H135+24, "RIndex1Knuckles"}, {H135+25, "RIndex2PIP"}, {H135+26, "RIndex3DIP"}, {H135+27, "RIndex4FingerTip"},
{H135+28, "RMiddle1Knuckles"},{H135+29, "RMiddle2PIP"}, {H135+30, "RMiddle3DIP"},{H135+31, "RMiddle4FingerTip"},
{H135+32, "RRing1Knuckles"}, {H135+33, "RRing2PIP"}, {H135+34, "RRing3DIP"}, {H135+35, "RRing4FingerTip"},
{H135+36, "RPinky1Knuckles"}, {H135+37, "RPinky2PIP"}, {H135+38, "RPinky3DIP"}, {H135+39, "RPinky4FingerTip"},
// Face
{F135+0, "FaceContour0"}, {F135+1, "FaceContour1"}, {F135+2, "FaceContour2"}, {F135+3, "FaceContour3"}, {F135+4, "FaceContour4"}, {F135+5, "FaceContour5"}, // Contour 1/3
{F135+6, "FaceContour6"}, {F135+7, "FaceContour7"}, {F135+8, "FaceContour8"}, {F135+9, "FaceContour9"}, {F135+10, "FaceContour10"}, {F135+11, "FaceContour11"}, // Contour 2/3
{F135+12, "FaceContour12"}, {F135+13, "FaceContour13"}, {F135+14, "FaceContour14"}, {F135+15, "FaceContour15"}, {F135+16, "FaceContour16"}, // Contour 3/3
{F135+17, "REyeBrow0"}, {F135+18, "REyeBrow1"}, {F135+19, "REyeBrow2"}, {F135+20, "REyeBrow3"}, {F135+21, "REyeBrow4"}, // Right eyebrow
{F135+22, "LEyeBrow4"}, {F135+23, "LEyeBrow3"}, {F135+24, "LEyeBrow2"}, {F135+25, "LEyeBrow1"}, {F135+26, "LEyeBrow0"}, // Left eyebrow
{F135+27, "NoseUpper0"}, {F135+28, "NoseUpper1"}, {F135+29, "NoseUpper2"}, {F135+30, "NoseUpper3"}, // Upper nose
{F135+31, "NoseLower0"}, {F135+32, "NoseLower1"}, {F135+33, "NoseLower2"}, {F135+34, "NoseLower3"}, {F135+35, "NoseLower4"}, // Lower nose
{F135+36, "REye0"}, {F135+37, "REye1"}, {F135+38, "REye2"}, {F135+39, "REye3"}, {F135+40, "REye4"}, {F135+41, "REye5"}, // Right eye
{F135+42, "LEye0"}, {F135+43, "LEye1"}, {F135+44, "LEye2"}, {F135+45, "LEye3"}, {F135+46, "LEye4"}, {F135+47, "LEye5"}, // Left eye
{F135+48, "OMouth0"}, {F135+49, "OMouth1"}, {F135+50, "OMouth2"}, {F135+51, "OMouth3"}, {F135+52, "OMouth4"}, {F135+53, "OMouth5"}, // Outer mouth 1/2
{F135+54, "OMouth6"}, {F135+55, "OMouth7"}, {F135+56, "OMouth8"}, {F135+57, "OMouth9"}, {F135+58, "OMouth10"}, {F135+59, "OMouth11"}, // Outer mouth 2/2
{F135+60, "IMouth0"}, {F135+61, "IMouth1"}, {F135+62, "IMouth2"}, {F135+63, "IMouth3"}, {F135+64, "IMouth4"}, {F135+65, "IMouth5"}, {F135+66, "IMouth6"}, {F135+67, "IMouth7"}, // Inner mouth
{F135+68, "RPupil"}, {F135+69, "LPupil"}, // Pupils
Hi @m-decoster , i am using 24 keypoints to fine-tune the OpenPose : 20 points are from first 24 points of body-135 model but remaining 4 points belongs to [H135+4, "LIndex1Knuckles"] and [H135+16, "LPinky1Knuckles"].
Do i need to define all the 135 points in my json file, i am not sure how to specify keypoints in the json file. Could you please guide ? how did you do that.
If i am fine-tuning body-135 model, do i need to make other points (0,0,0) or i can simply skip those by not specifying in json file? if former is true, then do i need to follow the same convention as {F135+0, "FaceContour0"}, {F135+1, "FaceContour1"}, .. so on... OR i can mention like { 128: "FaceContour0"}, {129: "FaceContour1"} in simple order with 1,2,3.... dictionary keys?
Your response would be helpful. Thanks in advance
I would like to use the new model since it looks like it performs better on a dataset I am using.
I was wondering if there is information available about the keypoint ordering and indices, like there is on the original OpenPose repository, on this page, preferably without having to compile OpenPose.
Specifically, is it just 2 keypoints that are deleted, or are there any that are changed? If so, which?