先决条件
下载源码
地址:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
新建文件夹data
下载数据集
VOC数据集
地址:
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
解压至VOCdevkit目录中
(或者使用命令行操作下载、解压
)
解压之后的目录基本结构:
创建软连接:
也可以不创建,直接将VOCdevkit重命名为VOCdevkit2007,放到data目录下即可
下载VGG16和ResNet预训练模型
地址:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
下载完成后将模型放入:data/pretrained_model/
所有python依赖项
pip install -r requirements.txt (安装requirements.txt中要求的所有包)
编译cuda依赖项(系楼服务器用conda create -n py2.7 python=2.7创建虚拟环境)
cd lib
python setup.py build develop
训练
例如:
CUDA_VISIBLE_DEVICES=0 python trainval_net.py --dataset pascal_voc --net res101 --cuda
遇到的问题:
ImportError: cannot import name _mask
参考:https://blog.csdn.net/weixin_42279610/article/details/103086379、https://blog.csdn.net/weixin_43869778/article/details/96837042
下载最新的cocoapi(https://github.com/cocodataset/cocoapi)
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
将faster-rcnn.pytorch/lib里面的pycocotools文件夹删除,替换为新下载并且编译好的coco/PythonAPI里面的pycocotools。
解决,运行成功!
在xshell退出后保持服务器运行的方法
运行命令时,在python 前面加入nohup,并在命令结束时加入&。
例:
CUDA_VISIBLE_DEVICES=0 nohup python trainval_net.py --dataset pascal_voc --net res101 --cuda &
运行后,会首先输出一个进程号,例如:
cat nuhup.out 即可查看程序运行的结果。
如:
训练到了第五个epoch,前四次的结果保存如下:
测试
由于没有训练完,测试选取第4次的实验结果。
python test_net.py --dataset pascal_voc --net res101 --checksession 1 --checkepoch 4 --checkpoint 10021 --cuda
其中,“checksession”、“checkeopch”、“checkpoint”的值分别对应于要使用的训练结果文件中的三个值。(本例是: faster_rcnn_1_4_10021.pth)
测试完毕:
mAP为0.7224