|
|
|
@ -975,17 +975,22 @@ class Format: |
|
|
|
|
1 if self.mask_overlap else nl, img.shape[0] // self.mask_ratio, img.shape[1] // self.mask_ratio |
|
|
|
|
) |
|
|
|
|
labels["masks"] = masks |
|
|
|
|
if self.normalize: |
|
|
|
|
instances.normalize(w, h) |
|
|
|
|
labels["img"] = self._format_img(img) |
|
|
|
|
labels["cls"] = torch.from_numpy(cls) if nl else torch.zeros(nl) |
|
|
|
|
labels["bboxes"] = torch.from_numpy(instances.bboxes) if nl else torch.zeros((nl, 4)) |
|
|
|
|
if self.return_keypoint: |
|
|
|
|
labels["keypoints"] = torch.from_numpy(instances.keypoints) |
|
|
|
|
if self.normalize: |
|
|
|
|
labels["keypoints"][..., 0] /= w |
|
|
|
|
labels["keypoints"][..., 1] /= h |
|
|
|
|
if self.return_obb: |
|
|
|
|
labels["bboxes"] = ( |
|
|
|
|
xyxyxyxy2xywhr(torch.from_numpy(instances.segments)) if len(instances.segments) else torch.zeros((0, 5)) |
|
|
|
|
) |
|
|
|
|
# NOTE: need to normalize obb in xywhr format for width-height consistency |
|
|
|
|
if self.normalize: |
|
|
|
|
labels["bboxes"][:, [0, 2]] /= w |
|
|
|
|
labels["bboxes"][:, [1, 3]] /= h |
|
|
|
|
# Then we can use collate_fn |
|
|
|
|
if self.batch_idx: |
|
|
|
|
labels["batch_idx"] = torch.zeros(nl) |
|
|
|
|