ZheC / Realtime_Multi-Person_Pose_Estimation

Code repo for realtime multi-person pose estimation in CVPR'17 (Oral)
Other
5.09k stars 1.37k forks source link

Difference of joint_self and joint_others #117

Open anatolix opened 6 years ago

anatolix commented 6 years ago

What is the main idea of separating ppl on image to main person and other persons?

I notices in all places inside the code handling of this is absolutely same. Every piece of code with use of joint_self followed by exactly same code with joint_others.

The 2 differences i've found: 1) main person placed close to center(random shift added later) and resized approximately to same size(random resizing is off) 2) This part of code which I don't really understand

// label size is image size/ stride
  if (mode > 4){
    for (int g_y = 0; g_y < grid_y; g_y++){
      for (int g_x = 0; g_x < grid_x; g_x++){
        for (int i = 0; i < np; i++){
          float weight = float(mask_miss_aug.at<uchar>(g_y, g_x)) /255; //mask_miss_aug.at<uchar>(i, j); 

          // NEXT LINE IS VERY STRANGE //
          if (meta.joint_self.isVisible[i] != 3){
            transformed_label[i*channelOffset + g_y*grid_x + g_x] = weight;
          }
        }  
        // background channel
        if(mode == 5){
          transformed_label[np*channelOffset + g_y*grid_x + g_x] = float(mask_miss_aug.at<uchar>(g_y, g_x)) /255;
        }
        if(mode > 5){
          transformed_label[np*channelOffset + g_y*grid_x + g_x] = 1;
          transformed_label[(2*np+1)*channelOffset + g_y*grid_x + g_x] = float(mask_all_aug.at<uchar>(g_y, g_x)) /255;
        }
      }
    }
  }  

Looks like if main person has one of the limb invisible, whole mask for that limb is not initialised i.e. limbs of other ppl are ingored.

nnop commented 6 years ago

What does ppl stands for?