def __call__(self, data): # Unpack data img, boxes = data # Convert xywh to xyxy # boxes = np.array(boxes) # boxes[:, 1:] = xywh2xyxy_np(boxes[:, 1:]) #no need to do this # Convert bounding boxes to imgaug bounding_boxes = BoundingBoxesOnImage( [BoundingBox(*box[1:], label=box[0]) for box in boxes], shape=img.shape) # Apply augmentations img, bounding_boxes = self.augmentations(image=img, bounding_boxes=bounding_boxes) # Clip out of image boxes bounding_boxes = bounding_boxes.clip_out_of_image() return img, bounding_boxes
def __call__(self, data): # Unpack data img, boxes = data # Convert xywh to xyxy boxes = np.array(boxes) boxes[:, 1:] = xywh2xyxy_np(boxes[:, 1:]) # Convert bounding boxes to imgaug bounding_boxes = BoundingBoxesOnImage( [BoundingBox(*box[1:], label=box[0]) for box in boxes], shape=img.shape) # Apply augmentations img, bounding_boxes = self.augmentations( image=img, bounding_boxes=bounding_boxes) # Clip out of image boxes bounding_boxes = bounding_boxes.clip_out_of_image() # Convert bounding boxes back to numpy boxes = np.zeros((len(bounding_boxes), 5)) for box_idx, box in enumerate(bounding_boxes): # Extract coordinates for unpadded + unscaled image x1 = box.x1 y1 = box.y1 x2 = box.x2 y2 = box.y2 # Returns (x, y, w, h) boxes[box_idx, 0] = box.label boxes[box_idx, 1] = ((x1 + x2) / 2) boxes[box_idx, 2] = ((y1 + y2) / 2) boxes[box_idx, 3] = (x2 - x1) boxes[box_idx, 4] = (y2 - y1) return img, boxes