1、Ncnn 的 substract_mean_normalize(mean_vals, norm_vals) 函数
mean_vals:减去的均值
norm_vals:乘以的方差
注意:ncnn 中的 substract_mean_normalize 函数像素范围在 [0,255],所以在使用对于不同的框架可能需要进行转换
substract_mean_normalize 的源码在 mat.cpp 的第1127行,操作是支持只 mean 不 norm,只norm 不 mean,mean 和 norm 都做得,是通过判断 mean 和 norm 是否有输入执行对应的操作。代码的区别不大,这里我只贴 mean 和 norm 都做的代码:
void Mat::substract_mean_normalize(const float* mean_vals, const float* norm_vals)
{
Layer* op;
if (mean_vals && !norm_vals)
{
......
}
else if (!mean_vals && norm_vals)
{
......
}
else if (mean_vals && norm_vals)
{
// substract mean and normalize
op = create_layer(LayerType::Scale);
ParamDict pd;
pd.set(0, c);
pd.set(1, 1);
op->load_param(pd);
Mat weights[2];
weights[0] = Mat(c