规范化 UInt16 图像以实现 Pix2Pix

Normalize UInt16 images for Pix2Pix implementation

提问人:s1o 提问时间:5/31/2022 更新时间:5/31/2022 访问量:199

问:

我正在尝试 https://github.com/mrzhu-cool/pix2pix-pytorch 使用Pix2Pix算法的这种实现。 在此实现中,他们使用小 UInt8 (最大颜色值 : 255) 图像,因此他们正在规范化他们的图像,如下所示:

Image.MAX_IMAGE_PIXELS = None
        a = Image.open(join(self.a_path, self.image_filenames[index])).convert('RGB')
        b = Image.open(join(self.b_path, self.image_filenames[index])).convert('RGB')
        a = a.resize((286, 286), Image.BICUBIC)
        b = b.resize((286, 286), Image.BICUBIC)

        a = transforms.ToTensor()(a)
        b = transforms.ToTensor()(b)
        w_offset = random.randint(0, max(0, 286 - 256 - 1))
        h_offset = random.randint(0, max(0, 286 - 256 - 1))
    
        a = a[:, h_offset:h_offset + 256, w_offset:w_offset + 256]
        b = b[:, h_offset:h_offset + 256, w_offset:w_offset + 256]
    
        a = transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))(a)
        b = transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))(b)

        if random.random() < 0.5:
            idx = [i for i in range(a.size(2) - 1, -1, -1)]
            idx = torch.LongTensor(idx)
            a = a.index_select(2, idx)
            b = b.index_select(2, idx)

        if self.direction == "a2b":
            return a, b
        else:
            return b, a

但就我而言,我想使用 UInt16 图像(最大颜色值:65535),所以,如果我想规范化 UInt16 图像,我只需要用 65536 替换 256 还是我需要做其他事情?

深度学习 PyTorch 规范化 UInt16

评论

0赞 Hayoung 5/31/2022
检查图像作为火炬张量加载时的最大值。此外,上面的代码似乎与数据类型无关,而是与图像大小和随机裁剪有关。此外,torch tensor 不支持 uint16 数据类型。256
0赞 s1o 5/31/2022
好的,谢谢@Hayoung!:)但是你确定“此外,torch 张量不支持 uint16 数据类型”,因为当我使用 Uint16 图像执行我的代码时没有错误,我的张量得到了 dtype = torch.float32,就像我使用 Uint8 图像时一样
0赞 Hayoung 5/31/2022
正如您在评论中所说,您的张量是一种 ,而不是 .float32uint16

答: 暂无答案