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