AI嵌入式K210项目(29)-模型加载

文章目录

  • 前言
  • 一、下载部署包
  • 二、C++部署
  • 三、搭建文件传输环境
  • 四、文件传输
  • 五、调试
  • 六、MicroPython部署
  • 总结


前言

上一章节介绍了如何进行在线模型训练,生成部署包后,本章介绍加载模型;

一、下载部署包

训练结束后,在训练任务条目中选择下载按钮;
在这里插入图片描述
下载得到部署资源包。
部署资源包内包含:测试结果图片、生成的kmodel、部署配置文件deploy_config.json、部署资源压缩包。
部署资源压缩包解压后,参照README.md可以实现上板部署过程;
在这里插入图片描述
C++部署资源压缩包deployment_source.zip解压后结构如下:
在这里插入图片描述
MicroPython部署资源压缩包mp_deployment_source.zip解压后结构如下:
在这里插入图片描述

二、C++部署

若使用MicroPython的部署包请参见下一章节。
注意:训练环境中nncase和nncase-kpu的版本和SDK的版本要对应, nncase和nncase-kpu版本为2.4.0, SDK版本为1.1。
上板部署过程分为以下几个步骤:
K230 SDK需要在Linux环境下编译,推荐使用Ubuntu Liunx 20.04。 使用docker编译环境,下载k230_sdk

# 下载docker编译镜像
docker pull ghcr.io/kendryte/k230_sdk
# 可以使用以下命令确认docker镜像拉取成功
docker images | grep k230_sdk
# 下载sdk
git clone -b v1.1 --single-branch https://github.com/kendryte/k230_sdk.git
cd k230_sdk
# 下载工具链, make prepare_sourcecode 会自动下载Linux和RT-Smart toolchain,
buildroot package, AI package等. 请确保该命令执行成功并没有Error产生, 下载时间和速度
以实际网速为准。
make prepare_sourcecode
# 创建docker容器, $(pwd):$(pwd)表示系统当前目录映射到docker容器内部的相同目录下, 将系
统下的工具链目录映射到docker容器内部的/opt/toolchain目录下
docker run -u root -it -v $(pwd):$(pwd) -v $(pwd)/toolchain:/opt/toolchain -
w $(pwd) ghcr.io/kendryte/k230_sdk /bin/bash

这里使用的CANMV-K230开发板,还有一种K230-EVB开发板
在这里插入图片描述

# 在docker中编译镜像, 请耐心等待完成, 不同类型开发板编译命令不同
# 如果是CANMV-K230开发板
make CONF=k230_canmv_defconfig
# 如果是K230-EVB开发板
make CONF=k230_evb_defconfig

SD卡镜像也可在嘉楠开发者社区资料下载板块找到。
CANMV-K230开发板,编译结束后在output/k230_canmv_defconfig/images目录下可以找到编译好的镜像文件:

k230_canmv_defconfig/images
├── big-core
├── little-core
├── sysimage-sdcard.img # SD卡镜像
└──
sysimage-sdcard.img.gz # SD卡镜像压缩包

CANMV-K230开发板支持SD卡镜像启动
烧录TF卡
详细烧录步骤参考K230_SDK_使用说明。
Linux: 如使用Linux烧录TF卡,需要先确认SD卡在系统中的名称/dev/sdx, 并替换如下命令中的/dev/sdx

sudo dd if=sysimage-sdcard.img of=/dev/sdx bs=1M oflag=sync

Windows: 如使用Windows烧录, 建议使用the balena Etcher工具。将生成的sysimage-sdcard.img下载到本地,使用烧录工具the balena Etcher进行烧录。
在这里插入图片描述
其它更详细的烧录方法,请参考K230_SDK_使用说明。
确认启动开关选择在SD卡启动模式下,将烧录完成的TF卡插入进开板板卡槽中,然后将电源开关K1拔到ON位置,系统可上电。如果您有接好串口,可在串口中看到启动日志输出。 系统上电后,默认会有二个串口设备,可分别访问小核Linux和大核RTSmart 大核RTSmart系统中会开机会自动启动一个应用程序,可按q键退出至命令提示符终端;

三、搭建文件传输环境

windows系统
(1) Tftpd64安装,在https://bitbucket.org/phjounin/tftpd64/downloads/下载。
(2) MobaXterm安装:在https://mobaxterm.mobatek.net/download.html下载安装。
(2)配置PC网络:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开发板网络配置:
开发板上电,电源线、网线、 COM口连接线配置见文档: K230_SDK_使用说明。打开MobaXterm,通过两路COM串口连接开发板, COM编号不固定,较小为小核串口,较大为大核串口。
在这里插入图片描述
小核进入后回车,进入如下界面,使用root登录:
在这里插入图片描述
大核进入后回车,进入如下界面
在这里插入图片描述
在小核配置网络
在这里插入图片描述
大小核共享存储区域: /sharefs
在这里插入图片描述
当要从Tftpd64配置的文件中拷贝数据时,在小核界面使用如下命令:
#192.168.1.2 为PC的局域网IP

