MaskrcnnBenchmark 源码解析-乱七八糟

command ‘gcc’ failed with exit status 1

更换 gcc 版本.
如果更换后, 会产生一大堆其他cpp文件错误, 则删除那些文件(我这里是在练习用的cpp文件夹下报错)

https://github.com/facebookresearch/maskrcnn-benchmark/issues/25

command ‘:/usr/local/cuda/bin/nvcc’ failed with exit status 1

https://github.com/facebookresearch/maskrcnn-benchmark/issues/132

1
2
unable to execute ':/usr/local/cuda/bin/nvcc': No such file or directory
error: command ':/usr/local/cuda/bin/nvcc' failed with exit status 1

提示找不到 nvcc, 但是输入 nvcc --version, 却可以正常显示:

1
2
3
4
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

仔细观察发现, 报错的路径里面多了一个冒号!!

1
unable to execute ':/usr/local/cuda/bin/nvcc': No such file or directory

因此, 说明是环境变量的设置有问题, 将~/.zshrc(或者~/.bashrc)中进行如下修改

1
2
3
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
# 将上面的语句修改成:
export CUDA_HOME=/usr/local/cuda

然后, 刷新shell

1
exec $SHELL$

接着, 删掉旧文件重新build

1
2
rm -rf build
python setup.py build develop

coco

ModuleNotFoundError: No module named ‘pycocotools._ mask’

有可能是换了虚拟环境导致访问不了 coco api, 也有可能是因为编译的时候没有成功, 或者没有安装 cython, 解决方案如下

1
2
3
4
5
cd ~/github
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
# pip install cypthon 记住确保安装了 cypthon
python setup.py build_ext install

执行上面的步骤后依然报错, 仔细观察发现是指向了其他文件里的 _mask.py 文件, 这是由于我多次重复安装 coco api 导致的, 删除下面文件夹里面的 pycocotools 即可解决问题(最好再重新遍历一下)

1
~/Works/PycharmProjects/tf_practice/models/research/pycocotools/mask.py in <module>()

数据载入报错

1
2
3
4
5
6
7
8
~/Works/maskrcnn-benchmark/maskrcnn_benchmark/data/build.py in build_dataset(dataset_list, transforms, dataset_catalog, is_train)
50
51 # for training, concatenate all datasets into a single one
---> 52 dataset = datasets[0]
53 if len(datasets) > 1:
54 dataset = D.ConcatDataset(datasets)

IndexError: list index out of range

一般是coco数据集放置位置不对, 或者没有找到 anns 标签文件等原因造成的错误. 重新设置软连接即可, 如果是在 jupyter notebook 中操作的, 注意还应该重启一下 kernel.

如果还不行, 则看看你是否缺少了相应的标签文件, MaskrcnnBenchmark 的默认标签文件为 Detectron 自定义的 coco_2014_minival 标签文件, 要确保你下载了该文件并把它放在了 datasets/coco/annotations/ 文件夹中, 下载地址为: https://github.com/facebookresearch/Detectron/blob/master/detectron/datasets/data/README.md.

另外还要确保参数 cfg.DATASETS.TRAINcfg.DATASETS.TEST 是有值的, 默认情况下只有后者不为空, 所以你需要自己给前者赋值