有人可以帮助我,在语义分割任务中,图像和蒙版应该在批处理生成器类中标准化,还是只应该标准化其中之一?
我使用以下代码来标准化图像和蒙版:
mean_val, std_val = img.mean(), img.std()
img = (img - mean_val)/std_val例如:
在这里,图像和相应的掩模被归一化,用于前列腺癌分割任务。

而这里只对掩码进行了标准化

哪一项是正确的做法?
def __getitem__(self,i):
index= self.indexes[i * self.batch_size : (i + 1) * self.batch_size]
X = np.empty((self.batch_size, self.crop_dim[0], self.crop_dim[1],3)).astype(np.uint8)
Y = np.empty((self.batch_size, self.crop_dim[0], self.crop_dim[1],5)).astype(np.uint8)
for i,ID in enumerate(index):
dim= (self.crop_dim[0],self.crop_dim[1])
img=cv2.imread(self.img_list[ID],cv2.COLOR_BGR2RGB)
img = cv2.resize(img,dim)
mask=imageio.imread(self.labels[ID],as_gray=False, pilmode="RGB")
mask = cv2.resize(mask,dim)
mask= create_labels(mask)
# Augement training patches only
if self.augmentation:
sample = self.augmentation(image=img_numpy, mask=mask_numpy)
img_numpy, mask_numpy = sample['image'], sample['mask']
mean_val, std_val = img.mean(), img.std()
img = (img - mean_val)/std_val
mean_val_mask, std_val_mask = mask.mean(), mask.std()
mask= (mask - mean_val_mask)/std_val_mask
X[i,]=img_numpy
Y[i,]=mask_numpy发布于 2021-05-31 14:32:13
不是的!
您不希望标准化标签-您希望直接预测它们,您不希望目标(每像素)根据蒙版的全局统计信息进行更改。
为什么要规范化?
通常的做法是将输入归一化到DNN模型。这是由于希望控制不同层激活的“动态范围”。反过来,这有助于优化过程以更快、更稳定的方式收敛。
你可以在这篇优秀的论文中找到对这种规范化的深入分析: He,K.,Zhang,X.,Ren,S.和Sun,J., (ICCV 2015)。
这一原理不适用于标签,而不适用于。
https://stackoverflow.com/questions/67699174
复制相似问题