gpt4 book ai didi

deep-learning - 如何在 pytorch 中将多个灰度图像作为单个张量加载?

转载 作者:行者123 更新时间:2023-12-03 18:04:44 29 4
gpt4 key购买 nike

我目前正在尝试使用堆栈一组图像作为每个标签的单个实体来训练 CNN 使用交叉验证。给定一个 224x224x1 灰度图像的数据集,按以下顺序排序:

Root/
Class0/image0_view0.png
Class0/image0_view1.png
Class0/image0_view2.png
...
Class1/image0_view0.png
Class1/image0_view1.png
Class1/image0_view2.png

我将如何将 3 个图像( View 0、1 和 2)作为尺寸为 224x224x3(3 个灰度图像)的单个张量进行流动?换句话说,我将如何使用 ImageFolder/DatasetFolder 和 DataLoader 在 pytorch 中创建图像堆栈数据集?我是否必须重新组织我的文件夹和类,或者当我为交叉验证进行拆分时制作堆栈会更容易吗?

感谢您的时间和帮助!如果我能提供更多信息,请告诉我。

最佳答案

我有一个非常相似的任务。我需要加载 3 张图像的随机序列作为批处理的一个元素,用于训练网络,而不是在单独的图像上,而是在图像的 seq 上。对于批量大小 8,我有 8 x 3 = 24 张图像。这似乎与您的案例中的不同观点非常相似。我使用了 skimage.io 的 imread_collection 功能。我加了这样一个 getitem 到数据集类:

def __getitem__(self, idx):
idx_q = int(torch.randint(0 + self.boundary, self.length - self.boundary, (1,)))

q = imread_collection([self.image_paths[idx_q-1], self.image_paths[idx_q], self.image_paths[idx_q+1]], conserve_memory=True)

if self.transform:
q = torch.stack([self.transform(img) for img in q])

return q, p, n
这里我生成一个图像的随机索引,然后使用 imread_collection 和 self.image_paths 加载三个连续的图像,这是包含所有图像路径的列表。然后我对每个图像进行变换并堆叠它们。在您的情况下,您应该考虑使用正确的索引,也许通过在 self.image_paths 的长度上应用滑动窗口。
更多信息可以在 torch forum 上找到.我也尝试询问并找到更优雅的解决方案,但无法使用这种方法成功训练模型。

关于deep-learning - 如何在 pytorch 中将多个灰度图像作为单个张量加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58941007/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com