# 192.168.1.2 为PC的局域网IP
tftp -g -r your_file_name 192.168.1.2

当将开发板文件拷贝到PC端Tftpd64配置的文件夹下时,在小核使用如下命令:

# 192.168.1.2 为PC的局域网IP
tftp -p -r your_file_name 192.168.1.2

在Linux系统中, PC正常连接网络,开发板可以通过网线连接PC所在网关下其他网口,通过scp命令实现文件传输。
开发板上电,进入大小核COM界面,在小核执行scp传输命令:

# 从PC拷贝文件至开发板
scp 用户名@域名或IP:文件所在目录 开发板目的目录
# 从开发板拷贝文件至PC
scp 开发板待拷贝目录 用户名@域名或IP:PC目的目录

将部署资源压缩包deployment_source.zip解压,阅读README.md,将子文件夹example_code_k230拷贝到SDK文件目录下的src/big/nncase子目录下,授予权限,编译elf可执行文件。编译K230-EVB开发板的可执行文件

chmod +x build_app.sh
./build_app.sh evb

编译结束后在example_code_k230文件夹下的k230_bin中可以获得编译完成的main.elf文件。
编译CANMV-K230开发板的可执行文件:

chmod +x build_app.sh
./build_app.sh

四、文件传输

在小核/sharefs下新建一子目录test_deploy

cd /sharefs
mkdir test_deploy
cd test_deploy

通过tftp将部署资源包中的kmodel文件、 deploy_config.json文件、 main.elf文件和待测试图片文件拷贝到小核/sharefs/test_deploy目录下

五、调试

上板调试命令

# 进入大核对应目录下, 执行main.elf deploy_config.json 图片/None debug_mode
# deploy_config.json是部署配置文件
# 图片/None 如果是图片路径, 则执行静态图推理, 如果调用摄像头进行视频流推理, 此参数为None
# debug_mode: 调试模式, 有0、 1、 2三个选项; 分别对应不调试、 简单调试、 详细调试

在大核中进入/sharefs/test_deploy目录下,执行main.elf可执行文件。

# 静态图推理调试
main.elf deploy_config.json test.jpg 1
# 视频流推理调试
main.elf deploy_config.json None 1

六、MicroPython部署

注意:训练环境中nncase和nncase-kpu的版本和SDK的版本要对应, nncase和nncase-kpu版本为2.4.0, SDK版本为1.1。
上板部署过程分为以下几个步骤:
CanMV 的目的是让 AIOT 编程更简单, 基于 Micropython 语法, 运行在Canaan强大的嵌入式AI SOC系
列上。目前它在K230上运行。使用docker编译环境,下载k230_CanMV。

git clone https://github.com/kendryte/k230_canmv.git
cd k230_canmv
make prepare_sourcecode
# 生成docker镜像(第一次编译需要, 已经生成docker镜像后跳过此步骤, 可选)
docker build -f k230_sdk/tools/docker/Dockerfile -t k230_docker
k230_sdk/tools/docker
# 启动docker环境(可选)
docker run -u root -it -v $(pwd):$(pwd) -v
$(pwd)/k230_sdk/toolchain:/opt/toolchain -w $(pwd) k230_docker /bin/bash
# 默认使用canmv板卡, 如果需要使用其他板卡, 请使用 make CONF=k230_xx_defconfig, 支持的
板卡在configs目录下
make

编译完成后会在 output/k230_xx_defconfig/images 目录下生成 sysimage-sdcard.img 镜像。
按下图步骤,建立连接。点击如下按钮:
在这里插入图片描述
选择除大小核串口外的第三个串口:
在这里插入图片描述
连接建立后,选择文件->打开文件,选择解压的部署包mp_deployment_source中的##_image.py和##__video.py,编辑更改kmodel和deploy_config.json文件的拷贝路径。
在这里插入图片描述
点击左下角的绿色三角按钮运行,点击串行终端查看命令行输出。


总结

K210的介绍就到这里,接下来给大家介绍最新的K230芯片开发板,如需购买可以到pdd和淘宝搜索维脑科技,购买CANMV-K230开发吧;在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ESP32+Platformio的物联网RTOS_SDK-CC_Device

本项目基于ESP32以及Platformio平台开发,请自行查阅如何配置这个环境 开源gitee地址:cc_smart_device 如果愿意贡献项目or提出疑问和修改的,请在gitee上提issue 项目里的mqtt服务器是公共的 请大家最好换成私有的 否则容易收到其他用户的错误…

mybatis 基础入门使用

1、mybatis 简介 1.1、mybatis 特性 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架; MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集; MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和…

【Java面试】MongoDB

目录 1、mongodb是什么?2、mongodb特点什么是NoSQL数据库?NoSQL和RDBMS有什么区别?在哪些情况下使用和不使用NoSQL数据库?NoSQL数据库有哪些类型?启用备份故障恢复需要多久什么是master或primary什么是secondary或slave系列文章版…

