Skip to main content

模型支持列表

模型推理

功能介绍

使用mxVision模型推理功能通过给定输入和指定模型,进行推理获得输出结果,支持om格式的模型推理,可使用ATC工具构建的动态Batch、动态分辨率和分档动态维度模型进行推理。模型推理输入为张量Tensor类型,由用户使用mxvision提供的接口构造使用。当前mxvision提供的python接口只支持同步推理。

接口调用流程

使用模型推理前,用户需准备好输入数据以及需要加载的模型,根据模型路径或者内存方式初始化Model类,通过调用Model类的infer接口获取模型推理结果。

模型推理调用流程参考如下:

图1 模型推理接口调用流程

关键接口说明如下:

  1. 模型初始化。

    用户需根据实际业务情况确认模型加载方式,选择从文件加载模型从内存加载模型。如果从内存加载,需要先将模型文件读取到内存,可通过以下两种方式传入。

    • 从文件加载模型,可选择直接向Model接口传入模型路径,进行初始化。
    • 通过结构体ModelLoadOptV2中的“loadType”字段指定加载方式后,再传入Model接口,其中加载方式在模型方面区分从文件加载模型,还是从内存加载模型,在内存方面区分是由系统内部管理,还是由用户管理,具体可参见ModelLoadOptV2
  2. 调用infer接口获取模型推理结果。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

import numpy as np
from mindx.sdk import base
from mindx.sdk.base import Tensor, Model
## 模型推理
## 构造输入Tensor(以二进制输入为例)
## 读取前处理好的numpy array二进制数据
input_array = np.load("preprocess_array.npy")
## 构造输入Tensor类并转移至device侧
input_tensor = Tensor(input_array)
input_tensor.to_device(device_id)
## 构造输入Tensor列表
input_tensors = [input_tensor]
## 模型路径
model_path = "resnet50_batchsize_1.om"
## 初始化Model类
model = Model(modelPath=model_path, deviceId=device_id)
## 执行推理
outputs = model.infer(input_tensors)

父主题: 使用API接口方式开发(Python)

运行

运行样例前,需设置mxVison环境变量。

source {mxVison安装目录}/mxVision/set_env.sh

运行

用户准备好自己的源码文件“main.py”,以及Python运行环境。

使用python3执行文件,命令参考如下。

python3 main.py

:::note 说明

父主题: 使用API接口方式开发(Python)

模型支持列表

模型种类

模型框架

使用后处理动态库

获取途径

YOLOv3

TensorFlow

(tensorinfer框架)modelpostprocessors/libyolov3postprocess.so

ResNet-50

TensorFlow

(tensorinfer框架)modelpostprocessors/libresnet50postprocess.so

Faster Rcnn

TensorFlow

(tensorinfer框架)modelpostprocessors/libfasterrcnnpostprocess.so

MindSpore

(tensorinfer框架)modelpostprocessors/libfasterrcnnpostprocess.so

YOLOv4

Pytorch

(tensorinfer框架)modelpostprocessors/libyolov3postprocess.so

SSD-VGG16

Caffe

(tensorinfer框架)modelpostprocessors/libssdvggpostprocess.so

SSD MobileNet v1 FPN

TensorFlow

(tensorinfer框架)modelpostprocessors/libssdmobilenetfpnpostprocess.so

CRNN

TensorFlow

(tensorinfer框架)modelpostprocessors/libcrnnpostprocess.so

YOLOv5

Pytorch

(tensorinfer框架)modelpostprocessors/libyolov3postprocess.so

FasterRCNN-FPN/CascadeRCNN-FPN

Pytorch

(tensorinfer框架)modelpostprocessors/libfasterrcnnpostprocess.so

ResNet-18

TensorFlow

(tensorinfer框架)modelpostprocessors/libresnet50postprocess.so

CTPN

TensorFlow

(tensorinfer框架)modelpostprocessors/libctpnpostprocess.so

CTPN

MindSpore

(tensorinfer框架)modelpostprocessors/libctpnpostprocess.so

DeepLabv3

MindSpore

