Esempio n. 1
0
def init_strict_img_st_fusion():
    # 全局调度入口,会同时做训练集和测试集上的融合与评分
    fusion_param = get_fusion_param()
    safe_mkdir('data/' + ctrl_msg['data_folder_path'])
    get_predict_delta_tracks(fusion_param, use_real_st=fusion_param['gt_fusion'])

    # # only get rand model for train dataset
    prepare_rand_folder(fusion_param)
    prepare_diff_folder(fusion_param)

    ctrl_msg['data_folder_path'] = ctrl_msg['data_folder_path'] + '_rand'
    fusion_param = get_fusion_param()
    # 生成随机时空点的时空模型
    get_predict_delta_tracks(fusion_param, random=True)

    # ctrl_msg['data_folder_path'] = ctrl_msg['data_folder_path'].replace('rand', 'diff')
    # fusion_param = get_fusion_param()
    # get_predict_delta_tracks(fusion_param, diff_person=True)

    # 改回非随机的train目录
    ctrl_msg['data_folder_path'] = ctrl_msg['data_folder_path'][:-5]

    # has prepared more accurate ep, en
    print('fusion on training dataset')
    iter_strict_img_st_fusion(on_test=False)
    # # 改成测试目录
    print('fusion on test dataset')
    ctrl_msg['data_folder_path'] = ctrl_msg['data_folder_path'][:-4] + 'est'
    safe_mkdir('data/' + ctrl_msg['data_folder_path'])
    iter_strict_img_st_fusion(on_test=True)
Esempio n. 2
0
def st_fusion(source, target):
    ctrl_msg['data_folder_path'] = source + '_' + target + '-train'
    init_strict_img_st_fusion()

    ctrl_msg['data_folder_path'] = source + '_' + target + '-train'
    fusion_data_path = '/home/cwh/coding/TrackViz/'
    fusion_param = get_fusion_param()
    fusion_train_rank_pids_path = fusion_data_path + fusion_param['eval_fusion_path']
    fusion_train_rank_scores_path = fusion_data_path + fusion_param['fusion_normal_score_path']
    ctrl_msg['data_folder_path'] = source + '_' + target + '-test'
    fusion_param = get_fusion_param()
    fusion_test_rank_pids_path = fusion_data_path + fusion_param['eval_fusion_path']
    fusion_test_rank_scores_path = fusion_data_path + fusion_param['fusion_normal_score_path']
    return fusion_train_rank_pids_path, fusion_train_rank_scores_path, fusion_test_rank_pids_path, fusion_test_rank_scores_path
Esempio n. 3
0
def save_market_test_truth():
    ctrl_msg['data_folder_path'] = 'market_market-test'
    fusion_param = get_fusion_param()
    answer_path = fusion_param['answer_path']
    answer_lines = read_lines(answer_path)
    query_tracks = list()
    for answer in answer_lines:
        info = answer.split('_')
        if 'bmp' in info[2]:
            info[2] = info[2].split('.')[0]
        if len(info) > 4 and 'jpe' in info[6]:
            query_tracks.append([info[0], int(info[1][0]), int(info[2])])
        else:
            query_tracks.append(
                [info[0],
                 int(info[1][1]),
                 int(info[2]),
                 int(info[1][3])])

    gallery_path = fusion_param['gallery_path']
    gallery_lines = read_lines(gallery_path)
    gallery_tracks = list()
    for gallery in gallery_lines:
        info = gallery.split('_')
        if 'bmp' in info[2]:
            info[2] = info[2].split('.')[0]
        if len(info) > 4 and 'jpe' in info[6]:
            gallery_tracks.append([info[0], int(info[1][0]), int(info[2])])
        else:
            gallery_tracks.append(
                [info[0],
                 int(info[1][1]),
                 int(info[2]),
                 int(info[1][3])])
    gallery_tracks.extend(query_tracks)
    print(len(gallery_tracks))
    deltas = [[list() for j in range(6)] for i in range(6)]

    for i, market_probe_track in enumerate(gallery_tracks):
        if gallery_tracks[i][0] == 0 or gallery_tracks[i][0] == -1:
            continue
        for j in range(len(gallery_tracks)):
            if gallery_tracks[i][0] == gallery_tracks[j][0] \
                    and i != j \
                    and gallery_tracks[i][3] == gallery_tracks[j][3] \
                    and gallery_tracks[i][1] != gallery_tracks[j][1]:
                if gallery_tracks[i][1] == 4 and gallery_tracks[j][1] - 1 == 5:
                    if j >= 19732:
                        print gallery_tracks[i][2] - gallery_tracks[j][2]
                deltas[gallery_tracks[i][1] -
                       1][gallery_tracks[j][1] -
                          1].append(gallery_tracks[i][2] -
                                    gallery_tracks[j][2])
    for camera_delta in deltas:
        for delta_s in camera_delta:
            delta_s.sort()
    pickle_save('true_market_pg.pck', deltas)
