diff --git a/mmdet/models/bbox_heads/bbox_head.py b/mmdet/models/bbox_heads/bbox_head.py index 5c54828c393d55f97215385093b1311e45e01840..6188fb8eaf46ed29c731d35c6fb06444be232d56 100644 --- a/mmdet/models/bbox_heads/bbox_head.py +++ b/mmdet/models/bbox_heads/bbox_head.py @@ -152,7 +152,10 @@ class BBoxHead(nn.Module): bboxes[:, [1, 3]].clamp_(min=0, max=img_shape[0] - 1) if rescale: - bboxes /= scale_factor + if isinstance(scale_factor, float): + bboxes /= scale_factor + else: + bboxes /= torch.from_numpy(scale_factor).to(bboxes.device) if cfg is None: return bboxes, scores diff --git a/mmdet/models/detectors/cascade_rcnn.py b/mmdet/models/detectors/cascade_rcnn.py index 9bd0207df4f4d0f474a443aa8230bbf8b5895546..7ecbdff74c2923aab74ce5a511dc7f6457a5df86 100644 --- a/mmdet/models/detectors/cascade_rcnn.py +++ b/mmdet/models/detectors/cascade_rcnn.py @@ -323,9 +323,16 @@ class CascadeRCNN(BaseDetector, RPNTestMixin): mask_classes = self.mask_head[-1].num_classes - 1 segm_result = [[] for _ in range(mask_classes)] else: - _bboxes = ( - det_bboxes[:, :4] * - scale_factor if rescale else det_bboxes) + if isinstance(scale_factor, float): # aspect ratio fixed + _bboxes = ( + det_bboxes[:, :4] * + scale_factor if rescale else det_bboxes) + else: + _bboxes = ( + det_bboxes[:, :4] * + torch.from_numpy(scale_factor).to(det_bboxes.device) + if rescale else det_bboxes) + mask_rois = bbox2roi([_bboxes]) aug_masks = [] for i in range(self.num_stages):