前言
大家知道,深度学习算法模型在推理前,都会对图像数据进行预处理,即RGB三个通道上的数据(0~255) normalize成0~1以内的值。值得注意的是,normalize方式有好几种,而且不同的算法模型所采用的预处理方式还不太一样。这就要求在nnie开发中,将caffe算法模型转换成wk文件时,必须选择合适的预处理方式。否则可能会导致识别结果不正常。
normalize方式的解释
在使用Ruyistudio进行模型文件转换时,支持下面5中方式,如下所示
下面对这5种方式分别进行解释:
1) mean file:
如果选择这种norm type, 就要选择一个后缀名为binaryproto的文件。 它是caffe框架中常用的一种均值数据格式。常见的做法就是统计train lmdb里面图像数据的均值(每个像素的每个channel累加和再除以image size)。其对应预处理方式是将待识别的图像每个像素值减去binaryproto里面对应的像素值。
2)channel mean value
该方式对应的均值文件就是里面含3个channel均值的txt文件,如mobilenet ssd的就是 127.5 127.5 127.5。 其预处理过程就是将图像上每个像素的三个通道数据分别减去127.5。注意,经过该预处理后,图像数据并没有normalize成0~1范围内。
3)data scale
顾名思义就是直接对图像数据除以255缩小到0~1内。1/255=0.0039216,但其缺省的scale值为1/256=0.0039062。
4)mean file with data scale
上面提到,光减去mean值,并不能使得图像数据落入到绝对值0~1范围内,所以,一般地,需要在这个基础上再做一个scale。
5)channel mean value with data scale
同上,每个像素的各个通道减去mean value后还得再除以mean value。 还是以mobilenet ssd为例子,减去127.5后还得再乘以scale值0.007843(约等于1/127.5)。