Tensor数据类,作为模型推理的输入与输出的数据结构。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
[!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对象。
移动Tensor到Device内存中。
to_device(deviceId: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | Device设备的ID号。 |
分配Tensor内存失败及拷贝到Device侧失败,抛出Runtime异常。
移动Tensor到Host内存中。
to_host()分配Tensor内存失败及拷贝到Host侧失败,抛出Runtime异常。
| 属性名 | 说明 | 备注 |
|---|---|---|
| device | Tensor所在Device的ID | -1表示运行在Host侧,1表示设备号1,2表示设备号2,以此类推。 |
| dtype | Tensor数据类型 | base.dtype数据类型。 |
| shape | Tensor的维度信息 | 返回的是list数据类型。 |
设置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类数据。
作为图像处理类,主要开放图像编解码、缩放和抠图等接口。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
- 构造一个空的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对象。
将Image对象转换为Tensor类对象。
to_tensor()返回Tensor。
获取Tensor类对象。
get_tensor()返回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。
搬移image到Device内存中。
to_device(deviceId: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | Device设备的ID号。 |
调用Tensor的to_device函数失败,抛出Runtime异常。
搬移image到Host内存中。
to_host()调用Tensor的to_host函数失败,抛出Runtime异常。
将图像内存数据及元数据序列化后落盘保存为文件。
serialize(filePath: str, forceOverwrite: bool = False);| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 序列化后的数据文件保存路径(包括文件名称),不支持软链接。 |
| forceOverwrite | bool | 保存时是否强制覆盖已有文件,默认为False,不覆盖。 |
将serialize中保存的落盘数据文件加载到内存中,需指定文件名称及具体路径。
unserialize(filePath: str);| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 落盘数据文件保存路径,输入文件大小支持范围为(0, 4GB]。 |
将图像内存数据落盘到二进制文件,需要指定文件名称及具体路径。
dump_buffer(filePath: str, forceOverwrite: bool = False);| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | str | 落盘数据文件路径(包含文件名称),不支持软链接。 |
| forceOverwrite | bool | 保存时是否强制覆盖已有文件,默认为False,不覆盖。 |
| 属性名 | 说明 |
|---|---|
| device | Image所在Device的ID。 |
| height | 返回Image类对齐后的高。 |
| width | 返回Image类对齐后的宽。 |
| original_height | 返回Image类的原始高。 |
| original_width | 返回Image类的原始宽。 |
| format | 返回图像的格式。 |
作为图像处理类,主要开放图像编解码、缩放和抠图等接口。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
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对象。
ImageProcessor类的图像抠图接口,输入输出格式、分辨率范围、对齐方式请参见Crop。
接口使用流程请参考抠图。
crop(inputImage: Image, cropRectVec: List)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入抠图前的Image类。 |
| cropRectVec | List[Rect] | 输入图像的抠图坐标框列表。 |
返回抠图后的Image类列表List[Image]。
抠图失败,抛出Runtime异常。
ImageProcessor类的图像抠图接口,输入输出格式、分辨率范围、对齐方式请参见Crop。
接口使用流程请参考抠图。
crop(inputImageVec: List, cropRectVec: List)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImageVec | List[Image] | 输入抠图前的Image类列表。 |
| cropRectVec | List[Rect] | 输入图像的抠图坐标框列表。 |
返回抠图后的Image类列表List[Image]。
抠图失败,抛出Runtime异常。
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异常。
ImageProcessor类的图像抠图并缩放接口,输入输出格式、分辨率范围、对齐方式请参见CropResize。
接口使用流程请参考抠图缩放。
crop_resize(inputImage: Image, cropResizeVec: List)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入抠图缩放前的Image类。 |
| cropResizeVec | List[Tuple(Rect, Size)] | 输入图像的抠图缩放参数列表。Rect为抠图坐标框,Size为缩放宽高。 |
返回抠图缩放后的Image类列表List[Image]。
抠图缩放失败,抛出Runtime异常。
ImageProcessor类的图片解码接口,输入输出格式、分辨率范围、对齐方式请参见Decode。
接口使用流程请参考图片解码。
decode(inputPath: str, decodeFormat: image_format)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputPath | str | 输入待解码的图片路径。 |
| decodeFormat | image_format枚举类 | 输入解码后图片的格式。(PNG格式解码无需设置。) |
返回解码后的Image类。
图片路径错误、解码格式错误、解码失败,抛出Runtime异常。
ImageProcessor类的图片解码接口,输入输出格式、分辨率范围、对齐方式请参见Decode。
接口使用流程请参考图片解码。
decode_bytes(data: bytes, dataSize: int, decodeFormat: image_format)| 参数名 | 类型 | 说明 |
|---|---|---|
| data | bytes | 输入解码前的二进制数据。 |
| dataSize | int | 二进制数据有效长度。需与输入数据长度保持一致。 |
| decodeFormat | image_format枚举类 | 输入解码后图片的格式(PNG格式解码时无需设置),默认为base.nv12。 |
返回解码后的image类。
数据类型或长度不匹配、解码格式错误、解码失败,抛出Runtime异常。
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异常。
ImageProcessor类的图片编码接口,输入输出格式、分辨率范围、对齐方式请参见Encode。
接口使用流程请参考图片编码。
encode_bytes(inputImage: Image, encodeLevel: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image | 输入编码前的Image类。 |
| encodeLevel | int | 默认为“100”,Atlas 200I/500 A2 推理产品、Atlas 推理系列产品的范围为[1,100]。 |
编码后的二进制bytes数据。
编码级别错误、编码失败,抛出Runtime异常。
ImageProcessor类的构造函数,若因内存不足,或无法识别芯片等构造失败的场景会抛出Runtime异常。
ImageProcessor(deviceId: int = 0)| 参数名 | 类型 | 说明 |
|---|---|---|
| deviceId | int | 图像处理类部署的芯片,默认为0号芯片。取值范围:[0, 识别到的芯片个数 - 1] |
ImageProcessor对象。
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异常。
ImageProcessor类的图像缩放接口,输入输出格式、分辨率范围、对齐方式请参见Resize。
接口使用流程请参考缩放。
resize(inputImage: Image, resize: Size, interpolation: interpolation)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入缩放前的Image类。 |
| resize | Size类 | 输入图像缩放的宽高。 |
| interpolation | interpolation参数枚举类 | 输入图像的缩放方式,默认为HUAWEI_HIGH_ORDER_FILTER。 |
返回缩放后的Image类。
缩放失败,抛出Runtime异常。
视频解码绑定回调函数类,用于绑定用户自定义的回调函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
回调函数用于接收VideoDecoder解码后的数据(如Image数据、frameId等)并在回调函数内实现自定义处理功能。
用户如需实现自定义处理功能,建议进行简单的操作,如数据保存、列表写入(append),降低函数处理耗时,防止解码线程阻塞,导致视频解码速度变慢。
def callback_func(decodedImage: Image, channelId: int, frameId: int) -> Nonecallback_func为函数名称,用户可自定义,与registerVdecCallBack注册的函数名一致即可。
| 参数名 | 类型 | 说明 |
|---|---|---|
| decodedImage | Image类 | 解码后输出的图像类。 |
| channelId | int | 视频流索引,在VideoDecoder类初始化设置。 |
| frameId | int | 视频帧索引,由VideoDecoder类的decode函数来设置。 |
[!NOTICE] 在回调函数中抛异常会触发C++侧抛出异常,引起程序coredump,建议在回调中捕获异常并处理。
VdecCallBacker的构造函数。
VdecCallBacker()VdecCallBacker对象。
将用户自定义的回调函数注册,以便解码后在回调函数中实现自定义操作。
registerVdecCallBack(callback_func: Callable)| 参数名 | 类型 | 说明 |
|---|---|---|
| callback_func | Python定义的函数名 | 需传入按指定格式定义的函数,否则将抛出异常。 |
未按指定格式传入定义的回调函数,将抛出TypeError异常或Runtime异常。
视频解码类,用于提供视频解码接口。
接口使用流程请参考视频解码。
- 为确保资源正确回收,建议在函数或类的成员方法中定义和运行VideoDecoder。若在全局作用域中定义VideoDecoder,则需要在程序结束时使用del函数删除构造的VideoDecoder对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
VideoDecoder的视频解码接口。
decode(inputData: buffer, frameId: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputData | 二进制数据类型 | 传入视频帧二进制数据。 |
| frameId | int | 输入解码前视频帧的帧ID。 |
无。(默认解码方式为非实时出帧,解码过程中存在缓存帧,Vdec需要在收到码流中的多帧数据后,才开始输出解码结果。)
解码失败,抛出Runtime异常。
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对象。
视频编码绑定回调函数类,用于绑定用户自定义的回调函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
回调函数用于接收VideoEncoder编码后的数据(如视频帧数据、ByteSize、frameId等)并在回调函数内实现自定义处理功能。
用户如需实现自定义处理功能,建议进行简单的操作,如数据保存、列表写入(append),降低函数处理耗时,防止编码线程阻塞,导致视频编码速度变慢。
def callback_func(pyBytes: bytes, outDataSize: int, channelId: int, frameId: int) -> Nonecallback_func为函数名称,用户可自定义,与registerVencCallBack注册的函数名一致即可。
| 参数名 | 类型 | 说明 |
|---|---|---|
| pyBytes | bytes | 编码后输出视频帧字节数据。 |
| outDataSize | int | 编码后输出视频帧数据的内存大小。 |
| channelId | int | 视频流索引,在VideoEncoder类初始化设置。 |
| frameId | int | 视频帧索引,由VideoEncoder类的encode函数来设置。 |
[!NOTICE] 在回调函数中抛异常会触发C++侧抛出异常,引起程序coredump,建议在回调中捕获异常并处理。
VencCallBacker的构造函数。
VencCallBacker()VencCallBacker对象。
将用户自定义的回调函数注册,以便编码后在回调函数中实现自定义操作。
registerVencCallBack(callback_func: Callable)| 参数名 | 类型 | 说明 |
|---|---|---|
| callback_func | Python定义的函数名 | 需传入按指定格式定义的函数,否则将抛出异常。 |
未按指定格式传入定义的回调函数,将抛出TypeError异常或Runtime异常。
VideoEncoder类,作为视频编码类,主要开放视频编码接口。
接口使用流程请参考视频编码。
- 为确保资源正确回收,建议在函数或类的成员方法中定义和运行VideoEncoder。若在全局作用域中定义VideoEncoder,则需要在程序结束时使用del函数删除构造的VideoEncoder对象。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Note
- VideoEncoder类涉及申请Device侧资源,与mx_deinit的作用域冲突,因此,其作用域不能大于或等于mx_deinit的作用域。
- 编码器运行时可能会因为送帧频率过快、大于芯片处理速度等原因,导致某一帧编码失败。建议用户合理控制调用Encode接口的频率。如,当编码帧率为30fps时,调用Encode接口的间隔可以控制在33ms。
- 当某一帧编码失败时,编码器会继续处理后续帧数据。用户可以通过回调函数中的帧ID等信息感知到该帧编码结果未获取。
VideoEncoder的视频编码接口。
encode(inputImage: Image, frameId: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| inputImage | Image类 | 输入编码前的Image类。 |
| frameId | int | 输入视频帧索引。 |
编码失败,抛出Runtime异常。
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对象。
从Device侧申请内存,获取内存指针地址的值。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
从Device侧申请内存。
DeviceMemory(size: int)| 参数名 | 类型 | 说明 |
|---|---|---|
| size | int | 申请内存的大小,单位Byte。 |
DeviceMemory对象。
获取对象中内存指针的值。
get_data()| 返回值 | 类型 | 说明 |
|---|---|---|
| Output | int | 返回对象内存指针中的值。 |
dvpp模块预计于2025年12月退出,建议使用ImageProcessor类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
解码读取图片。
输入输出格式及对齐方式请参见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(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异常。
本章节作为张量处理接口的主目录,主要开放色域转换、裁剪、张量类型转换等接口。
接口的硬件支持情况如表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 |
图像处理类,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类数据。
将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类数据。
将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类数据。
可通过指定的一组轴维度(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,支持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,支持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,支持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,支持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,对两个输入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,对两个输入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类数据。
将多个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(data: buffer)| 参数名 | 类型 | 说明 |
|---|---|---|
| data | 二进制数据类型 | 传二进制数据。 |
返回指针地址值。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
解码读取图片。
输入输出格式及对齐方式请参见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(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 推理系列产品
可通过指定的一组轴维度(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 推理系列产品
将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对象。