912|0

59

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

#AI挑战营终点站#幸狐RV1106手写数字识别应用部署 [复制链接]

本帖最后由 crimsonsnow 于 2024-7-7 12:56 编辑

之前大家都感慨过了,这个板子最大的特点就是很小,迷你型。和最经典系列STM32C8T6最小系统板比一下是这样的。

 

可以看到除去网线接口,几乎就和比它小一圈的STM32的MCU芯片的最小系统板差不多大了,元件基本除了去耦用的0402电容,其他用的都是0201规格的。这个体积缩减应该是很厉害的。

那么缺点也是非常明显的了,就是散热。每次板子出问题,都害怕是不是不小心烧坏了,但是实际上证明芯片还是很扛造的,基本都是自己的问题。首先呢谨记我们使用的板子型号是luckfox Pico PRO。在wiki可以看到mini和plus/pro/max有一定的操作区别,mini是阉割了一定的功能的,它们没有自带SPI NAND FLASH,要进行SD卡烧录,但是本次使用的就不用担心这个问题。还有一个不同就是摄像头插入的方向,摄像头插头的部分是贴了一张蓝色塑料胶片作为指示的,PRO型号,蓝色必须朝向网线接口那个方向。mini就是相反了,所以一开始我看到wiki图片的时候还有点困惑。后面才看到pro的图片在下面。它们的板卡布局也是不一样。这一点在wiki的CSI 摄像头那部分有介绍。

总之看wiki进行新手教程的时候一定要多注意设置的条件和环境和型号,这些我想也不需要多阐述了。比如说我遇到的第一个问题就是,wiki所有的操作都是默认在Ubuntu22.04版本环境下面的,如果是别的环境,就要用docker,也不是不能用,但是用亲身实践证明了就是直接操作是没有兼容性的,必须用docker,要么就是必须用22.04版本。

 幸狐这款板子是在TB有售卖的,指定代理商是微雪电子,微雪旗舰店那家店就是它们官店。我觉得有时候没有思路的时候看一看TB商品详情界面也是有帮助的。比如说我看了才知道送的那个像磁铁一样的东西是自带电池,不过这边都是用usb供电,所以没有怎么用到。

然后按照官方的wiki准备好开发板。这里不得不提到就是我完成路上的一些阻碍吧,主要就是那个线的问题。Type-A转Type-C线是有一种李鬼线的。就是只有充电功能,而不能够当数据线用。我当时查了一下,正常要当数据线的有11组线,但是充电线只有5组。但是一般也不会拆开typeC口看,不过现在的手机基本都是C口的,所以连上手机看看电脑有没有显示新设备接入就可以分辨了,micro口要分辨李鬼线就比较麻烦了,毕竟现在手机也没有micro口,而STM的板子都还坚持用micro口(不知道为什么坚持用micro口还不肯给一条数据线,吐槽一下)。简而言之李鬼线比数据线一般会轻一点,质量不好嘛。我type-c连续遇到了两条李鬼线,差点以为是板子的问题,在换到第三条线的时候,终于破除了这个李鬼线真身,只不过当时出问题的是USB口...因为我为了排除 电脑的问题,换了一台测试电脑,结果没想到那台电脑USB口有问题,识别不出设备,就是下图这样子。但是设备倒是显示出来了。差一点又和问题擦肩而过,所以,控制变量法,只能改变一个变量

 

然后具体准备步骤按照wiki来,就可以。首先下载RK驱动助手,这里我不贴下载地址了,因为外链再转到wiki仓库好像会识别失败?还是直接在wiki界面去访问就好。下载驱动之后安装,重启,一般驱动都不会出什么问题。

然后开始准备烧录镜像。首先,下载烧录工具,进行SPI NAND Flash 镜像烧录。把板子连接到电脑上,并且进入boot模式。操作是摁住boot按键的时候再将USB插上电脑上电,必须要摁住boot按键的时候上电。上电之后才可以松开,然后就进入boot模式了,可以进行烧录了。

选择RV1106。

USB设备那一栏选择MaskRom设备。点击“搜索路径”,定向到之前下载好的固件库的目录 ,重载env文件。列表里面出现很多项目,然后勾选所有项。再点击“下载”。等待完成。

 

这次的手写图像识别,最主要用到的外设就是这颗官方的摄像头。跟随wiki上面的教程进行摄像头配置就可以。这个摄像头接收到的图像是通过网络推流到视频软件,官方推荐的视频软件是VLC media player。首先插入摄像头,自动识别到生成一个文件rkipc.ini。

查看这一个文件,就需要通过SSH登录,账号是看你之前烧录的镜像是哪一个的,我选择了buildroot版本

账号:root
密码:luckfox
IP:172.32.0.93

在命令行用命令

ifconfig

可以查看设备的IP地址,之前官方也已经提供了板子的默认IP是172.32.0.93,这串IP我们在之后可能会非常频繁地用到。如果你的网络连接不太好,可能就需要更加频繁地登入确认了。

以及防火墙和杀毒软件一定要关掉,并且在登录操作之前就要关掉,不然就只能关掉终端重新来,不然会显示连接失败。这是我个人遇到的问题,也不知道是不是一个普遍问题。暂且线列出。

 

