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]的标准化空间中,设计算法和模型会更简单,无需考虑坐标尺度问题。例如计算点之间距离等。文章来源:https://www.toymoban.com/news/detail-698858.html
- 提高数值稳定性
很大或很小的坐标值可能会导致计算过程的数值不稳定。但在[-1, 1]范围内,这种问题可以大幅减少。文章来源地址https://www.toymoban.com/news/detail-698858.html
到了这里,关于深度学习输入数据的归一化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!