Esempio n. 4
0
def build_param(opt):
    fusion_param.ctrl_msg['data_folder_path'] = opt.data_folder_path
    fusion_param.ctrl_msg['cv_num'] = opt.cv_num
    fusion_param.ctrl_msg['ep'] = opt.ep
    fusion_param.ctrl_msg['en'] = opt.en
    fusion_param.ctrl_msg['window_interval'] = opt.window_interval
    fusion_param.ctrl_msg['filter_interval'] = opt.filter_interval
    param = get_fusion_param()
    safe_link(opt.vision_folder_path + '/pid.txt', param['renew_pid_path'])
    safe_link(opt.vision_folder_path + '/score.txt', param['renew_ac_path'])
    fusion_param.ctrl_msg['data_folder_path'] = opt.data_folder_path.replace(
        'train', 'test')
    param = get_fusion_param()
    safe_link(
        opt.vision_folder_path.replace('train', 'test') + '/pid.txt',
        param['renew_pid_path'])
    safe_link(
        opt.vision_folder_path.replace('train', 'test') + '/score.txt',
        param['renew_ac_path'])
    fusion_param.ctrl_msg['data_folder_path'] = opt.data_folder_path
Esempio n. 5
0
def iter_strict_img_st_fusion(on_test=False):
    """
    call after img classifier update, train with new vision score and ep en
    :param on_test:
    :return:
    """
    fusion_param = get_fusion_param()
    # ep, en = get_shot_rate()
    if on_test:
        test_fusion(fusion_param)
    else:
        train_fusion(fusion_param)
Esempio n. 6
0
def real_fusion(src, dst):
    ctrl_msg['data_folder_path'] = src + '_' + dst + '-train'
    update_msg['gt_fusion'] = True
    init_strict_img_st_fusion()
    ctrl_msg['data_folder_path'] = src + '_' + dst + '-test'
    os.environ.setdefault('LD_LIBRARY_PATH', '/usr/local/cuda/lib64')
    # PYTHON eval_on_result.py --target_dataset_path $data_dir --pid_path $pid_path --result_path $log_path
    python_path = '/home/cwh/anaconda3/bin/python'
    eval_sh_path = '/home/cwh/coding/taudl_pyt/baseline/eval_on_result.py'
    target_dataset_path = '/home/cwh/coding/dataset/' + dst
    fusion_param = get_fusion_param()
    pid_path = '/home/cwh/coding/TrackViz/' + fusion_param['eval_fusion_path']
    log_path = src + '_' + dst + '_gt_eval.log'
    os.system(
        'export PYTHONPATH=/home/cwh/coding/taudl_pyt; %s %s --target_dataset_path %s --pid_path %s --result_path %s '
        % (python_path, eval_sh_path, target_dataset_path, pid_path, log_path))