(tensorinfer框架)modelpostprocessors/libdeeplabv3post.so

BERT-Base (Uncased)

TensorFlow

(tensorinfer框架)modelpostprocessors/libresnet50postprocess.so

U-Net

MindSpore

(tensorinfer框架)modelpostprocessors/libunetmindsporepostprocess.so

Mask R-CNN

Pytorch

(tensorinfer框架)modelpostprocessors/libmaskrcnnmindsporepost.so

FaceNet

TensorFlow

无需后处理。

SSD MobileNet v1 FPN

MindSpore

(tensorinfer框架)modelpostprocessors/libSsdMobilenetFpn_MindsporePost.so

OpenPose

TensorFlow

(tensorinfer框架)modelpostprocessors/libopenposepostprocess.so

RetinaNet

TensorFlow

(tensorinfer框架)modelpostprocessors/retinanetpostprocess.so

HigherHRnet

Pytorch

(tensorinfer框架)modelpostprocessors/libhigherhrnetpostprocess.so

YoloV7Detection

Pytorch

PPYOLOEPlusDetection

Paddle

父主题: 模型支持参考

模型后处理配置参数

各个模型所需要的配置参数见下表。

表1 YOLOv3模型后处理配置参数(yolov3_tf_bs1_fp16.cfg)

参数名描述默认值取值区间
CLASS_NUM类别数量。80
BIASES_NUManchor宽高的数量(18表示9个anchor,每个对应一对宽高值)。18[0, 100]
BIASE每两个数组成一个anchor的宽高值,例如10、13表示第一个anchor的宽、高值。10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.3[0.0, 1.0]
OBJECTNESS_THRESH是否为目标的阈值,大于阈值即认为是目标。0.3[0.0, 1.0]
IOU_THRESH两个框的IOU阈值,超过阈值即认为同一个框。0.45[0.0, 1.0]
YOLO_TYPE表示输出Tensor的个数,3表示有三个feature map输出。3[0, 16]
ANCHOR_DIM每个feature map对应的anchor框数量。3[0, 16]
MODEL_TYPE数据排布格式,0表示NHWC,1表示NCHW,2表示NCHWC。0
FRAMEWORKString类型,可选值有MindSpore,PyTorch,TensorFlow 和Caffe。TensorFlow
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表2 ResNet-50模型后处理配置参数(resnet50_aipp_tf.cfg)

参数名描述默认值取值区间
CLASS_NUM类别数量。1001[0, 2000]
SOFTMAX布尔型,是否需要在后处理中做softmax计算。false
TOP_K前K个可能性最大的类。1[0, 16]

表3 FasterRcnn模型后处理配置参数(faster_rcnn_uncut.cfg)

参数名

描述

默认值

取值区间

CLASS_NUM

类别数量。

91

[0, 1000]

SCORE_THRESH

目标是否为某种类别物体的阈值,大于阈值即认为是该目标。

0.5

[0.0, 1.0]

IOU_THRESH

两个框的IOU阈值,超过阈值即认为同一个框。

0.45

[0.0, 1.0]

SEPARATE_SCORE_THRESH

各个类别对应的阈值。

CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

MODEL_TYPE

可选以下三个值:

0:original

1:nms_cut(模型未做非极大值抑制)

2:FPN

0

FRAMEWORK

可选以下三个值:

  • TensorFlow
  • MindSpore
  • Pytorch

TensorFlow

NMS_FINISHED

modelinfer框架特有的属性值,为布尔值:

  • false:模型本身不存在NMS算子,需后处理进行NMS操作。
  • true:模型本身存在NMS算子,不需后处理进行NMS操作。

true

:“MODEL_TYPE”和“FRAMEWORK”参数配套说明如下:

  • orginal配套TensorFlow框架。
  • nms_cut配套TensorFlow或MindSpore框架。
  • FPN配套Pytorch框架。

表4 ssd_vgg模型后处理配置参数(ssd_vgg16_caffe_release.cfg)

