【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

释放双眼,带上耳机,听听看~!
本文分享了华为云社区的【2023 · CANN训练营第一季】中关于模型推理时数据预处理方法及归一化参数计算的文章。文章介绍了对待推理图片进行预处理的必要性,以及使用OpenCV、AIPP、DVPP等方式进行预处理的特点。同时,文章详细介绍了Resnet50模型的预处理方法和AIPP计算减均值/乘系数的公式。通过本文可以了解到模型推理时的数据预处理流程和参数计算方法。

本文分享自华为云社区《【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算》,作者: dayao。

前言:

对待推理图片执行模型推理前,需要对图片进行预处理,以满足模型的输入要求。我们可以通过阅读模型训练代码,查看预处理的方法。在做基于Ascend CL模型推理时,通常使用的有OpenCV、AIPP、DVPP这三种方式,或者是它们的混合方式,本文比较了这三种方式的特点,并以Resnet50的pytorch模型为例,结合训练营提供的sample,说明了分别是如何实现预处理的。本文还介绍了AIPP做减均值/乘系数的参数是如何计算的。

一、查找模型训练时的预处理方式

这一步对我这样的新手有些难度,在训练营可以直接问授课老师,或者是无所不晓的老班(帅高),亦或是无所不能的小助手

以Resnet50的pytorch模型为例,这里模型需要的数据预处理方法,再讲述两种查找方法。

**Resnet50模型,**需要对待推理图片的数据预处理是:缩放到224*224;以RGB的顺序存放;对像素/255.0,变换到[0.0,1.0]范围内;再按三个通道,分别做减均值,乘系数的运算,三个通道的均值是[0.485, 0.456, 0.406],对应系数分别是:[0.229, 0.224, 0.225]。

1、方法一:在昇腾官方的modelzoo去查。gitee.com/ascend/mode…

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

然后选择用于训练的模型PyTorch目录

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

在搜索框中,输入Resnet50,找到对应的模型文件

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

然后在modelarts / train_start.py里查到的处理代码如下:

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

2、方法二:到pytorch官网去查

pytorch.org/vision/stab…

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

二、数据预处理的方式

确定好了输入图片需要做哪些预处理,接下来就需要选择合适的实现方式。Ascend CL常用的有三种:Opencv、AIPP、DVPP。这三种方式的特点如下表所示:

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

本次训练营,勤劳的小虎老师贴心的给大家准备了三种方式,供大家学习和掌握。代码在:gitee.com/ascend/samp… CV;CV+AIPP;DVPP+AIPP。如下表所示:

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

1、CV方式:sampleResnetQuickStart

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

2、cv+AIPP方式:sampleResnetAIPP.cpp​

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

3、DVPP+AIPP方式:sampleResnetDVPP

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

三、减均值/乘系数 用AIPP实现的计算

Pytorch官方的计算方法:

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

1、将图像数据调整到[0.0, 1.0]之间,相当于(/255.0)——torchvision.transforms.ToTensor

2、将数据x = (x – mean(x))/std(x)——torchvision.transforms.Normalize

用数学公式表达:

pixel_out_chx(i)=[pixel_in_chx(i)/255 – mean_i]/std_i

=[pixel_in_ch(i) – mean_i*255]/(255*std_i) (公式一)

注:pixel_out_chx(i):计算输出值;

pixel_in_chx(i):原始像素值,取值范围[0, 255];

mean_i:均值,3个颜色通道分别取:[0.485, 0.456, 0.406]

std_i:系数,3个颜色通道分别取:[0.229, 0.224, 0.225]

AIPP减均值乘系数的计算公式:

pixel_out_chx(i)=[pixel_in_chx(i)-mean_chn_i-min_chn_i]*var_reci_chn (公式二)

注:pixel_out_chx(i):计算输出值;

pixel_in_chx(i):原始像素值,取值范围[0, 255];

mean_chn_i表示每个通道的均值;

min_chn_i表示每个通道的最小值;

var_reci_chn表示每个通道方差的倒数

mean_chn_i和min_chn_i可以任意使用1个,另一个为0。令mean_chn_i=0,

公式一和公式二的像素经过计算后的值相等,所以公式的右边也相等,计算可得出:

min_chn_i = mean_i*255

var_reci_chn = 1/(255*std_i)

三个通道的计算如下:

【2023 · CANN训练营第一季】——模型推理时数据预处理方法及归一化参数计算

点击关注,第一时间了解华为云新鲜技术~

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

LangChain系列:学习AI应用开发的提示词模板

2023-12-22 14:11:00

AI教程

基础模型:AI革命中的明星模型及其工作原理

2023-12-22 14:16:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索