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