参数名描述默认值
CLASS_NUM类别数量。5
SCORE_THRESH目标阈值。0.4
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表5 Ssd-Mobilenet-v1-Fpn模型后处理配置参数(ssd_mobilenetv1_fpn.cfg)

参数名描述默认值
CLASS_NUM类别数量。3
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.5
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表6 CRNN模型后处理配置参数(crnn_ssh_2.cfg)

参数名描述默认值取值区间
CLASS_NUM类别数量。0[0, 10000]
OBJECT_NUM可检测的字符数上限。0[0, 1000]
BLANK_INDEX空白符的索引值。0[0, 10000]
WITH_ARGMAX模型backbone是否已经做了argmax。false

表7 modelinfer框架ResNet特征模型后处理配置参数(resnet_feature_caffe_release.cfg)

参数名描述默认值
ACTIVATION_FUNCTION用来激活模型输出数据的激活函数。None

表8 modelinfer框架ResNet多分类属性模型后处理配置参数(resnet_attribute_caffe_release.cfg)

参数名描述默认值
ATTRIBUTE_NUM模型输出属性的数量。5
ACTIVATION_FUNCTION激活函数的类型,目前仅支持sigmoid函数。
ATTRIBUTE_INDEX模型输出属性的索引。请确保索引的数量与ATTRIBUTE_NUM值相等。

表9 modelinfer框架ResNet二分类属性模型后处理配置参数(resnet_attribute_caffe_release.cfg)

参数名描述默认值
CLASS_NUM类别数量。5

表10 modelinfer框架YOLOv4模型后处理配置参数(yolov4_pt_bs1_fp16.cfg)

参数名描述默认值
CLASS_NUM类别数量。80
BIASES_NUManchor宽高的数量(18表示9个anchor,每个对应一对宽高值)18
BIASES每两个数组成一个anchor的宽高值,例如10、13表示第一个anchor的宽、高值。10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.3
OBJECTNESS_THRESH是否为目标的阈值,大于阈值即认为是目标。0.3
IOU_THRESH两个框的IOU阈值,超过阈值即认为同一个框。0.45
YOLO_TYPE表示输出Tensor的个数,3表示有三个feature map输出。3
ANCHOR_DIM每个feature map对应的anchor框数量。3
MODEL_TYPE数据排布格式,0表示NHWC,1表示NCHW。0
FRAMEWORK_TYPE模型框架,0表示Pytorch,1表示MindSpore。0
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表11 YOLOv4模型后处理配置参数(yolov4_pt_bs1_fp16.cfg)

参数名描述默认值
CLASS_NUM类别数量。80
BIASES_NUManchor宽高的数量(18表示9个anchor,每个对应一对宽高值)。18
BIASES每两个数组成一个anchor的宽高值,例如10、13表示第一个anchor的宽、高值。10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.3
OBJECTNESS_THRESH是否为目标的阈值,大于阈值即认为是目标。0.3
IOU_THRESH两个框的IOU阈值,超过阈值即认为同一个框。0.45
YOLO_TYPE表示输出Tensor的个数,3表示有三个feature map输出。3
ANCHOR_DIM每个feature map对应的anchor框数量。3
MODEL_TYPE数据排布格式,0表示NHWC,1表示NCHW,2表示NCHWC。0
FRAMEWORKString类型,可选值有MindSpore,PyTorch,TensorFlow 和Caffe。MindSpore
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)
YOLO_VERSION使用的yolo模型版本。(必选)YOLO_VERSION=4

表12 YOLOv5模型后处理配置参数(yolov5_pt_bs1_fp32.cfg)

