归一化目标坐标

Normalizing target coordinates

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

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] 之间缩放目标坐标?

假设您的目标坐标位于区间 [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 就足够了,这样它们的数量级就正确了。除此之外,您还可以计算所有标签的统计数据并将它们归一化,使它们遵循零 mean/unit 方差,这是一种常见的策略。