基于DPU-PYNQ来实现石头剪刀布的手势识别

电子说

1.3w人已加入

描述

简介

本案例主要基于DPU-PYNQ来实现一个常见的手势识别--石头剪刀布,目的是让大家了解如何使用DPU开发深度学习应用的整个流程。本案例分为三个部分:分别是PC模型训练、VitisAI模型编译、Edge模型部署三个部分。PC模型训练是通过tensorflow对数据集进行分析训练,得到需要的tf模型;VitisAI模型编译是通过vitis ai工具链,对tf模型进行量化、编译,转换成dpu可以运行的模型;Edge模型部署是在U96上调度使用编译好的模型。

Git仓库:https://github.com/linxiaobo110/rps_u96.git

在PC上训练NN模型

数据集

数据集使用的是谷歌发布的开源数据集:

https://www.tensorflow.org/datasets/catalog/rock_paper_scissors

训练环境说明

议在有显卡的环境下训练,本教程使用的python环境所需的库如下所示:

python 3.7

tensorflow 2.0

numpy

opencv

matplotlib

sklearn

在安装好的python环境下,使用spyder或者命令行运行train.py:

python train.py

正常运行时会有以下输出:

1、打印部分数据集图片(注意观察图片是否正常),以及各种标签的样本数量:

 

 

2、打印训练过程以及训练精度的变化

 

DPU

 

在Vitis AI里编译NN模型

把训练好的模型通过vitis AI编译后才可以在U96上运行。

1、把训练好的模型拷贝到DpuCarU96的vitisAI目录,同时需要把vitisAI/dataset_valid下的验证集换成用户自己的数据,至少50张图片。

2、启动vitis AI的docker,并把工程里的vitisAI目录拷贝到docker虚拟机里。

./docker_run.sh xilinx/vitis-ai

3、在vitisAI的dockder里,激活tensorflow的环境:

conda activate vitis-ai-tensorflow

4、在vitisAI的dockder里,运行权值固化、权值量化、模型编译等脚本可以得到以下输出:

 

DPU

 

编译完完的模型在./vitisAI/compile_results目录下,里面的.elf文件是下一阶段的教程所需要的。

在Utral96上调用NN模型

1、把仓库拷贝到U96的jupyter_notebook目录下,如果要使用用户的模型,请把里面的.elf文件换成vitisAI教程里生成的elf文件。

2、在U96的终端上,把elf模型编译程序共享库:

sudo ./1.compile.sh

3、在U96的终端上,查看IP地址:

sudo ifconfig

4、在用户PC上,打开浏览器,输入IP地址,即可进入jupyter Notebook。

5、在用户PC上,按照jupyterNotebook的提示逐步地运行程序,即可看到效果。

 

 

6、在用户PC上,使用USB摄像头的实时识别实验。USB摄像头需要连接在Ultral96上。

 

编辑:hfy
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分