参数名描述默认值取值空间
CLASS_NUM类别数量。80[0, 1000]
BIASES_NUManchor宽高的数量(18表示9个anchor,每个对应一对宽高值)。18[0, 1000]
BIASE每两个数组成一个anchor的宽高值,例如10、13表示第一个anchor的宽、高值。10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.3[0.0, 1.0]
OBJECTNESS_THRESH是否为目标的阈值,大于阈值即认为是目标。0.3[0.0, 1.0]
IOU_THRESH两个框的IOU阈值,超过阈值即认为同一个框。0.45[0.0, 1.0]
YOLO_TYPE表示输出Tensor的个数,3表示有三个feature map输出。3[0, 1000]
ANCHOR_DIM每个feature map对应的anchor框数量。3[0, 1000]
MODEL_TYPE数据排布格式,0表示NHWC,1表示NCHW,2表示NCHWC(当前仅支持的PyTorch框架模型)。2[0, 1000]
FRAMEWORKString类型,可选值有MindSpore,PyTorch,TensorFlow 和Caffe。PyTorch
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)
YOLO_VERSION使用的yolo模型版本。(必选)YOLO_VERSION=5

表13 modelinfer框架FasterRCNN-Fpn/CascadeRCNN-Fpn模型后处理配置参数(fasterrcnn.cfg或cascadercnn.cfg)

参数名描述默认值
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标,实验使用0.3。0.5
FPN_SWITCHFPN开关,这两个模型均要设为true。false

表14 DeepLabV3+(TensorFlow)模型后处理配置参数(deeplabv3.cfg)

参数名描述默认值
CLASS_NUM类别数量。21
FRAMEWORK_TYPE深度学习框架类型选择。TensorFlow框架选择0

表15 CTPN模型后处理配置参数(ctpn_tf.cfg)

参数名描述默认值取值区间
IS_ORIENTED是否进行检测框倾斜。false
BOX_IOU_THRESH检测小框的iou阈值。0.7[0.0, 1.0]
TEXT_IOU_THRESH最终文本框的iou阈值。0.2[0.0, 1.0]
TEXT_PROPOSALS_MIN_SCORE检测小框的最小分数过滤。0.7[0.0, 1.0]
LINE_MIN_SCORE最终文本框的最小分数过滤。0.9[0.0, 1.0]
IS_MINDSPORE是否为MindSpore框架。false

表16 CTPN模型后处理配置参数(ctpn_mindspore.cfg)

参数名描述默认值取值区间
IS_ORIENTED是否进行检测框倾斜。false
BOX_IOU_THRESH检测小框的iou阈值。0.7[0.0, 1.0]
TEXT_IOU_THRESH最终文本框的iou阈值。0.2[0.0, 1.0]
TEXT_PROPOSALS_MIN_SCORE检测小框的最小分数过滤。0.7[0.0, 1.0]
LINE_MIN_SCORE最终文本框的最小分数过滤。0.9[0.0, 1.0]
IS_MINDSPORE是否为MindSpore框架。true

表17 ResNet-18模型后处理配置参数(resnet18_aipp_tf.cfg)

参数名描述默认值
CLASS_NUM类别数量。2

表18 DeepLabv3(MindSpore)模型后处理配置参数(deeplabv3.cfg)

参数名描述默认值
CLASS_NUM类别数量。21
MODEL_TYPE模型推理输出数据的排布格式,0表示NHWC,1表示NCHW。1
FRAMEWORK_TYPE深度学习框架类型选择。MindSpore框架选择2

表19 BERT-Base (Uncased) 模型后处理配置参数(bert.cfg)

参数名描述默认值
CLASS_NUM类别数量。2
CHECK_MODEL检查模型兼容性。false

表20 DeepLabV3+(Pytorch)模型后处理配置参数(deeplabv3.cfg)

参数名描述默认值
CLASS_NUM类别数量。21
CHECK_MODEL检查模型兼容性。true
MODEL_TYPE模型推理输出数据的排布格式,0表示NHWC,1表示NCHW。1
FRAMEWORK_TYPE深度学习框架类型选择。Pytorch框架选择1

表21 U-Net模型后处理配置参数(unet_simple.cfg)

参数名描述默认值
CLASS_NUM类别数量。2
POST_TYPE模型后处理方式,0表示对模型logits输出(NHWC型)做argmax,1表示对模型argmax输出结果(NHW型)透传。1
RESIZE_TYPE对像素图做插值还原的方式,暂只支持两种方式: 0:不做插值还原。 1:最邻近插值还原。1

表22 Mask R-CNN模型后处理配置参数(mask_rcnn_2017.cfg)

