API接口参考(Python)
使用须知
[!NOTICE]
- 本章节开放的类,请遵循同一个类实例在单一线程中使用的原则,请勿将同一个类实例在不同的线程中使用。
- 请注意输入为集合数据类型的函数,应基于性能和实际业务需求限制长度,以防止可能出现的内存问题。
- 传入接口内的JSON相关内容中请勿包含注释,否则会引起解析失败。
- 若JSON相关内容中单个object存在key值相同键值对,接口将默认保留最后一组键值对作为解析结果。
- 使用Python数据结构以及方法前,请确保已导入正确的模块。
- 本章节中重载函数(如SendData)或函数中有默认值(如get_result)时,函数中的参数名仅是为了方便描述参数含义而定义,实际函数的入参定义为*args,请用户传参时不要指定参数名。
依赖列表说明
表 1 依赖列表
| 依赖名称 | 用途 |
|---|---|
| Tensor | 与Numpy数据转换,Host/Device转换,Python模型推理的输入输出统一结构。 |
| Image | 是DVPP输入输出统一结构,能转换为Tensor。 |
| Model | 用于模型加载推理 |
| ImageProcessor | 图像处理类,主要开放图像编解码、缩放和抠贴图等接口。 |
| VideoDecoder | 视频解码类,主要开放视频解码接口。 |
| dvpp | 含DVPP图像解码读取和缩放功能,即将废弃,建议使用ImageProcessor类。 |
| log | 用于不同级别的日志打印。 |
| post | 包含多种模型后处理类(ResNet-50、YoloV3等)。 |
依赖使用方法如下:
from mindx.sdk import base
from mindx.sdk.base import Image, Model, ImageProcessor, Size, post
Python枚举类型及数据类
通用枚举类型/数据类
总体说明
本章节数据类仅展示其属性,相关函数不予以全部展示。
本章节的数据类由swig生成,某些数据类型仅展示了部分业务相关接口,具体请参考base.py、post.py、log.py和dvpp.py。需要注意的是,swig框架会自动生成SwigPyIterator等对内使用类和函数,建议不要使用。
基本数据枚举类型
表 1 数据格式枚举类型
| 数据类型 | 说明 |
|---|---|
| base.undefined | 未定义类型。 |
| base.int8 | int8类型。 |
| base.uint8 | uint8类型。 |
| base.int16 | int16类型。 |
| base.uint16 | uint16类型。 |
| base.int32 | int32类型。 |
| base.uint32 | uint32类型。 |
| base.int64 | int64类型。 |
| base.uint64 | uint64类型。 |
| base.float16 | float16类型。 |
| base.float32 | float32类型。 |
| base.double | double类型。 |
| base.bool | bool类型。 |
AttributeInfo类
表 1 AttributeInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| attrId | int | 属性ID。 |
| attrName | str | 属性名。 |
| attrValue | str | 属性值。 |
| confidence | float | 置信度。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
borderType补边方式枚举类型
表 1 补边方式格式类型
| 参数名 | 说明 |
|---|---|
| base.border_constant | 添加有颜色的常数值边界。 |
| base.border_replicate | 重复最后一个元素。例如:aaaaaa |
| base.border_reflect | 边界元素的镜像,镜像包括边界元素。例如:ba |
| base.border_reflect_101 | 边界元素的镜像,镜像不包括边界元素。例如:cb |
BufferInput类
表 1 BufferInput类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| data | str | 图片数据。 |
| frame_info | str | 帧信息。 |
| vision_info | str | 图片信息。 |
BufferOutput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| error_code | int | 错误码。 |
| error_msg | str | 错误信息。 |
| data | str | 输出结果。 |
| get_byte_data() | 函数,返回byte类型数据 | 该函数用来返回二进制数据,也可以返回正常的推理结果。 |
ClassInfo类
表 1 ClassInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| classId | int | 类ID。 |
| className | str | 类名。 |
| confidence | float | 置信度。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
Color类
| 参数 | 类型 | 说明 |
|---|---|---|
| channel_zero | int | 0通道取值,范围[0, 255]。 |
| channel_one | int | 1通道取值,范围[0, 255]。 |
| channel_two | int | 2通道取值,范围[0, 255]。 |
CropRoiBox类
| 属性名 | 类型 | 说明 |
|---|---|---|
| x0 | float | 左上角横坐标。 |
| y0 | float | 左上角纵坐标。 |
| x1 | float | 右下角横坐标。 |
| y1 | float | 右下角纵坐标。 |
DataOutput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| error_code | int | 错误码。 |
| error_msg | str | 错误信息。 |
| buffer_output | BufferOutput | 一般类型的输出结果。 |
| metadata_list | List[MetadataOutput] | protobuf类型的输出结果。 |
| set_error_info(int, str) | 函数,无返回值 | 设置错误信息。 |
Dim类
| 参数 | 类型 | 说明 |
|---|---|---|
| left | int | 左侧补边像素数量。 |
| right | int | 右侧补边像素数量。 |
| top | int | 上方补边像素数量。 |
| bottom | int | 下方补边像素数量。 |
dtype类
| 属性名 | 对应类型 |
|---|---|
| dtype.int8 | int8类型。 |
| dtype.uint8 | uint8类型。 |
| dtype.int16 | int16类型。 |
| dtype.uint16 | uint16类型。 |
| dtype.int32 | int32类型。 |
| dtype.uint32 | uint32类型。 |
| dtype.int64 | int64类型。 |
| dtype.uint64 | uint64类型。 |
| dtype.float16 | float16类型。 |
| dtype.float32 | float32类型。 |
| dtype.double | double类型。 |
| dtype.bool | bool类型。 |
| dtype.undefined | 未定义类型。 |
KeyPointDetectionInfo类
表 1 KeyPointDetectionInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| keyPointMap | dict | 每个关键点的坐标等信息。 |
| scoreMap | dict | 每个关键点对应的置信度。 |
| score | float | 整体置信度。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
image.format类
表 1 image.format类属性说明
| 属性名 | 类型 |
|---|---|
| image.format.nv12 | NV12格式类型。 |
| image.format.nv21 | NV21格式类型。 |
| image.format.bgr | BGR888格式类型。 |
| image.format.rgb | RGB888格式类型。 |
image_format图片格式枚举类型
表 1 图像格式类型
| 内存类型 | 说明 |
|---|---|
| base.yuv_400 | YUV_400 的图像格式。 |
| base.nv12 | YUV_SP_420 的图像格式。 |
| base.nv21 | YVU_SP_420 的图像格式。 |
| base.yuv_sp_422 | YUV_SP_422 的图像格式。 |
| base.yvu_sp_422 | YVU_SP_422 的图像格式。 |
| base.yuv_sp_444 | YUV_SP_444 的图像格式。 |
| base.yvu_sp_444 | YVU_SP_444 的图像格式。 |
| base.yuyv_packed_422 | YUYV_PACKED_422 的图像格式。 |
| base.uyvy_packed_422 | UYVY_PACKED_422 的图像格式。 |
| base.yvyu_packed_422 | YVYU_PACKED_422 的图像格式。 |
| base.vyuy_packed_422 | VYUY_PACKED_422 的图像格式。 |
| base.yuv_packed_444 | YUV_PACKED_444 的图像格式。 |
| base.bgr | BGR_888的图像格式。 |
| base.rgb | RGB_888的图像格式。 |
| base.argb | ARGB_8888 的图像格式。 |
| base.abgr | ABGR_8888 的图像格式。 |
| base.rgba | RGBA_8888 的图像格式。 |
| base.bgra | BGRA_8888 的图像格式。 |
interpolation缩放方式格式枚举类型
表 1 缩放方式格式类型
| 参数名 | 说明 |
|---|---|
| base.huaweiu_high_order_filter | 华为自研的高阶滤波算法(在Atlas 推理系列产品上,此选项等同于BILINEAR_SIMILAR_OPENCV)。 |
| base.bilinear_similar_opencv | 业界通用的Bilinear算法(与OpenCV算法的计算过程类似)。 |
| base.nearest_neighbor_opencv | 业界通用的Nearest Neighbor算法(与OpenCV算法的计算过程类似)。 |
| base.bilinear_similar_tensorflow | 业界通用的Bilinear算法(与TensorFlow算法的计算过程类似,在Atlas 推理系列产品上,不支持此选项)。 |
| base.nearestneighbor_tensorflow | 业界通用的Nearest Neighbor算法(与TensorFlow算法的计算过程类似,在Atlas 推理系列产品上,不支持此选项)。 |
MetadataInput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| data_source | str | 源字段。 |
| data_type | str | protobuf数据类型。 |
| serialized_metadata | str | protobuf数据的序列化表示。 |
MetadataOutput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| error_code | int | 错误码。 |
| error_msg | str | 错误信息。 |
| data_type | str | protobuf数据类型。 |
| serialized_metadata | str | protobuf数据的序列化表示。 |
| set_error_info(int, str) | 函数,无返回值 | 设置错误信息。 |
| get_byte_data() | 函数,返回byte类型数据 | 该函数用于返回byte类型的protobuf数据序列化表示。 |
ModelLoadOptV2类
[!NOTICE] 请根据实际情况选择对应配置,如配置与实际输入存在差异,会在Model处抛出RuntimeError。
表 1 模型加载选项
| 属性名 | 类型 | 说明 |
|---|---|---|
| modelType | ModelType枚举类型 | 推理模型类型,支持情况参见如下。(默认为base.model_type_om。) |
| loadType | ModelLoadType枚举类型 | 推理模型输入类型,可通过以下参数选定输入方式。(默认为base.load_model_from_file。) |
| modelPath | str | 推理模型文件路径,仅在以下模式生效。(默认为"",最大只支持至4GB大小的模型且要求模型属主为当前用户,模型文件的权限应小于或等于640。) |
| modelPtr | int | 推理模型所在内存地址,仅在以下模式生效。(默认为0,用户需根据实际情况输入内存地址。) |
| modelSize | int | 推理模型数据长度,单位Byte,仅在以下模式生效。(默认为0,最大只支持至4GB大小的模型。) |
| modelWorkPtr | int | 推理模型所在工作内存地址,仅在以下模式生效。(默认为0,表示由系统管理内存。) |
| modelWeightPtr | int | 推理模型权值内存地址,仅在以下模式生效。(默认为0,表示由系统管理内存。) |
| workSize | int | 推理模型所在工作内存大小,单位Byte。(默认为0,当modelWorkPtr为0时无效。) |
| weightSize | int | 推理模型权值内存大小,单位Byte。(默认为0,当modelWeightPtr为0时无效。) |
ModelLoadType模型加载方式枚举类型
表 1 模型加载方式
| 参数名 | 说明 |
|---|---|
| base.load_model_from_file | 从文件加载离线模型数据,由系统内部管理内存。 |
| base.load_model_from_mem | 从内存加载离线模型数据,由系统内部管理内存。 |
| base.load_model_from_file_with_mem | 从文件加载离线模型数据,由用户自行管理模型运行的内存。 |
| base.load_model_from_mem_with_mem | 从内存加载离线模型数据,由用户自行管理模型运行的内存。 |
ModelType模型枚举类型
表 1 模型类型
| 参数名 | 说明 |
|---|---|
| base.model_type_om | OM模型。 |
| base.model_type_mindir | MindIR模型。(对于MindIR模型,仅支持静态Shape和动态Batch。) |
MxDataInput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| data | str | 图片数据。 |
| fragmentId | int | 分块ID。 |
| customParam | str | 自定义的参数。 |
| roiBoxs | List[float] | 裁剪框坐标数组,[x0,y0,x1,y1]。 |
MxDataOutput类
| 属性名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 返回的错误码,0为成功。 |
| dataSize | int | 数据大小。 |
| data | str | 推理结果。 |
visionDataFormat图像数据格式排布枚举类型
表 1 图像数据格式排布形式
| 排布形式 | 说明 |
|---|---|
| NCHW | 图像数据按NCHW格式排布。 |
| NHWC | 图像数据按NHWC格式排布。 |
StreamFormat视频流数据格式枚举类型
表 1 视频流数据格式类型
| 参数名 | 说明 |
|---|---|
| base.h265_main_level | H.265 格式视频流,主流画质。 |
| base.h264_baseline_level | H.264 格式视频流,基本画质。 |
| base.h264_main_level | H.264 格式视频流,主流画质。 |
| base.h264_high_level | H.264 格式视频流,高级画质。 |
ObjectInfo类
表 1 ObjectInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| classId | float | 类ID。 |
| className | str | 类名。 |
| confidence | float | 置信度。 |
| mask | list | mask列表。 |
| x0 | float | 左上角x坐标。 |
| x1 | float | 右下角x坐标。 |
| y0 | float | 左上角y坐标。 |
| y1 | float | 右下角y坐标。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
Point类
| 参数 | 类型 | 说明 |
|---|---|---|
| x | int | 横坐标(以图像左上角为原点)。 |
| y | int | 纵坐标(以图像左上角为原点)。 |
Rect类
| 参数 | 类型 | 说明 |
|---|---|---|
| x0 | int | 矩形框左上角坐标的横坐标。 |
| y0 | int | 矩形框左上角坐标的纵坐标。 |
| x1 | int | 矩形框右下角坐标的横坐标。 |
| y1 | int | 矩形框右下角坐标的纵坐标。 |
ResizedImageInfo类
表 1 ResizedImageInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| heightOriginal | int | 原图的高度。 |
| heightResize | int | resize后的高度。 |
| resizeType | ResizeType | resize类型。 |
| widthOriginal | int | 原图的宽度。 |
| widthResize | int | resize后的宽度。 |
| keepAspectRatioScaling | float | 缩放比例。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
ResizeType类
表 1 ResizeType类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| RESIZER_MS_KEEP_ASPECT_RATIO | ResizeType 枚举类型。 | 基于MindSpore的等比率缩放。 |
| RESIZER_STRETCHING | ResizeType 枚举类型。 | 拉伸缩放。 |
| RESIZER_TF_KEEP_ASPECT_RATIO | ResizeType 枚举类型。 | 基于TensorFlow的等比率缩放。 |
Resize缩放枚举类型
表 1 Resize参数类型说明
| 参数类型 | 说明 |
|---|---|
| base.resize_ms_keep_ratio | ResizeType.RESIZER_MS_KEEP_ASPECT_RATIO。 |
| base.resize_stretching | ResizeType.RESIZER_STRETCHING。 |
| base.resize_tf_keep_ratio | ResizeType.RESIZER_TF_KEEP_ASPECT_RATIO。 |
SemanticSegInfo类
表 1 SemanticSegInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| pixels | list | 像素集。 |
| labelMap | list | 标签映射。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
Size类
| 参数 | 类型 | 说明 |
|---|---|---|
| width | int | 图像宽。 |
| height | int | 图像高。 |
TextObjectInfo类
表 1 TextObjectInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| confidence | float | 置信度。 |
| result | str | 结果。 |
| x0 | float | 第一检测点的x坐标。 |
| x1 | float | 第二检测点的x坐标。 |
| x2 | float | 第三检测点的x坐标。 |
| x3 | float | 第四检测点的x坐标。 |
| y0 | float | 第一检测点的y坐标。 |
| y1 | float | 第二检测点的y坐标。 |
| y2 | float | 第三检测点的y坐标。 |
| y3 | float | 第四检测点的y坐标。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
TextsInfo类
表 1 TextsInfo类属性说明
| 属性名 | 类型 | 说明 |
|---|---|---|
| text | 数组 | text内容。 |
Note
该类重写了__str__和__repr__方法,用于展示对象信息,建议用户不要直接调用。
type类
表 1 type类属性说明
| 属性名 | 类型 |
|---|---|
| type.memory_host | Host侧内存类型。 |
| type.memory_device | Device侧内存类型。 |
| type.memory_dvpp | DVPP内存类型。 |
VideoDecodeConfig类
表 1 保存视频解码的类
| 参数名 | 类型 | 说明 |
|---|---|---|
| width | int | 视频解码缓冲区的宽,取值范围:[128, 4096],默认值:1920,必须为偶数。并且会自动对齐到16(向上对齐)。 请用户根据实际的视频帧数据进行适当设置,需大于或等于实际的视频帧数据宽,否则会无解码输出,设置过大将会产生多余的内存资源开销。 |
| height | int | 视频解码缓冲区的高,取值范围:[128, 4096],默认值:1080,必须输入偶数。 请用户根据实际的视频帧数据进行适当设置,需大于或等于实际的视频帧数据高,否则会无解码输出,设置过大将会产生多余的内存资源开销。 |
| inputVideoFormat | StreamFormat枚举类 | 输入的视频格式,H.264格式视频支持base.h264_baseline_level、base.h264_main_level、base.h264_high_level三种格式,H.265格式视频只支持base.h265_main_level格式。默认值为:base.h264_main_level。 |
| outputImageFormat | image_format枚举类 | 解码后输出的图像格式,默认值为:base.nv12。 |
| skipInterval | int | 视频解码的跳帧参数,取值范围:[0, 250],默认值:0。 |
VideoEncodeConfig类
| 参数名 | 类型 | 说明 |
|---|---|---|
| width | int | 编码后视频帧数据的宽,默认值:1920,必须与待编码图片的宽(original_width)一致。 |
| height | int | 编码后视频帧数据的高,默认值:1080,必须与待编码图片的高(original_height)一致。 |
| outputVideoFormat | StreamFormat枚举类 | 编码后输出的视频格式,H.264格式视频支持base.h264_baseline_level、base.h264_main_level和base.h264_high_level三种格式,H.265格式视频只支持base.h265_main_level格式。默认值为base.h264_main_level。 |
| inputImageFormat | image_format枚举类 | 输入的图像格式,只支持base.nv12、base.nv21两种格式,默认值为:base.nv12。 |
| keyFrameInterval | int | 视频I帧间隔大小,默认为30。 |
| srcRate | int | 输入码流帧率,单位fps,默认为30。 |
| rcMode | int | 对于Atlas 200I/500 A2 推理产品: 对于Atlas 推理系列产品: |
| shortTermStatsTime | int | 码率短期统计时间,单位为秒,默认值为60,取值范围:[1, 120]。该参数仅在Atlas 推理系列产品上,且rcMode为5时生效。 |
| longTermStatsTime | int | 码率长期统计时间,单位为分钟,默认值为120,取值范围:[1, 1440]。该参数仅在Atlas 推理系列产品上,且rcMode为5时生效。 |
| longTermMaxBitRate | int | 编码器输出长期最大码率,单位为kbps,默认值为300。取值范围:[2, maxBitRate]。该参数仅在Atlas 推理系列产品上,且rcMode为5时生效。 |
| longTermMinBitRate | int | 编码器输出长期最小码率,单位为kbps,默认值为0。取值范围:[0, longTermMaxBitRate]。该参数仅在Atlas 推理系列产品上,且rcMode为5时生效。 |
| maxBitRate | int | 输出码率,单位kbps,默认值为300。 |
| ipProp | int | 一个GOP内单个I帧bit数和单个P帧bit数的比例,默认值为70,取值范围[1, 100]。 |
| sceneMode | int | 场景模式。默认值为0。 该参数仅在Atlas 推理系列产品上生效。当输出视频格式设置为H.264并且sceneMode设置为1时,由于H.264不支持高码率下运动场景,sceneMode值将自动切换成0。 |
| displayRate | int | 输出视频的播放帧率,默认值为30,取值范围[1, 120]。该参数仅在Atlas 推理系列产品上生效。 |
| statsTime | int | 码率统计时间,以秒为单位,默认值为1,取值范围:[1, 60]。该参数仅在Atlas 推理系列产品上生效。 |
| firstFrameStartQp | int | 设置第一帧的起始Qp值,默认值为32,取值范围:[0, 47]。该参数仅在Atlas 推理系列产品上生效。 |
| SetThresholdI | func | 用于设置I帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。参数说明请参见SetThresholdI参数说明。该参数仅在Atlas 推理系列产品上生效。 |
| SetThresholdP | func | 用于设置P帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。参数说明请参见SetThresholdP参数说明。该参数仅在Atlas 推理系列产品上生效。 |
| SetThresholdB | func | 用于设置B帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。参数说明请参见SetThresholdB参数说明。该参数仅在Atlas 推理系列产品上生效。 |
| direction | int | 在基于纹理宏块级码率控制时,用于控制加减方向。默认值为8,取值范围:[0, 16]。该参数仅在Atlas 推理系列产品上生效。 |
| rowQpDelta | int | 行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单位。调节幅度越大,允许行级调整的QP范围越大,码率越平稳。对于图像复杂度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。默认值为1,取值范围:[0, 10],设置为0表示关闭基于行的宏块级码率控制。该参数仅在Atlas 推理系列产品上生效。 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| threshold_i | list | list中值的取值范围:[0,255]。如果不通过此函数设置thresholdI的值,thresholdI默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为0,表示关闭当前级;加方向的数值设置为255,表示关闭当前级。 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| threshold_p | list | list中值的取值范围:[0,255]。如果不通过此函数设置thresholdP的值,thresholdP默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为0,表示关闭当前级;加方向的数值设置为255,表示关闭当前级。 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| threshold_b | list | list中值的取值范围:[0,255]。如果不通过此函数设置thresholdB的值,thresholdB默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为0,表示关闭当前级;加方向的数值设置为255,表示关闭当前级。 |
以下为视频采集场景下推荐的参数配置,可以保证较好的视频编码质量,其他场景下请根据实际应用对应调整。
| 画质/分辨率 | srcRate | keyFrameInterval | maxBitRate |
|---|---|---|---|
| 4K3840 * 2160/4096 * 2160 | 25或30 | 50或60 | H.264: 8000 ~ 12000 H.265: 8000 ~ 12000 |
| 2K2560 * 1440 | 25或30 | 50或60 | H.264: 6000 ~ 10000 H.265: 6000 ~ 10000 |
| 1080P(蓝光)1920 * 1080 | 25或30 | 50或60 | H.264: 2000~6000 H.265: 1000~4000 |
| 720P(高清)1280 * 720 | 25或30 | 50或60 | H.264: 1000~3000 H.265: 800~2000 |
| 480P/D1_N(标清)854 * 480/720 * 480 | 25或30 | 50或60 | H.264: 600~1400 H.265: 300~700 |
| 576P/D1 (标清)720 * 576 | 25或30 | 50或60 | H.264: 600~1400 H.265: 300~700 |
| 270P(流畅)480 * 270 | 25或30 | 50或60 | - |
| CIF P/N352 * 288/320 * 240 | 25或30 | 50或60 | H.264: 250 H.265: 250 |
AppGlobalCfgExtra类
| 属性名 | 类型 | 说明 |
|---|---|---|
| vpcChnNum | int | VPC通道资源池大小。默认值为“DEFAULT_VPC_CHN_NUM = 48”。取值范围为[1, 128]。 |
| jpegdChnNum | int | JPEGD通道资源池大小。默认值为“DEFAULT_JPEGD_CHN_NUM = 24”。取值范围为[1, 64]。 |
| pngdChnNum | int | PNGD通道资源池大小。默认值为“DEFAULT_JPEGD_CHN_NUM = 24”。取值范围为[1, 64]。 |
| jpegeChnNum | int | JPEGE通道资源池大小。默认值为“DEFAULT_JPEGE_CHN_NUM = 24”。取值范围为[1, 48]。 |
cvt_color_mode色域转换枚举类型
表 1 色域转换类型
| 数据类型 | 说明 |
|---|---|
| base.color_yuvsp4202gray | 色域空间由YUVsp420转换为灰度图。 |
| base.color_yvusp4202gray | 色域空间由YVUSP420转换为灰度图。 |
| base.color_yuvsp4202rgb | 色域空间由YUVsp420转换为RGB。 |
| base.color_yvusp4202rgb | 色域空间由YVUSP420转换为RGB。 |
| base.color_yuvsp4202bgr | 色域空间由YUVsp420转换为BGR。 |
| base.color_yvusp4202bgr | 色域空间由YVUSP420转换为BGR。 |
| base.color_rgb2gray | 色域空间由RGB转换为灰度图。 |
| base.color_bgr2gray | 色域空间由BGR转换为灰度图。 |
| base.color_bgr2rgb | 色域空间由BGR转换为RGB。 |
| base.color_rgb2bgr | 色域空间由RGB转换为BGR。 |
| base.color_rgb2rgba | 色域空间由RGB转换为RGBA。 |
| base.color_rgba2gray | 色域空间由RGBA转换为灰度图。 |
| base.color_rgba2rgb | 色域空间由RGBA转换为RGB。 |
| base.color_gray2rgb | 色域空间由灰度图转换为RGB。 |
| base.color_rgba2mrgba | 色域空间由RGBA转换为mRGBA。 |
| base.color_bgr2yuvsp420 | 色域空间由BGR转换为YUVsp420。 |
| base.color_rgb2yuvsp420 | 色域空间由RGB转换为YUVsp420。 |
| base.color_rgb2yvusp420 | 色域空间由RGB转换为YVUSP420。 |
| base.color_bgr2yvusp420 | 色域空间由BGR转换为YVUSP420。 |
流程编排数据类
总体说明
本章节的数据类由swig生成,某些数据类型仅展示了部分业务相关接口,具体请参考“StreamManagerApi.py”和“stream.py”。需要注意的是,swig框架会自动生成SwigPyIterator等对内使用类和函数,建议不要使用。
RoiBox
裁剪框的定义。
class RoiBox:
def __init__(self):
self.x0 = None
self.y0 = None
self.x1 = None
self.y1 = None
| 参数名 | 类型 | 说明 |
|---|---|---|
| x0 | float | 左上角横坐标。 |
| y0 | float | 左上角纵坐标。 |
| x1 | float | 右下角横坐标。 |
| y1 | float | 右下角纵坐标。 |
RoiBoxVector
RoiBox的Vector类,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class RoiBoxVector:
def push_back(self, x):
pass
def pop_back(self):
pass
def pop(self):
pass
...
MxDataInput
Stream接收的数据结构定义。
class MxDataInput:
def __init__(self):
self.data = None
self.fragmentId = None
self.customParam = None
self.roiBoxs = list() # list
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | bytes | 图像数据。 |
| fragmentId | int | 分块ID,保留参数。 |
| customParam | bytes | 自定义的参数,保留参数。 |
| roiBoxs | RoiBoxVector | 裁剪框坐标数组。 |
MxDataOutput
推理业务输出数据定义。
class MxDataOutput:
def __init__(self):
self.errorCode = None
self.data = None
| 参数名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 输出错误码。 |
| data | bytes | 输出结果数据。 |
MxProtobufIn
推理业务输入protobuf数据定义。
class MxProtobufIn:
def __init__(self):
self.key= None
self.type= None
self.protobuf= None
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | bytes | 输入protobuf的key。 |
| type | bytes | 输入protobuf数据的类型。 |
| protobuf | bytes | 输入protobuf的value数据,需要反序列化为与类型对应的数据。 |
MxProtobufOut
推理业务输出数据定义。
class MxProtobufOut:
def __init__(self):
self.errorCode = None
self.messageName= None
self.messageBuf= None
| 参数名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 输出错误码。 |
| messageName | bytes | 输出protobuf数据的key。 |
| messageBuf | bytes | 输出protobuf数据的value,需要反序列化为与类型对应的数据。 |
MxDataInputExt
推理业务输出数据定义。
class MxDataInputExt:
def __init__(self):
self.data = None
self.fragmentId = None
self.customParam = None
self.roiBoxs = list() # list
self.mxpiFrameInfo = None
self.mxpiVisionInfo = None
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | bytes | 图像数据。 |
| fragmentId | int | 分块ID,保留参数。 |
| customParam | bytes | 自定义的参数,保留参数。 |
| roiBoxs | RoiBoxVector | 裁剪框坐标数组。 |
| mxpiFrameInfo | bytes | 图片的frame信息序列化成字符串。 |
| mxpiVisionInfo | bytes | 图片信息序列化成字符串。 |
MxMetadataInput
Stream接收的元数据的数据定义。
class MxMetadataInput:
def __init__(self):
self.datasource = None
self.dataType = None
self.serializedMetadata = None
| 参数名 | 类型 | 说明 |
|---|---|---|
| datasource | bytes | 挂载元数据时使用的dataSource,用于下游插件获取元数据。 |
| dataType | bytes | 元数据的数据类型。 |
| serializedMetadata | bytes | 序列化的元数据。 |
MxMetadataOutput
Stream输出的元数据的数据定义。
class MxMetadataOutput:
def __init__(self):
self.errorCode = None
self.errorMsg = None
self.dataType = None
self.serializedMetadata = None
def SetErrorInfo(self, errorCodeIn, errorMsgIn):
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 输出错误码。 |
| errorMsg | bytes | 输出错误信息。 |
| dataType | bytes | 元数据的数据类型。 |
| serializedMetadata | bytes | 序列化的元数据。 |
MxBufferAndMetadataOutput
推理业务输出数据及元数据。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class MxBufferAndMetadataOutput:
def __init__(self):
self.errorCode = None
self.errorMsg = None
self.bufferOutput = None
self.metadataVec = list()
def SetErrorInfo(self, errorCodeIn, errorMsgIn):
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 输出错误码。 |
| errorMsg | bytes | 输出错误信息。 |
| bufferOutput | MxBufferOutput | 输出结果数据。 |
| metadataVec | MetadataOutputVector | 输出元数据信息。 |
StringVector
用于存放String的向量类型,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class StringVector:
def pop(self):
pass
def append(self, x):
pass
def size(self):
pass
...
InProtobufVector
用于存放MxProtobufIn的向量类型,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class InProtobufVector:
def pop(self):
pass
def append(self, x):
pass
def size(self):
pass
...
OutProtobufVector
用于存放MxProtobufOut的向量类型,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class OutProtobufVector:
def pop(self):
pass
def append(self, x):
pass
def size(self):
pass
...
MetadataInputVector
用于存放MxMetadataInput的向量类型,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class MetadataInputVector:
def pop(self):
pass
def append(self, x):
pass
def size(self):
pass
...
MetadataOutputVector
用于存放MxMetadataOutput的向量类型,实现了Vector的通用操作。
由swig生成,仅展示部分业务相关接口,具体请参考“StreamManagerApi.py”。
class MetadataOutputVector:
def pop(self):
pass
def append(self, x):
pass
def size(self):
pass
...
MxBufferInput
Stream接收的数据定义。
class MxBufferInput:
def __init__(self):
self.data = None
self.mxpiFrameInfo = None
self.mxpiVisionInfo = None
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | bytes | 输入的数据。 |
| mxpiFrameInfo | bytes | 输入Frame数据。 |
| mxpiVisionInfo | bytes | 输入图片数据。 |
MxBufferOutput
Stream输出的数据定义。
class MxBufferOutput:
def __init__(self):
self.errorCode = None
self.errorMsg = None
self.data = None
def SetErrorInfo(self, errorCodeIn, errorMsgIn):
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| errorCode | int | 输出的错误码。 |
| errorMsg | bytes | 输出的错误信息。 |
| data | bytes | 输出的数据。 |
内部辅助数据类
下表所列数据类型皆由swig生成,用于辅助映射C++标准库中的数据结构,不建议用户直接使用,具体请参考base.py、post.py及stream.py。
| 数据类型 | 功能 | 定义文件 |
|---|---|---|
| SwigPyIterator | 辅助映射c++ 中STL迭代器 | base.py、post.py、stream.py |
| RectVector | 辅助映射c++中std::vector<Rect> | base.py |
| ImageVector | 辅助映射c++中std::vector<Image> | base.py |
| RectPair | 辅助映射c++中std::pair<Rect, Rect> | base.py |
| RectSizePair | 辅助映射c++中std::pair<Rect, Size> | base.py |
| RectSizePairVector | 辅助映射c++中std::vector<std::pair<Rect, Size>> | base.py |
| TensorVector | 辅助映射c++中std::vector<Tensor> | base.py、post.py |
| Uint32Vector | 辅助映射c++中std::vector<uint32_t> | base.py |
| Uint32VectorVector | 辅助映射c++中std::vector<vector<uint32_t>> | base.py |
| IntVector | 辅助映射c++中std::vector<int> | base.py |
| IntVectorVector | 辅助映射c++中std::vector<vector<int>> | base.py |
| StringVector | 辅助映射c++中std::vector<std::string> | base.py、stream.py |
| SizePair | 辅助映射c++中std::pair<MxBase::Size, MxBase::Size> | base.py |
| StringMap | 辅助映射c++中std::map<std::string, std::string> | base.py、post.py、stream.py |
| IntFloatMap | 辅助映射c++中std::map<int, float> | base.py |
| FloatVector | 辅助映射c++中std::vector<float> | base.py |
| IntFloatVectorMap | 辅助映射c++中std::map<int, vector<float>> | base.py |
| Uint8Vector | 辅助映射c++中std::vector<uint8_t> | base.py |
| Uint8VectorVector | 辅助映射c++中std::vector<vector<uint8_t>> | base.py |
| ResizedImageInfoVector | 辅助映射c++中std::vector<ResizedImageInfo> | post.py |
| ObjectInfoVector | 辅助映射c++中std::vector<ObjectInfo> | post.py |
| ClassInfoVector | 辅助映射c++中std::vector<ClassInfo> | post.py |
| TextsInfoVector | 辅助映射c++中std::vector<TextsInfo> | post.py |
| TextObjectInfoVector | 辅助映射c++中std::vector<TextObjectInfo> | post.py |
| KeyPointDetectionInfoVector | 辅助映射c++中std::vector<PyBase::KeyPointDetectionInfo> | post.py |
| SemanticSegInfoVector | 辅助映射c++中std::vector<PyBase::SemanticSegInfo> | post.py |
| ObjectInfoVecVector | 辅助映射c++中std::vector<vector<PyBase::ObjectInfo>> | post.py |
| ClassInfoVecVector | 辅助映射c++中std::vector<vector<PyBase::ClassInfo>> | post.py |
| TextObjectInfoVecVector | 辅助映射c++中std::vector<vector<PyBase::TextObjectInfo>> | post.py |
| KeyPointDetectionInfoVecVector | 辅助映射c++中std::vector<vector<PyBase::KeyPointDetectionInfo>> | post.py |
| CropRoiBoxVector | 辅助映射c++中std::vector<PyStream::CropRoiBox> | stream.py |
| MxDataInputVector | 辅助映射c++中std::vector<PyStream::MxDataInput> | stream.py |
| MxDataOutputVector | 辅助映射c++中std::vector<PyStream::MxDataOutput> | stream.py |
| MetadataInputVector | 辅助映射c++中std::vector<PyStream::MetadataInput> | stream.py |
| MetadataOutputVector | 辅助映射c++中std::vector<PyStream::MetadataOutput> | stream.py |
| PluginNodeVector | 辅助映射c++中std::vector<PyStream::PluginNode> | stream.py |
下表所列类为回调辅助类,不建议用户直接使用,具体请参考base.py。
| 数据类型 | 功能 | 定义文件 |
|---|---|---|
| VdecCallBackerHelperVdecCallBackerAux | VdecCallBacker回调辅助类 | base.py |
| VencCallBackerHelperVencCallBackerAux | VencCallBackerr回调辅助类 | base.py |
初始化和去初始化
总体说明
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
mx_init
全局初始化,申请设备资源与日志资源。
一个进程内只能调用一次mx_init接口,且要与全局去初始化接口(mx_deinit)配对使用。
对于Atlas 推理系列产品和Atlas 800I A2 推理服务器,可以使用mx_init的全部函数原型,对于Atlas 200I/500 A2 推理产品:使用mx_init()。
相关使用流程请参考初始化与去初始化。
mx_init()
mx_init(config: AppGlobalCfgExtra)
| 参数名 | 类型 | 说明 |
|---|---|---|
| config | AppGlobalCfgExtra | AppGlobalCfgExtra类型,应用全局配置。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码。 |
mx_deinit
全局去初始化,释放Log、Device等相关资源,需与全局初始化接口(mx_init())配套使用。
Note
- 涉及申请Device侧资源的类(Tensor、Model、Image、ImageProcessor、VideoEncoder和VideoDecoder)与mx_deinit()的作用域冲突,因此,这些类的作用域不能大于或等于mx_deinit()的作用域。
- 执行完mx_deinit()后,日志级别将会失效,且日志无法落盘。
mx_deinit()
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码。 |
媒体数据处理
Tensor
类说明
Tensor数据类,作为模型推理的输入与输出的数据结构。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Tensor
[!NOTICE] 多个Tensor对象按batch维进行concat操作时请使用base.batch_concat()函数,具体使用方式请参见batch_concat(inputs)。
numpy数组转换为Tensor。
Tensor数据结构接收了作为参数(buffer)传进来的一段缓冲区内存地址,因此在使用numpy数组进行数据预处理并转为Tensor时,要注意预处理的过程中是否对内存进行修改。
例如:transpose()函数作用是调换数组的索引值,但是该函数实际未对数据内存地址进行重新排列,仅在获取numpy数组时返回转换后的值。如将该numpy数组转为Tensor,实际获得的是未经重新排列的Tensor。(即numpy数组为transpose()转置后数组,Tensor为transpose()转置前数组。)
如需使用例如transpose()等不改变内存排列的函数,可以在transpose()处理后使用如numpy.ascontiguousarray()等接口来重新排列内存数据,使得转换后的Tensor对象数据和期望得到的转置后数组一致。
Tensor(buffer: ndarray)
| 参数名 | 类型 | 说明 |
|---|---|---|
| buffer | numpy数组 | 待转换为Tensor的numpy数组。 |
Tensor对象。
to_device
移动Tensor到Device内存中。
to_device(deviceId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | Device设备的ID号。 |
分配Tensor内存失败及拷贝到Device侧失败,抛出Runtime异常。
to_host
移动Tensor到Host内存中。
to_host()
分配Tensor内存失败及拷贝到Host侧失败,抛出Runtime异常。
Tensor类的属性列表
| 属性名 | 说明 | 备注 |
|---|---|---|
| device | Tensor所在Device的ID | -1表示运行在Host侧,1表示设备号1,2表示设备号2,以此类推。 |
| dtype | Tensor数据类型 | base.dtype数据类型。 |
| shape | Tensor的维度信息 | 返回的是list数据类型。 |
set_tensor_value
设置Tensor的值,支持dtype.int32、dtype.uint8、dtype.float16、dtype.float32类型。
- 请注意数据类型与数据范围。
- Tensor对象需在Device侧且数据类型与调用的set_tensor_value的方法匹配。
set_tensor_value(value: float, dataType: dtype)
| 参数名 | 类型 | 说明 |
|---|---|---|
| value | float | 需要设置的值,不可为空。 |
| dataType | dtype枚举类型 | dataType: dtype转换类型,不可为空,支持的输入有:dtype.float16,dtype.float32,dtype.uint8,dtype.int32。 |
返回进行张量设置值后的Tensor类数据。
Image
类说明
作为图像处理类,主要开放图像编解码、缩放和抠图等接口。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Image
- 构造一个空的Image对象。
- 从Host侧的numpy的ndarray转为Image对象。
Image()
Image(b: ndarray, format: image_format, imageSizeInfo: Tuple = DEFAULT_IMAGE_SIZE_INFO)
| 参数名 | 类型 | 说明 |
|---|---|---|
| b | ndarray | 构造Image的numpy数组,各元素类型为np.uint8且形状为3维,依次表示图片的HWC(高、宽、通道数)。 |
| format | image_format | 图像色域格式,支持以下色域类型。 b(输入ndarray)形状中的通道数(C)需要与色域类型一致,各色域类型对应通道数参见如下。 |
| imageSizeInfo | Tuple(Size, Size) | 图像有效宽高与对齐后宽高的组合,有效宽、高应不超过对齐后的宽、高,输入方式参见如下。tuple(有效宽高,对齐后的宽高) |
Note
- 从opencv读取图片转换的ndarray,若形状为WHC(宽,高,通道数),需要进行转置为HWC(高,宽,通道数)之后进行构造。
- 从get_tensor/to_tensor/get_original_tensor接口获取的tensor,转换为ndarray后,形状为NHWC(个数,高,宽,通道数)或NHW(个数,高,宽),需要根据实际情况截取或扩展到HWC之后进行构造。
Image对象。
to_tensor
将Image对象转换为Tensor类对象。
to_tensor()
返回Tensor。
get_tensor
获取Tensor类对象。
get_tensor()
返回Tensor。
get_original_tensor
获取图片有效范围的Tensor类对象。
支持以下图片色域类型。
- base.yuv_400
- base.rgb
- base.bgr
- base.rgba
- base.bgra
- base.argb
- base.abgr
如需将图片转换为ndarray时,请将图片在Host侧通过该接口转为Tensor,再转为ndarray。
get_original_tensor()
返回Tensor。
to_device
搬移image到Device内存中。
to_device(deviceId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | Device设备的ID号。 |
调用Tensor的to_device函数失败,抛出Runtime异常。
to_host
搬移image到Host内存中。
to_host()
调用Tensor的to_host函数失败,抛出Runtime异常。
serialize
将图像内存数据及元数据序列化后落盘保存为文件。
serialize(filePath: str, forceOverwrite: bool = False);
| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 序列化后的数据文件保存路径(包括文件名称),不支持软链接。 |
| forceOverwrite | bool | 保存时是否强制覆盖已有文件,默认为False,不覆盖。 |
unserialize
将serialize中保存的落盘数据文件加载到内存中,需指定文件名称及具体路径。
unserialize(filePath: str);
| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 落盘数据文件保存路径,输入文件大小支持范围为(0, 4GB]。 |
dump_buffer
将图像内存数据落盘到二进制文件,需要指定文件名称及具体路径。
dump_buffer(filePath: str, forceOverwrite: bool = False);
| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 落盘数据文件路径(包含文件名称),不支持软链接。 |
| forceOverwrite | bool | 保存时是否强制覆盖已有文件,默认为False,不覆盖。 |
Image类的属性列表
| 属性名 | 说明 |
|---|---|
| device | Image所在Device的ID。 |
| height | 返回Image类对齐后的高。 |
| width | 返回Image类对齐后的宽。 |
| original_height | 返回Image类的原始高。 |
| original_width | 返回Image类的原始宽。 |
| format | 返回图像的格式。 |
ImageProcessor
类说明
作为图像处理类,主要开放图像编解码、缩放和抠图等接口。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
convert_format
ImageProcessor类的色域转换接口,使用该接口申请的Image内存无需用户管理,由内部管理释放。当前接口仅能够在Atlas 推理系列产品和Atlas 800I A2推理产品环境上调用。
convert_format(inputImage: Image, outputFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入转换前的Image类。decode接口和其他VPC接口获取的Image类可以直接作为输入。 |
| outputFormat | image_format枚举类 | 色域转换的目标格式,支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888四种格式对应的枚举类。 |
返回转换输出Image对象。
crop
ImageProcessor类的图像抠图接口,输入输出格式、分辨率范围、对齐方式请参见Crop。
接口使用流程请参考抠图。
crop(inputImage: Image, cropRectVec: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入抠图前的Image类。 |
| cropRectVec | List[Rect] | 输入图像的抠图坐标框列表。 |
返回抠图后的Image类列表List[Image]。
抠图失败,抛出Runtime异常。
crop
ImageProcessor类的图像抠图接口,输入输出格式、分辨率范围、对齐方式请参见Crop。
接口使用流程请参考抠图。
crop(inputImageVec: List, cropRectVec: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImageVec | List[Image] | 输入抠图前的Image类列表。 |
| cropRectVec | List[Rect] | 输入图像的抠图坐标框列表。 |
返回抠图后的Image类列表List[Image]。
抠图失败,抛出Runtime异常。
crop_paste
ImageProcessor类的图像抠图并贴图接口。接口使用流程请参考抠图贴图。
- 从“inputImage”中抠取一块图像,缩放至指定贴图区域的大小。
- 将抠图后的图片贴到“pastedImage”的指定贴图区域。输入输出格式、分辨率范围、对齐方式请参见CropAndPaste。
crop_paste(inputImage: Image, cropPasteRect: Tuple, pastedImage: Image)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入抠图前的Image类。 |
| cropPasteRect | Tuple(Rect, Rect) | 输入图像的抠图参数。第一个Rect对应抠图参数,第二个Rect对应贴图参数。 |
| pastedImage | Image类 | 被贴图的Image类。 |
抠图并贴图失败,抛出Runtime异常。
crop_resize
ImageProcessor类的图像抠图并缩放接口,输入输出格式、分辨率范围、对齐方式请参见CropResize。
接口使用流程请参考抠图缩放。
crop_resize(inputImage: Image, cropResizeVec: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入抠图缩放前的Image类。 |
| cropResizeVec | List[Tuple(Rect, Size)] | 输入图像的抠图缩放参数列表。Rect为抠图坐标框,Size为缩放宽高。 |
返回抠图缩放后的Image类列表List[Image]。
抠图缩放失败,抛出Runtime异常。
decode
ImageProcessor类的图片解码接口,输入输出格式、分辨率范围、对齐方式请参见Decode。
接口使用流程请参考图片解码。
decode(inputPath: str, decodeFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputPath | str | 输入待解码的图片路径。 |
| decodeFormat | image_format枚举类 | 输入解码后图片的格式。(PNG格式解码无需设置。) |
返回解码后的Image类。
图片路径错误、解码格式错误、解码失败,抛出Runtime异常。
decode_bytes
ImageProcessor类的图片解码接口,输入输出格式、分辨率范围、对齐方式请参见Decode。
接口使用流程请参考图片解码。
decode_bytes(data: bytes, dataSize: int, decodeFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | bytes | 输入解码前的二进制数据。 |
| dataSize | int | 二进制数据有效长度。需与输入数据长度保持一致。 |
| decodeFormat | image_format枚举类 | 输入解码后图片的格式(PNG格式解码时无需设置),默认为base.nv12。 |
返回解码后的image类。
数据类型或长度不匹配、解码格式错误、解码失败,抛出Runtime异常。
encode
ImageProcessor类的图片编码接口,输入输出格式、分辨率范围、对齐方式请参见Encode。
接口使用流程请参考图片编码。
encode(inputImage: Image, savePath: str, encodeLevel: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入编码前的Image类。 |
| savePath | str | 输入编码后保存的图片路径,文件后缀名限制为 jpg,编码后图片保存至该路径下。 |
| encodeLevel | int | 默认为100,Atlas 200I/500 A2 推理产品、Atlas 推理系列产品的范围为[1, 100]。 |
图片路径错误、编码级别错误、编码失败,抛出Runtime异常。
encode_bytes
ImageProcessor类的图片编码接口,输入输出格式、分辨率范围、对齐方式请参见Encode。
接口使用流程请参考图片编码。
encode_bytes(inputImage: Image, encodeLevel: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image | 输入编码前的Image类。 |
| encodeLevel | int | 默认为“100”,Atlas 200I/500 A2 推理产品、Atlas 推理系列产品的范围为[1,100]。 |
编码后的二进制bytes数据。
编码级别错误、编码失败,抛出Runtime异常。
ImageProcessor
ImageProcessor类的构造函数,若因内存不足,或无法识别芯片等构造失败的场景会抛出Runtime异常。
ImageProcessor(deviceId: int = 0)
| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | 图像处理类部署的芯片,默认为0号芯片。取值范围:[0, 识别到的芯片个数 - 1] |
ImageProcessor对象。
padding
ImageProcessor类的图像处理补边接口,输入输出格式、分辨率范围请参见Padding。
接口使用流程请参考补边。
padding(inputImage: Image, padDim: Dim, color: Color, borderType: borderType)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入补边前的Image类。 |
| padDim | Dim类 | 输入图像补边的尺寸。 |
| color | Color类 | 输入补边三通道颜色,仅在borderType设置为BORDER_CONSTANT时有效。 |
| borderType | borderType参数枚举类 | 输入补边方式。具体请参见borderType补边方式枚举类型。 |
返回补边后的Image类。
补边失败,抛出Runtime异常。
resize
ImageProcessor类的图像缩放接口,输入输出格式、分辨率范围、对齐方式请参见Resize。
接口使用流程请参考缩放。
resize(inputImage: Image, resize: Size, interpolation: interpolation)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入缩放前的Image类。 |
| resize | Size类 | 输入图像缩放的宽高。 |
| interpolation | interpolation参数枚举类 | 输入图像的缩放方式,默认为HUAWEI_HIGH_ORDER_FILTER。 |
返回缩放后的Image类。
缩放失败,抛出Runtime异常。
VdecCallBacker
类说明
视频解码绑定回调函数类,用于绑定用户自定义的回调函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
回调函数格式
回调函数用于接收VideoDecoder解码后的数据(如Image数据、frameId等)并在回调函数内实现自定义处理功能。
用户如需实现自定义处理功能,建议进行简单的操作,如数据保存、列表写入(append),降低函数处理耗时,防止解码线程阻塞,导致视频解码速度变慢。
def callback_func(decodedImage: Image, channelId: int, frameId: int) -> None
callback_func为函数名称,用户可自定义,与registerVdecCallBack注册的函数名一致即可。
| 参数名 | 类型 | 说明 |
|---|---|---|
| decodedImage | Image类 | 解码后输出的图像类。 |
| channelId | int | 视频流索引,在VideoDecoder类初始化设置。 |
| frameId | int | 视频帧索引,由VideoDecoder类的decode函数来设置。 |
[!NOTICE] 在回调函数中抛异常会触发C++侧抛出异常,引起程序coredump,建议在回调中捕获异常并处理。
VdecCallBacker
VdecCallBacker的构造函数。
VdecCallBacker()
VdecCallBacker对象。
registerVdecCallBack
将用户自定义的回调函数注册,以便解码后在回调函数中实现自定义操作。
registerVdecCallBack(callback_func: Callable)
| 参数名 | 类型 | 说明 |
|---|---|---|
| callback_func | Python定义的函数名 | 需传入按指定格式定义的函数,否则将抛出异常。 |
未按指定格式传入定义的回调函数,将抛出TypeError异常或Runtime异常。
VideoDecoder
类说明
视频解码类,用于提供视频解码接口。
接口使用流程请参考视频解码。
- 为确保资源正确回收,建议在函数或类的成员方法中定义和运行VideoDecoder。若在全局作用域中定义VideoDecoder,则需要在程序结束时使用del函数删除构造的VideoDecoder对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
decode
VideoDecoder的视频解码接口。
decode(inputData: buffer, frameId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputData | 二进制数据类型 | 传入视频帧二进制数据。 |
| frameId | int | 输入解码前视频帧的帧ID。 |
无。(默认解码方式为非实时出帧,解码过程中存在缓存帧,Vdec需要在收到码流中的多帧数据后,才开始输出解码结果。)
解码失败,抛出Runtime异常。
VideoDecoder
VideoDecoder类的构造函数。
若因内存不足,pyVdecCallBacker未注册回调函数,或无法识别芯片等构造失败的场景会抛出“std::runtime_error”异常。
VideoDecoder(pyVdecConfig: VideoDecodeConfig, pyVdecCallBacker: VdecCallBacker, deviceId: int, channelId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| pyVdecConfig | VideoDecodeConfig类 | 视频解码的参数。 |
| pyVdecCallBacker | VdecCallBacker类 | 绑定回调函数的VdecCallBacker类。(须先注册回调函数,否则构造VideoDecoder会抛出异常。) |
| deviceId | int | 视频解码器部署的芯片,默认为0号芯片。取值范围:[0, 识别到的芯片个数 - 1]。 |
| channelId | int | 视频解码器的视频流索引。Atlas 200I/500 A2 推理产品:取值范围:[0, 127]。若存在重复构造相同channelId的场景,则会构造失败。Atlas 推理系列产品:取值范围:[0, 255]。若存在重复构造相同channelId的场景,则会进行自动调整channelId。 |
VideoDecoder对象。
VencCallBacker
类说明
视频编码绑定回调函数类,用于绑定用户自定义的回调函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
回调函数格式
回调函数用于接收VideoEncoder编码后的数据(如视频帧数据、ByteSize、frameId等)并在回调函数内实现自定义处理功能。
用户如需实现自定义处理功能,建议进行简单的操作,如数据保存、列表写入(append),降低函数处理耗时,防止编码线程阻塞,导致视频编码速度变慢。
def callback_func(pyBytes: bytes, outDataSize: int, channelId: int, frameId: int) -> None
callback_func为函数名称,用户可自定义,与registerVencCallBack注册的函数名一致即可。
| 参数名 | 类型 | 说明 |
|---|---|---|
| pyBytes | bytes | 编码后输出视频帧字节数据。 |
| outDataSize | int | 编码后输出视频帧数据的内存大小。 |
| channelId | int | 视频流索引,在VideoEncoder类初始化设置。 |
| frameId | int | 视频帧索引,由VideoEncoder类的encode函数来设置。 |
[!NOTICE] 在回调函数中抛异常会触发C++侧抛出异常,引起程序coredump,建议在回调中捕获异常并处理。
VencCallBacker
VencCallBacker的构造函数。
VencCallBacker()
VencCallBacker对象。
registerVencCallBack
将用户自定义的回调函数注册,以便编码后在回调函数中实现自定义操作。
registerVencCallBack(callback_func: Callable)
| 参数名 | 类型 | 说明 |
|---|---|---|
| callback_func | Python定义的函数名 | 需传入按指定格式定义的函数,否则将抛出异常。 |
未按指定格式传入定义的回调函数,将抛出TypeError异常或Runtime异常。
VideoEncoder
类说明
VideoEncoder类,作为视频编码类,主要开放视频编码接口。
接口使用流程请参考视频编码。
- 为确保资源正确回收,建议在函数或类的成员方法中定义和运行VideoEncoder。若在全局作用域中定义VideoEncoder,则需要在程序结束时使用del函数删除构造的VideoEncoder对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Note
- VideoEncoder类涉及申请Device侧资源,与mx_deinit的作用域冲突,因此,其作用域不能大于或等于mx_deinit的作用域。
- 编码器运行时可能会因为送帧频率过快、大于芯片处理速度等原因,导致某一帧编码失败。建议用户合理控制调用Encode接口的频率。如,当编码帧率为30fps时,调用Encode接口的间隔可以控制在33ms。
- 当某一帧编码失败时,编码器会继续处理后续帧数据。用户可以通过回调函数中的帧ID等信息感知到该帧编码结果未获取。
encode
VideoEncoder的视频编码接口。
encode(inputImage: Image, frameId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入编码前的Image类。 |
| frameId | int | 输入视频帧索引。 |
编码失败,抛出Runtime异常。
VideoEncoder
VideoEncoder类的构造函数。
若因内存不足,pyVencCallBacker未注册回调函数,或无法识别芯片等构造失败的场景会抛出“std::runtime_error”异常。
VideoEncoder(pyVencConfig: VideoEncodeConfig, pyVencCallBacker: VencCallBacker, deviceId: int, channelId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| pyVencConfig | VideoEncodeConfig类 | 视频编码的参数。结构体的参数说明请参见VideoEncodeConfig类。 |
| pyVencCallBacker | VencCallBacker类 | 绑定回调函数的VencCallBacker类。(须先注册回调函数,否则构造VideoEncoder会抛出异常。) |
| deviceId | int | 视频编码器部署的芯片,默认为0号芯片。取值范围:[0, 识别到的芯片个数 - 1]。 |
| channelId | int | 视频编码器的视频流索引。默认值为0。 |
VideoEncoder对象。
DeviceMemory
类说明
从Device侧申请内存,获取内存指针地址的值。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeviceMemory
从Device侧申请内存。
DeviceMemory(size: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| size | int | 申请内存的大小,单位Byte。 |
DeviceMemory对象。
get_data
获取对象中内存指针的值。
get_data()
| 返回值 | 类型 | 说明 |
|---|---|---|
| Output | int | 返回对象内存指针中的值。 |
dvpp
模块说明
dvpp模块预计于2025年12月退出,建议使用ImageProcessor类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
read_image
解码读取图片。
输入输出格式及对齐方式请参见decode(inputPath, decodeFormat)。
该接口预计2025年12月正式删除,请使用ImageProcessor类的图片解码decode接口。
read_image(inputPath: str, deviceId: int, decodeFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputPath | str | 图片路径。 |
| deviceId | int | Device设备的ID号。 |
| decodeFormat | image_format枚举类 | 输入图片的解码格式。 |
Image对象。
创建ImageProcessor失败、图片解码失败,抛出Runtime异常。
resize
图像缩放。输入输出范围及对齐方式请参见resize(inputImage, resize, interpolation)。
该接口预计2025年12月正式删除,请使用ImageProcessor类的图像缩放resize接口。
resize(inputImage: Image, resize: Size, interpolation: interpolation)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入缩放前的Image类。 |
| resize | Size类 | 输入图像缩放的宽高。 |
| interpolation | interpolation参数枚举类 | 输入图像的缩放方式,默认为HUAWEI_HIGH_ORDER_FILTER 。 |
Image对象。
创建ImageProcessor失败、图片缩放失败,抛出Runtime异常。
TensorOperations
总体说明
本章节作为张量处理接口的主目录,主要开放色域转换、裁剪、张量类型转换等接口。
接口的硬件支持情况如表1所示,标识的含义如下:
- √:支持
- x:不支持
| 接口 | Atlas 200I/500 A2 推理产品 | Atlas 推理系列产品 | Atlas 800I A2推理产品 |
|---|---|---|---|
| clip | √ | √ | x |
| convert_to | √ | √ | x |
| cvt_color | √ | √ | √ |
| transpose_operator | √ | √ | x |
| divide | √ | √ | x |
| multiply | √ | √ | x |
| subtract | √ | √ | x |
| add | √ | √ | x |
| min_operator | √ | √ | x |
| max_operator | √ | √ | x |
clip
图像处理类,Tensor类的张量裁剪接口,用于将张量中的元素限制在给定的最小值和最大值之间(小于最小值的元素将会被替换为最小值、大于最大值的元素将会被替换为最大值)。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入输出Tensor必须在Device侧。
- 输入参数对应Tensor的形状(Shape)不超过4维。
clip(inputTensor: Tensor, minVal: float, maxVal: float)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputTensor | 输入 | Tensor类,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| minVal | 输入 | float类型,张量中裁剪后的最小值,小于最小值的元素将会被替换为最小值。“minVal”需小于或等于“maxVal”。 |
| maxVal | 输入 | float类型,张量中裁剪后的最大值,大于最大值的元素将会被替换为最大值。“maxVal”需大于或等于“minVal”。 |
返回裁剪后的Tensor类数据。
convert_to
将Tensor的值转换为指定类型,支持dtype.float32、dtype.float16、dtype.int8、dtype.int32、dtype.uint8、dtype.int16、dtype.uint16、dtype.uint32、dtype.int64、dtype.uint64、dtype.double、dtype.bool类型的转换。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入输出Tensor必须在Device侧。
convert_to(inputTensor: Tensor, dataType: dtype)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputTensor | 输入 | Tensor类,输入张量。 |
| dataType | 输入 | dtype类,指定转换的类型。 |
返回类型转换后的Tensor类数据。
cvt_color
将Tensor的图像色域类型转换为指定的色域类型,支持以下类型间的转换。
若设置“keepMargin”为“true”,输出宽度自动与16对齐。默认值为“false”,不保留Tensor中无效的边界区域。各产品支持的色域转换类型如表1 色域转换类型所示,标识的含义如下:
| 色域转换类型 | Atlas 200I/500 A2 推理产品 | Atlas 推理系列产品 | Atlas 800I A2推理产品 |
|---|---|---|---|
| YUVSP420(nv12)转YUV400(GRAY) | √ | √ | √ |
| YVUSP420(nv21)转YUV400(GRAY) | x | √ | √ |
| YUVSP420(nv12)转RGB | x | √ | √ |
| YUVSP420(nv12)转BGR | x | √ | √ |
| YVUSP420(nv21)转RGB | x | √ | √ |
| YVUSP420(nv21)转BGR | x | √ | √ |
| RGB转YUVSP420(nv12) | x | √ | √ |
| RGB转YVUSP420(nv21) | x | √ | √ |
| BGR转YUVSP420(nv12) | x | √ | √ |
| BGR转YVUSP420(nv21) | x | √ | √ |
| RGB转YUV400(GRAY) | x | √ | √ |
| BGR转YUV400(GRAY) | x | √ | √ |
| BGR转RGB | x | √ | √ |
| RGB转BGR | x | √ | √ |
| RGB转RGBA | x | √ | √ |
| RGBA转YUV400(GRAY) | x | √ | √ |
| RGBA转RGB | x | √ | √ |
| GRAY转RGB | x | √ | x |
| RGB转mRGBA | x | √ | x |
Note
RGBA转mRGBA需要依赖CANN 8.0.RC1或CANN 8.0.RC1以后的版本。
cvt_color(inputTensor: Tensor, cvtColorMode: cvt_color_mode, keepMargin = False)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputTensor | 输入 | Tensor类,输入张量,不可为空,需在Device侧分配内存,数据类型为dtype.uint8。 若inputTensor色域类型为base.yuv_400或base.nv12,设置输入张量形状时,高为图片显示高度的1.5倍。张量的高需要为3的倍数,宽为16的倍数,通道为1。 |
| cvtColorMode | 输入 | 枚举类值,对应色域转换的原始类型和目标类型。若**“cvtColorMode”**色域类型为“base.color_bgr2yuvsp420”、“base.color_rgb2yuvsp420”、“base.color_rgb2yvusp420”或base.color_bgr2yvusp420: |
| keepMargin | 输入 | 输出的张量中是否保留Tensor中无效的边界区域,默认为False,不保留Tensor中无效的边界区域。若设置“keepMargin”为“true”,输出宽度自动与16对齐,保留无效区域。 当cvtColorMode=base.color_gray2rgb或cvtColorMode=base.color_rgba2mrgba时,该参数无效。 |
返回色域转换后的Tensor类数据。
transpose_operator
可通过指定的一组轴维度(axes),对输入的Tensor数据进行转置处理,如未指定具体轴维度,则默认对Tensor数据进行反序转置。
功能仅支持在Device侧的Tensor数据。
- 输入参数对应Tensor的形状(Shape)不超过4维。
transpose_operator(input: Tensor, axes: List[int])
| 参数名 | 类型 | 说明 |
|---|---|---|
| input | Tensor类 | 待转置Tensor类。维度支持2维、3维、4维,数据类型支持base.dtype.float32、base.dtype.float16、base.dtype.uint8,具体请参见Tensor类的属性列表。 |
| axes | List[int] | 转置选项,长度必须与输入Tensor的维度一致。如传入空列表,则按照反序转置进行处理。若不为空列表则axes中的元素必须包含[0, size-1]区间中的数且每个数只能出现一次,其中size为输入Tensor的维度。 |
返回转置后的Tensor类数据。
divide
图像处理类算法,张量除法divide,支持dtype.float16、dtype.float32、dtype.uint8。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
-
接口中的输入输出Tensor必须在Device侧。
-
输入参数对应Tensor的形状(Shape)相等且不超过4维。
-
scale参数仅支持在Atlas 推理系列产品下传入。支持不同输入数据类型,输出数据类型与精度高的输入Tensor保持一致。
-
请注意处理数据类型越界问题。
divide(inputTensor1: Tensor, inputTensor2: Tensor, scale)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 被除数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 除数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| scale | float | 可选参数,表示被除数被缩放的倍数(该参数仅支持在Atlas 推理系列产品下使用)。 |
返回相除后的Tensor类数据。
multiply
图像处理类算法,张量乘法multiply,支持dtype.float16、dtype.float32、dtype.uint8。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入输出Tensor必须在Device侧。
- 输入参数对应Tensor的形状(Shape)相等且不超过4维。
- 当不传入scale时,输入参数的各数据类型需保持一致;若传入,支持不同输入数据类型,输出数据类型与精度高的输入Tensor保持一致。
- 请注意处理数据类型越界问题。
multiply(inputTensor1: Tensor, inputTensor2: Tensor, scale)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 乘数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 乘数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| scale | float | 可选参数,表示结果被缩放的倍数。 |
返回相乘后的Tensor类数据。
subtract
图像处理类算法,张量减法subtract,支持dtype.float16、dtype.float32、dtype.uint8。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入输出Tensor必须在Device侧。
- 输入参数对应Tensor的形状(Shape)相等且不超过4维。
- 请注意处理数据类型越界问题。
subtract(inputTensor1: Tensor, inputTensor2: Tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 被减数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 减数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
返回相减后的Tensor类数据。
add
图像处理类算法,张量加法add,支持dtype.float16、dtype.float32、dtype.uint8。
当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入输出Tensor必须在Device侧。
- 输入参数对应Tensor的形状(Shape)相等且不超过4维。
- 请注意处理数据类型越界问题。
add(inputTensor1: Tensor, inputTensor2: Tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 加数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 加数,输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
返回相加后的Tensor类数据。
min_operator
图像处理类算法,张量取较小值计算min_operator,对两个输入Tensor按元素比较并取较小值,支持dtype.float16、dtype.float32、dtype.uint8类型。
- 当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入Tensor必须在Device侧。
- 输入参数对应Tensor的类型和形状(Shape)一致且不超过4维。
min_operator(inputTensor1: Tensor, inputTensor2: Tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
返回进行逐项取较小值后的Tensor类数据。
max_operator
图像处理类算法,张量取较大值计算max_operator,对两个输入Tensor按元素比较并取较大值,支持dtype.float16、dtype.float32、dtype.uint8类型。
- 当前支持Atlas 推理系列产品和Atlas 200I/500 A2 推理产品。
- 接口中的输入Tensor必须在Device侧。
- 输入参数对应Tensor的类型和形状(Shape)一致且形状不超过4维。
max_operator(inputTensor1: Tensor, inputTensor2: Tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputTensor1 | Tensor类 | 输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
| inputTensor2 | Tensor类 | 输入张量,支持dtype.float16、dtype.float32、dtype.uint8类型输入。 |
返回进行逐项取较大值后的Tensor类数据。
batch_concat
将多个Tensor进行组batch,按照第0维组装,内存连续。
batch_concat(inputs: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputs | List[base.Tensor] | Tensor列表。 |
Tensor对象。
传入Tensor异常、组Tensor后输出的Tensor异常,抛出Runtime异常。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
bytes_to_ptr
将二进制数据转换成指针地址值。
bytes_to_ptr(data: buffer)
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | 二进制数据类型 | 传二进制数据。 |
返回指针地址值。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
image
解码读取图片。
输入输出格式及对齐方式请参见decode(inputPath, decodeFormat)。
image(inputPath: str, deviceId: int, decodeFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inputPath | str | 图片路径。 |
| deviceId | int | Device设备的ID号。 |
| decodeFormat | image_format枚举类 | 输入图片的解码格式。 |
Image对象。
创建ImageProcessor失败、图片解码失败,抛出Runtime异常。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
resize_info
设置缩放信息。
resize_info(image: Image, resize_height: int, resize_width: int, resize_type: ResizeType)
| 参数名 | 类型 | 说明 |
|---|---|---|
| image | Image对象 | 图像信息。 |
| resize_height | int | 缩放高度。 |
| resize_width | int | 缩放宽度。 |
| resize_type | ResizeType | 缩放类型。 |
ResizedImageInfo对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
transpose
可通过指定的一组轴维度(axes),对输入的Tensor数据进行转置处理,如未指定具体轴维度,则默认对Tensor数据进行反序转置。
功能仅支持在Host侧执行操作,如需处理Device侧Tensor数据,请先通过to_host接口,将Device侧数据转移到Host侧,再进行转置。
transpose(input: Tensor, axes: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| input | Tensor类 | 待转置Tensor类。维度支持2维、3维、4维,数据类型支持base.dtype.float32、base.dtype.float16、base.dtype.uint8,具体请参见Tensor类的属性列表。 |
| axes | List[int] | 转置选项,默认值为空。如果未指定具体axes,则默认生成反序axes对input中的数据进行反序转置。例如:三维张量默认生成反序axes为{2, 1, 0} 。 |
返回转置后的Tensor类数据。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
tensor_to_image
将Host侧Tensor类转换为Host侧Image类,或将Device侧Tensor类转换为DVPP侧Image类。
当前接口仅能够在Atlas 推理系列产品和Atlas 800I A2推理产品环境上调用。
在转换过程中,会对Image的宽进行16向上对齐、对Image的高进行2向上对齐,转换后的Image类对象将存在补边区域。
转换后的Image类可通过类对象属性width和height查看补边后的宽、高,通过类对象属性original_width和original_height查看图片原始宽、高。
例如:
- Tensor类对象对应的图片宽、高为500、499时,转换得到的Image类对象在补边后,通过Image类对象属性original_width和original_height可获得原始宽、高分别为500、499,通过Image类对象属性width和height可获得对齐后的宽、高分别为512、500。
- Tensor类对象对应的图片宽、高为512、500时,转换得到的Image类对象不需要补边,即转换后的Image类对象的原始宽、高分别为512、500,Image类对象的对齐后的宽、高分别为512、500。
tensor_to_image(tensor: Tensor, imageFormat: image_format)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | Tensor类 | Tensor类,输入张量。输入需满足以下要求。 |
| imageFormat | image_format枚举类 | 指定图片的格式,需与inputTensor数据所对应的图片格式相匹配。 |
返回对应的Image对象。
模型推理
Model
总体说明
该类主要用于模型推理。接口使用流程请参考模型推理。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
infer
通过输入多个Tensor对象进行模型推理。
原型一:
infer(tensor: Tensor, args)
原型二:
infer(tensorList: List)
原型一:
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | Tensor对象 | 模型推理所需Tensor。如需输入多个Tensor,请使用”,”以分隔形式传入,最大传入Tensor数量为1024。 |
| args | 可变参数 |
原型二:
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensorList | List[base.Tensor] | Tensor列表。 |
返回模型推理输出的List[base.Tensor]。
参数校验失败,分配Tensor内存失败及推理失败,抛出Runtime异常。
input_dtype
获得模型输入的对应Tensor的数据类型信息。
input_dtype(index: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 模型输入的索引(第index个输入)。 |
返回输入Tensor的数据类型,base.dtype类型。
input_shape
获得模型输入的对应Tensor的数据shape信息。
input_shape(index: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 模型输入的索引(第index个输入)。 |
返回对应输入的Tensor的shape信息,List[int]类型。
Model
初始化模型。
原型一:
Model(modelPath: str, deviceId: int = 0)
原型二:
Model(option: ModelLoadOptV2, deviceId: int)
原型一:
| 参数名 | 类型 | 说明 |
|---|---|---|
| modelPath | str | 模型路径。 |
| deviceId | int | 模型部署的芯片ID,默认为0号芯片。(-1表示模型部署在Host侧,为保留字段,请勿使用。) |
原型二:
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | ModelLoadOptV2数据类型 | 用户可通过参数选择模型输入方式,具体请参见ModelLoadOptV2类。 |
| deviceId | int | 模型部署的芯片ID,默认为0号芯片。(-1表示模型部署在Host侧,为保留字段,请勿使用。) |
模型对象
model_gear
获得模型支持的动态输入档位信息,支持动态Batch、动态分辨率和分档动态维度模型。
model_gear()
返回模型支持的输入Tensor档位信息,List[List[int]]类型。
返回数据结构为空,表示获取分档信息失败或者模型不属于函数功能中描述的三种模型之一,具体的原因可查看报错信息确认。
例如,模型为动态分辨率模型,List[int]为某一档的高、宽值。
output_dtype
获得模型输出的对应Tensor的数据类型信息。
output_dtype(index: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 模型输出的索引(第index个输出)。 |
返回输出Tensor的数据类型,base.dtype类型。
output_shape
获得模型输出的对应Tensor的数据shape信息。
output_shape(index: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 模型输出的索引(第index个输出)。 |
返回对应输出的Tensor的shape信息,List[int]类型。
Model类的属性列表
| 属性名 | 说明 | 备注 |
|---|---|---|
| input_format | 获得模型输入的数据组织形式。 | VisionDataFormat类型,NHWC或者NCHW。 |
| input_num | 获得模型的输入个数。 | int类型。 |
| output_num | 获得模型的输出个数。 | int类型。 |
model
加载模型。
model(modelPath: str, deviceId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| modelPath | str | 模型路径。 |
| deviceId | int | 加载的deviceId。 |
Model对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
模型后处理
总体说明
接口使用流程请参考后处理。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
分类后处理
基类ClassPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| Resnet50PostProcess | ResNet-50后处理。 |
Resnet50PostProcess(config_data, label_path)
Resnet50PostProcess(config_path, label_path)
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
Resnet50PostProcess对象。
process(tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
list[list[ClassInfo]]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
目标检测后处理
基类ObjectPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| Yolov3PostProcess | YOLOv3后处理。 |
| SsdMobilenetv1FpnPostProcess | SsdMobilenetv1Fpn后处理。 |
| SsdMobilenetFpnMindsporePost | SsdMobilenetFpnMindSpore后处理。 |
| Ssdvgg16PostProcess | Ssdvgg16后处理。 |
| FasterRcnnPostProcess | FasterRcnn后处理。 |
| MaskRcnnMindsporePost | MaskRcnnMindspore后处理。 |
postProcessName(config_data, label_path)
postProcessName(config_path, label_path)
例如:Yolov3PostProcess(config_data, label_path),Yolov3PostProcess(config_path, label_path)。
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
对应后处理对象。
process(tensor, params)
process(tensor, param)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
| params | List[base.ResizedImageInfo] | ResizedImageInfo列表。 |
| param | base.ResizedImageInfo | ResizedImageInfo对象。 |
list[list[ObjectInfo]]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
分割后处理
基类SemanticSegPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| Deeplabv3Post | Deeplabv3后处理。 |
| UNetMindSporePostProcess | UNet MindSpore后处理。 |
postProcessName(config_data, label_path)
postProcessName(config_path, label_path)
例如:Deeplabv3Post (config_data, label_path),Deeplabv3Post(config_path, label_path)。
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
对应的后处理对象。
process(tensor, params)
process(tensor, param)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
| params | List[base.ResizedImageInfo] | ResizedImageInfo列表。 |
| param | base.ResizedImageInfo | ResizedImageInfo对象。 |
list[SemanticSegInfo]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
文本生成后处理
基类TextGenerationPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| CrnnPostProcess | Crnn后处理。 |
| TransformerPostProcess | Transformer后处理。 |
postProcessName(config_data, label_path)
postProcessName(config_path, label_path)
例如:CrnnPostProcess(config_data, label_path),CrnnPostProcess(config_path, label_path)。
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
对应的后处理对象。
process(tensor)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
list[TextsInfo]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
文本检测后处理
基类TextObjectPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| CtpnPostProcess | Ctpn后处理。 |
| PSENetPostProcess | PSEnet后处理。 |
postProcessName(config_data, label_path)
postProcessName(config_path, label_path)
例如:CtpnPostProcess (config_data, label_path),CtpnPostProcess (config_path, label_path)。
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
对应的后处理对象。
process(tensor, params)
process(tensor, param)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
| params | List[base.ResizedImageInfo] | ResizedImageInfo列表。 |
| param | base.ResizedImageInfo | ResizedImageInfo对象。 |
list[list[TextObjectInfo]]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
关键点检测后处理
基类KeypointPostProcessBase。
| 模型后处理 | 说明 |
|---|---|
| OpenPosePostProcess | OpenPose后处理。 |
| HigherHRnetPostProcess | HigherHRnet后处理。 |
postProcessName(config_data, label_path)
postProcessName(config_path, label_path)
| 参数名 | 类型 | 说明 |
|---|---|---|
| config_data | dict | 配置数据。 |
| label_path | str | 标签路径。 |
| config_path | str | 配置路径。 |
对应的后处理对象。
process(tensor, params)
process(tensor, param)
| 参数名 | 类型 | 说明 |
|---|---|---|
| tensor | List[base.Tensor] | Tensor列表。 |
| params | List[base.ResizedImageInfo] | ResizedImageInfo列表。 |
| param | base.ResizedImageInfo | ResizedImageInfo对象。 |
list[list[KeyPointDetectionInfo]]
传入Tensor失败,拷贝至Host失败,抛出Runtime异常。
日志输出
log类函数集
| 函数名 | 参数类型 | 说明 |
|---|---|---|
| debug(str) | String | 打印Debug级日志。 |
| info(str) | String | 打印Info级日志。 |
| warning(str) | String | 打印Warning级日志。 |
| error(str) | String | 打印Error级日志。 |
| fatal(str) | String | 打印Fatal级日志。 |
| init() | - | 日志初始化。 |
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
流程编排
流程编排依赖列表
表 1 依赖列表
| 依赖名称 | 用途 |
|---|---|
| StreamManagerApi | 用于引入流程编排基础功能。 |
| PluginNode | 用于创建插件对象。 |
| SequentialStream | 用于创建队列式流对象。 |
| FunctionalStream | 用于创建函数式流对象。 |
依赖使用方法如下:
from StreamManagerApi import *
from mindx.sdk import stream
from mindx.sdk.stream import PluginNode
流程管理
StreamManagerApi
类说明
该类用于对流程的基本管理:加载流程配置、创建流程、向流程上发送数据、获得执行结果。
streamManagerApi = StreamManagerApi()
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CreateMultipleStreams
根据指定的配置创建多个Stream。需与DestroyAllStreams搭配使用。
请勿在一个进程中重复调用CreateMultipleStreams和DestroyAllStreams。
子pipeline数量限制最大256个,单个pipeline中,插件及pipeline配置项的个数限制最大5120个。
def CreateMultipleStreams(streamsConfig: bytes) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamsConfig | bytes | pipeline配置文件内容。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CreateMultipleStreamsFromFile
根据指定的配置文件创建多个Stream。需与DestroyAllStreams搭配使用。
请勿在一个进程中重复调用CreateMultipleStreamsFromFile和DestroyAllStreams。
子pipeline数量限制最大256个,单个pipeline中,插件及pipeline配置项的个数限制最大5120个。
def CreateMultipleStreamsFromFile(streamsFilePath: bytes) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamsFilePath | bytes | pipeline配置文件。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DestroyAllStreams
销毁所有的流数据。该接口会销毁GStreamer创建的流,同时销毁底层芯片资源,单个Stream进程内只能调用一次(注意与StopStream接口区别使用)。
def DestroyAllStreams() -> int:
pass
GetProtobuf
获得Stream上的输出元件(appsink)的protobuf数据,获取数据时是阻塞队列,若无数据则阻塞,使用接口需要安装4.25.1版本的protobuf,安装命令为pip3 install protobuf-4.25.1。
def GetProtobuf(streamName: bytes, outPluginId: int, keyVec: list) -> list :
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| outPluginId | int | 输出插件ID,即appsink元件的编号。 |
| keyVec | bytes list | 获取protobuf数据的key,通过key获取对应的protobuf数据。内存由智能指针管理,不需要释放内存。 |
| 数据结构 | 说明 |
|---|---|
| MxProtobufOut list | 推理服务输出protobuf数据,需要将protobuf的value反序列化成输出对应的结构体,类型见MxProtobufOut。 |
GetResult
获得Stream上的输出元件的结果(appsink)。输出结果不支持多线程并发。
def GetResult(streamName: bytes, outPluginId: int, msTimeOut: unsigned int) -> MxDataOutput :
pass
def GetResult(streamName: bytes, elementName: bytes, dataSourceVec:StringVector, msTimeOut: unsigned int) -> MxDataOutput :
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| outPluginId | int | 流上的输出插件ID,即appsink元件的编号。 |
| elementName | bytes | 输出元件名称。 |
| dataSourceVec | StringVector | 待获取的元数据的dataSource。 |
| msTimeOut | unsigned int | 超时时间(单位ms),默认为3s。 |
GetResultWithUniqueId
获得Stream上的输出元件的结果(appsink)。阻塞式,支持多线程并发。
def GetResultWithUniqueId(streamName: bytes, uniqueId: unsigned long, timeOutInMs: unsigned int) -> MxDataOutput :
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| uniqueId | unsigned long | 流上的输出插件ID,即appsink元件的编号。 |
| timeOutInMs | int | 获取结果的超时时间。 |
| 数据结构 | 说明 |
|---|---|
| MxDataOutput | 推理服务输出数据,类型见MxDataOutput。 |
InitManager
初始化一个StreamManagerApi。
def InitManager(argStrings: list) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| argStrings | bytes list | StreamManager初始化参数,当前为空。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendData
向指定Stream上的输入元件发送数据(appsrc)。阻塞式,不支持多线程并发。
def SendData(streamName: bytes, inPluginId: int, dataInput: MxDataInput) -> int:
pass
def SendData(streamName: bytes, elementName: bytes, dataInput: MxDataInput) -> int:
pass
def SendData(streamName: bytes, elementName: bytes, metadataVec: MetadataInputVector, databuffer: MxBufferInput) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| inPluginId | int | 目标输入插件ID,即appsrc元件的编号。 |
| dataInput | 请参考MxDataInput | 待发送的数据。 |
| elementName | bytes | 输入插件的名称,只支持appsrc当作输入插件。 |
| databuffer | MxBufferInput | 待发送的buffer数据。 |
| metadataVec | MetadataInputVector | 发送的元数据vector。 |
输入示例:
metadata = MxMetadataInput()
metadataVec = MetadataInputVector()
metadataVec.push_back(metadata)
SendDataWithUniqueId
向指定Stream上的输入元件发送数据(appsrc)。阻塞式,支持多线程并发。
def SendDataWithUniqueId(streamName: bytes, inPluginId: int, dataInput: MxDataInput) -> int:
pass
def SendDataWithUniqueId(streamName: bytes, elementName: bytes, dataInput: MxDataInput) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| inPluginId | int | 目标输入插件ID,即appsrc元件的编号。 |
| elementName | bytes | 输入插件的名称,只支持appsrc当作输入插件。 |
| dataInput | 请参考MxDataInput | 待发送的数据。 |
| 数据结构 | 说明 |
|---|---|
| int | 发送数据后返回的编号,通过该编号获取对应的结果(调用GetResultWithUniqueId),结果为-1表示发送失败。 |
SendProtobuf
发送protobuf数据给Stream的输入元件(appsrc),使用接口需要安装4.25.1版本的protobuf,安装命令为pip3 install protobuf-4.25.1。
def SendProtobuf(streamName: bytes, inPluginId: int, protobufVec: list) -> int:
pass
def SendProtobuf(streamName: bytes, elementName: bytes, protobufVec: list) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| inPluginId | int | 输入插件ID,即appsrc元件的编号。 |
| protobufVec | MxProtobufIn list | 发送的MxProtobufIn列表,将protobuf的key、type、value发给mxStream,其中value是将protobuf序列化后的bytes。 |
| elementName | bytes | 输入插件的名称,只支持appsrc当作输入插件。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码,请参考APP_ERROR说明。 |
StopStream
销毁所有流数据,该接口只销毁GStreamer创建的流,不会销毁底层芯片资源,单个进程内可多次调用。
def StopStream(streamName: bytes) -> int:
pass
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamName | bytes | 流的名称。 |
| 数据结构 | 说明 |
|---|---|
| int | 程序执行返回的错误码,请参考APP_ERROR说明。 |
PluginNode
类说明
插件节点类,用于创建流程所需的插件。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
PluginNode
创建插件对象。
PluginNode(factory: str, props: Dict, name: str)
| 参数名 | 类型 | 说明 |
|---|---|---|
| factory | str | 插件类型。 |
| props | Dict | 属性字典。 |
| name | str | 定义名称。 |
插件对象。
plugin_name
获取插件名称。
plugin_name()
返回插件名称。
factory
获取插件类型。
factory()
返回插件类型。
to_json
获取插件的JSON字符串说明。
to_json()
返回插件的JSON字符串说明。
__call__
允许插件之间以函数的方式进行连接。
__call__(*args)
一个或多个PluginNode。
返回对象本身。
SequentialStream
类说明
该类为单向顺序流程的实体类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
SequentialStream
创建队列式流对象。
SequentialStream(name: str)
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | str | Stream名称。 |
返回SequentialStream对象。
to_json
获取Stream的JSON字符串说明。
to_json()
返回Stream的JSON字符串说明。
set_device_id
设置设备号。
set_device_id(deviceId: str)
| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | str | 设备号。 |
add
添加插件。
add(pluginNode: PluginNode)
| 参数名 | 类型 | 说明 |
|---|---|---|
| pluginNode | PluginNode | 插件节点。 |
添加节点插件失败,抛出Runtime异常。
build
加载已添加的插件。
需与stop()搭配使用,请勿在一个进程中重复调用build与stop。
pipeline中,插件及pipeline配置项的个数限制最大5120个。
build()
抛出Runtime异常。
stop
停止当前Stream。
stop()
抛出Runtime异常。
send
发送数据并执行pipeline。
send(elementName: str, metadataVec: List, dataBuffer: BufferInput)
| 参数名 | 类型 | 说明 |
|---|---|---|
| elementName | str | 带序号的插件名。 |
| metadataVec | List[MetadataInput] | protobuf输入数据。 |
| dataBuffer | BufferInput | 一般图片输入数据。 |
发送数据失败及转换指针内存数据到string失败,抛出Runtime异常。
get_result
获取运行结果。
get_result(element_name: str, data_source_list: List, timeout: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| element_name | str | 带序号的插件名。 |
| data_source_list | List[str] | 插件源字段。 |
| timeout | int | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
DataOutput对象。
send_multi_data_with_unique_id
支持单线程或多线程发送数据,搭配get_multi_result_with_unique_id()使用,可支持单输入、多输入。
send_multi_data_with_unique_id(inPluginNum: int, dataInputVec: List, uniqueId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inPluginNum | int | 输入数据数量(多少个输入插件),取值范围为[1, 1024]。 |
| dataInputVec | List[MxDataInput] | 输入数据(list)。 |
| uniqueId | int | 唯一标识(默认为0)。 |
get_multi_result_with_unique_id
支持单线程或多线程,使用unique_id确保多线程场景下能正确获取结果。搭配send_multi_data_with_unique_id()使用,可支持单输出、多输出。
get_multi_result_with_unique_id(unique_id: int, timeout: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| unique_id | int | 唯一标识符,使用发送时声明的变量。 |
| timeout | int | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| Output | List[MxDataOutput] | 推理结果,list的数量对应输出插件的数量。 |
FunctionalStream
类说明
该类为多输入多输出流程的实体类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
FunctionalStream
创建函数式流对象。
FunctionalStream(name: str)
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | str | Stream名称。 |
返回FunctionalStream对象。
FunctionalStream
创建FunctionalStream对象。
FunctionalStream(name: str, inputs: List, outputs: List)
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | str | Stream名称。 |
| inputs | List[PluginNode] | Stream的输入节点,多输入。 |
| outputs | List[PluginNode] | Stream的输出节点,多输出。 |
返回FunctionalStream对象。
to_json
获取Stream的JSON字符串说明。
to_json()
返回Stream的JSON字符串说明。
set_device_id
设置设备号。
set_device_id(deviceId: str)
| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | str | 设备号。 |
build
加载已添加的插件。构建流程时,会根据插件的上下游关系进行递归操作,最大递归次数为4096,请合理设置插件及其输入输出。pipeline中,插件及pipeline配置项的个数限制最大5120个。
需与stop()搭配使用,请勿在一个进程中重复调用build与stop。
build()
创建pipeline失败,抛出Runtime异常。
stop
停止当前Stream。
stop()
创建pipeline失败,抛出Runtime异常。
send
发送数据并执行pipeline。
send(elementName: str, metadataVec: List, dataBuffer: BufferInput)
| 参数名 | 类型 | 说明 |
|---|---|---|
| elementName | str | 带序号的插件名。 |
| metadataVec | List[MetadataInput] | protobuf输入数据。 |
| dataBuffer | BufferInput | 一般图片输入数据。 |
发送数据失败及转换指针内存数据到string失败,抛出Runtime异常。
get_result
获取运行结果。
get_result(element_name: str, data_source_list: List, timeout: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| element_name | str | 带序号的插件名。 |
| data_source_list | List[str] | 插件源字段。 |
| timeout | int | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
DataOutput对象。
send_multi_data_with_unique_id
支持单线程或多线程发送数据,搭配get_multi_result_with_unique_id()使用,可支持单输入、多输入。
send_multi_data_with_unique_id(inPluginNum: int, dataInputVec: List, uniqueId: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| inPluginNum | int | 输入数据数量(多少个输入插件),取值范围为[1, 1024]。 |
| dataInputVec | List[MxDataInput] | 输入数据(list)。 |
| uniqueId | int | 唯一标识(默认为0)。 |
get_multi_result_with_unique_id
支持单线程或多线程,使用unique_id确保多线程场景下能正确获取结果。搭配send_multi_data_with_unique_id()使用,可支持单输出、多输出。
get_multi_result_with_unique_id(unique_id: int, timeout: int)
| 参数名 | 类型 | 说明 |
|---|---|---|
| unique_id | int | 唯一标识符,使用发送时声明的变量。 |
| timeout | int | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| Output | List[MxDataOutput] | 推理结果,list的数量对应输出插件的数量。 |
其他接口
MxpiOSDType_pb2.py
该头文件由Google ProtoBuf根据message数据结构自动生成,原型请参见OSD Protobuf 数据结构定义文件(MxpiOSDType.proto)。
MxpiDataType_pb2.py
该头文件由Google ProtoBuf根据message数据结构自动生成,原型请参见Google Protobuf数据结构定义文件(MxpiDataType.proto)。
