在配置py-r-fcn時搭建caffe總是出錯,改用另一份開源代碼。
本文章使用的是princewang1994/R-FCN.pytorch開源代碼,項目位址
https://github.com/princewang1994/R-FCN.pytorch
首先閱讀README.md檔案,特别是Preparation中的prerequisites,要求
- Python 3.6
- Pytorch 0.3.0, NOT suport 0.4.0 because of some errors
- CUDA 8.0 or higher。
之前我用的是PyTorch 1.0版本,導緻在配工具庫時一直出現錯誤。這時,我們嚴格按照作者的要求來配置Conda環境。
Conda入門指南請參考:https://zhuanlan.zhihu.com/p/44398592。
先建立自己的conda環境,要求python=3.6,然後安裝PyTorch 0.3版本,我的伺服器CUDA 是9.0 版本,參考這篇文章:
安裝Pytorch的填坑記錄(Ubuntu 16.04+python 3.6+CUDA 9.1+Pytorch 0.3.1)(二)
來安裝相應配置。
在PyTorch官網https://pytorch.org/找到Previous versions of PyTorch,點選連結進去https://pytorch.org/get-started/previous-versions/,找到COMMANDS FOR VERSIONS < 1.0.0,找到相應CUDA版本的HTML連結,例如:
https://download.pytorch.org/whl/cu90/torch_stable.html,
找到相應whl檔案進行安裝(根據自己的python版本找相應cp和作業系統的whl檔案)。
接下來還需要安裝Torchvision,參考這篇文章
torch& torchvision對應版本,找到torchvision=0.2.2,且支援python3.6,安裝它。

最後按照作者的README.md檔案進行完整安裝即可。
在Train時,如果使用vgg16(注意GPU_ID可能需要加個{}符号),在trainval_net.py代碼中需要自己改一下
CUDA_VISIBLE_DEVICES=${GPU_ID} python trainval_net.py --arch rfcn --dataset pascal_voc --net vgg16 --cuda
找到
if args.arch == 'rcnn':
from model.faster_rcnn.vgg16 import vgg16
from model.faster_rcnn.resnet import resnet
elif args.arch == 'rfcn':
from model.rfcn.resnet_atrous import resnet
改成
if args.arch == 'rcnn':
from model.faster_rcnn.vgg16 import vgg16
from model.faster_rcnn.resnet import resnet
elif args.arch == 'rfcn':
from model.faster_rcnn.vgg16 import vgg16
from model.rfcn.resnet_atrous import resnet
可指定epochs參數
CUDA_VISIBLE_DEVICES=${GPU_ID} python trainval_net.py --arch rfcn --dataset pascal_voc --net vgg16 --eopchs 1000 --cuda
具體檢視trainval_net.py代碼中的parser。
在調用demo.py時也一樣,自己看parser的注解輸入參數。
如果是自己的資料,那麼需要改demo.py中的pascal_classes,lib/datasets/pascal_voc.py中的self._classes。