这个板卡是需要设置虚拟网口的。按照wiki操作,首先一定一定要关闭防火墙

设置—>高级网络设置—>更改适配器选项,网卡Remote NDIS based nternet Sharing Device,我和wiki上面都是一样的。双击 internet 协议版本(TCP/IPv4),IPV4地址设置为 172.32.0.100。就结束

然后在电脑终端使用口令登录。

ssh root@172.32.0.93

可以看到第一次登录操作的时候出现了一点问题,说IP不能识别,这个问题我遇到了几次,不太清楚成因。可能是连接不好(但这个不是无线登录吗),也可能是上述防火墙的问题,我在CSDN里面搜到一篇文章说类似的问题似乎要清除一下IP登录记录,但是我清除之后马上在同一个终端窗口重新登陆是没用的,结果是重启了一下终端就解决了,是的,就是这么神奇。所以,嗯,遇到问题,大胆重启吧!然后图中遇到的问题和那一个提示是不太一样的,但是也可以看到他系统马上提示你按yes,操作了之后就成功登录了。所以,问题也不是很大。

登录进去之后在终端使用命令查看板内全部文件

ls /

wiki还提供了一个远程登陆软件MobaXterm。界面挺好看,但是我基本是在powershell登录完成的,不做赘述。

刚刚提到的 摄像头文件,可以在userdata文件夹下面看到了

然后就可以用网络串流看看摄像头是否使用正常。  打开 VLC media player 软件,在媒体—>打开网络串流,输入默认的 IP 地址:rtsp://172.32.0.93/live/0。

点击播放。

  摄像头工作是正常的。

然后有一个优化操作,是去减小他的缓存时间,这个是可以操作一下的,因为默认的缓存时间比较大,摄像头迟缓性会比较严重。

以上所有的准备工作已经做好,接下来就是基于第二站的模型部署了,在第二站我们已经转好了RKNN模型。在这里感谢之前所有的部署好的大佬,所有的大佬的文章我都看过好多遍了,不知道咋@人,总之感谢所有的大佬。

呃我是先按照knv大佬的指示去配置了开发环境,下载官方的SDK。总之这部分,保证在Ubuntu22.04环境下,按官方教程从头输入到尾就可以了,如果出问题了,一定是版本不对。版本不对的话,就只能用下面的docker了。

https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-SDK/

这个主要编译过程是非常非常长的,大概一次要三小时。下面几个要单独编译的不是特别长,但是好像也有两个是要几分钟的。

然后在编译的时候最好别断网断线。可能是因为我是使用虚拟机。要是有事我只能说重新编译几个小时真的挺够呛的。

然后我使用的是例程部署

git clone https://github.com/luckfox-eng29/luckfox_pico_rtsp_opencv

export LUCKFOX_SDK_PATH=<Your Luckfox-pico Sdk Path>
mkdir build
cd build
cmake ..
make && make install

如果出问题了一定是版本不对

我一开始很纠结是不是SDK路径出了问题,SDK路径其实就是那个刚刚下载的luckfox-pico的文件夹,然后我就一直换来换去,后来knv大佬告诉我是版本不对,一定注意这个过程是在22.04下版本下配置,当时发了一堆私信打扰了很多大佬,向他们道歉一下!

输入完上面这堆指令就自己编译了,其实这堆指令也是例程readme里面的官方指令

然后会有个文件夹生成一堆文件,luckfox_rtsp_opencv_demo/luckfox_rtsp_opencv 和 lib目录

将这堆文件通过SSH传文件那个操作传到板子上才可以用

然后登录ssh进去终端,进入文件夹运行,看到板子里面文件夹下面有那堆文件,就可以运行了

RkLunch-stop.sh
./luckfox_rtsp_opencv

这个也是readme里面的代码,直接输入运行,就行

运行前注意把 rkipc 程序关掉,执行

RkLunch-stop.sh

 打开串流视频软件就可以收到画面了

可能因为我用的是完全没优化的例程,效果还是有点问题的,首先它就很吃这个画面的光影,在光线不太好的时候,识别效果也比较感人

以及摄像头是可以扭动前面的镜头对焦的,对焦对不上的时候,它识别到画面里面其他乱七八糟的东西效果也会比较感人

 

这里就识别到充电线上去了

总觉得我这个帖子是识别失败大赏

 

还好后来还是识别成功了的

例程是一次只能识别一个,当同框时候,它会选择更加清晰的一个来识别,但是,也有可能2是倒着的不是正常角度,所以它没有优先识别

 

角度倒是不会影响识别效果

 

在识别4的时候遭遇了滑铁卢,首先是宁愿识别旁边的缝也不识别数字

 

这是5

 

这是8

 

就是不是4

也有可能是这时候运行得有点久板子已经发烫了,整个程序跑起来算力要求其实还是挺高的,我的老电脑已经在拉风箱了

8一开始也有识别错误的现象

 

但后来好了

 

只是4一直都没有识别出来,难道是我写的4真的很不标准吗?

此帖出自Linux开发论坛
点赞 关注

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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