SNPE输入数据和预处理(1)

一、简介
SNPE作为高通提供的应用在AI方面的SDK,它可以和高通DSP中针对人工智能所拓展的部分一起为大家带来良好的体验。其通过独特的数据处理,将Caffe等模型转换为可以在手机端进行的分析及体验的APK应用程序,同时可以让开发更加的得心应手。

二、图像预处理
SNPE支持所有常见的图像预处理操作,例如在所有受支持的运行时上进行色彩空间转换(例如将NV21转换为BGR格式),缩放,裁剪和均值减法。 这些操作作为层添加到网络,并作为前向传播管道的一部分执行。 操作所需的任何数据(例如均值图像)都嵌入到网络DLC中。

当前仅从Caffe模型转换的DLC网络支持这些图像预处理操作。

操作顺序
图像预处理操作以预定义的顺序添加到网络。 此顺序是固定的,并且与在转换器或网络原型文件中指定选项的顺序无关。

图像预处理操作的顺序为:
色彩空间转换–>缩放比例–>播种–>均值减法

图像色彩空间转换
SNPE支持将各种像素格式的输入图像转换为Caffe网络所需的BGR格式。通过将输入图像像素格式选项指定为snpe-caffe-to-dlc转换工具来添加此操作。

支持以下源编码格式:
NV21
NV21是YUV的Android版本,也称为YUV420SP。 色度下采样,子采样率为4:2:0。 请注意,此图像格式有3个通道,但U和V通道已进行二次采样。 每四个Y像素有一个U和一个V像素。

SNPE支持JPEG文件交换格式的YUV像素规范。 有关BGR和YUV像素之间的转换的方程式,可以参考https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion

ARGB32
ARGB32格式每像素包含4个字节:一个字节用于红色,一个字节用于绿色,一个字节用于蓝色和一个字节用于alpha通道。 Alpha通道将被忽略。 对于小端CPU,字节顺序为BGRA。 对于大端CPU,字节顺序为ARGB。

RGBA
RGBA格式每像素包含4个字节:一个字节用于红色,一个字节用于绿色,一个字节用于蓝色和一个字节用于alpha通道。 Alpha通道将被忽略。 字节顺序与字节序无关,并且始终为RGBA字节顺序。

BGR

BGR格式每像素包含3个字节:红色代表一个字节,绿色代表一个字节,蓝色代表一个字节。 字节顺序与字节序无关,并且始终是BGR字节顺序。

图像色彩空间转换示例
以下prototxt和转换器选项描述了一个网络,其中将NV21格式的256x256大小的输入图像转换为BGR格式的256x256大小的图像。
layer {
name: “data”
type: “Input”
top: “data”
input_param { shape: { dim: 1 dim: 3 dim: 256 dim: 256 } }
}
snpe-caffe-to-dlc -c net.prototxt --encoding nv21 -d net.dlc
snpe-dlc-info -i net.dlc
snpe-dlc-info的输出将验证此编码转换的详细信息:
在这里插入图片描述

图像缩放:
SNPE支持缩放输入图像大小作为预处理操作。 插值算法是单位平方双线性。 有关更多详细信息,请参见https://en.wikipedia.org/wiki/Bilinear_interpolation#Unit_Square。
通过在snpe-caffe-to-dlc转换工具中指定输入大小选项来添加此操作。 源图像大小由转换器指定,而目标图像大小由网络原型中的输入层确定。 有关此选项的详细信息,请参见snpe-caffe-to-dlc。

图像缩放示例:
以下原型和转换器选项描述了一个网络,在该网络中,BGR编码的大小为256x256的输入图像也按BGR编码被缩放为大小为227x227。
layer {
name: “data”
type: “Input”
top: “data”
input_param { shape: { dim: 1 dim: 3 dim: 227 dim: 227 } }
}
snpe-caffe-to-dlc -c net.prototxt --input_size 256 256 -d net.dlc
snpe-dlc-info -i net.dlc
snpe-dlc-info的输出将验证此输入图像缩放的详细信息:
在这里插入图片描述

图像裁剪
SNPE支持裁剪输入图像大小作为预处理操作。 从源图像的中心提取裁剪的图像。
通过修改网络协议添加此操作。 要指定裁剪操作,请将带有crop_size选项的transform_param块添加到网络原型中的输入层。 Caffe的输入层不支持裁剪,并且此转换参数对Caffe毫无意义。 但是,snpe-caffe-to-dlc将读取此参数,并将预处理图像裁剪层添加到DLC文件。 源图像大小是从input_param形状获取的,目标图像或裁剪后的图像大小是从transform_param块获取的。

图像均值减法:
SNPE支持图像均值减法作为预处理操作。与Caffe一样,SNPE支持Caffe的binaryproto格式的均值图像文件,也支持具有恒定通道值的均值减法。请注意,只能为网络指定这些操作之一。
用均值图像进行均值减法:

通过修改网络协议添加此操作。要指定图像均值减法,请将带有mean_file选项的transform_param块添加到网络原型中的Input层。与Caffe一样,均值文件必须是binaryproto文件。该文件通常是在Caffe中创建数据库期间生成的。请注意,均值文件的路径必须是绝对路径。
Caffe的输入层不支持均值减法,并且此转换参数对Caffe毫无意义。但是,snpe-caffe-to-dlc将读取此参数,并将预处理均值减法层添加到DLC文件。
此外,SNPE支持指定大于输入图像大小的平均图像。在这种情况下,SNPE将使用均值图像的中心裁剪进行均值减法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值