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

  • Post author:
  • Post category:其他


仅提供一个思路,相信很多厉害的人可以直接手撕。

这里是一个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



版权声明:本文为weixin_43873564原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。