如何解决在 pytorch 中识别图像的问题
我是深度学习的新手,我正在研究如何使用 pytorch
正确运行神经网络。目前我正在尝试使用以下代码读取图像数据集:
from torch.utils.data import Dataset,DataLoader
from torchvision import datasets,transforms
from torchvision import transforms,utils
transformations = transforms.Compose([
transforms.Resize(255),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])
])
train_set = datasets.ImageFolder('faces/train',transform = transformations)
test_set = datasets.ImageFolder('faces/test',transform = transformations)
train_loader = DataLoader(train_set,batch_size=60,shuffle = True)
test_loader = DataLoader(test_set,shuffle = True)
完成后,我尝试读取图像以开始在图像上运行神经网络,首先使用以下方法将 imgs 与标签分离:
img,labels = next(iter(train_loader))
然后我收到了以下消息:
UnidentifiedImageError: cannot identify image file <_io.BufferedReader name='faces/train/karyadi/karyadi_straight_angry_open.pgm'>
我的工作目录中存储图像的文件夹结构如下:
- 面孔:
- 训练:10 个文件夹,每个文件夹包含大约 90 张 pgm 格式的图像。
- 测试:1o 个文件夹,每个文件夹包含大约 90 张 pgm 格式的图像。
有人知道可能是什么问题吗?
提前致谢。
解决方法
我终于找到了问题所在。这个 post 非常有用。其要点是 PIL
在导入某些尺寸的图像时遇到问题(我没有关于此的所有详细信息)。最后我使用cv2
将pgm图像一张一张导入,然后将它们转换为32位的ndarrays以jpeg格式导出。这是我的一张图片的代码:
import cv2
img = cv2.imread('faces/train/karyadi/karyadi_straight_angry_open.pgm')
img = np.full(img.shape,img,dtype=np.float32)
cv2.imwrite('img.jpeg',img)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。