人体姿态估计——from heatmap to coordinate

1、这是选取从热图变成坐标的方法 

def get_max_preds(batch_heatmaps):
    '''
    get predictions from score maps
    heatsmaps numpy.ndarray([batch_size,num_joints,height,width])
    '''
    batch_size=batch_heatmaps.shape[0]
    num_joints=batch_heatmaps.shape[1]
    width=batch_heatmaps.shape[3]
    #The shape of heatmaps_reshaped is[batch_size,num_joints,height*width]
    heatmaps_reshaped=batch_heatmaps.reshape((batch_size,num_joints,-1))
    #chance the max idx of heatmaps_reshaped
    idx=np.argmax(heatmaps_reshaped,2)
#选出heatmaps——reshaped的score最大的位置
    maxvals=np.amax(heatmaps_reshaped,2)

    maxvals=maxvals.reshape((batch_size,num_joints,1))


    idx=idx.reshape((batch_size,num_joints,1))

    preds=np.tile(idx,(1,1,2)).astype(np.float32)
#将拉长的64*64=4096的矩阵的位置转化在64*64的shape下的位置:例如=1980除以64=30(纵坐标轴),余数60是横坐标轴
    preds[:,:,0]=(preds[:,:,0])%width
    preds[:,:,1]=(preds[:,:,1])/width

    pred_mask=np.tile(np.greater(maxvals,0.0),(1,1,2))
    pred_mask=pred_mask.astype(np.float32)

    preds*=pred_mask


    return preds ,maxvals

 

你可能感兴趣的:(人体姿态估计)