3.1. SDK移植开发综述
注意
BM1688/CV186AH 仅支持SoC模式。
3.1.1. SDK学习路线
图 3.1 SDK学习路线
建议首次接触SOPHONSDK时,按照上图所示的学习路线进行模型移植和算法开发。
SOPHON-DEMO YOLOv5 例程 ,通过跑通此例程,您可以快速熟悉MLIR工具链及模型调用流程。
3.1.2. 算法移植流程
基于SOPHON BM168X进行产品开发会经历如下几个阶段:
评测选型: 根据应用场景,确定使用的产品形态。
模型迁移: 将原始深度学习框架下训练生成的模型转换为BM168X平台运行的FP32 BModel,必要时使用BMLang开发不支持的算子;使用量化集量化生成INT8 BModel,并测试调优确保INT8 BModel精度符合要求(推荐使用4N Batch BModel以获得最佳性能)。
算法移植: 基于BM168X硬件加速接口,对模型的前后处理及推理现有算法进行移植。
程序移植: 移植任务管理、资源调度等算法引擎代码及逻辑处理、结果展示、数据推送等业务代码。
测试调优: 网络性能与精度测试、压力测试,基于网络编译、量化工具、多卡多芯、任务流水线等方面的深度优化。
部署联调: 将算法服务打包部署到BM168X硬件产品上,并在实际场景中与业务平台或集成平台进行功能联调;必要时在生产环境中调整参数配置并收集数据进一步优化模型。
在移植工作开始前,请先确保已经按照 快速入门 内容下载并安装配置好所需环境,确认sophon-demo中的示例能成功运行。
3.1.3. 典型视频深度学习分析任务
一个典型的深度学习视频分析任务pipeline,通常包括:视频源 > 视频解码 > 预处理 > 推理 > 后处理 > 业务逻辑 > 视频/图片编码等环节。SOPHON设备对各环节的硬件加速支持情况如下:
算法步骤 |
支持硬件加速 |
sophon-OpenCV |
sophon-FFmpeg |
Native接口 |
|---|---|---|---|---|
视频/图片编解码 |
支持 |
Y |
Y |
BMCV(图片)/SAIL |
输入预处理 |
支持 |
Y |
N |
BMCV/SAIL |
模型推理 |
支持 |
N |
N |
BMRuntime/SAIL |
输出后处理 |
部分支持 |
N |
N |
BMCV |
MLIR模型支持情况和测试的模型案例,请参见《 TPU-MLIR开发参考手册 》
关于单模型或场景的例程可参考sophon-demo,关于使用多线程构建多模型推理任务pipeline示例代码可参考sophon-stream,sophon-pipeline
对于其他需要使用智能视觉深度学习处理器加速的算法可使用基于智能视觉深度学习处理器原子操作接口的 TPUKernel 开发,参考《 TPUKernel用户开发文档 》
对于不支持的层或者算子可以自行开发,然后融合到BModel中,详情请联系技术支持
3.1.4. 常用样例
我们提供了模型转换及量化样例程序、多媒体相关样例程序、以及涵盖图像分类、目标检测、图像分割、文本检测识别等领域的单个模型算法移植样例程序,具体如下:
《 TPU-MLIR快速入门手册 》提供了模型转换与量化样例;
SOPHONSDK中 sophon-demo 提供了 CenterNet、 LPRNet、 PP-OCR、 ResNet、 RetinaFace、 SSD、 yolact、 YOLOv3/v4、 YOLOv5、 YOLOX 等模型的推理样例程序;
SOPHONSDK中 sophon-stream 提供了基于C++11的支持多路数据流并发处理的流水线框架。基于现有的接口,SOPHON-STREAM 对用户具有易使用、易二次开发的优点,可以大大简化用户配置工程或添加插件的复杂度;
SOPHONSDK中 sophon-pipeline 提供了一个基于pipeline的(包含推流和结果展示的)任务构建的样例程序;