用PyTorch版本R-FCN訓練自己的資料

華南農業大學-郭慶文發表於2020-10-03

在配置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。

相關文章