在安裝好Anaconda以後能夠配置Mask RCNN了。這裏我用的是maskrcnn-benchmark,環境搭建相對簡單。python
1. 建立虛擬環境:linux
source activate conda create -n MaskRCNN python=3 conda activate MaskRCNN
完成後,可看到以下界面:git
2. 安裝各類依賴包:github
conda install ipython pip install ninja yacs cython matplotlib tqdm opencv-python
3. 安裝PyTorchweb
PyTorch官網,根據本身的電腦配置選擇,會出現對應命令。api
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
這裏能夠測試一下torchvision是否安裝成功。若是沒有安裝成功,則須要下載源碼編譯安裝(彆着急,後面有寫)。bash
:~$ python >>>>import torch >>>>import torchvision
4. 安裝目錄session
export INSTALL_DIR=/data_1/software/pytorch/MaskRCNN //設置本身的安裝目錄 cd $INSTALL_DIR
5. 安裝torchvision(若以前未安裝成功,執行此步驟;不然跳過便可)測試
git clone https://github.com/pytorch/vision.git cd vision/ python setup.py install
6. 安裝pycocotoolsui
git clone https://github.com/cocodataset/cocoapi.git cd cocoapi/PythonAPI python setup.py build_ext install
7. 安裝apex
cd $INSTALL_DIR git clone https://github.com/NVIDIA/apex.git cd apex python setup.py install --cuda_ext --cpp_ext
8. 安裝maskrcnn-benchmark
cd $INSTALL_DIR git clone https://github.com/facebookresearch/maskrcnn-benchmark.git cd maskrcnn-benchmark ## the following will install the lib with ## symbolic links, so that you can modify ## the files if you want and won't need to ## re-build it python setup.py build develop
問題1:
(MaskRCNN) em@B-GUWEIXIN:/data_1/software/pytorch/MaskRCNN/cocoapi/PythonAPI$ python setup.py build_ext install running build_ext building 'pycocotools._mask' extension gcc -pthread -B /home/em/.conda/envs/MaskRCNN/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/numpy/core/include -I../common -I/home/em/.conda/envs/MaskRCNN/include/python3.6m -c ../common/maskApi.c -o build/temp.linux-x86_64-3.6/../common/maskApi.o -Wno-cpp -Wno-unused-function -std=c99 ../common/maskApi.c: In function ‘rleToBbox’: ../common/maskApi.c:141:31: warning: ‘xp’ may be used uninitialized in this function [-Wmaybe-uninitialized] if(j%2==0) xp=x; else if(xp<x) { ys=0; ye=h-1; } ^ gcc -pthread -B /home/em/.conda/envs/MaskRCNN/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/numpy/core/include -I../common -I/home/em/.conda/envs/MaskRCNN/include/python3.6m -c pycocotools/_mask.c -o build/temp.linux-x86_64-3.6/pycocotools/_mask.o -Wno-cpp -Wno-unused-function -std=c99 gcc: error: pycocotools/_mask.c: 沒有那個文件或目錄 error: command 'gcc' failed with exit status 1
解決方法:
手動用cython生成_mask.c
cd $MaskRCNN_Root/cocoapi/PythonAPI/pycocotools cython _mask.pyx cd .. python setup.py build_ext install
問題2:
em@B-GUWEIXIN:/data_1/software/pytorch/MaskRCNN/apex$ python setup.py install --cuda_ext --cpp_ext torch.__version__ = 1.2.0.dev20190704 Traceback (most recent call last): File "setup.py", line 64, in <module> check_cuda_torch_binary_vs_bare_metal(torch.utils.cpp_extension.CUDA_HOME) File "setup.py", line 37, in check_cuda_torch_binary_vs_bare_metal raw_output = subprocess.check_output([cuda_dir + "/bin/nvcc", "-V"], universal_newlines=True) File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/subprocess.py", line 336, in check_output **kwargs).stdout File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/subprocess.py", line 403, in run with Popen(*popenargs, **kwargs) as process: File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/subprocess.py", line 709, in __init__ restore_signals, start_new_session) File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/subprocess.py", line 1344, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: ':/usr/local/cuda-9.0/bin/nvcc': ':/usr/local/cuda-9.0/bin/nvcc'
提示找不到 nvcc, 可是輸入 nvcc --version, 卻能夠正常顯示.
解決方法:
修改環境變量配置
sudo ~/.bashrc export CUDA_HOME=$CUDA_HOME:/usr/local/cuda # 將上面的語句修改爲: export CUDA_HOME=/usr/local/cuda:$CUDA_HOME source ~/.bashrc
打開新終端,在安裝目錄下執行從新安裝
$ python setup.py install --cuda_ext --cpp_ext
問題3:
(MaskRCNN) em@B-GUWEIXIN:/data_1/software/pytorch/MaskRCNN/maskrcnn-benchmark/demo$ python webcam.py Traceback (most recent call last): File "webcam.py", line 6, in <module> from predictor import COCODemo File "/data_1/software/pytorch/MaskRCNN/maskrcnn-benchmark/demo/predictor.py", line 4, in <module> from torchvision import transforms as T File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/__init__.py", line 1, in <module> from torchvision import models File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/models/__init__.py", line 11, in <module> from . import detection File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/models/detection/__init__.py", line 1, in <module> from .faster_rcnn import * File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/models/detection/faster_rcnn.py", line 7, in <module> from torchvision.ops import misc as misc_nn_ops File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/ops/__init__.py", line 1, in <module> from .boxes import nms, box_iou File "/home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/ops/boxes.py", line 2, in <module> from torchvision import _C ImportError: /home/em/.conda/envs/MaskRCNN/lib/python3.6/site-packages/torchvision/_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at7getTypeERKNS_6TensorE
解決方法:
這個問題就是torchvision沒有安好,就經過源碼安裝就能夠啦,詳見上述mask rcnn環境配置的第五條。
問題4:
在vision目錄下python->import torchvision沒問題,換個目錄就報錯。
解決方法: 將vision下的torchvision和torchvision.egg-info文件夾 複製到/.conda/envs/MaskRCNN/lib/python3.6/site-packages/下面便可,刪除原來的。