Esempio n. 7
0
def save_grid_train_truth():
    ctrl_msg['data_folder_path'] = 'market_grid-cv0-train'
    fusion_param = get_fusion_param()
    market_train_tracks = train_tracks(fusion_param)
    deltas = [[list() for j in range(6)] for i in range(6)]

    for i, market_train_track in enumerate(market_train_tracks):
        for j in range(0, len(market_train_tracks)):
            if market_train_tracks[i][0] == market_train_tracks[j][0] \
                    and i != j \
                    and market_train_tracks[i][1] != market_train_tracks[j][1]:
                deltas[market_train_tracks[i][1] -
                       1][market_train_tracks[j][1] -
                          1].append(market_train_tracks[i][2] -
                                    market_train_tracks[j][2])
    for camera_delta in deltas:
        for delta_s in camera_delta:
            delta_s.sort()
    pickle_save('true_grid-cv0_train.pck', deltas)
Esempio n. 8
0
def camera_distribute(camera_num):
    fusion_param = get_fusion_param()
    intervals = camera_intervals(fusion_param, camera_num)
    print('get intervals for c%d' % camera_num)
    deltas = [list() for i in range(6)]
    cur_delta = {'id': 0, 'delta': 1000000, 'camera': -1}

    def shuffle_person(img_name):
        if '.' not in img_name:
            return
        track_info = img_name.split('.')[0].split('_')
        person_id = track_info[0]
        track_delta = find_id_delta(intervals, person_id, int(track_info[2]))
        camera_id = int(track_info[1][1])
        if track_delta == -0.1:
            # id not found
            cur_delta['id'] = 0
            return
        # new id, has appeared in camera -camera_num
        cur_delta['id'] = person_id
        cur_delta['delta'] = track_delta
        cur_delta['camera'] = camera_id

        if cur_delta['id'] != 0:
            # exclude first zero record and not found id records
            # deltas.append([cur_delta['id'], cur_delta['camera'], cur_delta['delta']])
            # ignore large data
            if abs(cur_delta['delta']) < 2000:
                deltas[cur_delta['camera'] - 1].append(cur_delta['delta'])

    if data_type == 0:
        # read_lines_and('market_s1/track_s1.txt', shuffle_person)
        read_lines_and(fusion_param['predict_track_path'], shuffle_person)
    else:
        read_lines_and(fusion_param['predict_track_path'], shuffle_person)
    return deltas
Esempio n. 9
0
    safe_remove(log_path)
    safe_remove(map_score_path)
    np.savetxt(log_path, sorted_persons_ap_pids, fmt='%d')
    np.savetxt(map_score_path, sorted_persons_ap_scores, fmt='%f')
    print 'save sorted fusion scores'
    return person_score_idx_s

if __name__ == '__main__':
    # ctrl_msg['data_folder_path'] = 'cuhk_duke-train'
    ctrl_msg['data_folder_path'] = 'duke_market-test'
    ctrl_msg['ep'] = 0.0
    ctrl_msg['en'] = 0.0
    # fusion_param = get_fusion_param()
    # fusion_st_img_ranker(fusion_param, fusion_param['pos_shot_rate'], fusion_param['neg_shot_rate'])
    # eval_on_train_test(fusion_param, test_mode=True)
    fusion_param = get_fusion_param()
    # fusion_param['distribution_pickle_path'] = fusion_param['distribution_pickle_path'].replace('duketail', 'duke')
    # fusion_param['rand_distribution_pickle_path'] = fusion_param['rand_distribution_pickle_path'].replace('duketail', 'duke')
    # fusion_st_img_ranker(fusion_param)
    fusion_st_gallery_ranker(fusion_param)
    # os.environ.setdefault('LD_LIBRARY_PATH', '/usr/local/cuda/lib64')
    # os.system('/home/cwh/anaconda2/bin/python /home/cwh/coding/rank-reid/rank_reid.py 2 '
    #           + 'grid-cv-0 /home/cwh/coding/TrackViz/' + fusion_param['eval_fusion_path'])
    # os.system('/home/cwh/anaconda2/bin/python /home/cwh/coding/rank-reid/rank_reid.py 2 '
    #           + 'duke /home/cwh/coding/TrackViz/' + fusion_param['eval_fusion_path'])
    # fusion_st_img_ranker(fusion_param)
    # delta_range, over_probs = fusion_curve(fusion_param)
    # viz_fusion_curve(delta_range, [over_probs])
    # pt = fusion_heat(fusion_param)
    # viz_heat_map(pt)