用pytorch訓練神經網路的時候,用PIL儲存圖片之後立即讀出,出現問題。主要是想用PIL包進行影象壓縮的影象處理
原始碼:
name = './temp.jpg'
pil.save(name, "JPEG", quality=ratio)
img = Image.open(name)
pil = img
報錯
IOError: Traceback (most recent call last):
File “/home/chenjun/anaconda2/envs/mypytorch/lib/python2.7/site-packages/torch/utils/data/dataloader.py”, line 106, in _worker_loop
samples = collate_fn([dataset[i] for i in batch_indices])
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/dataset.py”, line 115, in getitem
img = self.transform(img)
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/utils.py”, line 323, in call
img = t(img)
File “/media/chenjun/ed/31_ocr_own/Calligraphy_crnn/mech_demo2/src/utils.py”, line 307, in call
img = Image.open(name)
File “/home/chenjun/anaconda2/envs/mypytorch/lib/python2.7/site-packages/PIL/Image.py”, line 2657, in open
% (filename if filename else fp))
IOError: cannot identify image file ‘./002.jpeg’
解決方案:
採用opencv讀取的方式讀入圖片
temp = cv2.imread(name)
pil = Image.fromarray(temp[:,:,::-1])
AttributeError: ‘NoneType’ object has no attribute ‘shape’
發現是圖片本身的問題
具體原因:
pytorch的dataloader是多執行緒的,減少num_worker就好了。
train_loader = torch.utils.data.DataLoader( # 訓練資料集
train_dataset, batch_size=opt.batchSize,
shuffle=False, sampler=sampler,
num_workers=int(opt.workers),
collate_fn=dataset.OwnalignCollate(imgH=opt.imgH, keep_ratio=opt.keep_ratio))
參考
原文連結:https://blog.csdn.net/u011622208/article/details/88395948