ncnn的substract_mean_normalize函数详解

导读

在使用模型进行预测的时候,我们在做图片预处理的时候通常需要归一化输入图片的均值方差,而ncnn也提供了substract_mean_normalize函数,来针对输入图片的均值和方差做处理,这篇文章我们就来详细介绍一下这个函数的使用。

函数介绍

函数:substract_mean_normalize(mean_vals, norm_vals)

  • mean_vals:减去的均值
  • norm_vals:乘以的方差

注意:ncnn中的substract_mean_normalize函数像素范围在[0,255],所以在使用对于不同的框架可能需要进行转换

像素范围在[0,255]之间

transform_param {
    mean_value: 103.94
    mean_value: 116.78
    mean_value: 123.68
    scale: 0.017
}

ncnn中的代码

const float mean_vals[3] = { 103.94f, 116.78f, 123.68f };
const float norm_vals[3] = { 0.017f, 0.017f, 0.017f };
in.substract_mean_normalize(mean_vals, norm_vals);

mxnet-gluon或pytorch

transforms.ToTensor(),
transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))

mxnet框架在处理图片数据的时候,会对其进行归一化,所以像素会在[0,1]之间,转换为ncnn的代码

// R' = (R / 255 - 0.485) / 0.229 = (R - 0.485 * 255) / 0.229 / 255
// G' = (G / 255 - 0.456) / 0.224 = (G - 0.456 * 255) / 0.224 / 255
// B' = (B / 255 - 0.406) / 0.225 = (B - 0.406 * 255) / 0.225 / 255
const float mean_vals[3] = {0.485f*255.f, 0.456f*255.f, 0.406f*255.f};
const float norm_vals[3] = {1/0.229f/255.f, 1/0.224f/255.f, 1/0.225f/255.f};
in.substract_mean_normalize(mean_vals, norm_vals);

参考:FAQ ncnn produce wrong result · Tencent/ncnn Wiki · GitHub

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值