参数名描述默认值取值区间
CLASS_NUM推理类别总数,背景不计算在内。80[0, 100]
SCORE_THRESH置信度得分阈值,可根据业务场景调整。0.7[0.0, 1.0]
IOU_THRESHIOU阈值,可根据业务场景调整。0.5[0.0, 1.0]
RPN_MAX_NUMRegion Proposal Network最大个数。1000[0, 1000]
MAX_PER_IMG按置信度排序,每张图预测框的最大值。128[0, 150]
MASK_THREAD_BINARY输入RCNN的掩码阈值。0.5[0.0, 1.0]
MASK_SHAPE_SIZEmask_rcnn中掩码的形状,只支持单参数表示正方形。28[0, 100]
MODEL_TYPE可选以下两个值。 0:MindSpore 1:Pytorch0
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表23 Ssd_Mobilenet_v1_Fpn_for_MindSpore模型后处理配置参数(ssd_mobilenetv1_fpn.cfg))

参数名描述默认值取值区间
CLASS_NUM类别数量。81[0, 100]
SCORE_THRESH目标是否为某种类别物体的阈值,大于阈值即认为是该目标。0.5[0.0, 1.0]
IOU_THRESH目标重合程度的阈值,大于阈值即认为两个目标框对应同一个目标。0.6[0.0, 1.0]
SEPARATE_SCORE_THRESH各个类别对应的阈值。CLASS_NUM(数量)个SCORE_THRESH(阈值),以逗号为分隔符。(阈值数量等于CLASS_NUM。)

表24 OpenPose模型后处理配置参数(openpose.cfg)

参数名描述默认值取值区间
KEYPOINT_NUM关键点个数,加上背景(背景算一个)。19[0, 100]
FILTER_SIZE高斯滤波核的长(或宽)。25[0, 100]
SIGMA高斯滤波核的方差。3[0, 10]

表25 HigherHRnet模型后处理配置参数(higherhrnet.cfg)

参数名描述默认值取值区间
KEYPOINT_NUM关键点个数。17[0, 20]
SCORE_THRESH关键点阈值。0.1[0.0, 1.0]

表26 Unet++模型后处理配置参数(unet_nested.cfg)

参数名描述默认值取值区间
CLASS_NUM类别数量。3
POST_TYPE模型后处理方式,0表示对模型logits输出(NHWC型)做argmax,1表示对模型argmax输出结果(NHW型)透传。1[0, 16]
RESIZE_TYPE对像素图做插值还原的方式,暂只支持两种方式: 0:不做插值还原。 1:最邻近插值还原。1[0, 16]

表27 RetinaNet模型后处理配置参数(retinanet_tf.cfg)

参数名描述默认值取值区间
CLASS_NUM代表数据集类别数量(默认COCO数据集是80类)。80[0, 100]
MODEL_TYPE代表模型类别,目前仅支持TensorFlow模型。0[0, 100]
SCORE_THRESH代表分数阈值。0.5[0.0, 1.0]

父主题: 模型支持参考

模型结构

YOLOv3

  • 可接受的模型与YOLOv3具有类似的输出张量。一般有三个输出张量(YOLOv3-Tiny只有两个,配置参数“YOLO_TYPE”需设为“2”),分别是8倍,16倍与32倍降采样后的特征层。
  • 每个输出张量的第一维与模型所支持的最大batchsize相同,按照NHWC或NCHW,输出张量形状略有差异,WH分别等于模型输入宽高除以8,16,32,C等于先验框个数anchorDim=3 * (边框坐标4 + 边框置信度1 + 类别数80)
  • 配置参数MODEL_TYPE = 0时,采取NHWC,MODEL_TYPE = 1时,采取NCHW。

图1 NHWC型

图2 NCHW型

FasterRCNN

  • 支持两种结构的模型,原生FasterRCNN模型,以及对模型中NMS(非最大值抑制)进行裁剪后的模型。

  • 配置参数NMS_FINISHED = 0时,采取后者,NMS_FINISHED = 1时采取前者。

  • 原生模型:

    有四个输出张量,分别为目标数,置信度,坐标框和类别ID。

    图3 FasterRCNN原生模型

  • 裁剪NMS后:

    有三个输出张量,分别为目标数,每种类别目标可能的坐标框,每种类别目标框的置信度。

    图4 FasterRCNN裁剪NMS后

