需注意的问题
- mmdetection环境:最好采用PyTorch1.0,cuda10.0,Python3.6
- 执行python(3) setup.py develop or pip install -v -e时,需要注意权限的问题,使用sudo或者--user
Tips
- 训练时数据加载很慢,导致gpu得不到充分利用。
- 可以预先将数据加载至内存,再从内存中读取数据;
- 可以使用NVIDIA的apex库。这个库可以对pytorch的dataloader进行封装,并在每个epoch训练开始前预加载数据,从而达到加速IO的效果。相比于把数据预先加载的内存的方法需要内存足够大,而且加载到内存也需要很长时间,因此使用apex库是有优势的。另一方面,apex有一个小缺点,调用它必须在每个epoch开始的时候,因此每个epoch需要花费数秒让apex完成对dataloader的封装。
- 使用torch.cudnn.benchmark加速
- resume时如何手动调整学习率?
报错及解决
- 报错:
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=383 error=11 : invalid argument #21154
- 解决:对于RTX2080Ti,cuda版本需10.0以上,且pytorch的安装不能直接pip install ,需要从源码编译或者下载wheel安装。
e.g. pip install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-linux_x86_64.whl
- 报错:
- 报错:只有一个检测类别时,会有keyerror的错误
- 解决:mmdet/datasets/voc.py中修改为自己的对应类别,并下面两个二选一:
- set CLASSES=['...'] if you are having only one class, instead of CLASSES=('...')
- CLASSES = ('class',)
- 报错:
frame #26: __libc_start_main + 0xf0 (0x7fb78ff0f830 in /lib/x86_64-linux-gnu/libc.so.6)
- mmdetection使用的学习率是对应的8卡,需要根据自己的卡数进行线性调整。
- 报错: