182|2

416

帖子

2

TA的资源

纯净的硅(初级)

【AI挑战营第三站】在Luckfox Pico上部署MNIST数字识别 [复制链接]

本帖最后由 北方 于 2024-6-12 22:25 编辑

在Luckfox Pico上部署MNIST数字识别

1 概述

   在完成第一站和第二站的任务后,具备在Luckfox上部署AI模型的条件了。参考,

#AI挑战营第一站#Pytorch 安装和MNIST识别 - Linux与安卓 - 电子工程世界-论坛 (eeworld.com.cn)

【AI挑战营第二站】MNIST转RKNN格式并算法工程化部署打包成SDK - Linux与安卓 - 电子工程世界-论坛 (eeworld.com.cn)

2 更新firmware

在刚拿到开发板的时候,就可以用adb连接,并读取文件系统,但是连接CSI摄像头后,无法按照手册的说明读取视频。根据下述wiki的资料可知,

CSI Camera | LUCKFOX WIKI

出厂的是一个测试版映像,只能测试开发板的正常工作,具体实现什么功能都需要自行编译系统。可选的有buildroot和ubuntu,其中ubuntu会更大些,需要在SD卡上加载,而buildroot精简很多,可以适用menuconfig定义,然后自行编译,所以,选择用buildroot来实现,直接写入SPI内存中。

根据手册,需要从github上clone源代码,配置交叉编译工具,使用脚本编译。因为gitee也同步了源码,所以,从gitee上可以快速搞定,避免了github的长久期待。

因为交叉编译工具只是适用于Linux系统,所以,直接在ubuntu上做这个步骤更便捷,否则就需要WSL或者虚拟机了。

下面是编译的过程,在一个老爷笔记本上,大概搞了4个小时,整个过程只是出现一些warning,非常顺畅。丝滑。

Screenshot from 2024-06-05 17-19-35.png
编译成果如下图,并提示build输出的路径。
Screenshot from 2024-06-05 20-38-12.png

进入目录,生成下述文件,其中需要写入的只有一个文件,就是uboot.img

Screenshot from 2024-06-05 20-44-30.png
其实,通过云盘也提供了一个可以直接写入的映像,可以下载后解压,看如下,和上面的其实是一回事
Screenshot from 2024-06-05 20-45-15.png

按着Boot键加电,就可以找到这个开发板,如Fuzhou Rockchip.... 所示,

Screenshot from 2024-06-05 20-46-29.png

然后适用upgrade_tool这个工具下载到Luchfox开发板上,upgrade_tool也是需要下载安装的,只适合Linux系统

Screenshot from 2024-06-05 20-47-41.png

升级成功

Screenshot from 2024-06-05 20-48-25.png

这时搜索一下连接的网口,发现用172.32.0.93,连不上这个开发板了。

Screenshot from 2024-06-05 21-15-51.png

这个花了很长时间,最后发现这个是Luchfox pico pro,网口被配置成另一个192.168.10.x起手的网址了。需要用RNDS来连接usb口虚拟的网口,才可以继续用这个网址连接。

虽然没有实际适用,在windows实现上述功能需要使用另一个工具,

捕获.PNG

不再重复,直接查上面的wiki就可以。

3 实现视频流捕捉

连接好视频摄像头,注意luchfox pico pro的连接和普通pico是不同的,使用可以直接捕捉视频流的VLC,

A01.PNG

选择rtsp://172.32.0.93的第0个通道的实时视频,显示如下,花花草草

A02.PNG

另外可以用用ssh连接,用户名root,密码luckfox,使用MobaXterm可以用GUI模式,这样直观很多,

A03.PNG

上传文件,也可以用scp命令行命令,

A04.PNG

同样,adb也可以,先搜索设备,只有一个就用adb shell就可以。这个adb是android device连接工具,如果装了android studio就自带,否则就需要单独下载后解压使用,

A05.PNG

在这个目录中找到rkipc.ini,这个是CSI摄像头连接成功的意思,原来的出厂测试版是没有的

A06.PNG

使用adb push可以上传文件

A07.PNG

这样具备了视频识别MNIST的条件了。

4 调用SDK实现基于视频流的MNIST数字识别

4.1如前所述,首先需要训练除自己的AI模型,然后转换成公用ONNX格式,再用专业工具压缩后转换成rknn格式,这个压缩后参数都整数化,识别精度都有一定的损失。

这个代码是用c语言编写的,视频的数据读取是实用的opencv库,这里实用lib的方式编译的

void *data = RK_MPI_MB_Handle2VirAddr(stVpssFrame.stVFrame.pMbBlk);  
cv::Mat frame(height,width,CV_8UC3,data);   

读取的mat矩阵数据,在推理命令下读取输出,这个就是前面编译的sdk

inference_mnist_model(&rknn_app_ctx, sub_pics[i], detect_results);

总体来说,上面的推理命令,就是实用自带的AI数据处理API实现对应的高强度卷积计算,输出结果,对照选择数字的结果。

