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

参数说明解析

mean_value 参数讲解

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

  • 参数说明:

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

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

注意

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

scale_value 参数讲解

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

  • 参数说明:

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

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

注意

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

std_value 参数讲解

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

  • 参数说明:

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

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

注意

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

计算公式及示例说明

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

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

预处理节点中数据标准化操作的计算方式为: norm_data=(data−mean)∗scalenorm\_data = ( data - mean ) * scale 。

以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)

则计算公式为:norm_data=(data255−mean)∗1stdnorm\_data= (\frac{data}{255}-mean) * \frac{1}{std}。

改写为预处理节点的计算方式: norm_data=(data255−mean)∗1std=(data−255∗mean)∗1255∗stdnorm\_data= (\frac{data}{255}-mean) * \frac{1}{std} =(data-255*mean) * \frac{1}{255*std},

则: mean_yaml=255∗mean、scale_yaml=1255∗stdmean\_yaml = 255*mean、scale\_yaml = \frac{1}{255*std} 。