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)
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)
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)
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)