def get_next_batch(self): if self.data_dic is None or len(self.batch_range) > 1: self.data_dic = self.get_batch(self.curr_batchnum) epoch, batchnum = self.curr_epoch, self.curr_batchnum self.advance_batch() cur_ndata = len(self.data_dic['cur_batch_indexes']) cur_batch_indexes = self.data_dic['cur_batch_indexes'] self.data_dic['cur_candidate_indexes']=self.generate_candidate_index(cur_batch_indexes,self.random_prob) cur_candidate_indexes = self.data_dic['cur_candidate_indexes'] gt_jt_rel = self.batch_meta['feature_list'][0][..., cur_batch_indexes] candidate_jt_rel = self.batch_meta['feature_list'][0][..., cur_candidate_indexes] img_feature = self.batch_meta['feature_list'][1][..., cur_batch_indexes] jt_candidate_feature = self.batch_meta['feature_list'][2][..., cur_candidate_indexes] z = (gt_jt_rel - candidate_jt_rel).reshape((3, self.num_joints,cur_ndata), order='F') score = dutils.calc_RBF_score(z, self.rbf_sigma, 3) mpjpe = dutils.calc_mpjpe_from_residual(z, self.num_joints) alldata = [np.require(gt_jt_rel/self.max_depth, dtype=np.single, requirements='C'), \ np.require(img_feature.reshape((-1,cur_ndata),order='F'), \ dtype=np.single, requirements='C'), \ np.require(jt_candidate_feature.reshape((-1,cur_ndata),order='F'), \ dtype=np.single, requirements='C'), \ np.require(score.reshape((-1,cur_ndata)), \ dtype=np.single, requirements='C'),\ np.require(mpjpe.reshape((-1,cur_ndata))/self.max_depth, \ dtype=np.single, requirements='C')] # import iutils as iu # iu.print_common_statistics(alldata[0], 'gt') # iu.print_common_statistics(alldata[1], 'imgfeature') # iu.print_common_statistics(alldata[2], 'jtfeature') # iu.print_common_statistics(alldata[3], 'mpjpe') return epoch, batchnum, alldata
def show_bm_cmp_from_saved(): save_path = "/public/sijinli2/ibuffer/2015-01-22/saved_batch_data_test_net4_K_rbf_test" save_path = "/public/sijinli2/ibuffer/2015-01-22/saved_batch_data_test_net4_K_rbf_correct_test" d = mio.unpickle(save_path) print d.keys() bm_target, gt_score, mv_score, mv_target, gt_target, bm_score = ( d["bm_target"], d["gt_score"], d["mv_score"], d["mv_target"], d["gt_target"], d["bm_score"], ) ndata = bm_target.shape[-1] bm_margin = MMLSSolver.calc_margin(gt_target - bm_target).flatten() * 1200 mv_margin = MMLSSolver.calc_margin(gt_target - mv_target).flatten() * 1200 # bm_rbf_margin = 1 - dutils.calc_RBF_score(gt_target - bm_target, 50/1200.0,3).flatten() # mv_rbf_margin = 1 - dutils.calc_RBF_score(gt_target - mv_target, 50/1200.0,3).flatten() # pl.ylabel('bm rbf margin') # pl.xlabel('highest score rbf margin') # pl.scatter(mv_rbf_margin, bm_rbf_margin, s=15, c='b') # pl.show() score_diff = mv_score - bm_score pl.ylabel("score_diff") pl.xlabel("mpjpe (bestmatch_pose, max_score_pose)") pl.scatter(bm_margin, score_diff, s=15, c="b") pl.show() # show the scatter plot for mpjpe vs RBF score residuals = (gt_target - bm_target) * 1200 bm_margin = bm_margin / 1200.0 t = 0 ncol = 4 sigma_list = [1, 5, 10, 20, 50, 100, 200, 500, 1000, 1500, 2000, 5000] nrow = (len(sigma_list) - 1) // ncol + 1 # mm = np.max(bm_margin) for r in range(nrow): for c in range(ncol): sigma = float(sigma_list[t]) t = t + 1 pl.subplot(nrow, ncol, t) bm_rbf_score = 1 - dutils.calc_RBF_score(residuals, sigma) pl.xlabel("mpjpe (bestmatch_pose, max_score_pose) ") pl.ylabel("RBF sigma = {:.1f}".format(sigma)) pl.scatter(bm_margin, bm_rbf_score) if t == len(sigma_list): break pl.show()
def show_bm_cmp_from_saved(): save_path = '/public/sijinli2/ibuffer/2015-01-22/saved_batch_data_test_net4_K_rbf_test' save_path = '/public/sijinli2/ibuffer/2015-01-22/saved_batch_data_test_net4_K_rbf_correct_test' d = mio.unpickle(save_path) print d.keys() bm_target, gt_score, mv_score, mv_target, gt_target, bm_score = d['bm_target'], \ d['gt_score'], \ d['mv_score'], \ d['mv_target'],\ d['gt_target'],\ d['bm_score'] ndata = bm_target.shape[-1] bm_margin = MMLSSolver.calc_margin(gt_target - bm_target).flatten() * 1200 mv_margin = MMLSSolver.calc_margin(gt_target - mv_target).flatten() * 1200 # bm_rbf_margin = 1 - dutils.calc_RBF_score(gt_target - bm_target, 50/1200.0,3).flatten() # mv_rbf_margin = 1 - dutils.calc_RBF_score(gt_target - mv_target, 50/1200.0,3).flatten() # pl.ylabel('bm rbf margin') # pl.xlabel('highest score rbf margin') # pl.scatter(mv_rbf_margin, bm_rbf_margin, s=15, c='b') # pl.show() score_diff = mv_score - bm_score pl.ylabel('score_diff') pl.xlabel('mpjpe (bestmatch_pose, max_score_pose)') pl.scatter(bm_margin, score_diff, s=15, c='b') pl.show() # show the scatter plot for mpjpe vs RBF score residuals = (gt_target - bm_target) * 1200 bm_margin = bm_margin / 1200.0 t = 0 ncol = 4 sigma_list = [1, 5, 10, 20, 50, 100, 200, 500, 1000, 1500, 2000, 5000] nrow = (len(sigma_list) - 1) // ncol + 1 # mm = np.max(bm_margin) for r in range(nrow): for c in range(ncol): sigma = float(sigma_list[t]) t = t + 1 pl.subplot(nrow, ncol, t) bm_rbf_score = 1 - dutils.calc_RBF_score(residuals, sigma) pl.xlabel('mpjpe (bestmatch_pose, max_score_pose) ') pl.ylabel('RBF sigma = {:.1f}'.format(sigma)) pl.scatter(bm_margin, bm_rbf_score) if t == len(sigma_list): break pl.show()
def get_next_batch(self): if self.data_dic is None or len(self.batch_range) > 1: self.data_dic = self.get_batch(self.curr_batchnum) epoch, batchnum = self.curr_epoch, self.curr_batchnum self.advance_batch() cur_ndata = len(self.data_dic['cur_batch_indexes']) cur_batch_indexes = self.data_dic['cur_batch_indexes'] self.data_dic['cur_candidate_indexes'] = self.generate_candidate_index( cur_batch_indexes, self.random_prob) cur_candidate_indexes = self.data_dic['cur_candidate_indexes'] gt_jt_rel = self.batch_meta['feature_list'][0][..., cur_batch_indexes] candidate_jt_rel = self.batch_meta['feature_list'][0][ ..., cur_candidate_indexes] img_feature = self.batch_meta['feature_list'][1][..., cur_batch_indexes] jt_candidate_feature = self.batch_meta['feature_list'][2][ ..., cur_candidate_indexes] z = (gt_jt_rel - candidate_jt_rel).reshape( (3, self.num_joints, cur_ndata), order='F') score = dutils.calc_RBF_score(z, self.rbf_sigma, 3) mpjpe = dutils.calc_mpjpe_from_residual(z, self.num_joints) alldata = [np.require(gt_jt_rel/self.max_depth, dtype=np.single, requirements='C'), \ np.require(img_feature.reshape((-1,cur_ndata),order='F'), \ dtype=np.single, requirements='C'), \ np.require(jt_candidate_feature.reshape((-1,cur_ndata),order='F'), \ dtype=np.single, requirements='C'), \ np.require(score.reshape((-1,cur_ndata)), \ dtype=np.single, requirements='C'),\ np.require(mpjpe.reshape((-1,cur_ndata))/self.max_depth, \ dtype=np.single, requirements='C')] # import iutils as iu # iu.print_common_statistics(alldata[0], 'gt') # iu.print_common_statistics(alldata[1], 'imgfeature') # iu.print_common_statistics(alldata[2], 'jtfeature') # iu.print_common_statistics(alldata[3], 'mpjpe') return epoch, batchnum, alldata