RKNN 是Rockchip npu 平台使用的模型类型,以.rknn后缀结尾的模型文件。Rockchip 提供了完整了模型转换 Python 工具,方便用户将自主研发的算法模型转换成 RKNN 模型,同时 Rockchip 也提供了C/C++和Python API 接口。
计算机上使用 RKNN-Toolkit2 完成模型转换,并通过 RKNPU2 部署到 Rockchip 开发板上。
rockchip的npu sdk分为两个部分,PC端使用的是rknn-toolkit2,可以在PC端进行模型转换,推理以及性能评估。具体来说是把主流的模型如Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等转换为RKNN模型,并可以在PC端使用这个RKNN模型进行推理仿真,计算时间和内存开销。板端还有一部分,就是rknn runtime环境,包含一组C API库以及与NPU进行通信的驱动模块,可执行程序等。
RKNN软件栈可以帮助用户快速将AI模型部署到瑞芯微芯片上。整体框架如下:
1. RKNN-Toolkit2是一款软件开发套件,供用户在PC和瑞芯微NPU平台上进行模型转换、推理和性能评估。
2. RKNN-Toolkit-Lite2为瑞芯微NPU平台提供Python编程接口,帮助用户部署RKNN模型,加速AI应用落地。
3. RKNN Runtime为Rockchip NPU平台提供C/C++编程接口,帮助用户部署RKNN模型,加速AI应用的落地。
4. RKNPU内核驱动负责与NPU硬件交互。它已经开源,可以在Rockchip内核代码中找到。
§
n 使用RKNN
§
RKNN-Toolkit2 是为用户提供在 PC 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成以下功能:
1. 模型转换:支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等模型转为 RKNN 模型,并支持 RKNN 模型导入导出,RKNN 模型能够在 Rockchip NPU 平台上加载使用。
2. 量 化 功 能 :支 持 将 浮 点 模 型 量 化 为 定 点 模 型 , 目 前 支 持 的 量 化 方 法 为 非 对 称 量 化(asymmetric_quantized-8),并支持混合量化功能。
3. 模型推理:能够在 PC 上模拟 NPU 运行 RKNN 模型并获取推理结果;或将 RKNN 模型分发到指定的 NPU 设备上进行推理并获取推理结果。
4. 性能和内存评估:将 RKNN 模型分发到指定 NPU 设备上运行,以评估模型在实际设备上运行时的性能和内存占用情况。
5. 量化精度分析:该功能将给出模型量化前后每一层推理结果与浮点模型推理结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精度提供思路。
6. 模型加密功能:使用指定的加密等级将 RKNN 模型整体加密。因为 RKNN 模型的加密是在 NPU 驱动中完成的,使用加密模型时,与普通 RKNN 模型一样加载即可,NPU 驱动会自动对其进行解密。
rknpu2
RKNN SDK 为带有RKNPU的芯片平台提供编程接口,能够帮助用户部署使用RKNN-Toolkit2导出的RKNN模型,加速AI应用的落地。
环境安装
系统:Ubuntu20.04 LTS x64
内存:16GB
Python:3.8.10
目标平台:RK356X/RK3568
YOLOv8:一种精 确&灵活的视觉 AI 方案
2023年1月,ultralytics公司推出了最 新的 YOLO 系列模型——YOLOv8。对于这次发布的产品,ultralytics官方称其为"一种前沿的(cutting-edge)、最 先进的(state-of-the-art )视觉模型”。除了性能提升,YOLOv8还能胜任多种视觉技术(分类、检测、分割、姿态估计和跟踪)。官方描述YOLOv8支持全方位的视觉AI任务(a full range of vision AI tasks),以此夸耀其在视觉AI领域无所不能。
精 确 & 灵活
YOLOv8官方开源了五种不同参数规模的预训练模型:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l和YOLOv8x。与参数量相当的YOLOv5 模型相比,YOLOv8在COCO数据集上的准确率实现了较大的提升。其中YOLOv8n和YOLOv8s的准确率提高了 5% 以上,这得益于YOLOv8在网络结构、训练方法、无锚技术和损失函数等方面的改进。相比之下参数量和推理时间的牺牲就微不足道了。
YOLOv8的灵活性则体现在以下三个方面:
1. 由于 YOLOv8 在准确率方面的提升,其在达到与 YOLOv5 相同精 确程度的情况下可以使用更轻量化的模型。
2. YOLOv8 项目对 python 命令行的支持使得模型的训练、推理和导出更加便利。
3. YOLOv8 对跟踪算法的支持、以及其在 fastSAM 中的应用,使其在工程中具备多样化的使用方法。
边端视觉方案的潜在选择
目标检测与跟踪算法的融合是边端不可或缺的视觉能力,这在机器人视觉导航、自动驾驶、军事制导等领域有着广泛应用。此外,边端的复杂环境对视觉泛化能力提出了很高的要求。YOLOv8 在这两点上提供了支持:
1. YOLOv8 项目已实现 BoT-SORT 和 ByteTrack 跟踪算法的融合
2. FastSAM 使用 YOLOv8 分割网络的主干进行图像数据的特征提取和掩码生成,这提供了一种使用 YOLOv8 实现视觉泛化能力的方案。
将模型留在边端
要实现 YOLOv8 模型在机器人等边端产品上运行的目的,我们需要了解模型部署的相关知识。
a. 模型部署
Deploying a model refers to placing a machine-learning model into an environment where it can do the job it was created to do.
将机器学习模型安置在恰当“工作岗位”上的过程叫作模型部署。模型部署除了将模型的能力植入到“需要它的地方”之外,往往还伴随着对模型的优化,比如算子融合与重排,权重量化、知识蒸馏等。
模型的设计和训练往往比较复杂,这一过程依赖于灵活的模型开发框架PyTorch,TensorFlow等;模型的使用则追求在特定场合下实现模型的“瘦身”及其加速推理,这需要专用推理框架TensorRT、ONNX Runtime等的支持。从这个角度理解,模型部署过程也可以看做模型从开发框架到特定推理框架的移植过程。
b. 从开发框架到推理框架
模型开发框架和推理框架的多样性便利了模型的设计和使用,但却给模型转换带来的挑战。为了简化模型部署流程,Facebook 和 微软在 2017 年共同发布了一种深度学习模型的中间表示形式:ONNX。这样一来,众多的模型训练框架和推理框架只需与 ONNX 建立联系,即可实现模型格式的相互转换。ONNX 表示形式的出现使模型部署逐渐形成了 “模型开发框架 -> 模型中间表示 -> 模型推理框架” 的范式。
那么怎样将开发框架下的模型移植到推理框架下呢?一个容易的想法就是对一个模型进行逐层解析,并使用推理框架支持的工具重新实现该模型的推理过程。但事实上,考虑到模型转换的通用性,目前主流的模型转换过程都是通过“追踪法”实现的:给定一组输入,运行模型并记录这组数据在模型当中经历的计算过程,将此计算过程保存下来作为转换之后的模型 [1]。
在模型转换过程中输入的数据除了被用来追踪模型的运算过程外,有时还会被用来优化模型转换中的量化参数。在 ONNX 到 RKNN 的转换过程中,模型会根据输入数据的分布情况,寻找合适的量化参数。
RKNN 框架支持模型在 NPU 上的推理
RKNN是 Rockchip NPU 平台使用的一种推理框架,它为深度学习模型在 NPU 上的推理提供了便利。为了支持不同框架下训练的模型在使用RKNN 框架推理,RKNN 官方发布了 rknn-toolkit 开发套件。该工具提供了一系列 Python API 用于支持模型转换、模型量化、模型推理以及模型的状态检测等功能。rknn-toolkit 的安装和使用可以参考官方给出的文档 [2]。
典型的 RKNN 模型部署过程一般需要经历以下四步:
RKNN 模型配置 --> 模型加载 --> RKNN 模型构建 --> RKNN 模型导出
·
RKNN 模型配置用于设置模型转换参数,包括输入数据均值,量化类型,量化算法以及模型部署平台等。
模型加载 是指将转换前的模型加载到程序中,目前 RKNN 支持 ONNX、PyTorch、TensorFlow、Caffe 等模型的加载转换。值得一提的是,模型加载是整个转换过程中的关键步骤,这一步允许工程人员自行指定模型加载的输出层和输出层名称,这决定了原始模型哪些部分参与了模型转换过程。
RKNN 模型构建 用于指定模型是否进行量化、并指定用于量化校正的数据集。
RKNN 模型导出 用于保存转换后的模型。
RK3576/RK3588 NPU
作为瑞芯微8nm高性能AIOT平台,RK3576/RK3588 NPU性能可谓十分强大,6TOPS设计能够实现高效的神经网络推理计算。这使得RK3576/RK3588在图像识别、语音识别、自然语言处理等人工智能领域有着极高的性能表现。
RK3576/RK3588 的NPU还支持多种学习框架,包括TensorFlow,Pytorch、Caffe、MXNet等在人工智能开发中流行的深度学习框架,能够为开发者提供丰富的工具和库,使他们能够方便地进行模型训练和推理,可轻松应对各种大数据运算场景。
计算机视觉(Computer Vision):NPU可用于图像识别、目标检测、人脸识别等任务。在安防监控、自动驾驶、医疗影像分析等领域中有着广泛的应用。
公众号 扫码咨询
![]() |
上海市闵行区中春路4999号莘庄商务楼1326室 |
![]() |
service@covond.com |
![]() |
www.covond.com |
![]() |
交换机:18017588179(孙经理) 无人机:13311882358(孙总) |