Ubuntu下基于Pytorch的Faster-rcnn环境部署

Faster-rcnn代码下载地址,根据作者要求执行此代码需要Pytorch1.0+Python3.6+CUDA 8.0 or higher,我的设备环境如下:

Ubuntu18.04+Anaconda3+Pycharm+GTX1650(4G显存)+CUDA10.0+CUDNN+Pytorch1.0.0+Python3.6

第一步:安装Pycharm和Anaconda

具体安装步骤可以参看win10下的安装方法,过程很相似,不详细介绍。

第二步:安装CUDA10.0和CUDNN

具体安装步骤可以参看我的另一篇博客,安装过程基本相同。windows与linux都可以并存多个版本的CUDA,我们只要把环境变量设置为想要使用的那个版本即可。更多关于多版本CUDA并存的介绍,详见此博客

第三步:搭建虚拟环境

我们在第一步安装anaconda的时候已经将conda默认的下载源换成了清华源。这里我们需要对pip也进行换源,将其换成豆瓣源。

在终端输入如下代码:主目录下新建一个名字为pip的隐藏文件夹,并在此文件夹内新建一个名字为pip.conf的文件

mkdir ~/.pip
cd ~/.pip
gedit pip.conf

在pip.conf文件中添加如下代码,保存并退出,换源完毕。

[global] 
index-url = https://pypi.douban.com/simple 
[install] 
trusted-host=pypi.douban.com

打开终端输入以下命令,创建一个名字为pytorch1.0的虚拟环境,python使用3.6版本

conda create -n pytorch1.0 python=3.6

创建完成后,激活该虚拟环境

conda activate pytorch1.0

安装Pytorch1.0.0

conda install pytorch=1.0.0

安装torchvision0.2.0

conda install torchvision=0.2.0

安装其它依赖包。进入requirements.txt所在目录,执行如下命令:

pip install -r requirements.txt

注意:scipy要安装1.2版本,否则后面训练的时候可能会出现ImportError: cannot import name 'imread'错误。requirements.txt修改如下图所示:

第四步:准备训练所需的数据集

下载voc2007数据集

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

将上面三个压缩包解压到同一个文件夹内,命名为:VOCdevkit

tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

VOCdevkit应该具有下面所示的文件结构

$VOCdevkit/                           # development kit
$VOCdevkit/VOCcode/                   # VOC utility code
$VOCdevkit/VOC2007                    # image sets, annotations, etc.
# ... and several other directories ...

在Faster-rcnn代码文件夹内创建一个名字为data的新文件夹,并在data文件夹内创建voc数据集的软链接

cd $FRCN_ROOT/data
ln -s $VOCdevkit VOCdevkit2007

注意:$VOCdevkit代表VOCdevkit文件夹完整的绝对路径,运行命令后将在data文件夹下生成一个名字为VOCdevkit2007的软连接。

第五步:准备预训练模型

在data文件夹下新建一个文件夹,名字为:pretrained_model,在此文件夹内存放预先下载好的预训练模型。以vgg16为例,名称格式为:vgg16_caffe.pth(预训练模型的名称格式可以查看Faster-rcnn作者源码中的要求)。

如果我们没有下载好的预训练模型,那么只需将源码中加载vgg16网络时的“pretrained”参数设置为False即可。

第六步:编译setup.py文件

由于在NMS、Roi Pooling、Roi Align中使用了CUDA加速,因此需要使用以下命令编译cuda依赖项:

cd lib
python setup.py build develop

更多关于setup.py的介绍参考此三篇文章:博文1博文2博文3

第七步:替换/lib/pycocotools中的文件

下载cocoapi包,解压并编译/cocoapi-master/PythonAPI路径下的setup.py文件,命令如下:

python setup.py build_ext --inplace

编译完成后,复制/cocoapi-master/PythonAPI/pycocotools路径下的所有文件到源码的/lib/pycocotools路径下。

注意:一定要在上面创建的pytorch1.0虚拟环境下执行该命令。因为该命令会生成一系列的文件,其中有一个文件名为:_mask.cpython-36m-x86_64-linux-gnu.so,36m代表适用于python3.6版本(pytorch1.0环境内的python版本)。如果在一个python为3.7版本的虚拟环境中执行该命令,则会生成名为:_mask.cpython-37m-x86_64-linux-gnu.so的文件。

参考博文:参考博文1参考博文2

第八步:创建run.sh文件并开始训练

在代码主目录下创建run.sh文件,并输入以下内容。执行该文件即可开始训练

CUDA_VISIBLE_DEVICES=0 python trainval_net.py \
                   --dataset pascal_voc --net vgg16 \
                   --bs 1  \
                   --cuda

总结

1、所有操作都要基于第三步创建的pytorch1.0虚拟环境进行,否则会出错。

2、如果不执行第七步,运行run.sh文件时会提示ImportError: cannot import name '_mask'错误。

3、之前在github上下载过另一版本的faster-rcnn源码,需要pytorch0.4.1。配置了好久,最后训练的时候显示下图中的错误,一直无法解决。

 

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的路飞桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值