ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead. (SGG KERN中)

仅提供一个思路,相信很多厉害的人可以直接手撕。
这里是一个Faster-RCNN.pytorch的搭建 链接,感觉挺详细,不过这里不涉及这里边内容。

错误原因

已安装pytorch 版本和代码需要的版本不匹配,torch.utils.ffi是 pytorch 0.4版本的模块,在之后的版本中已经停止使用了。

网上我查到的解决方法

一个解决方法
解决一个问题之后又出现一个新问题,还不如直接装cuda9和torch0.4。

为什么要解决这个问题呢?

随着硬件的进步,很多显卡都没有很支持较高版本的pytorch,而且很多论文前期目标检测部分会直接使用Faster-RCNN,常用的Faster-RCNN是在torch0.4.0环境下,编译过程中就会出现torch.utils.ffi is deprecated,想跑一个经典代码,结果配置环境都配置不好,心态直接崩。放弃不是解决问题的方法,因为后期还是要面对的。既然降级意义不大,那就用更高版本的pytorch1.0.0下的Faster-RCNN。

个人环境说明

torch 1.6.0+cu101 python3.8

解决思路

利用pytorch1.0.0的编译结果,替换0.4.0中的RoIAlignFunction部分,不使用fpn中的RoIAlignFunction,使用roi_layer中的ROIAlign。

前期准备

pytorch1.0.0版源码:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
在这里插入图片描述

具体方法

  1. 将lib文件夹复制到KERN相应部分
  2. 执行下列语句,在lib/model下生成了_C.cpython-38-x86_64-linux-gnu
cd lib
python setup.py build develop
  1. 修改主代码中使用RoIAlignFunction部分
  • 导入模块部分
from lib.fpn.roi_align.functions.roi_align import RoIAlignFunction
改为
from lib.model.roi_layers import ROIAlign
  • 函数使用部分
feature_pool = RoIAlignFunction(self.pooling_size, self.pooling_size, spatial_scale=1 / 16)(features, rois)
改为
feature_pool = ROIAlign((self.pooling_size, self.pooling_size), 1.0 / 16.0, 0).forward(features, rois.view(-1, 5))

可能出现的错误

1.问题

 File "/home/xxx/lib/model/roi_layers/nms.py", line 3, in <module>
         from model import _C
 ImportError: cannot import name ‘_C’ from ‘model’

1.1解决方法

from model import _C
改为
from lib.model import _C
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值