mmdetection遇到ValueError: ctypes objects containing pointers cannot be pickled

it2025-05-19  10

问题描述:

在使用mmdetection进行训练时,使用单个GPU可以正常训练,当我尝试使用2个GPU分布式训练

./tools/dist_train.sh configs/faster_rcnn_r50_fpn_1x_static_24_wofreeze.py 2 --work-dir DOTA

产生了奇怪的报错:

ValueError: ctypes objects containing pointers cannot be pickled

运行环境

mmcv (0.2.16) mmdet (1.0rc0+unknown)

torch (1.4.0) torchvision (0.5.0)

CUDA 10.1

问题解决

我一开始以为是自己代码的问题,花了很长的时间检查我的代码,然而检查修改后还是一直报错。

我在网上进行搜索,终于找到了一些蛛丝马迹

https://discuss.pytorch.org/t/dataloader-multiprocessing-error-cant-pickle-odict-keys-objects-when-num-workers-0/43951

最后一个人回答说num_workers=0

于是我抱着试试看的心态,把配置文件中的workers_per_gpu改为0,imgs_per_gpu不改变

结果奇迹发生了,可以正常训练了。

最新回复(0)