SSD MobileNet v1 FPN

SSD MobileNet v1 FPN与FasterRCNN原生模型类似,有四个输出张量,分别为目标数,置信度,坐标框和类别ID。

图5 SSD MobileNet v1 FPN

SSD-VGG16

SSD-VGG16有两个输出张量,第一个输出张量是目标数,第二个输出张量的为目标框的信息[batch, keep_top_k, 8],其中的“8”表示batchID、label(classID)、score(类别概率)、xmin、ymin、xmax、ymax、null。

图6 SSD-VGG16

CRNN

CRNN的输出张量仅一个,第一维是batchsize,第二维即其所能检测的目标数上限,代表其识别到的每个目标的类别ID(包含占位符)。

图7 CRNN

ResNet-50

ResNet-50仅需一个输出张量,第一维是batchsize,第二维与类别数一致,为模型特征层softmax之后的结果。第二个输出张量为概率最大的类别对应的类别ID。

图8 ResNet-50

YOLOv4

YOLOv4与YOLOv3模型类似,有三个输出张量,分别是8倍,16倍与32倍降采样后的特征层。

图9 YOLOv4

YOLOv5

  • YOLOv5有三个输出张量,分别是8倍,16倍与32倍降采样后的特征层。
  • 输出张量按照N(C0)HW(C1)的形式排布,WH分别等于模型输入宽高除以8、16、32,C等于先验框个数anchorDim=3 * (边框坐标4 + 边框置信度1 + 类别数80)

图10 YOLOv5

FasterRCNN-Fpn/CascadeRCNN-Fpn

模型有两个输出张量,分别是5 * 100的预测框和置信度(x0, y0, x1, y1,confidence)(其中坐标为左上和右下的检测框的坐标),1 * 100是每个类别的分值。输入为固定size的RGB图片:3 * 1216 * 1216 。

图11 FasterRCNN-Fpn/CascadeRCNN-Fpn

CTPN(TensorFlow)

CTPN(TensorFlow)模型有两个输出张量,分别是38 * 67 * 40的预测小框,相当于38 * 67 * 4的每个像素点生成10个小框,38 * 67 * 20的预测分数,相当于38 * 67 * 2的每个像素点生成10个预测分数。输入为固定size的RGB图片:3 * 608 * 1072 。

图12 CTPN(TensorFlow)

CTPN(MindSpore)

CTPN(MindSpore)模型有两个输出张量,分别是1000个预测小框,5个维度分别是四个坐标和分数, 另一个1000是每个小框的类别,分别为1、0,表示前景还是后景。输入则是固定size的RGB图片:3 * 576 * 960 。

图13 CTPN(MindSpore)

ResNet-18+

ResNet-18+模型输入是1 * 408 * 64 * 3大小的张量。输出是1 * 2的张量,表示每个样本的分类概率。

图14 ResNet-18+

BERT-Base(Uncased)

BERT-Base(Uncased)模型输入有三个张量,shape都是1 * 128。1表示batchsize,128表示句长。

模型输出有一个张量,1 * 2,表示每个分类类别的概率。

图15 BERT-Base(Uncased)

DeeplabV3+(TensorFlow)

DeeplabV3+(TensorFlow)模型输出有一个张量,是1 * 513 * 513 * 21的NHWC排布方式,物理含义相当于每个像素点的分类概率。原始输入图片是动态shape的RGB图片。模型输入是1 * 513 * 513 * 3的张量。

图16 DeeplabV3+(TensorFlow)

DeepLabV3(MindSpore)

DeepLabV3(MindSpore)模型输入是NHWC排布的,输出以NCHW排布。

图17 DeepLabV3(MindSpore)

DeepLabV3(Pytorch)

DeepLabV3(Pytorch)模型输入以NHWC排布,输出为NCHW排布。

