问题1
安装mcv报错ImportError: libcudart.so.11.0: cannot open shared object file
ModuleNotFoundError: No module named ‘mmdet‘
这一类的问题原因是pytorch,mcv,mmdet,cuda版本不一致导致
我采用torch1.9.0,torchvisio,0.10.0,mcv1.6.0,mmdet2.28.2,cuda11.0.2后错误解决
可参考我的版本安装
pip install -U openmim
mim install mmcv-full==1.6.0
#或者直接安装
pip install mmcv-full==1.6.0
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" means verbose, or more output
# "-e" means installing a project in editable mode,
# thus any local modifications made to the code will take effect without reinstallation.
问题2
mmdetection训练自己的数据集时报错:
# AssertionError: The `num_classes` (2) in Shared2FCBBoxHead of MMDataParallel does not matches the length of `CLASSES` 80) in CocoDataset
你指定的类别(2种)与CocoDataset的类别(80种)不匹配
mmdetection-master\mmdet\core\evaluation\class_names.py
mmdetection-master\mmdet\datasets\coco.py
修改上述两个文件中的类别后重新编译代码,运行python setup.py install后仍然未解决。重新编译的后环境里的源文件没有修改,所以你才会报错。mmdetection-master目录下只是一些python文件,真正运行程序时,运行的还是环境里的源文件,因为我们直接去环境里修改源文件。
/usr/local/lib/python3.7/dist-packages/mmdet/datasets/coco.py
/usr/local/lib/python3.7/dist-packages/mmdet/core/evaluation/class_names.py
修改环境源文件后错误解决。
问题3
RuntimeError: DataLoader worker (pid(s) XXX) exited unexpectedly
因为读取数据可能存在gpu并行处理的问题这种情况可以将configs/_base_/datasets/coco_detection.py的gpu设小,我设为1后解决,只能读一张一张读图,后续再看看如何解决
samples_per_gpu=1, workers_per_gpu=1,
sampers_per_gpu就是控制batch_size的,决定了dataloader一次从dataset里取几个样本(几张图),每张卡取多少sampers,总的batch_size要乘以你用的gpu显卡数目。
workers_per_gpu
这个参数决定读取数据时每个gpu分配的线程数 。
数据加载时每个 GPU 使用的子进程(subprocess)数目。因此如果workers=2,那就会把一个相同的随机种子seed同时作用于两个samper,因此就会导致出现两个分支(进程),就会产生不同组的图做的随机操作完全一样的情况。