977|3

530

帖子

4

TA的资源

一粒金砂(高级)

楼主
 

【DigiKey创意大赛】石头剪刀布之AI时代+No6.作品提交贴 [复制链接]

  本帖最后由 传媒学子 于 2024-1-7 11:48 编辑
 石头剪刀布之AI时代 
-- 作者:传媒学子
文档格式有一些不一样,可以直接下载pdf或者doc版本。
石头剪刀布之AI时代.pdf (1000.73 KB, 下载次数: 0)
石头剪刀布之AI时代.doc (6.31 MB, 下载次数: 3)

一、作品简介

随着科技的发展,AI应用已经逐步被部署在嵌入式硬件平台中,目前一部分嵌入式硬件平台已经具备实时推理的能力,树莓派硬件平台是其中一个比较典型的代表。
本项目名称石头剪刀布之AI时代, 利用在得捷电子商城购买的树莓派4B(4GB),部署yolofastestv2算法,通过树莓派第二代摄像头来采集手势,利用host主机进行训练,将yolofastestv2推理算法模型网络和权重数据移植入树莓派,执行推理,实时识别石头、剪刀、布三种手势。游戏开始后,随机生成一种手势,然后识别玩家手势,比对结果。
作品实物图&硬件图:
作品效果图:

二、系统框图

本项目主要是在PC端训练AI模型,然后将生成的网络模型权重参数等信息导入到树莓派中,借助ncnn的框架,实现对手势的实时采集和检测。
因此,我这边选择了树莓派4B搭载Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz CPU,板载LPDDR4-3200 SDRAM作为部署推理的硬件平台。因为深度学习神经网络还是需要一定的内存,所以这里选择了4GB的内存,预算充足的话,建议直接上8GB的DDR;另外,我们还需要通过camera来实时采集图像,最开始需要用camera采集图像供PC端进行训练使用,后续还需要树莓派也需要通过摄像头实时采集用户的手势图像,实际上是使用Gstream和opencv来获取视频流以及截取图像。主要设计原理见图1。
1 系统框图
图1中紫色的部分是在PC台式机上进行了,通过PyCharm和Cuda来使用RTX4060Ti来进行模型训练,整体训练时间大概30min, 这里提到PC的内存要尽量大一些,否则batch size不能设的过大,本人16GB内存,batch size=4,训练300轮,大概需要30min左右。在第三章会详细介绍具体的过程。图1中黄色部分就是将训练生成的模型参数等放到树莓派NCNN框架中进行实时推理。C++是要快于python的,因为python是解释性语言,因此借助NCNN可以得到跟高的实时推理帧率。
2 软硬件示意图
图2是树莓派执行推理的软硬件框图,从video的获取,到最终在显示屏上的结果显示; Raspberry Pi NoIR Camera V2 摄像头模块使用 Sony IMX219 800万像素图像传感器,采集图像质量是较高的,可以满足训练和推理的需求。
因为项目是为了能够和AI来进行石头剪刀布的游戏,因此,整个游戏在树莓派上的执行过程如图3所示,每一轮游戏分为lost, win, tied三种,分别是用户输、用户赢了、平局。
3 石头剪刀布游戏流程示意图

三、各部分功能说明(图文结合)

3.1树莓派软硬件准备

3.1.1树莓派镜像安装

执行AI推理离不开ncnn,opencv等软件,如果尝试自行安装,会非常耗时而且不一定能安装成功,建议直接按照下面的教程,进行安装,可以节省非常多的时间;
树莓派预装AI常用软件包的镜像:
链接已隐藏,如需查看请登录或者注册
本项目选择了Bullseye 64bit OS, 因为AI模型推理是比较耗费CPU资源的,因此建议使用64bit的OS,并且考虑到一些软件的兼容性,最好使用比较稳定的OS版本。
4 树莓派Bullseye 64bit OS

3.1.2软硬件调试与准备

树莓派软件准备主要是需要确认NCNN/Opencv以及摄像头可以正常采集图像;电脑端需要下载好cuda驱动等。
以下是我经历各种弯弯道道后琢磨出来的方法:WIN11先下载pycharm和Anaconda,设置好Anaconda环境变量,然后创建一个env, 打开pycharm在这个env中,拉取
链接已隐藏,如需查看请登录或者注册
,然后执行pip3 install -r requirements.txt
这里能安装完大多数的所需要的软件,但是pytorch和cuda需要按照如下自行安装,cuda需要与自己的显卡和pytorch相对应。
通过上边调试,基本可以完成对图像的采集,以及PC的本地环境搭建。

3.2数据集收集与处理

树莓派来搜集图像,可以用脚本take_photo.py,执行此脚本,可以在本地目录下生成images目录,相应的图像可以拍摄到该目录中:
收集完图像后,需要使用Labelmee软件来进行数据标注,因为yolo算法需要提前设定标注,才能更好的进行训练。标注完的图像,还需要进一步归类为训练集和测试集,可以设定90%的图像是训练集,10%的图像是测试集。
通过dic_lab.py, labelmetoyolo.py两个脚本来执行这个动作;之后还需要生成数据集和训练集的路径,通过gen_train_txt.py和gen_val_txt.py可以完成。这里的脚本和处理前后的数据集都在pycharm的工程下,Yolo-FastestV2/data_my下。

3.3模型训练(PC训练)

