Skip to content

[Bug] ValueError: need at least one array to concatenate #3090

Open
@xiaolonghao

Description

@xiaolonghao

Prerequisite

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions