def prepare_imgset(): ## parameters cs_val_dir = '/mnt/phoenix_fastdir/dataset/cityscapes/leftImg8bit_sequence/val' imgset_dir = '/mnt/phoenix_fastdir/dataset/cityscapes/leftImg8bit_sequence/imgset' set_names = ['frankfurt', 'lindau', 'munster'] imgset_val_dir = os.path.join(imgset_dir, 'val') create_dir(imgset_val_dir) name_suffix = 'leftImg8bit' im_ext = '.png' for set_name in set_names: imgset_val_path = os.path.join(imgset_val_dir, set_name + '.txt') arr = os.listdir(os.path.join(cs_val_dir, set_name)) arr = np.sort(arr) print arr print imgset_val_path with open(imgset_val_path, 'w') as f1: for row_id in xrange(0, len(arr)): im_name = arr[row_id][:-4] f1.write('{:s}\n'.format(im_name)) f1.close
def generate_ppmimgs(seq_data_dir, seq_names, dest_ppmimgs_dir): if not os.path.exists(dest_ppmimgs_dir): create_dir(dest_ppmimgs_dir) for seq_name in seq_names: seq_folder_dir = os.path.join(seq_data_dir, seq_name) seq_img1_dir = os.path.join(seq_folder_dir, 'img1') rename_create_ppmimgs(seq_img1_dir, dest_ppmimgs_dir, seq_name)
def prepare_imgset(): ## parameters data_root_dir=cscfg.DATA.ROOT_DIR set_branch=cscfg.DATA.BRANCH ## validation set sub_set_dir=os.path.join(data_root_dir,set_branch) imgset_dir=cscfg.DATA.IMGSET_DIR im_ext=cscfg.DATA.IM_EXT if set_branch=='val': set_names=['frankfurt','lindau','munster'] imgset_dir=os.path.join(imgset_dir,set_branch) create_dir(imgset_dir) for set_name in set_names: print set_name imgset_path=os.path.join(imgset_dir,set_name+'.txt') arr=os.listdir(os.path.join(sub_set_dir,set_name)) arr=np.sort(arr) print arr print imgset_path with open(imgset_path, 'w') as f1: for row_id in xrange(0, len(arr)): im_name=arr[row_id][:-4] f1.write('{:s}\n'. format(im_name)) f1.close
def get_vis_dir(): res_dir = mcfg.PROPOSAL.RES_DIR res_dir = res_dir.replace('Continious', 'PerPerson') create_recur_dirs(res_dir) vis_gt_dir = os.path.join(res_dir, 'vis_gt_all') create_dir(vis_gt_dir) return vis_gt_dir
def motdevkit_16_to_17(): src_dir='/mnt/phoenix_fastdir/dataset/MOTdevkit2016/MOT2016' dest_dir='/mnt/phoenix_fastdir/dataset/MOTdevkit2017/MOT2017' im_ext='.jpg' ##imgsets src_imgsets_dir=os.path.join(src_dir,'ImageSets/Main') dest_imgsets_dir=os.path.join(dest_dir,'ImageSets/Main') imgset_name='val.txt' src_imgsets_path=os.path.join(src_imgsets_dir,imgset_name) dest_imgsets_path=os.path.join(dest_imgsets_dir,imgset_name) ##jpg images src_jpg_dir=os.path.join(src_dir,'JPEGImages') dest_jpg_dir=os.path.join(dest_dir,'JPEGImages') create_dir(dest_jpg_dir) ##batch imgsets src_strs,dest_strs=batch_rename_strarr(src_imgsets_path,dest_imgsets_path) ##batch jpgimgs ##batch_rename_imgs(src_strs,dest_strs,src_jpg_dir,dest_jpg_dir,im_ext) ##'/Annotations' ##cur_dir='/mnt/phoenix_fastdir/dataset/MOTdevkit2017/MOT2017/Annotations' bw_flow_dir='/mnt/phoenix_fastdir/experiments/opticalflow/MOT17/LDOF/MOT17-02/bw' fw_flow_dir='/mnt/phoenix_fastdir/experiments/opticalflow/MOT17/LDOF/MOT17-02/fw' batch_rename_func(fw_flow_dir)
def vis_link_imgs(im_names, src_dir1, src_dir2, dest_dir): create_dir(dest_dir) for im_name in im_names: im_path1 = os.path.join(src_dir1, im_name + im_ext) im_path2 = os.path.join(src_dir2, im_name + im_ext) link_im_path = os.path.join(dest_dir, im_name + im_ext) im1 = cv2.imread(im_path1) im2 = cv2.imread(im_path2) im_height = im1.shape[0] im_width = im1.shape[1] link_im = np.zeros((im_height * 2, im_width, 3), dtype=np.uint8) link_im[0:im_height, :, :] = im1 link_im[im_height:im_height * 2, :, :] = im2 cv2.imwrite(link_im_path, link_im)
def vis_gt_per_person(gt_frm_ids, gt_obj_ids, gt_boxes, gt_masks, tight_gt_boxes=[]): uniq_obj_ids = np.sort(np.unique(gt_obj_ids)) for obj_id in uniq_obj_ids: row_indexes = np.where(gt_obj_ids == obj_id)[0] label_frm_ids = gt_frm_ids[row_indexes] label_boxes = tight_gt_boxes[row_indexes] ## tight box label_boxes1 = gt_boxes[row_indexes] ## loose box label_masks = gt_masks[row_indexes] id_indexes = label_frm_ids - 1 label_ims = rgb_ims[id_indexes] label_im_names = im_names[id_indexes] label_dir = os.path.join(vis_gt_dir, str(obj_id)) create_dir(label_dir) vis_box_per_person(label_dir, label_ims, label_im_names, label_boxes, obj_id, label_masks, label_boxes1)
def save_vis_masks(ims,im_names,gt_masks_dir,gt_masks,corrup_masks_dir,corrup_masks): # 5.2> save vis_gt_masks and corrup_masks alpha_folder='alpha_masks' color_folder='color_masks' ## alpha masks(gt) alpha_gt_dir=os.path.join(gt_masks_dir,alpha_folder) create_dir(alpha_gt_dir) alpha_gt_masks=gt_masks*255.0 save_images(alpha_gt_masks,alpha_gt_dir,im_names,im_ext) ## alpha masks(corrup) alpha_corrup_dir=os.path.join(corrup_masks_dir,alpha_folder) create_dir(alpha_corrup_dir) alpha_corrup_masks=corrup_masks*255.0 save_images(alpha_corrup_masks,alpha_corrup_dir,im_names,im_ext) ## color masks(gt) color_gt_masks=np.zeros((ims.shape),dtype=np.uint8) color=[0,0,255] for m_id in xrange(len(gt_masks)): im=ims[m_id] mask=gt_masks[m_id] color_mask=vis_im_mask(im,mask,color,True) color_gt_masks[m_id]=color_mask color_gt_dir=os.path.join(gt_masks_dir,color_folder) create_dir(color_gt_dir) save_images(color_gt_masks,color_gt_dir,im_names,im_ext) ## here is small bug(need to debug) ## color masks(corrup) color_corrup_masks=np.zeros((ims.shape),dtype=np.uint8) color=[0,0,255] for m_id in xrange(len(corrup_masks)): im=ims[m_id] mask=corrup_masks[m_id] color_mask=vis_im_mask(im,mask,color,True) color_corrup_masks[m_id]=color_mask color_corrup_dir=os.path.join(corrup_masks_dir,color_folder) create_dir(color_corrup_dir) save_images(color_corrup_masks,color_corrup_dir,im_names,im_ext)
def get_match_res_dir(obj_id): ### create gt_masks_dir, corrup_masks_dir and pick_masks_dir for later use print '=========================get match res dir=====================' # seg_dir seg_dir=mcfg.EXPR.SEG_DIR dataset=mcfg.DATA.DATASET seg_algr=mcfg.EXPR.SEG_ALGR seg_dir=os.path.join(seg_dir,dataset,seg_algr) # random_corrup_dir rand_corrup_dir=os.path.join(seg_dir,'random_corrup') create_dir(rand_corrup_dir) ##match_boxes_dir match_boxes_dir=os.path.join(rand_corrup_dir,'match_boxes') create_dir(match_boxes_dir) match_boxes_dir=os.path.join(match_boxes_dir,str(obj_id)) create_dir(match_boxes_dir) return match_boxes_dir
def get_annotations_dir(data_dir): annots_dir = os.path.join(data_dir, annots_folder) create_dir(annots_dir) return annots_dir
def create_masks_dirs(obj_id): ##print '=========================get maks dir=====================' # seg_dir seg_dir=mcfg.EXPR.SEG_DIR dataset=mcfg.DATA.DATASET seg_algr=mcfg.EXPR.SEG_ALGR seg_dir=os.path.join(seg_dir,dataset,seg_algr) # random_corrup_dir rand_corrup_dir=os.path.join(seg_dir,'random_corrup') create_dir(rand_corrup_dir) # sub masks dirs gt_masks_dir=os.path.join(rand_corrup_dir,'gt_masks') corrup_masks_dir=os.path.join(rand_corrup_dir,'corrup_masks') pick_masks_dir=os.path.join(rand_corrup_dir,'pick_masks') create_dir(gt_masks_dir) create_dir(corrup_masks_dir) create_dir(pick_masks_dir) ## sub masks dirs with obj_ids gt_masks_dir=os.path.join(gt_masks_dir,str(obj_id)) create_dir(gt_masks_dir) corrup_masks_dir=os.path.join(corrup_masks_dir,str(obj_id)) create_dir(corrup_masks_dir) # pick_masks_dir=os.path.join(pick_masks_dir,str(obj_id)) # create_dir(pick_masks_dir) return gt_masks_dir,corrup_masks_dir,pick_masks_dir
def get_ref_dir(): track_mask_dir = io.get_track_mask_info(seq_name) refine_res_dir = os.path.join(track_mask_dir, 'res') create_dir(refine_res_dir) return refine_res_dir
def online_pick_iteration(track_mask_dir, label, frm_ids, init_masks, init_boxes, cur_ims, cur_fw_flows, cur_bw_flows, shift_vec): print 'online pick iteration...' ## para0: max_bbox iter_num = mcfg.FTRACK.ITER_NUM seq_name = mcfg.DATA.SEQNAME im_ext = mcfg.DATA.IMGEXT mask_im_ext = mcfg.MASK.BIN_IM_EXT track_lab_mask_dir = os.path.join(track_mask_dir, str(label)) create_dir(track_lab_mask_dir) if debug_flag: print 'track_mask_dir:', track_mask_dir print 'track_lab_mask_dir:', track_lab_mask_dir print 'iter_num:', iter_num iou_arr = np.zeros(iter_num) cur_masks = init_masks cur_boxes = init_boxes conv_flag = False iter_id = 0 ## counter ave_iou = 0.0 old_ave_iou = 0.0 while iter_id < iter_num and conv_flag == False: #for iter_id in xrange(iter_num): old_ave_iou = ave_iou picked_masks = [] picked_boxes = [] ## ---------------------------------------create dirs---------------------------------------------------------------------- ## iter dir iter_name = 'iter' + str(iter_id) iter_label_prop_path = os.path.join( track_lab_mask_dir, iter_name + '.txt') ##picked dets(boxes) file path ## picked masks dir iter_label_dir = os.path.join(track_lab_mask_dir, iter_name) create_dir(iter_label_dir) ## vis for debuging vis_iter_name = 'vis_iter' + str(iter_id) vis_iter_label_dir = os.path.join(track_lab_mask_dir, vis_iter_name) create_dir(vis_iter_label_dir) ## new added, for converage ## converage .txt iter_conv_name = 'iter_conv' iter_conv_label_prop_path = os.path.join( track_lab_mask_dir, iter_conv_name + '.txt') ##picked dets(boxes) file path # # converage masks dir iter_conv_label_dir = os.path.join(track_lab_mask_dir, iter_conv_name) create_dir(iter_conv_label_dir) ## pick masks in different cases if len(cur_ims) > 2: prev_boxes, next_boxes, fw_masks, bw_masks = cal_per_label( cur_ims, cur_fw_flows, cur_bw_flows, frm_ids, cur_boxes, cur_masks) picked_bboxes, picked_masks, y_labels, ave_iou = lpsolve_pick_mask( cur_ims, frm_ids, prev_boxes, cur_boxes, next_boxes, fw_masks, cur_masks, bw_masks, shift_vec) if vis_picked_flag: vis_picked_masks(vis_iter_label_dir, cur_ims, frm_ids, y_labels, picked_masks, picked_bboxes, fw_masks, prev_boxes, cur_masks, cur_boxes, bw_masks, next_boxes) else: ## just one image picked_masks = cur_masks picked_bboxes = cur_boxes iou_arr[iter_id] = ave_iou ## judge if it's converaged if ave_iou == old_ave_iou: conv_flag = True else: cur_masks = picked_masks cur_boxes = picked_bboxes if save_masks_flag: save_picked_masks(iter_label_dir, seq_name, picked_masks, frm_ids) ## save binary masks(for later using) if save_dets_flag: save_picked_proposals(iter_label_prop_path, frm_ids, label, picked_bboxes) ## save det proposals print 'iou_arr:', iou_arr ## save conv results if conv_flag == True or iter_id == iter_num - 1: if save_masks_flag: save_picked_masks( iter_conv_label_dir, seq_name, cur_masks, frm_ids) ## save binary masks(for later using) if save_dets_flag: save_picked_proposals(iter_conv_label_prop_path, frm_ids, label, cur_boxes) ## save det proposals iter_id += 1 ## loop
if __name__ == '__main__': get_video_demo() ## MOT dataset = 'MOT17' det_res_dir = mcfg.DETCTION.RES_DIR det_res_dir = os.path.join(det_res_dir, dataset) det_algr = mcfg.DETCTION.ALG det_im_dir = os.path.join(det_res_dir, det_algr) video_fps = mcfg.DEMO.VIDEO_FPS ##in local disk(transfer to phoenix later) data_dir = mcfg.DATA.DATA_DIR imgset_path = mcfg.DATA.IMGSET = 'MOTdevkit2016/MOT2016/ImageSets/Main/val.txt' imgset_path = os.path.join(data_dir, imgset_path) im_ext = mcfg.DATA.IMGEXT = '.jpg' video_demo_dir = os.path.join(det_res_dir, 'video_demo') if not os.path.exists(video_demo_dir): create_dir(video_demo_dir) with open(imgset_path) as f: im_names = [x.strip() for x in f.readlines()] f.close im_names = im_names ##video_demo_dir=os.path.join('/mnt/phoenix_fastdir/experiments/detection/MOT','video_demo') im_seq_to_video(det_algr, det_im_dir, im_names, im_ext, video_demo_dir, video_fps)
def vis_proposals_multi_instances(proposal_algr_dir, det_proposals_folder, im, im_name, bboxes, masks, labels): print '==============================vis_proposals===========================================' vis_im = im.copy() im_width = im.shape[1] im_height = im.shape[0] cmap = color_map() ## color map base_im_name = im_name vis_det_dir = os.path.join(proposal_algr_dir, det_proposals_folder) vis_seg_dir = vis_det_dir ## det & seg in the same folder create_dir(vis_det_dir) print '==========================vis proposals=================================' print 'im_name:', im_name print 'im_width:', im_width print 'im_height:', im_height print 'len(masks):', len(masks) print 'bboxes.shape:', bboxes.shape print 'seg_im_ext:', seg_im_ext print 'vis_det_dir:', vis_det_dir vis_im_seg = vis_im for b_id in xrange( 0, len(bboxes)): ## here obj_id is actually the index(of the array) bbox = bboxes[b_id] x1 = int(round(bbox[0])) y1 = int(round(bbox[1])) x2 = int(round(bbox[2])) y2 = int(round(bbox[3])) x1 = np.min((im_width - 1, np.max((0, x1)))) y1 = np.min((im_height - 1, np.max((0, y1)))) x2 = np.min((im_width - 1, np.max((0, x2)))) y2 = np.min((im_height - 1, np.max((0, y2)))) w = x2 - x1 + 1 h = y2 - y1 + 1 ##object id and assign color label = labels[b_id] color = cmap[label] colo = np.array((int(color[0]), int(color[1]), int(color[2]))) # ##'----------------------------------Mask part------------------------------------------------' # # mask = masks[b_id, :, :] #mask.shape=(28,28) # # mask = cv2.resize(mask, (int(w), int(h)), interpolation=cv2.INTER_LINEAR) #bilinear interpolation # mask[mask >= thresh_mask] = 1 # mask[mask < thresh_mask] = 0 mask = masks[b_id] ###===============================per-person visualization======================================= if vis_mask_flag: label_id_fg = (mask >= thresh_mask) label_mask_t = np.zeros((h, w, 3), dtype=np.uint8) label_im_box = im[y1:y2 + 1, x1:x2 + 1, :] label_mask_t[:, :, :] = vis_im_seg[ y1:y2 + 1, x1:x2 + 1, :] # copy the proposal region from the color image label_mask_t[label_id_fg, 0] = colo[0] label_mask_t[label_id_fg, 1] = colo[1] label_mask_t[label_id_fg, 2] = colo[2] cv2.addWeighted(label_mask_t, alpha, label_im_box, 1 - alpha, 0, label_mask_t) vis_im_seg[y1:y2 + 1, x1:x2 + 1, :] = label_mask_t ##cv2.imwrite(vis_label_mask_path,label_mask_t) ##cv2.imwrite(vis_label_mask_path,vis_im_seg) ##cv2.imshow('label_mask',label_mask_t) ##cv2.waitKey(-1) cv2.rectangle(vis_im, (x1, y1), (x2, y2), (colo), mid_line_width) font = cv2.FONT_HERSHEY_SIMPLEX vis_im_path = os.path.join(vis_det_dir, im_name + im_ext) print 'vis_im_path:', vis_im_path ##cv2.imshow('det_proposal', vis_im) cv2.imwrite(vis_im_path, vis_im) #complete annotation
def get_mot_gt_path(mot_data_dir): dets_gt_dir = os.path.join(mot_data_dir, 'gt') create_dir(dets_gt_dir) dets_gt_path = os.path.join(dets_gt_dir, 'gt.txt') return dets_gt_path
def get_bmfsets_path(imgsets_dir, set_name): imgsets_main_dir = os.path.join(imgsets_dir, 'Bmf') create_dir(imgsets_main_dir) bmfsets_path = os.path.join(imgsets_main_dir, set_name + bmfsets_file_ext) return bmfsets_path
def get_ppmimgs_dir(data_dir): ppmimgs_dir = os.path.join(data_dir, ppmimgs_folder) create_dir(ppmimgs_dir) return ppmimgs_dir
def get_imgsets_path(imgsets_dir, set_prop): imgsets_main_dir = os.path.join(imgsets_dir, 'Main') create_dir(imgsets_main_dir) imgsets_path = os.path.join(imgsets_main_dir, set_prop + imgsets_file_ext) return imgsets_path
def get_vis_dir_info(vis_folder): track_mask_dir=os.path.join(seg_res_dir,track_mask_folder) vis_mask_dir=os.path.join(track_mask_dir,vis_folder) create_dir(vis_mask_dir) return vis_mask_dir
def get_jpgimgs_dir(data_dir): jpgimgs_dir = os.path.join(data_dir, jpgimgs_folder) create_dir(jpgimgs_dir) return jpgimgs_dir
def get_data_dir(devkit_dir, dataset_name): data_dir = os.path.join(devkit_dir, dataset_name) create_dir(data_dir) return data_dir
def get_imgnet_devkit_dir(f_year): imgnet_devkit_dir = os.path.join(data_dir, upper_mot + 'devkit' + f_year) create_dir(imgnet_devkit_dir) return imgnet_devkit_dir
jpgdir_path = os.path.join(data_dir, jpgdir) ##(2) point tracking track_res_dir = mcfg.PTRACK.RES_DIR frame_interval = mcfg.PTRACK.FRAME_INTER sample_rate = mcfg.PTRACK.SAMPLE_RATE sub_dir_name = str(frame_interval) + 'frm_' + str(sample_rate) + 'pt' point_mat_path = os.path.join(track_res_dir, sub_dir_name, 'pt_mat.mat') label_mat_path = os.path.join(track_res_dir, sub_dir_name, 'lab_mat.mat') ##(3) proposals prop_res_dir = mcfg.PROPOSAL.RES_DIR ## result directory vis_dir = os.path.join(track_res_dir, sub_dir_name, 'per_person') create_dir(vis_dir) ##at present, mainly focus on large objects large_obj_dir = os.path.join(vis_dir, 'large_person') small_obj_dir = os.path.join(vis_dir, 'small_person') create_dir(large_obj_dir) create_dir(small_obj_dir) size_thre = mcfg.PTRACK.OBJECT_SIZE_THRESHOLD set_name, shift_num, end_frame, im_names = load_seq_info(imgset_path) rgb_ims = load_color_images(jpgdir_path, im_names, im_ext) prop_arr = load_proposals(prop_res_dir, set_name) im_width = rgb_ims[0].shape[1]
def get_imgsets_dir(data_dir): imgsets_dir = os.path.join(data_dir, imgsets_folder) create_dir(imgsets_dir) return imgsets_dir
im=cv2.imread(im_path1) cv2.imwrite(im_path2,im) print 'convert jpg to ppm...' if __name__ == '__main__': data_dir=mcfg.DATA.DATA_DIR imgset=mcfg.DATA.IMGSET_TRAIN jpg_dir=mcfg.DATA.JPGDIR ppm_dir='MOTdevkit2017/MOT2017/PPMImages' im_ext=mcfg.DATA.IMGEXT imgset=os.path.join(data_dir,imgset) jpg_dir=os.path.join(data_dir,jpg_dir) ppm_dir=os.path.join(data_dir,ppm_dir) create_dir(ppm_dir) im_names=load_txt_to_strarr(imgset) im_names=im_names[:600] ##MOT17-02 ##print im_names print 'im_names:', im_names ''' set_name='MOT17-02' bmf_dir='/home/uni/Lab/projects/C++/trackingCPU' bmf_path=os.path.join(bmf_dir,set_name+'.bmf') tmp_arr=[] for im_name in im_names: im_name=im_name+'.ppm'