Exemple #1
0
def export(mesh_file, agg_file, seg_file, label_map_file, type, output_file):
    label_map = util.read_label_mapping(opt.label_map_file,
                                        label_from='raw_category',
                                        label_to='nyu40id')
    mesh_vertices = util_3d.read_mesh_vertices(mesh_file)
    object_id_to_segs, label_to_segs = read_aggregation(agg_file)
    seg_to_verts, num_verts = read_segmentation(seg_file)
    label_ids = np.zeros(shape=(num_verts), dtype=np.uint32)  # 0: unannotated
    for label, segs in label_to_segs.items():
        label_id = label_map[label]
        for seg in segs:
            verts = seg_to_verts[seg]
            label_ids[verts] = label_id
    if type == 'label':
        util_3d.export_ids(output_file, label_ids)
    elif type == 'instance':
        instance_ids = np.zeros(shape=(num_verts),
                                dtype=np.uint32)  # 0: unannotated
        for object_id, segs in object_id_to_segs.items():
            for seg in segs:
                verts = seg_to_verts[seg]
                instance_ids[verts] = object_id
        util_3d.export_ids(output_file, label_ids * 1000 + instance_ids)
        #util_3d.export_instance_ids_for_eval(output_file, label_ids, instance_ids)
    else:
        raise
def export(mesh_file, agg_file, seg_file, label_map_file, label_map_file2, type, output_file):
    label_map = util.read_label_mapping(opt.label_map_file, label_from='raw_category', label_to='nyu40id')
    label_map2 = load_mapping(label_map_file2)
    label_map2[0] = 0
    mesh_vertices = util_3d.read_mesh_vertices(mesh_file)
    object_id_to_segs, label_to_segs = read_aggregation(agg_file)
    seg_to_verts, num_verts = read_segmentation(seg_file)
    label_ids = np.zeros(shape=(num_verts), dtype=np.uint32)     # 0: unannotated
    for label, segs in label_to_segs.items():
        label_id = label_map[label]
        for seg in segs:
            verts = seg_to_verts[seg]
            label_ids[verts] = label_id
    if type == 'label':
        util_3d.export_ids(output_file, label_ids)
    elif type == 'instance':
        instance_ids = np.zeros(shape=(num_verts), dtype=np.uint32)  # 0: unannotated
        for object_id, segs in object_id_to_segs.items():
            for seg in segs:
                verts = seg_to_verts[seg]
                instance_ids[verts] = object_id
        assert len(instance_ids) == len(label_ids)
        for i in range(len(instance_ids)):
            import ipdb
            ipdb.set_trace()
            instance_ids[i] = label_map2[label_ids[i]] * 1000 + instance_ids[i]
        util_3d.export_ids(output_file, instance_ids)
    else:
        raise
Exemple #3
0
def export(prediction_grid, world2grid, mesh_vertices, output_file):
    grid_dim = prediction_grid.shape
    grid_dim = np.flip(np.array(grid_dim), axis=0)
    num_verts = mesh_vertices.shape[0]
    ids = np.zeros(shape=(num_verts), dtype=np.uint32)
    vertices_grid = util_3d.transform_points(world2grid, mesh_vertices)
    for i in range(num_verts):
        v = vertices_grid[i]
        grid_coord = np.floor(v)
        # clamp to grid bounds
        grid_coord = np.clip(grid_coord, np.zeros((3)),
                             grid_dim - 1).astype(np.int32)
        ids[i] = prediction_grid[grid_coord[2], grid_coord[1], grid_coord[0]]
    util_3d.export_ids(output_file, ids)