【shell】2、Makefile

文章目录 一、变量1.1 定义简单变量1.2 定义数组1.3 引用变量1.4 规则中定义变量 一、变量 1.1 定义简单变量 用变量名 值的语法来定义变量。这些变量可以用于存储命令、文件名、目录路径等信息,以便在Makefile规则中重复使用 # 定义一个变量 VAR_NAME value# …

【医学大模型】MEDDM LLM-Executable CGT 结构化医学知识: 将临床指导树结构化,便于LLM理解和应用

MEDDM LLM-Executable CGT 结构化医学知识: 将临床指导树结构化,便于LLM理解和应用 提出背景对比传统医学大模型流程步骤临床指导树流程图识别临床决策支持系统 总结解决方案设计数据收集与处理系统实施临床决策支持 提出背景 论文:https://arxiv.org/p…

什么是DoS和DDoS攻击?

DoS和DDoS攻击是两种常见的网络攻击方式,它们通过向目标服务器发送大量的无效或高流量的网络请求,从而耗尽服务器的资源,使其无法正常处理有效的请求。 DoS攻击是一种单点攻击方式,通常是通过向目标服务器发送大量的请求&#x…

C语言---指针进阶

1.字符指针 int main() {char str1[] "hello world";char str2[] "hello world";const char* str3 "hello world.";const char* str4 "hello world.";if (str3 str4){//常量字符串在内存里面是无法修改的,所以没必要…

WordPress管理员修改自己用户名的插件Username

有一些站长在刚开搭建WordPress网站时,对于管理员的用户名是随意输入,后来想要修改时发现不懂得如何下手。其实,修改WordPress管理员用户名最快速的方法就是进入数据库直接修改,详见『通过phpMyAdmin直接修改WordPress用户名的图文…

裸辞5个月,面试了37家公司,终于找到理想工作了

上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…

物联网水域信息化:水质监测智慧云平台

行业背景 由于传统水务企业水质监测和管理技术不足,以及水源污染等问题,确保供水水质达标困难重重。 且传统水务行业信息化手段单一,缺乏对大数据等新技术的应用,一定程度上影响了水务工作的精细化和智能化程度。 系统特点 为…

【plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【📊plt.pie绘制饼图】:从入门到精通,只需一篇文章!【Matplotlib可视化】! 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 🎨 一、饼图初探:基本概念与用途&#x1f4a…

Python实现KDJ指标计算:股票技术分析的利器系列(3)

Python实现KDJ指标计算:股票技术分析的利器系列(3) 介绍算法解释 代码rolling函数介绍计算LLV(最低价最小值)和HHV(最高价最大值)计算RSV计算SMA(简单移动平均) 完整代码…

Linux——信号(1)

在我们使用Linux系统的时候我们经常会使用ctrl c的方式来终止进程,也 会使用kill命令来杀掉进程,评判进程退出的健康程度中也有信号的身影。那 么Linux中的信号到底是什么?今天就由我来介绍Linux中的信号。1. 信号的概念 要了解计算机中的信…

mysql在服务器中的主从复制Linux下

mysql在服务器中的主从复制Linux下 为什么要进行主从复制主从复制的原理主从复制执行流程操作步骤主库创建从库创建 测试 为什么要进行主从复制 在业务中通常会有情况,在sql执行时,将表锁住,导致不能进行查询,这样就会影响业务的…

DS:栈和队列的相互实现

创作不易,感谢友友们三连!! 一、前言 栈和队列的相互实现是用两个栈去实现队列或者是用两个队列去实现栈,这样其实是把问题复杂化的,实际中没有什么应用价值,但是通过他们的相互实现可以让我们更加深入地理…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…

(2024,提示优化,监督微调,强化学习,近端策略优化)用于安全生成文本到图像的通用提示优化器

Universal Prompt Optimizer for Safe Text-to-Image Generation 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. 提议的框架 4. 实验 0. 摘要 文本-图像&a…

软件实例分享,酒店酒水寄存管理系统软件教程

软件实例分享&#xff0c;酒店酒水寄存管理系统软件教程 一、前言 以下软件教程以 佳易王酒水寄存管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、寄存的商品名称可以预先设置 2、寄存人可以使用手.机号识别 3、会员充值…

详解4大C语言内存函数【超详细建议点赞收藏】

目录 1. memcpy----内存拷贝1.1 函数介绍1.2 函数使用1.3 模拟实现 2. memmove----重叠内存的数据拷贝2.1 函数介绍2.2 函数使用2.3 模拟实现 3. memcmp----内存比较3.1 函数介绍3.2 函数使用 4.memset----内存设置4.1 函数介绍4.2 函数使用 注意&#xff1a;以下4个内存函数在…

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构

目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费&#xff08;门诊/住院&#xff09;系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…