规范化目标坐标



我试图训练多输出模型。我按如下方式批量加载图像,

def get_batch_features(self, idx):
return np.array([load_image(im) for im in self.im_list[idx * self.bsz: (1 + idx) * self.bsz]])

以下是我的load_image函数,其中 im 将图像规范化到 0 到 255 之间,如下所示

def load_image(im):
return img_to_array(load_img(im, target_size=(224, 224))) / 255.

我正在加载标签,这些标签是 4 个 xy 坐标的目标坐标。

def get_batch_labels(self, idx):
return self.labels[idx * self.bsz: (idx + 1) * self.bsz,:]

如何通过将目标坐标缩放到 [-1, 1] 来规范目标坐标? 由于 im 不缩放它,IM 会因为模型过度拟合而获得巨大的验证损失。有什么方法可以在 [-1,1] 之间缩放目标坐标吗?

假设您的目标坐标在区间[0,223]的某个地方,因为这是您的图像有多少像素,那么通过减去111.5并在之后除以111.5来将其调整为[-111.5,111.5]怎么样?

return (self.labels[idx * self.bsz: (idx + 1) * self.bsz,:]-111.5)/111.5

实际上,根据我的经验,您不需要精确地击中[-1,1],只需将它们除以100就足够了,以便它们处于正确的数量级。除此之外,您还可以计算所有标签的统计数据并对其进行归一化,以便它们遵循零均值/单位方差,这是一种常见的策略。

最新更新