Example #1
0
 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
Example #2
0
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()
Example #4
0
    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