我正在使用以下代码在我的 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 缓存?)。
非常感谢!