Pytorch dataloader在加载最后一个batch时卡死

问题:

自己写了个dataloader,为了部署方便,用OpenCV的接口进行数据读取,而没有用PIL,代码大致如下:

    def __getitem__(self, idx):
        sample = self.samples[idx]

        img = cv2.imread(sample[0])
        img = cv2.resize(img, tuple(self.input_size))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        # if not self.val and random.randint(1, 10) < 3:
        #     img = self.img_aug(img)
        img = Image.fromarray(img)

        img = self.transforms(img)
        
        ...

结果在训练过程中,在第1个epoch的最后一个batch时,程序卡死。

解决方案:

可能是因为OpenCV与Pytorch互锁的问题,关闭OpenCV的多线程,问题解决。

cv2.setNumThreads(0)
cv2.ocl.setUseOpenCL(False)

 

你可能感兴趣的:(Coooding,人工智能,深度学习)