From c2e3d2098a6734626b18be5c7d786d269aa7ae23 Mon Sep 17 00:00:00 2001 From: Can Zhao Date: Wed, 29 Jun 2022 19:42:29 -0400 Subject: [PATCH 1/2] debug device conflict Signed-off-by: Can Zhao --- monai/data/box_utils.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/monai/data/box_utils.py b/monai/data/box_utils.py index 47e7b6911d..678d57884e 100644 --- a/monai/data/box_utils.py +++ b/monai/data/box_utils.py @@ -959,25 +959,23 @@ def spatial_crop_boxes( - ``keep``, it indicates whether each box in ``boxes`` are kept when ``remove_empty=True``. """ - roi_start_torch, *_ = convert_data_type( - data=roi_start, output_type=torch.Tensor, dtype=torch.int16, wrap_sequence=True - ) - roi_end_torch, *_ = convert_to_dst_type(src=roi_end, dst=roi_start_torch, wrap_sequence=True) - roi_end_torch = torch.maximum(roi_end_torch, roi_start_torch) - # convert numpy to tensor if needed boxes_t, *_ = convert_data_type(deepcopy(boxes), torch.Tensor) # convert to float32 since torch.clamp_ does not support float16 boxes_t = boxes_t.to(dtype=COMPUTE_DTYPE) + roi_start_t, *_ = convert_to_dst_type(src=roi_start, dst=boxes_t, wrap_sequence=True).to(torch.int16) + roi_end_t, *_ = convert_to_dst_type(src=roi_end, dst=boxes_t, wrap_sequence=True).to(torch.int16) + roi_end_t = torch.maximum(roi_end_t, roi_start_t) + # makes sure the bounding boxes are within the patch spatial_dims = get_spatial_dims(boxes=boxes, spatial_size=roi_end) for axis in range(0, spatial_dims): - boxes_t[:, axis].clamp_(min=roi_start_torch[axis], max=roi_end_torch[axis] - TO_REMOVE) - boxes_t[:, axis + spatial_dims].clamp_(min=roi_start_torch[axis], max=roi_end_torch[axis] - TO_REMOVE) - boxes_t[:, axis] -= roi_start_torch[axis] - boxes_t[:, axis + spatial_dims] -= roi_start_torch[axis] + boxes_t[:, axis].clamp_(min=roi_start_t[axis], max=roi_end_t[axis] - TO_REMOVE) + boxes_t[:, axis + spatial_dims].clamp_(min=roi_start_t[axis], max=roi_end_t[axis] - TO_REMOVE) + boxes_t[:, axis] -= roi_start_t[axis] + boxes_t[:, axis + spatial_dims] -= roi_start_t[axis] # remove the boxes that are actually empty if remove_empty: From 6ed969c9cef16818064f25d8a1e38e17351cdf11 Mon Sep 17 00:00:00 2001 From: Can Zhao Date: Wed, 29 Jun 2022 19:48:12 -0400 Subject: [PATCH 2/2] debug device conflict Signed-off-by: Can Zhao --- monai/data/box_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/data/box_utils.py b/monai/data/box_utils.py index 678d57884e..65e5a06c74 100644 --- a/monai/data/box_utils.py +++ b/monai/data/box_utils.py @@ -965,8 +965,8 @@ def spatial_crop_boxes( # convert to float32 since torch.clamp_ does not support float16 boxes_t = boxes_t.to(dtype=COMPUTE_DTYPE) - roi_start_t, *_ = convert_to_dst_type(src=roi_start, dst=boxes_t, wrap_sequence=True).to(torch.int16) - roi_end_t, *_ = convert_to_dst_type(src=roi_end, dst=boxes_t, wrap_sequence=True).to(torch.int16) + roi_start_t = convert_to_dst_type(src=roi_start, dst=boxes_t, wrap_sequence=True)[0].to(torch.int16) + roi_end_t = convert_to_dst_type(src=roi_end, dst=boxes_t, wrap_sequence=True)[0].to(torch.int16) roi_end_t = torch.maximum(roi_end_t, roi_start_t) # makes sure the bounding boxes are within the patch