准备用于图像分割的二进制掩码

Prepare for Binary Masks used for the image segmentation

我正在尝试使用 Pytorch 准备用于图像分割的蒙版。我有三个关于数据准备的问题。

  1. 一般情况下保存二进制掩码的合适数据格式是什么?巴布亚新几内亚? JPEG?

  2. 遮罩尺寸是否需要设置正方形如(224x224),而不是长方形如(224x448)?

  3. 长方形转正方形时mask值是固定的吗?

比如原始mask图像大小为(600x900),即二值化[0,1]。然而,当我申请

import torchvision.transforms as transforms
transforms.Compose([
                        transforms.Resize((300, 300)),
                        transforms.ToTensor(),
                        ])

对于掩码,输出有其他值:0.01、0.0156、0.22... 除了 0 和 1,因为掩码大小已转换。

我应用下面的代码再次将掩码转换为二进制,如果值小于 0.3,则值为 0,否则为 1。

def __getitem__(self, idx):
    img, mask = self.load_data(idx)
    if self.img_transforms is not None:
        img = self.img_transforms(img)
    if self.mask_transforms is not None:
        mask = self.mask_transforms(mask)
        mask = torch.where(mask<=0.3,0,1)
    return img, mask

但我想知道这个过程是否是一种通用且高效的方法。

  1. PNG,因为它在设计上是无损的。
  2. 视情况而定。更方便的是使用标准分辨率,(224x224),我会从那个开始。
  3. 使用无插值的调整大小transforms.Resize((300, 300), interpolation=InterpolationMode.NEAREST)