深度学习输入数据的归一化


        res_w, res_h = self.res
        offset = [1, res_h / res_w]
      
        trainset = self.dt_dataset['train']['joint_2d'][::self.sample_stride, :, :2].astype(np.float32)  # [N, 17, 2]
        testset = self.dt_dataset['test']['joint_2d'][::self.sample_stride, :, :2].astype(np.float32)    # [N, 17, 2] 
        # res_w, res_h = self.res
        trainset = trainset / res_w * 2 - offset
        testset = testset / res_w * 2 - offset

将2D点坐标映射到[-1, 1]范围的主要原因有:

  1. 消除分辨率影响

不同图像分辨率下的绝对像素坐标值会有很大差异(例如100px和1000px)。映射到[-1, 1]可以抹平这种分辨率影响,使坐标值处在统一的数值范围内。

  1. 适合网络输入

大多数基于深度学习的模型会假设输入数据处在[-1, 1]或[0, 1]等固定数值范围内。这样可以帮助网络学习,避免数值太大或太小带来的难以收敛等问题。

  1. 易于设计模型

在[-1, 1]的标准化空间中,设计算法和模型会更简单,无需考虑坐标尺度问题。例如计算点之间距离等。

  1. 提高数值稳定性

很大或很小的坐标值可能会导致计算过程的数值不稳定。但在[-1, 1]范围内,这种问题可以大幅减少。

你可能感兴趣的:(机器学习,深度学习算法,深度学习,人工智能)