Rspress

# #数据归一化处理参数配置说明

## #参数说明解析

mean_value 参数讲解

- 参数作用：此参数表示指定预处理方法的图像减去的均值。

- 参数说明：

  - 当只有一个输入节点时，仅需要配置一个数值，表示所有通道都减去这个均值。

  - 当有多个节点时，提供与通道数量一致的数值（这些数值以空格分隔开），表示每个通道都会减去不同的均值。

注意

如果存在某个节点不需要 `mean` 处理，则为该节点配置 `'None'`。

scale_value 参数讲解

- 参数作用：此参数表示指定预处理方法的数值scale系数。

- 参数说明：

  - 当只有一个输入节点时，仅需要配置一个数值，表示所有通道都乘以这个系数。

  - 当有多个节点时，提供与通道数量一致的数值（这些数值以空格分隔开），表示每个通道都会乘以不同的系数。

注意

如果存在某个节点不需要 `scale` 处理，则为该节点配置 `'None'`。

std_value 参数讲解

- 参数作用：此参数表示指定预处理方法的数值std系数。

- 参数说明：

  - 当只有一个输入节点时，仅需要配置一个数值，表示所有通道都除以这个系数。

  - 当有多个节点时，提供与通道数量一致的数值（这些数值以空格分隔开），表示每个通道都会除以不同的系数。

注意

如果存在某个节点不需要 `std` 处理，则为该节点配置 `'None'`。

## #计算公式及示例说明

下方结合模型训练时的数据标准化处理计算公式为您进行介绍：

yaml文件中的mean和scale参数与训练时的mean、std需要进行换算。

预处理节点中数据标准化操作的计算方式为： n o r m_d a t a=(d a t a−m e a n)∗s c a l e norm\_data = ( data - mean ) * scale n or m_d a t a=(d a t a−m e an)∗sc a l e 。

以yolov3为例，其训练时的预处理代码为：

`def base_transform(image, size, mean, std): x = cv2.resize(image, (size, size).astype(np.float32)) x /= 255 x -= mean x /= std return x class BaseTransform: def __init__(self, size, mean=(0.406, 0.456, 0.485), std=(0.225, 0.224, 0.229)): self.size = size self.mean = np.array(mean, dtype=np.float32) self.std = np.array(std, dtype=np.float32)`

则计算公式为：n o r m_d a t a=(d a t a 255−m e a n)∗1 s t d norm\_data= (\frac{data}{255}-mean) * \frac{1}{std}n or m_d a t a=(255 d a t a​−m e an)∗s t d 1​。

改写为预处理节点的计算方式： n o r m_d a t a=(d a t a 255−m e a n)∗1 s t d=(d a t a−255∗m e a n)∗1 255∗s t d norm\_data= (\frac{data}{255}-mean) * \frac{1}{std} =(data-255*mean) * \frac{1}{255*std}n or m_d a t a=(255 d a t a​−m e an)∗s t d 1​=(d a t a−255∗m e an)∗255∗s t d 1​，

则： m e a n_y a m l=255∗m e a n、s c a l e_y a m l=1 255∗s t d mean\_yaml = 255*mean、scale\_yaml = \frac{1}{255*std}m e an_y am l=255∗m e an、sc a l e_y am l=255∗s t d 1​ 。

页面目录