Faster RCNN-PyTorch版本运行记录

Faster RCNN-PyTorch版本运行记录

笔者最近在学习《深度学习之PyTorch物体检测实战》,在运行第四章讲解的Faster RCNN时遇到了 一些问题,特此记录。
第四章使用的源码参考了jwyang/faster-rcnn.pytorchhttps://github.com/jwyang/faster-rcnn.pytorch的PyTorch复现工程,依赖项是

  • Python 2.7或者3.6
  • Pytorch 0.4.0
  • CUDA 8.0或者更高

准备工作:
1)首先从GitHub上下载本章所用的代码,地址如下:

git clone git@github.com:dongdonghy/Detection-PyTorch-Notebook.git

(2)然后创建data文件夹。

cd Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch && mkdir data

(3)下载PASCAL VOC 2012数据集,在data文件夹下创建软连接。

cd data && ln -s "your data directory" VOC2012

PASCAL VOC 数据集简介:
https://blog.csdn.net/mzpmzk/article/details/88065416
https://blog.csdn.net/zhangjunbob/article/details/52769381
(4)从下面网址下载预训练模型并放到data/pretrained_model/文件夹下。
https://www.dropbox.com/s/s3brpk0bdq60nyb/vgg16_caffe.pth?dl=0
(5)安装所需依赖包。

pip install -r requirements.txt

(6)根据自己的GPU型号,修改lib/make.sh文件中的CUDA_ARCH。
(7)由于在NMS与RoI Pooling中使用了CUDA进行加速,因此还需要对此进行编译。

cd lib && sh make.sh

笔者使用的是Pytorch 1.2.0,按照书中准备工作的流程在sh make.sh对CUDA进行编译时,报以下错误:

Compiling nms kernels by nvcc...
Traceback (most recent call last):
  File "build.py", line 4, in <module>
    from torch.utils.ffi import create_extension
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/utils/ffi/__init__.py", line 1, in <module>
    raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
Compiling roi pooling kernels by nvcc...
Traceback (most recent call last):
  File "build.py", line 4, in <module>
    from torch.utils.ffi import create_extension
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/utils/ffi/__init__.py", line 1, in <module>
    raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
Compiling roi align kernels by nvcc...
Traceback (most recent call last):
  File "build.py", line 4, in <module>
    from torch.utils.ffi import create_extension
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/utils/ffi/__init__.py", line 1, in <module>
    raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
Compiling roi crop kernels by nvcc...
Traceback (most recent call last):
  File "build.py", line 4, in <module>
    from torch.utils.ffi import create_extension
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/utils/ffi/__init__.py", line 1, in <module>
    raise ImportError("torch.utils.ffi is deprecated. Please use cpp extensions instead.")

这里首先参考了https://blog.csdn.net/ShuqiaoS/article/details/88420326,修改后又报了其他错误,如下:

Traceback (most recent call last):
  File "build.py", line 35, in <module>
    extra_objects=extra_objects
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 233, in __init__
    super(BuildExtension, self).__init__(*args, **kwargs)
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/setuptools/__init__.py", line 163, in __init__
    _Command.__init__(self, dist)
  File "/home/dengjie/anaconda3/envs/pytorch/lib/python3.7/distutils/cmd.py", line 57, in __init__
    raise TypeError("dist must be a Distribution instance")

后来才发现书中的pytorch版本是0.4,而我用的是1.2.0,笔者并不想回退pytorch版本,于是到原github地址寻找答案,也就是https://github.com/jwyang/faster-rcnn.pytorch
这个仓库里更新了对PyTorch1.0的支持,需要切换到pytorch1.0分支,具体在README.md中有写。切换分支后按照README.md中的流程,在编译CUDA依赖项时使用以下命令:

cd lib
python setup.py build develop

这时又报错:

python setup.py build developusage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: invalid command 'develop'

在repo中查询issue后找到解决办法
链接为https://github.com/django-extensions/django-extensions/issues/92#issuecomment-946641
具体如下:

将setup.py中的
from distutils.core import setup
修改为
from setuptools import setup

编译成功:

creating faster_rcnn.egg-info
writing faster_rcnn.egg-info/PKG-INFO
writing dependency_links to faster_rcnn.egg-info/dependency_links.txt
writing top-level names to faster_rcnn.egg-info/top_level.txt
writing manifest file 'faster_rcnn.egg-info/SOURCES.txt'
reading manifest file 'faster_rcnn.egg-info/SOURCES.txt'
writing manifest file 'faster_rcnn.egg-info/SOURCES.txt'
running build_ext
Creating /home/dengjie/anaconda3/envs/pytorch/lib/python3.7/site-packages/faster-rcnn.egg-link (link to .)
Adding faster-rcnn 0.0.0 to easy-install.pth file

Installed /home/dengjie/dengjie/Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch-1.0/faster-rcnn.pytorch/lib
Processing dependencies for faster-rcnn==0.0.0

或者使用以下写法:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

以上完成对Faster RCNN PyTorch运行的准备工作,代码运行之后再更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值