OpenVINO可以获得模型的输入节点信息:
输入节点的名字
- Model Optimizer转换后的模型精度选择:对于IR模型来说,FP16 使用最普遍且性能最高
对于IR模型来说,FP16 使用最普遍且性能最高
- 输入节点数据的精度选择:U8使用最普遍
输入节点数据的精度选择:U8
- 输出节点数据的精度选择:FP32使用最普遍
输出节点数据的精度选择:FP32
- 输入节点数据的形状(shape)
- 输入节点数据的布局(layout),默认情况下,输入节点的layout是Layout::NCHW;输出节点由维度定义
输出节点的layout由数据维度决定
layout的代码定义如下:
#include
enum Layout
{
ANY = 0,
NCHW = 1,
NHWC = 2,
NCDHW = 3,
NDHWC = 4,
OIHW = 64,
GOIHW = 65,
OIDHW = 66,
GOIDHW = 67,
SCALAR = 95,
C = 96,
CHW = 128,
HWC = 129,
HW = 192,
NC = 193,
CN = 194,
BLOCKED = 200,
};
- 输入节点是否支持Resize算法,默认是NO_RESIZE,即不会自动缩放输入数据。使用下面的代码设置是否需要支持Resize。
input_data->getPreProcess().setResizeAlgorithm(InferenceEngine::RESIZE_BILINEAR);
Resize算法种类的代码定义如下
#include
enum ResizeAlgorithm
{
NO_RESIZE = 0,
RESIZE_BILINEAR,
RESIZE_AREA,
};
- 数据的色彩模式(Color format):默认情况下,Inference Engine假定输入数据的色彩模式是BGR,并且禁止色彩模式,即ColorFormat::RAW。注意:BGR是OpenCV的默认色彩模式。
ColorFormat代码定义如下:
#include
enum ColorFormat
{
RAW = 0u,
RGB,
BGR,
RGBX,
BGRX,
NV12,
I420,
};
- 输入节点是否支持平均,默认是不支持对输入数据做平均。MeanVariant代码定义如下:
#include
enum MeanVariant
{
MEAN_IMAGE, //mean value is specified for each input pixel
MEAN_VALUE, //mean value is specified for each input channel
NONE, //no mean value specified
};
整套范例程序如下所示:
// OpenVINO Sample code for PPYOLOv2
#include
#include
#include
运行结果如下所示:
OpenVINO获取模型输入节点信息
结论:
- 模型精度设置为FP16
- 模型的图像数据输入节点数据精度设置为U8,其余辅助信息节点保持默认
- 模型的图像数据输入节点的color format保持默认BGR,不做自动转换;layout保持默认:NCHW。
- 模型的输出数据精度为FP32
- OpenVINO的color format自动转换,图像尺寸自动放缩Resize和图像数据自动平均功能保持禁用;color format转换为BGR在图像采集时完成;Resize和Normalize功能手动写一个preprocess函数来实现