图18 DeepLabV3(Pytorch)

Unet(MindSpore)

Unet(MindSpore)模型输出Tensor为NCHW,其中N为1,C为2,作为mxVision后处理输入。

  1. 在C通道上进行argmax,得到最大概率值的索引值,生成数值为0和1的二维数组。
  2. 判断模型输出Tensor的HW是否与输入原图尺寸一致,若一致则直接输出argmax后的二维数组,否则进行最近邻插值到输入图片尺寸。

图19 Unet(MindSpore)

Mask R-CNN(TensorFlow)

Mask R-CNN(TensorFlow)模型输入张量为4维NHWC(1 * 480 * 640 * 3)排布格式。

  • N为批数量。
  • H为输入图像的高度(480)。
  • W为输入图像的宽度(640)。

Mask R-CNN(TensorFlow)模型输出张量有5个(tensor[0]~tensor[4])。

  • tensor[0]的维度为1维(1),第一维长度为1,代表模型检测出的目标的个数。
  • tensor[1]的维度为2维(1 * 100),第一维长度为1,代表批数量。第二维长度为100,代表前top100个目标的置信度分数。
  • tensor[2]的维度为3维为(1 * 100 * 4), 第一维长度为1,代表批数量。第二维长度为100,代表前top100个目标框。第三维长度为4,代表目标框的四个顶点坐标(x0, y0, x1, y1)。
  • tensor[3]的维度为4维(1 * 100 * 33 * 33),第一维长度为1,代表批数量。第二维长度为100,代表前top100个目标框。第三维和第四维代表一张33 * 33大小的掩码图。
  • tensor[4]的维度为2维(1 * 100), 第一维长度为1,代表批数量。第二维长度为100,代表前top100目标的分类类别。

图20 Mask R-CNN(TensorFlow)

FaceNet(TensorFlow)

FaceNet(TensorFlow)输入张量的形状为 NHWC (1*160*160*3),数据类型为UINT8。

  • N为批数量。
  • H代表输入图像的高度160。
  • W代表输入图像的宽度160。
  • C代表图像的通道数。

输出张量为目标图像对应的特征向量,形状为1 * 512,第一维代表批数量,第二维为特征向量的长度512,数据类型为FLOAT32。

图21 FaceNet(TensorFlow)

SSD MobileNet v1 FPN(MindSpore)

SSD MobileNet v1 FPN(MindSpore)有2个输出张量,分别为坐标框和置信度。

图22 SSD MobileNet v1 FPN(MindSpore)

OpenPose

OpenPose输出张量为[batch, outputHeight, outputWidth, channel],“outputHeight”表示输出图像的高,“outputWidth”表示输出图像的宽,“channel”由两部分组成,前1/3为heat mat,后2/3为paf mat。此模型输出为[1, 54, 46, 57]。

图23 OpenPose

Unet++(MindSpore)

Unet++(MindSpore)模型后处理有一个NCHW的输入Tensor,为模型进行argmax操作之后经过aipp处理后输入给后处理模块;有一个NHW的输出Tensor,由于模型已经做了argmax,C通道已经计算在Tensor HW对应的值。

图24 Unet++(MindSpore)

父主题: 模型支持参考

使用须知

note

须知

本章节开放的类,请遵循同一个类实例在单一线程中使用的原则,请勿将同一个类实例在不同的线程中使用。

API划分

mxVision C++ API目前分为三大部分:面向昇腾硬件底层接口的基础组件层、面向插件开发和流程编排的编程框架层。

接口管理规范

  • 标记有宏 SDK_AVAILABLE_FOR_OUT 的接口,表示对用户开放。
  • 标记有宏 SDK_AVAILABLE_FOR_IN 的接口,表示内部使用,请用户不要使用。
  • 标记有宏 SDK_UNAVAILABLE_FOR_OTHER 的接口,表示为隐藏,用户无法使用。
  • 标记有宏 SDK_DEPRECATED_FOR 的接口,表示在未来版本会弃用,建议使用替代接口。

父主题: API参考(C++)

在线提单