报错截图
一般报错原因
- 常见出错原因有三点:
- 该报错的Module没有使用
register_module()
进行注册; - 没有在
_init_.py
的__all__
中注册; - 该模块所在的mmdet/mmdet3d/mmseg没有被正确引用(意味着可能安装了其他版本的库,而没有调该库)。
- 该报错的Module没有使用
非常少见的巨型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的类型与mmdet
和mmseg
并不通用!!以后务必需要注意!