栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

mmdetection 报错 KeyError: ‘xxx is not in the models registry‘

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mmdetection 报错 KeyError: ‘xxx is not in the models registry‘

        我的经验适用于直接下载解压别人源码后无法运行的,如果是自己改写的代码,还是检查一下__init__.py里有没有import xxx,或者 __all__里有没有注册xxx。

        直入主题,先说解决方案:从python环境里卸载mmdet (pip uninstall mmdet -y),删除源程序目录,重新解压项目源代码 (unzip YourProject.zip)。进入项目目录 (cd YourProject),再编译打包整个项目 (python setup.py develop),这样就可以正常跑程序了。

        解释原因:

        今天第一次接触用mmdet写的项目,把别人的源码下载后想跑一下学习学习。结果怎么着都运行不起来,各种'xxx is not in the xxx registry',百度后说多运行几遍 python setup.py develop,可惜一点卵用都没有。

        最后我研究了一下setup.py里面的内容,最后明白了 setup.py 的作用是把整个项目源代码打包,作为一个新的python包供自己跑程序使用,这个包的名字就叫 mmdet,没错,原作者自己写了一个python项目,叫mmdet。

        那作为小白,很容易犯的一个错误就是说,我要跑的程序是用mmdet的,那我得先安装mmcv-full和mmdet,于是愉快的 pip install mmdet==1.18.1。然后解压源码,输入python tools/train.py  config.py  --no-validate,这时傻眼了:冒出一堆错误,各种未注册。但是看init.py里也清清楚楚的注册了,奇了怪了。

        最后我猜测,项目源码经过python setup.py develop打包后叫mmdet,我之前pip install的也叫mmdet,有可能是冲突了,从清华源安装的mmdet肯定不包括自定义的各种模块,自然也就全都未注册了。

        所以对症下药,把原来从清华源下载的mmdet卸载,删掉项目目录,重新解压项目源码,编译项目python setup.py develop,大功告成!

        至于为什么自己的项目源码要打包成mmdet这样的名字,个人理解,mmdet可以当做是一个可自由定制的python模块,自己有什么想法就实现之,注册后就往config里加,渐渐地,mmdet里包含的内容远不止原始的mmdet那么简单,就需要编译打包成自己的包,而恰好train.py 里面 import mmdet了,那就打包成mmdet呗。

        困扰了我一周的玄学问题,终于解决了,泪奔。

        补充,如果卸载重装mmdet还是会报错xxx未注册,在pycharm里写个xxx,然后右键选择Find in Files查看一下未注册的那个类在哪,比如我后来又报错 PartAttention 这个类未注册,查看发现它在mmcv/mmcv/ops里面注册的。

        但是我刚才只卸载重装了mmdet,mmcv没管,那很简单,把mmcv也卸载重装一次就好了。 先pip uninstall mmcv-full,pip uninstall mmcv,再cd mmcv,MMCV_WITH_OPS=1 pip install -e .

        这里需要注意的是,在Windows下MMCV_WITH_OPS=1是无法识别的,执行上述命令后安装的是mmcv(我们需要mmcv-full),等会训练时还是会报错No module named 'mmcv._ext'。因此,重装mmcv只能在Linux上安装,加上MMCV_WITH_OPS=1参数后就会安装mmcv-full,这样才能 正常训练。至于Windows下用什么参数让它安装成mmcv-full,我也没查到。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号