搭建maskrcnn-benchmark的环境遇到问题

安装环境

conda create --name maskrcnn_benchmark 
conda activate maskrcnn_benchmark

conda install python==3.7
conda install ipython pip
pip install ninja yacs cython matplotlib tqdm opencv-python
conda install -c pytorch pytorch-nightly torchvision cudatoolkit=9.0
建议换成
conda install pytorch==1.1 torchvision cudatoolkit=9.0

问题1:ModuleNotFoundError: No module named 'maskrcnn_benchmark'

解决:

添加路径方式:
永久:到环境变量PATHONPATH 添加,没有就新建一个

import sys
sys.path.append("自己路径")

问题2:AttributeError: module 'torch._six' has no attribute 'PY3'

版本问题:

根据错误提示修改:/maskrcnn_benchmark/utils/imports.py 中if torch._six.PY3: 改成:if torch._six.PY37:

问题3:ImportError: cannot import name '_C' from 'maskrcnn_benchmark'

对于layers下面的文件,nms.py、roi_align.py等出现这个错误的from maskrcnn_benchmark import _C都换成from ._utils import _C就解决了

问题3:安装apex

这个库的安装不是像其他的一样的直接使用 pip install XXX的形式,而是使用原始的Git方式

在GitHub中直接下载该库,然后解压。并放到相应的位置上。

https://github.com/NVIDIA/apex.git

进入解压文件夹:

python setup.py install --cuda_ext --cpp_ext

问题4:subprocess.CalledProcessError: Command '['where', 'cl']' returned non-zero exit status 1

设置环境变量---我的cl.exe位置跟网上不太一样;

C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\SDK\ScopeCppSDK\vc15\VC\bin

问题5:77 errors detected in the compilation of "C:/Users/gpu/AppData/Local/Temp/tmpxft_00004664_00000000-10_ROIPool_cuda.cpp1.ii".
ROIPool_cuda.cu
ninja: build stopped: subcommand failed.

  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu第275行:
    //原代码: dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));
    
    dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
    

  2. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu第320行:
// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu第129行:
// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu第176行
//dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));

猜你喜欢

转载自blog.csdn.net/qq_31807039/article/details/130602186