MMDet3D——报错解决:KeyError: ‘XXX is not in the models registry‘

报错截图

在这里插入图片描述

一般报错原因

  • 常见出错原因有三点:
    1. 该报错的Module没有使用register_module()进行注册;
    2. 没有在_init_.py__all__中注册;
    3. 该模块所在的mmdet/mmdet3d/mmseg没有被正确引用(意味着可能安装了其他版本的库,而没有调该库)。

非常少见的巨型BUG报错原因

这个报错非常恶心,因为问题并没有出现在以上三点中,下面将详说。

  • 配置如下所示:

在这里插入图片描述

  • 我在mmdet3d的pulgin中加入了该类,并用mmseg进行了SEGMENTORS的注册,但是依旧在报register的错误,苦思冥想了很久时间,突然想,是否mmdet3d有区别于mmdet和mmseg的build类型(例如SEGMENTORS)?

  • 于是我尝试将mmseg的SEGMENTORS更换为mmdet3d的SEGMENTORS

在这里插入图片描述

  • 果然,不报错了!(变成了ChannelMapper这个module的问题,说明MultiViewEncoderDecoder被正常build了)
    在这里插入图片描述

  • 于是,我直接连后边的ChannelMapper也改成了mmdet3d的NECKS,但是,关于ChannelMapper又有了诡异的情况,ChannelMapper默认又从mmseg中build,就意味着,其实,NECKS还是要从mmseg里import。。。

在这里插入图片描述

结语

  • 大无语,以后看报错使用build的类型就行。

  • 但是,这也说明了mmdet3d中build的类型与mmdetmmseg并不通用!!以后务必需要注意!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值