Example #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)
    # # 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)
Example #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/ls/dataset/TFusion/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
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)
Example #4
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)
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)
Example #6
0
    print 'save sorted fusion scores'
    # for i, person_ap_pids in enumerate(persons_ap_pids):
    #     for j in range(len(person_ap_pids)):
    #         write(log_path, '%d ' % person_ap_pids[person_score_idx_s[i][j]])
    #         write(map_score_path, '%.3f ' % persons_cross_scores[i][person_score_idx_s[i][j]])
    #     write(log_path, '\n')
    #     write(map_score_path, '\n')
    return person_score_idx_s


if __name__ == '__main__':
    ctrl_msg['data_folder_path'] = 'cuhk_duke-r-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_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 '
    #           + 'market /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)