准备用于图像分割的二进制掩码
Prepare for Binary Masks used for the image segmentation
我正在尝试使用 Pytorch 准备用于图像分割的蒙版。我有三个关于数据准备的问题。
一般情况下保存二进制掩码的合适数据格式是什么?巴布亚新几内亚? JPEG?
遮罩尺寸是否需要设置正方形如(224x224),而不是长方形如(224x448)?
长方形转正方形时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
但我想知道这个过程是否是一种通用且高效的方法。
- PNG,因为它在设计上是无损的。
- 视情况而定。更方便的是使用标准分辨率,(224x224),我会从那个开始。
- 使用无插值的调整大小
transforms.Resize((300, 300), interpolation=InterpolationMode.NEAREST)
我正在尝试使用 Pytorch 准备用于图像分割的蒙版。我有三个关于数据准备的问题。
一般情况下保存二进制掩码的合适数据格式是什么?巴布亚新几内亚? JPEG?
遮罩尺寸是否需要设置正方形如(224x224),而不是长方形如(224x448)?
长方形转正方形时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
但我想知道这个过程是否是一种通用且高效的方法。
- PNG,因为它在设计上是无损的。
- 视情况而定。更方便的是使用标准分辨率,(224x224),我会从那个开始。
- 使用无插值的调整大小
transforms.Resize((300, 300), interpolation=InterpolationMode.NEAREST)