def pose_mean_shift(im_predict): pos_pred = [] label_set = np.unique(im_predict) for i in xrange(N_MSR_JOINTS): if i in label_set: inds = np.nonzero(im_predict == i) if len(inds[0]) > 0: X = np.array(inds).T cluster_centers, cluster_counts = mean_shift( X, 50, n_seeds=10, max_iterations=100) # Find cluster with most pixels max_cluster = np.argmax(cluster_counts) pos_tmp = [cluster_centers[max_cluster].astype(np.int16)] pos_pred += [[pos_tmp[0][1], pos_tmp[0][0]]] else: pos_pred += [[-1]] else: pos_pred += [[-1]] skel_pos_pred = np.zeros([N_MSR_JOINTS, 2], dtype=np.int16) for i in xrange(len(SKEL_JOINTS)): if pos_pred[i][0] != -1: skel_pos_pred[SKEL_JOINTS[i], :] = pos_pred[i] return skel_pos_pred
def infer_pose(im_depth, rf, offsets_1, offsets_2): ''' rf : pretrained random forest ''' ''' Compute features and labels ''' features = calculate_rf_features(im_depth, offsets_1, offsets_2) pixel_loc = np.nonzero(im_depth>0) pred = rf.predict(features) im_predict = np.ones_like(im_depth)+N_MSR_JOINTS+1 im_predict[pixel_loc] = pred ''' Mean shift ''' pos_pred = [] label_set = np.unique(im_predict) for i in xrange(N_MSR_JOINTS): if i in label_set: inds = np.nonzero(im_predict==i) if len(inds[0])>0: X = np.array(inds).T cluster_centers, cluster_counts = mean_shift(X, 50, n_seeds=10, max_iterations=100) # Find cluster with most pixels max_cluster = np.argmax(cluster_counts) pos_tmp = [cluster_centers[max_cluster].astype(np.int16)] pos_pred += [[pos_tmp[0][1], pos_tmp[0][0]]] else: pos_pred += [[-1]] else: pos_pred += [[-1]] skel_pos_pred = np.zeros([N_MSR_JOINTS,2], dtype=np.int16) for i in xrange(len(SKEL_JOINTS)): if pos_pred[i][0] != -1: skel_pos_pred[SKEL_JOINTS[i],:] = pos_pred[i] return skel_pos_pred, im_predict
def pose_mean_shift(im_predict): pos_pred = [] label_set = np.unique(im_predict) for i in xrange(N_MSR_JOINTS): if i in label_set: inds = np.nonzero(im_predict==i) if len(inds[0])>0: X = np.array(inds).T cluster_centers, cluster_counts = mean_shift(X, 50, n_seeds=10, max_iterations=100) # Find cluster with most pixels max_cluster = np.argmax(cluster_counts) pos_tmp = [cluster_centers[max_cluster].astype(np.int16)] pos_pred += [[pos_tmp[0][1], pos_tmp[0][0]]] else: pos_pred += [[-1]] else: pos_pred += [[-1]] skel_pos_pred = np.zeros([N_MSR_JOINTS,2], dtype=np.int16) for i in xrange(len(SKEL_JOINTS)): if pos_pred[i][0] != -1: skel_pos_pred[SKEL_JOINTS[i],:] = pos_pred[i] return skel_pos_pred
def infer_pose(im_depth, rf, offsets_1, offsets_2): ''' rf : pretrained random forest ''' ''' Compute features and labels ''' features = calculate_rf_features(im_depth, offsets_1, offsets_2) pixel_loc = np.nonzero(im_depth > 0) pred = rf.predict(features) im_predict = np.ones_like(im_depth) + N_MSR_JOINTS + 1 im_predict[pixel_loc] = pred ''' Mean shift ''' pos_pred = [] label_set = np.unique(im_predict) for i in xrange(N_MSR_JOINTS): if i in label_set: inds = np.nonzero(im_predict == i) if len(inds[0]) > 0: X = np.array(inds).T cluster_centers, cluster_counts = mean_shift( X, 50, n_seeds=10, max_iterations=100) # Find cluster with most pixels max_cluster = np.argmax(cluster_counts) pos_tmp = [cluster_centers[max_cluster].astype(np.int16)] pos_pred += [[pos_tmp[0][1], pos_tmp[0][0]]] else: pos_pred += [[-1]] else: pos_pred += [[-1]] skel_pos_pred = np.zeros([N_MSR_JOINTS, 2], dtype=np.int16) for i in xrange(len(SKEL_JOINTS)): if pos_pred[i][0] != -1: skel_pos_pred[SKEL_JOINTS[i], :] = pos_pred[i] return skel_pos_pred, im_predict