图像分析引擎 2 (SVP_NNN)与图像分析引擎 1 (NNN)在多个方面存在差异,以下是一些主要的区别和使用上的差异点:
-
接口风格差异:
- 图像分析引擎 1 使用 ACL 接口,而图像分析引擎 2 使用 SVP ACL 接口。
- SVP ACL 使用 Linux 风格命名,宏定义和枚举采用
SVP_ACL_
前缀;ACL 使用驼峰风格,宏定义和枚举采用ACL_
前缀。
-
SDK 接口差异:
- 创建 data buffer 函数时,SVP ACL 增加了 stride 参数,用于逻辑读写操作时快速跳到下一行。
- 模型加载函数、获取模型输入个数函数、数据类型获取数据大小等方面也存在差异。
-
MindStudio 使用差异:
- 图像分析引擎 2 的 MindStudio 支持更多的模型转换选项,如 Caffe、ONNX,不支持 TensorFlow,并且部分参数有增删。
- 精度比对方面,图像分析引擎 2 支持更多的中间结果相互对比。
-
小型化工具使用差异:
Caffe 和 Pytorch 的小型化工具在支持量化的算子、量化的位宽、对外接口和功能上存在差异。 -
ATC 使用差异:
SVP ATC 在特性上与 NNN ATC 存在差异,例如对不同开源网络模型的支持、量化校准、自定义算子等。 -
仿真器差异:
图像分析引擎 2 提供了仿真器 Simulator,允许在非上板的 PC/服务器环境中执行仿真任务。 -
数据排布和模型输入输出处理:
SVP ACL 统一了输入输出数据格式,并对特定数据类型如 YVU420SP/YUV420SP 有特定的数据排布方式。 -
环境安装差异:
图像分析引擎 1 需要配置额外的环境变量,而图像分析引擎 2 简化了这一过程。 -
特定功能支持:
如 Recurrent 网络执行、动态 batch 处理、模式识别 CPU 任务个数获取等,在两个引擎中处理方式不同。
图像分析引擎 2 与图像分析引擎 1 在支持的模型层上存在一些差异,特别是在量化小型化工具支持的层和一些特定功能上。
-
Caffe 小型化工具差异:
- 图像分析引擎 2 支持对更多不带权重的层进行激活量化,例如 PassThrough, Pooling, PSROIPooling, ROIPooling, SPP, Upsample 等。
- 图像分析引擎 2 支持更灵活的量化位宽控制,激活量化可以在 8~16 位之间任意配置,权重量化在 Calibration 时可以配置 4 位和 8 位两种位宽。
-
Pytorch 小型化工具差异:
- 图像分析引擎 2 支持对 Pytorch 中的特定层进行量化,例如 torch.nn.Linear(全连接层)、torch.nn.Conv2d(卷积层)、torch.nn.ConvTranspose2d(反卷积层)等,但有一些约束条件。
- 一些操作需要替换为特定的 EltwiseAdd, EltwiseMul, EltwiseDiv 算子。
-
ATC 支持的算子规格差异:
图像分析引擎 2(SVP_NNN)在某些方面与图像分析引擎 1(NNN)相比,支持的自定义算子和扩展算子有所不同。例如,图像分析引擎 2 不支持 Reverse、ROIAlign、Yolo、PriorBox、SpatialTransformer 等层,但支持新的参数配置方式。 -
特定层的支持:
一些特定层如 YoloV3Detection Output、SSDDetectionOutput、FSRDetectionOutput 等在两个引擎中都支持,但是配置方式可能存在差异。 -
权重量化位宽:
图像分析引擎 1 支持 8 位权重量化,而图像分析引擎 2 支持 4 位和 8 位权重量化。 -
特定功能支持:
- 图像分析引擎 2 支持权重压缩,而图像分析引擎 1 不支持。
- 图像分析引擎 1 支持算子自动调优和动态 Batch,而图像分析引擎 2 不支持这些功能。