1

我面临一个奇怪的问题:我有一堆不同大小的图像,我正在尝试对这些图像进行训练+推断,并且我有以下示例转换代码:

import augly.image as imaugs
import augly.utils as utils

        self.infer_transform = transforms.Compose([
            imaugs.PadSquare(p=1),
            transforms.Resize([384], interpolation=torchvision.transforms.InterpolationMode.BICUBIC),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])

当我使用 batchsize >1 时,我会被抛出:

RuntimeError: stack expects each tensor to be equal size, but got [3, 384, 384] at entry 0 and [3, 385, 384] at entry 3

我觉得这真的很奇怪,因为在 PadSquare 之后,当我使用单个 int 调整大小时,它应该给我一个方形图像 - 但它似乎没有......这是为什么?这是一个错误吗?它几乎看起来像是一些舍入错误(在条目 0 和 [3, 385, 384] 处得到 [3, 384, 384])。

但是,如果我这样做:

        self.infer_transform = transforms.Compose([
            imaugs.PadSquare(p=1),
            transforms.Resize((384,384), interpolation=torchvision.transforms.InterpolationMode.BICUBIC),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])

它工作正常...

这背后的原因是什么?我很困惑!当我在说 colab 中尝试示例图像时,它们似乎具有相同的大小......

4

0 回答 0