Description
Prerequisite
- I have searched Issues and Discussions but cannot get the expected help.
- I have read the FAQ documentation but cannot get the expected help.
- The bug has not been fixed in the latest version (dev-1.x) or latest version (dev-1.0).
Task
I'm using the official example scripts/configs for the officially supported tasks/models/datasets.
Branch
main branch https://github.com/open-mmlab/mmdetection3d
Environment
mmdetection3d\mmdet3d\evaluation\functional\kitti_utils\eval.py中函数get_split_parts出现bug,例如num=995,num_part=200时候,会出现remain_num=0的情况,这种情况,会导致报错,我改为
def get_split_parts(num, num_part):
if num % num_part == 0:
same_part = num // num_part
return [same_part] * num_part
else:
same_part = num // (num_part - 1)
remain_num = num % (num_part - 1)
if remain_num:
return [same_part] * (num_part - 1) + [remain_num]
return [same_part] * (num_part - 1)
Reproduces the problem - code sample
mmdetection3d\mmdet3d\evaluation\functional\kitti_utils\eval.py中函数get_split_parts出现bug,例如num=995,num_part=200时候,会出现remain_num=0的情况,这种情况,会导致报错,我改为
def get_split_parts(num, num_part):
if num % num_part == 0:
same_part = num // num_part
return [same_part] * num_part
else:
same_part = num // (num_part - 1)
remain_num = num % (num_part - 1)
if remain_num:
return [same_part] * (num_part - 1) + [remain_num]
return [same_part] * (num_part - 1)
Reproduces the problem - command or script
python tools/train.py configs/point_rcnn/point-rcnn_8xb2_kitti-3d-3class.py
Reproduces the problem - error message
File "/root/miniconda3/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1777, in train
model = self.train_loop.run() # type: ignore
File "/root/miniconda3/lib/python3.8/site-packages/mmengine/runner/loops.py", line 105, in run
self.runner.val_loop.run()
File "/root/miniconda3/lib/python3.8/site-packages/mmengine/runner/loops.py", line 382, in run
metrics = self.evaluator.evaluate(len(self.dataloader.dataset))
File "/root/miniconda3/lib/python3.8/site-packages/mmengine/evaluator/evaluator.py", line 79, in evaluate
_results = metric.evaluate(size)
File "/root/miniconda3/lib/python3.8/site-packages/mmengine/evaluator/metric.py", line 133, in evaluate
metrics = self.compute_metrics(results) # type: ignore
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/metrics/kitti_metric.py", line 205, in compute_metrics
ap_dict = self.kitti_evaluate(
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/metrics/kitti_metric.py", line 244, in kitti_evaluate
ap_result_str, ap_dict = kitti_eval(
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/functional/kitti_utils/eval.py", line 725, in kitti_eval
mAP40_3d, mAP40_aos = do_eval(gt_annos, dt_annos,
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/functional/kitti_utils/eval.py", line 608, in do_eval
ret = eval_class(
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/functional/kitti_utils/eval.py", line 480, in eval_class
rets = calculate_iou_partly(dt_annos, gt_annos, metric, num_parts)
File "/root/autodl-tmp/mmdetection3d/mmdet3d/evaluation/functional/kitti_utils/eval.py", line 366, in calculate_iou_partly
dt_boxes = np.concatenate([a['bbox'] for a in dt_annos_part], 0)
File "<array_function internals>", line 180, in concatenate
ValueError: need at least one array to concatenate
Additional information
No response