| 104 | # ------------ Instance Utils ------------ # |
| 105 | |
| 106 | class Instance(object): |
| 107 | instance_id = 0 |
| 108 | label_id = 0 |
| 109 | vert_count = 0 |
| 110 | med_dist = -1 |
| 111 | dist_conf = 0.0 |
| 112 | |
| 113 | def __init__(self, mesh_vert_instances, instance_id): |
| 114 | if (instance_id == -1): |
| 115 | return |
| 116 | self.instance_id = int(instance_id) |
| 117 | self.label_id = int(self.get_label_id(instance_id)) |
| 118 | self.vert_count = int(self.get_instance_verts(mesh_vert_instances, instance_id)) |
| 119 | |
| 120 | def get_label_id(self, instance_id): |
| 121 | return int(instance_id // 1000) |
| 122 | |
| 123 | def get_instance_verts(self, mesh_vert_instances, instance_id): |
| 124 | return (mesh_vert_instances == instance_id).sum() |
| 125 | |
| 126 | def to_json(self): |
| 127 | return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) |
| 128 | |
| 129 | def to_dict(self): |
| 130 | dict = {} |
| 131 | dict["instance_id"] = self.instance_id |
| 132 | dict["label_id"] = self.label_id |
| 133 | dict["vert_count"] = self.vert_count |
| 134 | dict["med_dist"] = self.med_dist |
| 135 | dict["dist_conf"] = self.dist_conf |
| 136 | return dict |
| 137 | |
| 138 | def from_json(self, data): |
| 139 | self.instance_id = int(data["instance_id"]) |
| 140 | self.label_id = int(data["label_id"]) |
| 141 | self.vert_count = int(data["vert_count"]) |
| 142 | if ("med_dist" in data): |
| 143 | self.med_dist = float(data["med_dist"]) |
| 144 | self.dist_conf = float(data["dist_conf"]) |
| 145 | |
| 146 | def __str__(self): |
| 147 | return "("+str(self.instance_id)+")" |
| 148 | |
| 149 | def read_instance_prediction_file(filename, pred_path): |
| 150 | lines = open(filename).read().splitlines() |