diff --git a/mmdet3d/models/task_modules/samplers/iou_neg_piecewise_sampler.py b/mmdet3d/models/task_modules/samplers/iou_neg_piecewise_sampler.py index 0f17ff7298..c249471052 100644 --- a/mmdet3d/models/task_modules/samplers/iou_neg_piecewise_sampler.py +++ b/mmdet3d/models/task_modules/samplers/iou_neg_piecewise_sampler.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +import math + import torch from mmdet3d.registry import TASK_UTILS @@ -74,9 +76,11 @@ def _sample_neg(self, assign_result, num_expected, **kwargs): # if the numbers of negative samplers in previous # pieces are less than the expected number, extend # the same number in the current piece. - piece_expected_num = int( - num_expected * - self.neg_piece_fractions[piece_inds]) + extend_num + piece_expected_num = min( + num_expected, + math.ceil(num_expected * + self.neg_piece_fractions[piece_inds]) + + extend_num) min_iou_thr = self.neg_iou_thr[piece_inds + 1] max_iou_thr = self.neg_iou_thr[piece_inds] piece_neg_inds = torch.nonzero(