RuntimeError: operation does not have an identity.

mmdetection在训练模型时报错

2021-05-31 11:49:32,954 - mmdet - INFO - Start running, host: root@iZ2zef8ry2enmkih0q7dlvZ, work_dir: /home/mmdetection/work_dirs/faster_rcnn_r50_fpn_1x_voc0712
2021-05-31 11:49:32,955 - mmdet - INFO - workflow: [('train', 1)], max: 12 epochs
Traceback (most recent call last):
  File "tools/train.py", line 188, in <module>
    main()
  File "tools/train.py", line 177, in main
    train_detector(
  File "/home/mmdetection/mmdet/apis/train.py", line 170, in train_detector
    runner.run(data_loaders, cfg.workflow)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/runner/epoch_based_runner.py", line 125, in run
    epoch_runner(data_loaders[i], **kwargs)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/runner/epoch_based_runner.py", line 50, in train
    self.run_iter(data_batch, train_mode=True, **kwargs)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/runner/epoch_based_runner.py", line 29, in run_iter
    outputs = self.model.train_step(data_batch, self.optimizer,
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/parallel/data_parallel.py", line 67, in train_step
    return self.module.train_step(*inputs[0], **kwargs[0])
  File "/home/mmdetection/mmdet/models/detectors/base.py", line 237, in train_step
    losses = self(**data)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/runner/fp16_utils.py", line 95, in new_func
    return old_func(*args, **kwargs)
  File "/home/mmdetection/mmdet/models/detectors/base.py", line 171, in forward
    return self.forward_train(img, img_metas, **kwargs)
  File "/home/mmdetection/mmdet/models/detectors/two_stage.py", line 129, in forward_train
    rpn_losses, proposal_list = self.rpn_head.forward_train(
  File "/home/mmdetection/mmdet/models/dense_heads/base_dense_head.py", line 58, in forward_train
    proposal_list = self.get_bboxes(*outs, img_metas, cfg=proposal_cfg)
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/runner/fp16_utils.py", line 182, in new_func
    return old_func(*args, **kwargs)
  File "/home/mmdetection/mmdet/models/dense_heads/anchor_head.py", line 578, in get_bboxes
    result_list = self._get_bboxes(mlvl_cls_scores, mlvl_bbox_preds,
  File "/home/mmdetection/mmdet/models/dense_heads/rpn_head.py", line 184, in _get_bboxes
    dets, keep = batched_nms(mlvl_proposals, mlvl_scores, mlvl_ids,
  File "/root/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmcv/ops/nms.py", line 269, in batched_nms
    max_coordinate = boxes.max()
RuntimeError: operation does not have an identity.

这个错误信息表明mmcv库中的batched_nms函数存在问题。具体来说,错误信息指出该操作没有标识。当batched_nms函数的输入张量为空或包含无效值时,就会出现此错误。

要解决此问题,需要确保batched_nms函数的输入张量,并确保它不为空并包含有效值。
可能的解决方式:尝试将mmcv库更新到最新版本。

operation does not have an identity
检查下你的id