Faster-rcnn 运行环境配置
文章目录
前言
本文主要记录下我在配置Faster-rcnn网络遇到的问题,欢迎大家交流指正。
一、下载源码
- https://github.com/jwyang/faster-rcnn.pytorch
- https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
注意:推荐下载pytorch-1.0版本,后续可以避免很多bug。
使用git命令下载,需要选择分支。
$ git clone -b 分支名 网址.git
二、配置环境
1.CUDA+pytorch
首先要确保你的主机或服务器有安装好CUDA和pytorch(这两个要互相对应)。
关于安装cuda环境配置,可以参考:
https://blog.csdn.net/wf19930209/article/details/81879514
https://zhuanlan.zhihu.com/p/79059379
我这里使用的是CUDA10.2+pytorch1.10.0+python3.6的环境。
2.创建数据文件夹
cd faster-rcnn.pytorch && mkdir data
#在faster-rcnn.pytorch文件夹下创建data文件夹
3.下载数据
下载VOV2007标准数据集的相关数据。
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
执行下方命令解压缩数据到data/VOCdevkit。
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
注意!解压完成后将/data/VOCdevkit
改名为/data/VOCdevkit2007
,不然后面会出错。
4.下载预训练模型
目前github上vgg16、resnet101模型已无法下载。
我在别处仅找到vgg16的预训练模型,提供给大家下载。
链接: https://pan.baidu.com/s/1jisIecoYSXOBHz6Dj7aI9Q 提取码: xjge
在data文件夹下创建路径:/data/pretrained_model/
将下载好的预训练模型放入此处 /data/pretrained_model/
5.安装所需环境
-
返回/faster-rcnn.pytorch目录下
pip install -r requirements.txt
安装时可能会遇到这个问题:powershell Building wheel for opencv-python (PEP 517) ... -
会在这里一直运行,这是因为OpenCV 是一个非常繁重的库,需要花费较多时间。有的人可以成功安装,有的会安装失败。可以尝试以下命令,或单独直接安装opencv。
pip install --upgrade pip setuptools wheel
pip install --upgrade pip
- 编译CUDA依赖环境
cd lib
python setup.py build develop
编译时遇到错误:
1. error: invalid command 'develop'
2. _mask.pyx:258:78: Cannot assign type 'double' to 'siz'
3. can’t import ‘imread’
4. x86_64-linux-gnu-gcc: error: ../MatlabAPI/private/maskApi.c: No such file or directory
针对以上错误进行解决:
- 将文件中
from distutils.core import setup
替换为from setuptools import setup
- 在setup.py同目录下的_mask.pyx文件中,将
len(np_poly)/2
改为int(len(np_poly)/2)
- scipy的版本问题,改为
from imageio import imread
- 将
/lib/_mask.pyx
文件中# distutils: sources = ../MatlabAPI/private/maskApi.c 改为 # distutils: sources = pycocotools/maskApi.c
到这里,关于faster-rcnn的配置就算完成了。
6.训练和测试
在训练之前需要根据自己的环境将trainval_net.py
和test_net.py
中的两个参数save_dir
和load_dir
进行更改。
parser.add_argument('--save_dir', dest='save_dir',
help='directory to save models', default="/yourpath",type=str)
parser.add_argument('--load_dir', dest='load_dir',
help='directory to load models', default="/yourpath",type=str)
这里的/yourpath
为存放预训练模型的路径。
(1)使用VGG16训练,使用如下命令(具体参数根据自己的需要修改):
CUDA_VISIBLE_DEVICES=0 python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs 2 --nw 1 \
--lr 0.002 \
--cuda
(1)使用VGG16测试,使用如下命令(具体参数根据自己的需要修改):
python test_net.py --dataset pascal_voc --net vgg16 \
--checksession 1 --checkepoch 20 --checkpoint 5010 \
--cuda
这里指定具体的checksession、checkepoch、checkpoint数值。可以根据训练出来的模型名字来设置。
7.demo.py
这里也要注意更改路径:
parser.add_argument('--load_dir', dest='load_dir',
help='directory to load models',
default="/yourpath")
运行命令:
CUDA_VISIBLE_DEVICES=0 python demo.py --net vgg16 --checksession 1 --checkepoch 20 --checkpoint 5010 --cuda
参考
https://blog.csdn.net/weixin_42782150/article/details/109820615
https://blog.csdn.net/weixin_43380510/article/details/83004127