| 192 | |
| 193 | |
| 194 | def load_label(label_path: str, img_size: tuple) -> dict: |
| 195 | labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 6) |
| 196 | h, w = img_size |
| 197 | # Normalized cewh to pixel xyxy format |
| 198 | labels = labels0.copy() |
| 199 | labels[:, 2] = w * (labels0[:, 2] - labels0[:, 4] / 2) |
| 200 | labels[:, 3] = h * (labels0[:, 3] - labels0[:, 5] / 2) |
| 201 | labels[:, 4] = w * (labels0[:, 2] + labels0[:, 4] / 2) |
| 202 | labels[:, 5] = h * (labels0[:, 3] + labels0[:, 5] / 2) |
| 203 | targets = {'boxes': [], 'labels': [], 'area': []} |
| 204 | num_boxes = len(labels) |
| 205 | |
| 206 | visited_ids = set() |
| 207 | for label in labels[:num_boxes]: |
| 208 | obj_id = label[1] |
| 209 | if obj_id in visited_ids: |
| 210 | continue |
| 211 | visited_ids.add(obj_id) |
| 212 | targets['boxes'].append(label[2:6].tolist()) |
| 213 | targets['area'].append(label[4] * label[5]) |
| 214 | targets['labels'].append(0) |
| 215 | targets['boxes'] = np.asarray(targets['boxes']) |
| 216 | targets['area'] = np.asarray(targets['area']) |
| 217 | targets['labels'] = np.asarray(targets['labels']) |
| 218 | return targets |
| 219 | |
| 220 | |
| 221 | def filter_pub_det(res_file, pub_det_file, filter_iou=False): |