解决TypeError: SwinTransformer: __init__() got an unexpected keyword argument ‘embed_dim‘

内容部分转自:原文链接
Swin transformer复现遇到的问题及解决方法
1)问题:TypeError: SwinTransformer: init() got an unexpected keyword argument ‘embed_dim’
分析全部报错:

Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 66, in build_from_cfg
    return obj_cls(**args)
TypeError: __init__() got an unexpected keyword argument 'embed_dim'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 66, in build_from_cfg
    return obj_cls(**args)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/detectors/cascade_rcnn.py", line 20, in __init__
    super(CascadeRCNN, self).__init__(
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/detectors/two_stage.py", line 32, in __init__
    self.backbone = build_backbone(backbone)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/builder.py", line 20, in build_backbone
    return BACKBONES.build(cfg)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 234, in build
    return self.build_func(*args, **kwargs, registry=self)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/cnn/builder.py", line 27, in build_model_from_cfg
    return build_from_cfg(cfg, registry, default_args)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 69, in build_from_cfg
    raise type(e)(f'{obj_cls.__name__}: {e}')
TypeError: SwinTransformer: __init__() got an unexpected keyword argument 'embed_dim'

我的目的是调用本地包的方法,但是从报错中我们看出,实际调用的是安装的同名外部包的方法。python包的法则不是如果模块名称冲突, 当前目录的模块优先于标准库导入. 因为 sys.path 中当前目录在最前面.吗?大部分情况下确实是这样,有两种情况下不是:
1、Python3 中有些特殊的库, 即使本地目录中有同名文件, 在导入时也不会被覆盖.比如 site, sys, os, builtins 等.原因是: 一些 内建模块(built-in) 以及 和Python运行时相关 的库名不会被覆盖
2、你的程序运行目录,并不包含你的本地包,而你单纯的认为包含,例如:
-A
–a
–b
–b.py
python b.py 此时你的工作目录在b下,所以找不到a,只能从安装的外部模块找
2)出现原因
本地包和安装的外部包重名,此处想调用的是本地包中的方法,借用原作一张图,就讲清楚了表现。
在这里插入图片描述
在不同目录下它寻找的mmdet包不同
在swin_master/(你的项目)目录下它会寻找该项目内本来包含的mmdet文件夹
但是在swin_master/tools文件夹下,它会寻找openmmlab环境中的mmdet

3)解决方法
1:
在终端输入

export PYTHONPATH=/home/techart/xyz/swin/swin_master
# (包含mmdet文件夹的你的项目路径)

设置环境变量
指定它去该目录下寻找mmdet包
最好本地包命名 xxx_custom

2:
还有一种解决方法,将configs/base/models/cascade_mask_rcnn_swin_fpn.py中embed_dim改成embed_dims,因为在swin mask-rcnn中引用了上述基础配置在这里插入图片描述
3(推荐):
如果觉得需要改动的点太多,更推荐运行作者的setup.py

python setup.py develop
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用和引用中提到的错误是因为在使用MaskRCNN和SwinTransformer时传入了一个未预期的关键字参数'embed_dim'。这可能是因为你使用的MaskRCNN和SwinTransformer的版本与其他依赖包的版本不兼容。为了解决这个问题,你可以尝试按照mmdetection官方网站的建议来安装相关的包,确保mmcv的版本与mmdetection的版本一致。这样可以解决与版本兼容性相关的问题。另外,引用中提到的错误是因为numpy的版本不兼容,可能与pycocotools库的使用有关。为了解决这个问题,你可以尝试更新numpy库的版本或者回滚numpy到与pycocotools兼容的版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [利用mmdetection训练自己数据集过程error解决汇总](https://blog.csdn.net/QQ992281036/article/details/126979053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Swin Transformer Object Detection代码复现采坑记录](https://blog.csdn.net/weixin_44777827/article/details/122310873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值