归一化目标坐标

时间:2018-08-20 03:54:40

标签: tensorflow neural-network keras computer-vision normalization

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

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函数,其中将图像规范化为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]来规范化目标坐标?由于无法即时缩放,因此由于模型过度拟合,即时验证会遭受巨大损失。是否可以通过任何方式在[-1,1]之间缩放目标坐标?

1 个答案:

答案 0 :(得分:1)

假设您的目标坐标位于间隔[0,223]中,因为这就是您的图像有多少像素,那么只需减去[-111.5,111.5]并除以{ {1}}之后?

111.5

实际上,根据我的经验,您不需要精确地击中111.5,只需将它们除以return (self.labels[idx * self.bsz: (idx + 1) * self.bsz,:]-111.5)/111.5 就足够了,这样它们的大小顺序正确。除此之外,您还可以计算所有标签的统计信息并将其标准化,以使它们遵循零均值/单位方差,这是一种常见策略。