具体可以参考项目结项附件中的Yolo_FastestV2_train,根据PC内存情况设置合适的batch_size等。分为以下步骤:
  • 生成锚框参数:python genanchors.py --traintxt .\ data_my\train.txt
  • 将生成的参数填入game.data中
  • Train: python train.py --data data_my/game.data
  • 评估:python evaluation.py --data dataset_my/game.data --weights .\weights\*.pth
  • 测试:python test.py --data dataset_my/game.data --weights .\weights\*.pth --img .\dataset_my\test3.jpg
  • Convert onnx:python pytorch2onnx.py --data dataset_my/game.data --weights .\weights\*.pth --output yolo-fastestv2.onnx
  • onnx-sim:python -m onnxsim yolo-fastestv2.onnx yolo-fastestv2-opt.onnx
注意使用附件中工程时,需要特别注意重新生成训练集,因为里面的路径都是绝对路径,可以通过修改相应的生成脚本进行重新生成。

3.4模型部署(树莓派部署)

按照上述说明安装的OS, 则进入:~/ncnn/build/tools/目录下,然后执行gen_yolofastestv2.sh会自动将生成的
yolo-fastestv2-opt.bin,yolo-fastestv2-opt.param文件放入到~/software/YoloFastest_V2/目录下,然后在PC端的mobaxterm上执行codeblocks,即可编译ncnn工程,然后执行即可;
结项包中的AI_Gesture_game_source_code_for_raspi_4B.tar.gz是树莓派codeblocks文件工程。项目的整体流程图如下:
图3程序流程图
整个项目的软件流程图如上所示,开始后,按s键即可开始游戏,按q键即可退出游戏。AI的手势采用变化的seed来生成random的0/1/2来保证公平性,用户的手势则是通过实时检测实时识别来通过AI判断的,最终相应的结果会打印在屏幕中,具体的效果图可以参考第一章的图片,或观看第五章的视频。
神经网络图如下(完整网络图见作品包yolo-fastestv2-opt.onnx.png):

四、作品源码

树莓派镜像(已经安装好opencv/ncnn等必备软件):
链接已隐藏,如需查看请登录或者注册
作品文档: 石头剪刀布之AI时代.pdf (1000.73 KB, 下载次数: 0) 石头剪刀布之AI时代.doc (6.31 MB, 下载次数: 3)
作品源码链接:
包含以下源码、数据集以及相应的脚本;
  • PC训练源码(包含818章标注好的手势图像):Yolo_FastestV2_train.part1.rar & Yolo_FastestV2_train.part2.rar
  • 树莓派ncnn部署源码:AI_Gesture_game_source_code_for_raspi_4B.tar.gz

五、作品功能演示视频

演示视频包含了数据采集、数据标注、数据训练和结果测试四个主要部分,视频链接如下:

 

六、项目总结

经过1个多月的努力,终于体会到了“山重水复疑无路,柳暗花明又一村”的感觉。因为AI对于大多数嵌入式工程师来讲,是一个可能听起来老套,但用起来新的东西,对于我也是。最开始感觉很茫然,训练环境搭建,NCNN推理环境搭建,每一步都无从下手。到最后,终于理清从数据采集、数据标注、Pytorch训练到树莓派NCNN推理等一套完整的AI工程之旅。从游戏体验上讲,感觉是比较完备的一个游戏。遗憾之处是本项目实时推理能力虽然标称上能达到20FPS, 但是实际感受上可能在10FPS以下,可能是视频流到图像流的转换耗费了较长的时间;项目结束后,需要再好好研究一下系统中的瓶颈,从而再进行更深层次的优化。
帖子分享链接汇总:
【DigiKey创意大赛】石头剪刀布之AI时代+No1.开箱帖 https://bbs.eeworld.com.cn/thread-1265463-1-1.html
【DigiKey创意大赛】石头剪刀布之AI时代+No2.点亮树莓派和摄像头 https://bbs.eeworld.com.cn/thread-1265465-1-1.html
【DigiKey创意大赛】石头剪刀布之AI时代+No3.数据采集、数据标注以及训练初探 https://bbs.eeworld.com.cn/thread-1266497-1-1.html
【DigiKey创意大赛】石头剪刀布之AI时代+No4.树莓派初步部署与训练再探 https://bbs.eeworld.com.cn/thread-1267185-1-1.html
【DigiKey创意大赛】石头剪刀布之AI时代+No5.树莓派yolov2fastest算法AI实践 https://bbs.eeworld.com.cn/thread-1267910-1-1.html
【DigiKey创意大赛】石头剪刀布之AI时代+No6.结项贴

七、致谢

项目的最后,要感谢论坛能举办这个比赛,也感谢得捷能够赞助这个比赛,得以让我有机会下定决心窥探一下AI的奥秘。同时,在数据集收集和数据标注等工作中,我的爱人也给予了我了很多帮助。数千张图像的标注,是一项费时而又枯燥的事情。最后,也希望我的这个作品能给大家带来不一样的视野:将嵌入式装上AI的翅膀,用AI改变世界,用创新引领未来。

最新回复

👍,把NCNN和Pytorch在树莓派上的使用,落到实处,把模型部署和应用也讲的明白,值得好好学习!   详情 回复 发表于 2024-1-11 08:35
点赞 关注
 
 

回复
举报

530

帖子

4

TA的资源

一粒金砂(高级)

沙发
 

  训练中的各种损失下降趋势图

train_metrics.xlsx (59.62 KB, 下载次数: 0)

 
 
 
 

回复

175

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

大佬霸气,顶起

 
 
 

回复

325

帖子

4

TA的资源

纯净的硅(中级)

4
 

👍,把NCNN和Pytorch在树莓派上的使用,落到实处,把模型部署和应用也讲的明白,值得好好学习!

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表