-
- 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]范围的主要原因有:
不同图像分辨率下的绝对像素坐标值会有很大差异(例如100px和1000px)。映射到[-1, 1]可以抹平这种分辨率影响,使坐标值处在统一的数值范围内。
大多数基于深度学习的模型会假设输入数据处在[-1, 1]或[0, 1]等固定数值范围内。这样可以帮助网络学习,避免数值太大或太小带来的难以收敛等问题。
在[-1, 1]的标准化空间中,设计算法和模型会更简单,无需考虑坐标尺度问题。例如计算点之间距离等。
很大或很小的坐标值可能会导致计算过程的数值不稳定。但在[-1, 1]范围内,这种问题可以大幅减少。