系统环境配置
之前一直在用Nvidia GTX1080Ti做实验,用到的代码及整套开发环境的版本都较老(Python2.7+Pytorch0.4.0+CUDA8.0),由于20系列显卡或30系列显卡都不再支持CUDA8.0,所以需要进行一次整体升级,在此做一个升级配置环境的填坑记录。
项目地址
https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
注意是pytorch-1.0分支不是master分支,仔细阅读 README.md 文件,准备好需要的数据集和预训练模型,安装好相关依赖包,一定要记得执行以下命令:
cd lib
python setup.py build develop
运行环境
源项目推荐环境为:
- Python 2.7 or 3.6
- Pytorch 1.0 (for Pytorch 0.4.0 go to master branch)
- CUDA 8.0 or higher
我的配置环境:
- Python3.7
- Pytorch1.4.0
- CUDA10.1
- Nvidia RTX2080Ti
- Ubuntu16.04
(亲测Windows环境下问题更多,最后卡在一个问题上果断放弃,选择了Ubuntu)
问题汇总
1. 问题:ImportError: cannot import name ‘_mask’ from 'pycocotools’
解决:由于作者应该是用python2.7编译的,若确认已执行 python setup.py build develop,参考:
https://github.com/jwyang/faster-rcnn.pytorch/issues/410#issuecomment-450709668
尝试安装coco API,还不行的话参考:
https://github.com/cocodataset/cocoapi/issues/59#issuecomment-469859646
将coco/PythonAPI/pycocotools里的文件复制到lib/pycocotools中,然后重新执行:
python setup.py build develop
注意:重新执行前最好先删除之前执行产生的build文件夹和_egg文件夹。
2. 问题:ImportError: cannot import name ‘imread’ from 'scipy.misc’
解决:根据提示找到lib/roi_data_layer/minibatch.py等对应文件,更改为:
# from scipy.misc import imread
from imageio import imread
3. 问题:RuntimeError: CUDA error: invalid device function
解决:这是由于大环境CUDA版本和Conda虚拟环境的cudatoolkit版本不匹配导致的。Conda虚拟环境只能安装cudatoolkit,cudatoolkit并不是完整的CUDA,缺少nvcc文件,而这个项目需要nvcc gcc g++混合编译,所以会导致编译的结果和实际运行的环境版本冲突。我大环境的CUDA版本是10.0,虚拟环境的cudatoolkit版本是10.1,将大环境CUDA版本升级为10.1后,重新执行问题1的步骤,问题解决。
运行测试
1. 训练模型
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net res101 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda

2. 测试
python test_net.py --dataset pascal_voc --net res101 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda

3. 测试自己的数据集
python demo.py --net res101\
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda --load_dir path/to/model/directoy

4. 测试自己的视频(实时检测)
python demo.py --net res101 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda --load_dir path/to/model/directoy \
--webcam $WEBCAM_ID
Faster R-CNN目标检测测试