Beispiel #1
0
def verify_gt_annots(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,write_res_flag=False):
    print '===========================m1.verify gt annots============================'
    ## switch 1: for gt
    # ## 5> postprocessing masks
    gt_boxes=gt_boxes.astype(int)
    gt_list_masks=masks_align_boxes(gt_masks,gt_boxes)   ## tailor masks    
    gt_masks=np.asarray(gt_list_masks)
    # ## 6> verify the gt_annots and measurement algorithm 
    prec,rec,tp_cnt,fp_cnt,miss_gt_cnt=get_precision_recall(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks) 
    ave_mask_iou_arr,ave_inst_iou=get_average_maskiou(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks)

    if debug_flag:
        print 'tp_cnt:', tp_cnt
        print 'fp_cnt:', fp_cnt
        print 'miss_gt_cnt:', miss_gt_cnt
        print 'prec:', prec
        print 'rec:', rec
        print 'ave_mask_iou_arr:', ave_mask_iou_arr
        print 'ave_inst_iou:', ave_inst_iou

    ## write metrics in local disk
    if write_res_flag:
        metric_dir=get_metric_dir()
        gt_metric_dir=os.path.join(metric_dir,'gt.txt')   
        res_content='-------------------------gt----------------------------'
        res_content+='\n'+'obj_ids:'+str(np.sort(np.unique(gt_obj_ids)))
        res_content+='\n'+'tp_cnt:'+str(tp_cnt)
        res_content+='\n'+'fp_cnt:'+str(fp_cnt)
        res_content+='\n'+'miss_gt_cnt:'+str(miss_gt_cnt)
        res_content+='\n'+'prec:'+str(prec)
        res_content+='\n'+'rec:'+str(rec)
        res_content+='\n'+'ave_mask_iou_arr:'+str(ave_mask_iou_arr)
        res_content+='\n'+'ave_inst_iou:'+str(ave_inst_iou)
        save_verify_res(gt_metric_dir,res_content) 
Beispiel #2
0
def verify_ref_annots(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,ref_boxes,ref_masks,write_res_flag):
    print '===========================m3.verify refine annots============================'
    ## switch3: for refine one
    #  preprocessing gt annots
    gt_boxes=gt_boxes.astype(int)
    gt_list_masks=masks_align_boxes(gt_masks,gt_boxes)   ## tailor masks    
    gt_masks=np.asarray(gt_list_masks)
    
    # preprocessing corrup annots
    ref_boxes=ref_boxes.astype(int) 
    tailor_masks=masks_align_boxes(ref_masks,ref_boxes)
    tailor_masks=np.asarray(tailor_masks)

    # verify the corrup_annots and measurement algorithm 
    prec,rec,tp_cnt,fp_cnt,miss_gt_cnt=get_precision_recall(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,gt_frm_ids,gt_obj_ids,ref_boxes,tailor_masks) 
    ave_mask_iou_arr,ave_inst_iou=get_average_maskiou(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,gt_frm_ids,gt_obj_ids,ref_boxes,tailor_masks)
    
    if debug_flag:
        print 'prec:', prec
        print 'rec:', rec
        print 'ave_mask_iou_arr:', ave_mask_iou_arr
        print 'ave_inst_iou:', ave_inst_iou

    ## write metrics in local disk
    if write_res_flag:
        metric_dir=get_metric_dir()
        gt_metric_dir=os.path.join(metric_dir,'refine.txt')   
        res_content='-------------------------refine----------------------------'
        res_content+='\n'+'obj_ids:'+str(np.sort(np.unique(gt_obj_ids)))
        res_content+='\n'+'tp_cnt:'+str(tp_cnt)
        res_content+='\n'+'fp_cnt:'+str(fp_cnt)
        res_content+='\n'+'miss_gt_cnt:'+str(miss_gt_cnt)
        res_content+='\n'+'prec:'+str(prec)
        res_content+='\n'+'rec:'+str(rec)
        res_content+='\n'+'ave_mask_iou_arr:'+str(ave_mask_iou_arr)
        res_content+='\n'+'ave_inst_iou:'+str(ave_inst_iou)
        save_verify_res(gt_metric_dir,res_content)               
Beispiel #3
0
def get_enlarge_masks(track_mask_dir, cont_dets):
    ## mini_masks for ref-masks
    mini_masks = get_ref_masks(track_mask_dir, cont_dets)

    # transfer small masks(same size with boxes) to large masks(same size with color image)
    mask_num = len(mini_masks)
    masks = np.zeros((mask_num, im_height, im_width), dtype=int)

    ## mini_boxes
    dets = get_ref_dets(track_mask_dir, cont_dets)
    coords = dets[:, 2:6]
    boxes = coords_to_boxes(coords)
    boxes = boxes.astype(int)

    ## max_boxes
    max_boxes = np.zeros((mask_num, 4))
    max_boxes[:, 2] = im_width - 1
    max_boxes[:, 3] = im_height - 1
    max_boxes = max_boxes.astype(int)

    ## max_masks
    max_masks = masks_align_boxes(mini_masks, boxes, max_boxes)
    arr_masks = np.asarray(max_masks)
    return arr_masks
