Vision SDK快速入门——TensorOperations接口基本使用教程

1 介绍

1.1 简介

TensorOperations接口,主要开放四则运算、指对数、绝对值、值比较、位运算以及常见二值化和排序等张量运算接口。部分接口调用的底层算子默认开启融合规则,其详细说明及融合规则配置可参考《CANN ATC工具使用指南》中的"fusion_switch_file"章节。

张量运算接口简介如下,其中张量元素数值以下简称为张量值,操作数为1表示当前为一元操作符,2则表示二元操作符,运行次序为样例中该接口的运行次序。

操作数 功能 接口 描述 运行次序
1 绝对值 Abs 张量值绝对值 1
1 平方 Sqr 张量值平方 2
1 平方根 Sqrt 张量值平方根 3
1 自然对数为底的指数 Exp 自然对数为底张量值的指数 4
1 自然对数为底的对数 Log 自然对数为底张量值的对数 5
1 尺度重变换 Rescale 张量值尺度变换 6
1 二值化 ThresholdBinary 基于阈值对张量值进行二值化 7
1 二值化 Threshold 基于阈值对张量值进行二值化与反二值化 8
1 剪切 Clip 对张量值进行剪切 9
1 排序 Sort 按轴对张量值进行排序后返回值 10
1 排序(索引) SortIdx 按轴对张量值进行排序后返回索引 11
1 类型转换 ConvertTo 张量值类型变换 12
2 张量加 Add 两张量值相加 13
2 尺度加 ScaleAdd 张量1尺度变换后与张量相加 14
2 张量加和 AddWeighted 两张量值加和 15
2 张量减 Subtract 两张量值相减 16
2 绝对值张量减 AbsDiff 两张量值相减后求绝对值 17
2 张量乘 Multiply 两张量值相乘 18
2 张量除 Divide 两张量值相除 19
2 张量指数 Pow 张量值2作为张量值1的指数 20
2 张量最小值 Min 两张量值最小 21
2 张量最大值 Max 两张量值最大 22
2 张量对比 Compare 两张量值对比后二值化 23
2 张量位和 BitwiseAnd 两张量值和位运算 24
2 张量位或 BitwiseOr 两张量值或位运算 25
2 张量位异或 BitwiseXor 两张量值异或位运算 26
2 张量位反 BitwiseNot 两张量值位运算取反 27

备注

  • 除 Sort 和 SortIdx 所需张量维度需小于等于2,其他操作所需张量维度需小于等于4。
  • ConvertTo 的输出张量类型需要与参数中设置的张量类型保持一致。
  • BitwiseAnd、BitwiseOr、BitwiseXor和BitwiseNot 等位运算需特别注意张量类型为UINT8。
  • Multiply与Divide在接口中有两种实现,额外实现内含操作后的数值尺度变换。
  • 部分数域中未定义的计算返回特殊结果,如除零返回inf,实数域的负数平方根返回nan等。

1.2 支持的产品

本教程支持昇腾Atlas 300I Pro、Atlas 300V Pro。

1.3 支持的版本

Vision SDK版本 CANN版本 Driver/Firmware版本
26.0.0 9.0.0 26.0.RC1

2 设置环境变量

source /usr/local/Ascend/ascend-toolkit/set_env.sh #CANN默认安装路径,根据实际安装路径修改
source /usr/local/mxVision/set_env.sh #根据实际SDK安装路径修改

3 编译与运行(C++)

步骤1: 进入TensorOperationsProcessor文件夹中,执行以下命令:

bash run.sh

若出现 $'\r': command not found 等错误信息,可通过在命令行输入sed -i 's/\r//' <脚本名> 消除脚本换行符的格式差异,即

sed -i 's/\r//' run.sh

步骤2: 查看结果。正常启动后,遍历执行27种基本张量运算接口功能,控制台会输出基本接口执行结果的对应信息。