JMa*_*arc 3 opencv multiprocessing python-2.7 scikit-image pytorch
我可以运行关于数据加载的 Pytorch 教程笔记本(pytorch 教程)的所有单元格。但是当我使用OpenCV代替Skimage调整图像大小时,数据加载器卡住了,即没有任何反应。
在Rescale课堂上:
class Rescale(object):
.....
def __call__(self, sample):
....
#img = transform.resize(image, (new_h, new_w))
img = cv2.resize(image, (new_h, new_w))
.....
Run Code Online (Sandbox Code Playgroud)
该dataloader和for loop被定义的:
dataloader = DataLoader(transformed_dataset, batch_size=4,
shuffle=True, num_workers=4)
for i_batch, sample_batched in enumerate(dataloader):
print(i_batch, sample_batched['image'].size(),
sample_batched['landmarks'].size())
Run Code Online (Sandbox Code Playgroud)
如果 ,我可以iterator打印一些东西num_workers=0。看起来opencv与 pytorch 的 Multiprocessing 不太兼容。我真的更喜欢在训练时间和测试时间使用相同的包来转换图像(并且我已经在测试时间使用 OpenCV 进行图像重新缩放)。任何建议将不胜感激。
小智 7
我有一个非常相似的问题,这就是我解决它的方法:
当您导入 cv2 set 时cv2.setNumThreads(0)
,您可以num_workers>0在 PyTorch 的数据加载器中进行设置。
似乎 OpenCV 尝试多线程并且某处陷入僵局。
希望能帮助到你。