完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
飞凌OK3568-C开发板基于瑞芯微RK3568四核ARM Cortex-A55 处理器的主板,该开发板最大的特色是带有自研的人工智能协处理器NPU,并且提供了RKNN-Toolkit。今天就介绍一下如何使用RKNN模型进行推理应用程序开发。 一、推理应用程序的基本流程 RKNN 是 瑞芯微(Rockchip) NPU平台使用的模型类型,以.rknn后缀结尾的模型文件。Rockchip 提供了完整了模型转换 Python 工具,方便用户将自主研发的算法模型转换成 RKNN 模型。RKNN-Toolkit 为用户提供在 PC平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具可以将现有的模型转换Rockchip平台的模型,目前支持的模型转换包括:支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、Darknet、Pytorch、MXNet 模型。今天先不介绍如何使用RKNN-Toolkit,只介绍得到.rknn模型文件后,如何在嵌入式程序中实现模型推理。 RKNN提供了Linux/Android平台的API库。对于 RK3568,API库文件为librknn_api.so。 目前在 RK356X 上有两组 API 可以使用,分别是通用 API 接口和零拷贝流程的 API 接口。两组 API 的主要区别在于,通用接口每次更新帧数据,需要将外部模块分配的数据拷贝到 NPU 运行时的输入内存,而零拷贝流程的接口会创建内存信息结构体,这些内存信息可以传给NPU 和 RGA等模块使用,减少了内存拷贝的花销,用户需要自行管理这些内存信息结构体。 对于通用 API 接口,首先初始化 rknn_input 结构体,帧数据包含在该结构体中,使用rknn_inputs_set函数设置模型输入,等待推理结束后,使用 rknn_outputs_get 函数获取推理的输出,进行后处理。在每次推理前,更新帧数据。通用 API 调用流程如下图所示。不同程序的基本流程都差不多,用户主要是修改更新帧数据部分和对输出数据的处理部分。 二、两个经典模型的测试 我们主要测试了MobileNet图像分类和SSD 目标检测两个经典模型。测试的方法是使用Qt编写用户界面,使用OpenCV进行图像的读写,然后使用RKNN API进行模型推理功能。OK3588的OpenCV库不支持GTK+,所以无法使用OpenCV自带的图形界面API,所以需要借助Qt进行用户界面开发。 1、 MobileNet 图像分类 MobileNet是Google团队2017年提出一个深度学习模型,专注于移动端或者嵌入式设备中的轻量级CNN网络。模型推理中卷积操作占用了大部分的时间,因此MobileNet V1使用了深度可分离卷积对卷积操作做了进一步的优化。 2、 SSD 目标检测 SSD是个一步式多框预测检测器,它提取不同尺度的特征图来做检测,大尺度特征图用来检测小物体,小尺度特征图用来检测大物体。 3、 Qt程序的开发 Qt程序比较简单,用户先选择模型文件,再选择要处理的图片,然后点击“处理”按钮,程序就会根据模型调用不同的处理函数来进行模型推理。对于推理的结果,我们会根据模型所对应的标签文件转换为方便阅读的方式。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
[技术] 【飞凌嵌入式OK3576-C开发板体验】llama2.c部署
6015 浏览 0 评论
6775 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】ssh连接与文件传输
6768 浏览 0 评论
8118 浏览 0 评论
【飞凌嵌入式OK527N-C开发板体验】6.制作h264播放器
7538 浏览 0 评论
6764浏览 2评论
3222浏览 2评论
11089浏览 1评论
5176浏览 1评论
83557浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 18:38 , Processed in 0.441461 second(s), Total 41, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号