在安装MMDetection时,耗费了近一天时间,其实安装很简单,只要保证环境对应即可(这不是废话吗),总而言之,只要严格按照步骤Windows下环境配置就是可行的。
Window环境配置
基础环境
CUDA为10.1
创建Conda环境
conda create -n mmdet python=3.7
activate mmdet
安装pytorch
pytorch官网
根据CUDA版本确定pytorch按照版本
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
若是使用cuda安装可能会报错:
ImportError: libtorch_cuda_cu.so: cannot open shared object file: No such file or directory
安装mmdet
cd E:\graduate\programsnew\mmdetection
pip install -r requirements/build.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -v -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
安装MMCV
MMCV安装教程
pip install mmcv==2.0.0rc4 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8/index.html
如果安装的mmcv版本不对,则会报错:
File "/home/ubuntu/.local/lib/python3.8/site-packages/mmcv/utils/ext_loader.py", line 13, in load_extext = importlib.import_module('mmcv.' + name)File "/usr/local/miniconda3/lib/python3.8/importlib/__init__.py", line 127, in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)
pip list
最终安装完后的环境依赖包如下图所示:
简单调试
首先是train.py的运行,指定config文件与保存路径
parser.add_argument('--config',default="E:/graduate/program/mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_2x_coco.py",help='train config file path')parser.add_argument('--work-dir',default="outputs", help='the dir to save logs and models')
修改数据集地址,MMDetection默认使用的数据集格式为COCO
随后运行:
随后报错:显存溢出
File “D:\Anaconda\envs\mmdet\lib\site-packages\mmcv\ops\roi_align.py”,
line 110, in backward
grad_input = grad_output.new_zeros(ctx.input_shape) RuntimeError: CUDA out of memory. Tried to allocate 132.00 MiB (GPU 0; 4.00 GiB
total capacity; 3.20 GiB already allocated; 0 bytes free; 3.49 GiB
reserved in total by PyTorch)
更换数据集:WiderPerson
训练自定义数据集
这里我替换了数据集后,运行报错:
f’class
{obj_cls.__name__}
in ’ # type: ignore ValueError: class
EpochBasedTrainLoop
in mmengine/runner/loops.py: classCocoDataset
in mmdet/datasets/coco.py: need at least one array to concatenate
找到这个目录下的文件,修改文件里的 num_classes=2 ,修改成自己的类别数目。
configs_base_/models/faster-rcnn_r50_fpn.py
修改我们的类别名,两个文件需要修改,第一个文件是:
mmdet/core/evaluation/class_names.py
修改里边的def coco_classes(): ,将return内容修改成自己的类别。
第二个文件:
mmdet/datasets/coco.py
修改里边的class CocoDataset(CustomDataset):
,将 CLASSES = ()
修改成自己的类别。
至此,修改结束,我们还需要重新编译一遍,这样才能生效,在mmdetection
目录下运行:
python setup.py install
其他问题
ERROR: Could not find a version that satisfies the requirement regex;
sys_platform == “win32” (from mmcv) (from versions: none) ERROR: No
matching distribution found for regex; sys_platform == “win32”
解决方法:
pip install pypiwin32 -i https://pypi.tuna.tsinghua.edu.cn/simple
Linux环境配置
基础环境,博主是在服务器上配置的。
创建Conda环境
conda create -n mmdet python=3.7
activate mmdet
pytorch安装
本想安装pytorch1.12版本的但国内服务器没有安装成功,换了pytorch1.9,国内服务器时常存在这个问题,在访问外网时速度较慢。
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
安装mmdet
cd E:\graduate\programsnew\mmdetection
pip install -r requirements/build.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -v -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
安装MMCV
与Windows一样,保证版本对应即可
pip install mmcv==2.0.0rc4 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9/index.html
随后便是一些细枝末节的配置了,基本与Windows下相同,这里就不再赘述了。