需要做一个嵌入式移植,纯纯小白,黑不了一点,求大佬指点
嵌入式开发中,将模型文件最终转化为wk文件,通常涉及一系列的步骤梳理。以下是一个详细的流程,以海思Hi3559系列芯片平台为例:
一、准备阶段
环境搭建:
安装虚拟机
安装必要的软件开发工具包(SDK),如海思提供的HiSVP SDK,它包含了模型转换所需的工具和库。确保开发环境满足要求,如操作系统版本、内存大小等。
获取模型文件:
自己训练的模型,也可以是预先训练好的模型,如Caffe模型(*.caffemodel)等。目前海思的NNIE配套软件及工具链仅支持以Caffe框架,使用其他框架的网络模型需要转化为 Caffe框架下的模型。
二、模型转换
模型格式转换:
如果原始模型不是Caffe格式,需要先将其转换为Caffe格式。例如,可以使用开源工具将TensorFlow、PyTorch等框架的模型转换为Caffe模型。得到*.caffemodel文件。
常用模型转换工具:MMdnn、Onnx
MMdnn
MMdnn是一个由微软开源的全面的深度学习框架互操作性工具集,旨在帮助开发者轻松地在不同的深度学习框架之间迁移和转换模型。这个项目的目标是消除不同框架之间的障碍,促进模型的复用和研究的效率。
Onnx
使用不同的训练框架来训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle)时,可以在训练后将这些框架的模型统一转为ONNX存储。 ONNX文件不仅存储了神经网络模型的权重,还存储了模型的结构信息、网络中各层的输入输出等一些信息。 然后将转换后的ONNX模型,转换成我们需要使用不同框架部署的类型,通俗来说ONNX 相当于一个翻译。
配置转换参数:
海思提供的交叉工具编译链和RuyiStudio转换软件配合使用来配置转换参数。
Ruyistudio是一个windows版本的工具,集成了NNIE的mapper和simulator两大基本功能。 mapper是文件格式转换的插件,即将caffe的模型文件*.caffemodel转换成HISDK可以识别的*.wk数据文件。
指定输入模型文件的路径(prototxt和caffemodel文件)。
根据目标硬件平台(如Hi3559)选择相应的配置选项。
执行模型转换:
运行RuyiStudio,开始将Caffe模型转换为wk文件。
转换过程中,工具会对模型进行优化,以适应海思芯片的NNIE(Neural Network Inference Engine)推理框架。
三、验证与部署
验证wk文件:
使用海思提供的仿真工具或在实际硬件上进行测试,确保wk文件能够正确加载并运行推理。
部署到嵌入式设备:
将验证通过的wk文件部署到海思Hi3559系列芯片平台上。
配置相关的运行环境和参数,以确保模型在嵌入式设备上能够正常运行。
注意事项:
- 在进行模型转换时,需要确保原始模型的层与NNIE推理框架兼容。某些特定的层可能需要手动修改或裁剪以适应NNIE的要求。
- 转换过程中可能会遇到一些兼容性问题或性能问题,需要根据实际情况进行调整和优化。
- 海思提供的SDK和工具可能会随着版本的更新而发生变化,因此建议参考最新的官方文档进行操作。
海思给的开发指南
四、一些名词解释
芯片、工具链和配置核
芯片是电子设备中的核心部件,它包含了执行特定功能的集成电路。芯片可以处理数据、控制设备操作,并执行各种计算任务。
工具链提供了一整套开发、编译、调试和优化软件的工具,这些工具对于程序员来说是必不可少的。工具链通常包括编译器、汇编器、链接器、调试器等,它们共同协作,将高级编程语言转换为芯片能够理解的机器代码。
配置核通常包含芯片的一些特定参数和设置,这些参数定义了芯片如何与外部设备通信、如何管理内存、如何执行特定任务等。配置核可以看作是芯片的“配置文件”,它确保了芯片能够按照预期的方式工作。
相互关系
芯片是硬件基础,执行具体的计算和控制任务。
工具链是软件开发的关键,它将高级语言转换为芯片能理解的机器代码,并确保软件能够在特定的芯片上高效运行。
配置核提供了芯片的特定参数和设置,是工具链在生成软件代码时需要参考的重要信息来源,工具链需要使用这些信息来生成适合该芯片的软件代码。
SVP(Smart Vision Platform)是海思媒体处理芯片智能视觉异构加速平台。该平台包含了 CPU、DSP、NNIE(Neural Network Inference Engine)等多个硬件处理单元和运行在这些 硬件上SDK开发环境,以及配套的工具链开发环境。
DSP (Digital Signal Process)是 SVP 平台下的可编程硬件加速模块。用户基于 DSP 开发智能分析方案可以加速智能分析,降低 CPU 占用。 也就是说我们可以先略过 DSP 开发部分,在某些对速度要求特别高或者需要开发算子的时候,再特殊使用 DSP 开发。
NNIE 的全称是 Neural Network Inference Engine,是华为海思Soc(Soc:集成芯片)针对神经网络(特别是卷积神经网络)开发的加速处理的硬件单元,支持大部分神经网络。同时作为加速处理的硬件,自然有相应配套的软件,但只支持 Caffe 框架,其他框架的模型需要进行转换。
MPP: Media Processing plaform 多媒体处理平台 和 音视频H264编码等相关
IPC: Internet Protocol Camera 网络摄像机
LDC: Lens Distortion Correction 镜头畸变校正
AI: Auto Iris Control 自动光圈控制 这里不是我们所说的人工智能啊
VPSS: video process sub-system 视频前处理单元
VEDU: Video Encoder Unit 视频编码单元
IVE: Intelligent Video Engine 智能加速引擎 常用图像处理 视觉算法的硬件处理单元 不要和AI引擎NNIE 混淆
DPU: Depth Process Unit 深度信息处理单元 用来双目三维建模的。