这个是基于yolo8范例代码更改的,其他的模型,都还是用这个开发的编程顺序实现的,不同的是采用的model模型参数。

这样,通过对于不同模型的计算,代码变化几乎不大,但是通过分离训练的模型,就可以实现多种功能。

 

4.2 编译后直接使用可执行文件,结果文件中断了,

A08.PNG

这是需要用RkLunch-stop.,sh先停止启动的自动调用摄像头,注意其中的小写和大写字母,

再启动代码,就显示连续识别的输出命令行,

A09.PNG
输出效果可以看到,不够标准的2识别为3
A10.PNG
不够标准的3识别为5,
A11.PNG
这次识别正确,手写比较规范的3,字体模糊一些也没有关系。而且识别速度很快,可以达到21fps,就是连续视频30fps,基本上不太讲究的话,可以实时识别数据。
A12.PNG

5 小结

经过这个过程,可以发现MNIST可以比较实用地实现数字识别功能,速度也很可以。中间需要注意,MNIST模型一般是需要经过压缩的,识别率明显不如测试的时候,普遍置信度再50%作业,而训练时已经超过90%,在第一站的训练,实际是99%。看起来数据很差,但是比较规范的书写是可以完美读出。

这个是一个偏向实用的,均衡性价比和功耗的平衡选择。

最新回复

会不会因为模型的大小和复杂性有硬件限制?   详情 回复 发表于 2024-6-14 07:20

回复
举报

6122

帖子

0

TA的资源

五彩晶圆(高级)

会不会因为模型的大小和复杂性有硬件限制?

点评

确实是这样的。 通常工业化的模型最小的要4-5M左右,如谷歌的mobileNet v2,这样的数据吞吐和计算量很大,因此需要压缩。 通常是把参数的浮点数改为整数,这样能压缩2-4倍,其他的结构优化等需要更强大的优化  详情 回复 发表于 2024-6-14 09:29

回复

416

帖子

2

TA的资源

纯净的硅(初级)

Jacktang 发表于 2024-6-14 07:20 会不会因为模型的大小和复杂性有硬件限制?

确实是这样的。

通常工业化的模型最小的要4-5M左右,如谷歌的mobileNet v2,这样的数据吞吐和计算量很大,因此需要压缩。

通常是把参数的浮点数改为整数,这样能压缩2-4倍,其他的结构优化等需要更强大的优化能力。

这个MNIST效果不错,能达到20fps,精度下降很多,在40%-50%左右,但是已经能够识别出来了。

就是很成功了

 


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
设计经验交流:AD采样注意的事项

主要针对高精度测量类的AD. 1:参考电压需要足够精确,推荐使用外部高精准参考电压. 2:如果PGA可调,增益系数一般是越小噪声越 ...

“大学生电子设计竞赛”版块试行版规

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 Dear all: 欢迎大家来到我们电子工程世界“大学生电子设计竞赛”版块,我有幸成 ...

关于232串口电平转换芯片,说说我的经历

这几天论坛有两个关于232芯片的讨论帖子 232烧坏咋办 https://bbs.eeworld.com.cn/thread-98986-1-1.html 大家说说sp3223 ...

Proteus 7.7 下载(WIN7、XP都可用)

原来一直在使用7.5版本的,因为最近笔记本换了WIN7系统,不知道是杀软作怪还是我的WIN7用原来的那个7.5兼容不好,就是打不开。 ...

EZ430 Chronos 无线手表开发套件 美国代购全过程

EZ430 Chronos 无线手表开发套件 美国代购全过程 从美国代购的EZ430-Chronos 开发套件已经到手两天,把玩一番后感觉确实挺好 ...

【奖品发送完毕】:测评有礼!【Discovery 】走进TI毫米波雷达世界 快速获得设计技能

【奖品发送完毕】 如有问题请联系管理员QQ:375277221 测评有礼!【Discovery 】走进TI毫米波雷达世界 快速获得设计技 ...

香奈儿诉华为logo侵权败诉,大家觉得这两个logo像吗?

据外媒报道,法国奢侈品牌香奈儿在与华为的商标纠纷中败诉。 这起纠纷始于2017年,当时华为曾向商标机构欧盟知识产权局(E ...

为什么华大HC32与显示相关的SEG引脚 RX3引脚 COM0-3引脚的ADS为模拟,DIR为输入?

为什么华大HC32与显示相关的SEG引脚 RX3引脚 COM0-3引脚的ADS为模拟不是数字,DIR为输入,而不是输出?

【得捷电子Follow me第3期】任务4:连接WiFi网络(联网、每日一句英语)

本帖最后由 HonestQiao 于 2023-11-11 23:26 编辑 Seeed Studio XIAO ESP32C3使用的是ESP32-C3核心,联网功能时是基本功能。 ...

在generate for里面的case语句的一些条件无法进入

代码太长了,大家只用留意红框里面的内容,红框里面是3组并列的case,第一种0, 1, 2, ..., 31的情况能正常进入, 但是32, 33, ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表