【ImportError: cannot import name ‘deform_conv_cuda’ from ‘assets.ops.dcn’】

ImportError: cannot import name ‘deform_conv_cuda’ from ‘assets.ops.dcn’

在DBNet++的复现中,搭建好环境进行自己的数据集训练时,运行train.py文件,出现了报错。


这里出现问题是在DB-master\assets\ops\dcn文件夹下,出问题的主要语句是在dcn文件夹下的function中deform_conv.py和deform_pool.py里。
其中的from … import deform_conv_cuda
如下列请添加图片描述
deform_conv_cuda不能够正常调用,我在网上找到了这个问题出现的原因。
根因是mmdetection版本问题,在mmdetction github的issue中有对应的讨论。网址如下:

https://github.com/open-mmlab/mmdetection/issues/413#issuecomment-515299000

根据其中的高赞回答,我将解决方法锁定在

请添加图片描述
在DBNet模型训练的具体实现中,这要求我们cd到DB-master\assets\ops\dcn文件夹下,执行操作

python setup.py develop

但是这步运行又会出现如下报错

请添加图片描述
这步我搜索了很久,但是找不到直接关联的解决方法,大部分都是指向重新安装torch。但DBNet的环境安装应该是没有问题的,所以我开始找其他的解决办法。
重新回到问题的本质,问题出在deform_conv_cuda不能正常import,我又从github上其他的代码issue中寻找相关的问题,很快发现了下面这篇

https://github.com/MhLiao/DB/issues/298

请添加图片描述
该用户提到了c++代码,这也是该库不能直接调用的一个关键,而他后续提到的头部插入的代码AT_CHECK也是应和了上一个报错信息的显示,因此让我们到DB-master\assets\ops\dcn\src文件夹下,找到4个cpp文件(实际是2个cpp,2个cu)在它们的头部插入下述三行代码:

#ifndef AT_CHECK
#define AT_CHECK TORCH_CHECK
#endif

之后返回上一级文件夹DB-master\assets\ops\dcn,然后运行

python setup.py develop

这次能够顺利运行了,原本check的部分不会报错了(这里图有点不清晰,就不上图了)。当setup.py运行完毕,我们重新回到DBNet的复现,运行train.py开始我们的训练,能够正常运行了。

当然这个方法应该不只适用于DBNet,因为我在搜索问题的过程中看到了很多其他代码出现了与本文相同的问题语句,但是大家都知道csdn上全是复制粘贴,找的到问题但是很难找到解决方法。大部分的问题解决还是要通过github,尤其是自己复现代码时对应的源码的讨论区。
本方法主要还是关于mmdetction中from … import deform_conv_cuda的解决方法。

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
回答: 根据引用\[1\]和引用\[2\]的描述,出现这个错误的原因是在DB-master\assets\ops\dcn文件夹下的deform_conv.py和deform_pool.py文件中,无法正常导入deform_conv_cuda模块。这个问题可能是由于mmdetection版本不兼容导致的。根据引用\[2\]提供的信息,你可以在mmdetection的GitHub issue中找到相关的讨论和解决方法。你可以访问该网址以获取更多信息。另外,根据引用\[3\]的描述,重新安装torch可能是一种解决方法,但由于你的DBNet环境安装没有问题,你可以尝试寻找其他解决办法。你可以在GitHub上的其他代码issue中寻找相关的问题和解决方案。希望这些信息对你有帮助。 #### 引用[.reference_title] - *1* [DB使用的一些错误](https://blog.csdn.net/wuwei178/article/details/120542203)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【ImportError: cannot import name ‘deform_conv_cuda’ from ‘assets.ops.dcn’】](https://blog.csdn.net/JergalK/article/details/130198327)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值