使用 cv2 和 pytorch 进行图像预处理会导致一组 png 的图像不透明

问题描述 投票:0回答:0

我正在使用以下代码在我的 Dataset 类中为 pytorch 模型预处理

.png
图像。

def training_step(self, batch, batch_idx):
    
    image_path, mask_path = self.paths[idx]
    image = cv2.imread(image_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    mask = cv2.imread(mask_path, 0) 
    
    t = self.aug(image = image, mask = mask)
    image = t['image']
    mask = t['mask']
    mask = np.where(mask > 0, 1, 0)
    image = self.transformer(image) # This only calls ToTensor()
    mask = self.mask_transform(mask)# This only calls ToTensor()

我从我的一个旧项目中重新利用了这段代码。 它适用于一组图像但不适用于另一组图像,即模型训练对第一组图像进行预期的训练,但对另一组图像不进行训练。

它们都有 8 位通道,后者有一个 alpha 通道,但 cv2 已经用

imread
摆脱了它。 然而,第二类图像(效果不佳的图像)变得不透明。

知道我在上面的代码中遗漏了什么吗?我把它剥离到最基本的东西,我想我可以删除

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
虽然没有什么区别。

另外让我困扰的是,它们似乎被归一化为 0、1,我最初除以 255.0 但不再需要了。我重新启动了实例(kaggle 和 colab),但它们仍然开始规范化(gpu 缓存?)。

非常感谢!

opencv pytorch cv2 torchvision pytorch-dataloader
© www.soinside.com 2019 - 2024. All rights reserved.