Beispiel #4
0
def cal_per_label(rgb_ims,im_names,forward_flows,backward_flows,filt_obj_ids,gt_dets,gt_masks,corrup_boxes,corrup_masks):
    print '===============calculate per label================='
    ## parameters
    start_frm_id=1 

    for f_obj_id in filt_obj_ids:
        print '---------------------------------------------',f_obj_id
        gt_masks_dir,corrup_masks_dir,pick_masks_dir=create_masks_dirs(f_obj_id)
        
        o_gt_dets,row_indexes=dets_filter_ids(gt_dets,[f_obj_id])

        o_gt_frm_ids,o_gt_obj_ids,o_gt_boxes=parse_dets1(o_gt_dets) 
        
        o_gt_masks=gt_masks[row_indexes]

        o_corrup_boxes=corrup_boxes[row_indexes]

        o_corrup_masks=corrup_masks[row_indexes]

        ## filter color images
        filt_indexes=o_gt_frm_ids-start_frm_id

        im_arr=np.asarray(rgb_ims)
        cur_ims=im_arr[filt_indexes]
        cur_im_names=im_names[filt_indexes]
        fw_flows=forward_flows[filt_indexes[:-1]]
        bw_flows=backward_flows[filt_indexes[:-1]]

        save_vis_masks(cur_ims,cur_im_names,gt_masks_dir,o_gt_masks,corrup_masks_dir,o_corrup_masks)  #v1

        if debug_flag:
            print 'o_gt_dets:', o_gt_dets
            print 'gt_masks_dir:',gt_masks_dir
            print 'corrup_masks_dir:', corrup_masks_dir
            print 'pick_masks_dir:', pick_masks_dir
            print 'o_gt_frm_ids:', o_gt_frm_ids

        #----------------------------------------------------------------------------------------
        ## prepare dataset for 'refine-masks' algorithm
        # preprocessing corrup_masks and corrup_boxes(corrup_dets): make masks has the same size with boxes
        o_corrup_boxes=o_corrup_boxes.astype(int) 
        tailor_masks=masks_align_boxes(o_corrup_masks,o_corrup_boxes)
        tailor_masks=np.asarray(tailor_masks)

        ## prepare (corrup) dets
        corrup_coords=boxes_to_coords(o_corrup_boxes)
        corrup_dets=o_gt_dets
        corrup_dets[:,2:6]=corrup_coords
        
        # 6> refine masks
        ##input: prop_arr,masks,obj_ids, forward_flows, backward_flows
        refine_masks(pick_masks_dir,rgb_ims,forward_flows,backward_flows,tailor_masks,corrup_dets)
        
        ref_dets=get_ref_dets(pick_masks_dir,corrup_dets)   ## verified
        # ref_masks=get_ref_masks(pick_masks_dir,corrup_dets)

        ref_masks=get_enlarge_masks(pick_masks_dir,corrup_dets)
        ref_coords=ref_dets[:,2:6]
        ref_boxes=coords_to_boxes(ref_coords)

        verify_ref_annots(gt_frm_ids,gt_obj_ids,gt_boxes,gt_masks,ref_boxes,ref_masks,write_res_flag)
# g_obj_masks=gt_masks[n_id]

# d_obj_ids=dt_obj_ids[n_id]  ## org
# d_obj_boxes=dt_boxes[n_id]
# d_obj_masks=dt_masks[n_id]

if __name__ == '__main__':
    print '=================tud_crossing_eval==============================='
    ## input1: gt_dets, gt_masks
    ##im_names=get_im_names()
    gt_dets = load_dets_new()
    gt_masks = load_masks_new()

    gt_frm_ids, gt_obj_ids, gt_boxes = parse_dets1(gt_dets)
    gt_boxes = gt_boxes.astype(int)
    gt_list_masks = masks_align_boxes(gt_masks, gt_boxes)  ## tailor masks
    gt_masks = np.asarray(gt_list_masks)

    ## input2: dt_dets, dt_masks
    dt_dets = load_dets_ref()
    dt_masks = load_masks_ref()
    dt_frm_ids, dt_obj_ids, dt_boxes = parse_dets1(dt_dets)

    dt_boxes = dt_boxes.astype(int)
    dt_list_masks = masks_align_boxes(dt_masks, dt_boxes)  ## tailor masks
    dt_masks = np.asarray(dt_list_masks)

    # if debug_flag:
    #     print 'gt_dets.shape:',gt_dets.shape
    #     print 'gt_masks.shape:', gt_masks[0].shape
    #     print 'gt_boxes:',gt_boxes.shape