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种基本张量运算接口功能,控制台会输出基本接口执行结果的对应信息。