簡介
本案例主要基于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、打印訓練過程以及訓練精度的變化

在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里,運行權值固化、權值量化、模型編譯等腳本可以得到以下輸出:

編譯完完的模型在./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的提示逐步地運行程序,即可看到效果。
-
手勢識別
+關注
關注
8文章
232瀏覽量
49120 -
DPU
+關注
關注
0文章
414瀏覽量
26964 -
深度學習
+關注
關注
73文章
5598瀏覽量
124396
發布評論請先 登錄
STM32驅動PAJ7620手勢識別傳感器
零知IDE——基于STM32F103RBT6的PAJ7620U2手勢控制WS2812 RGB燈帶系統
ALINX教程分享_Zynq UltraScale+ MPSoC PYNQ3.1.2移植
基于K1的的人工智能終端及應用開發-手勢-語音-人臉--第一階段
【技術討論】智能戒指手勢交互:如何優化PCBA成本與實現<20ms低延遲?
無需手持更靈活!納祥科技智能帽夾燈方案(紅外感應+手勢控制)
XenG202G | 揮手手勢識別參考設計(三維)
零成本鋼鐵俠手套!樹莓派+OpenCV 秒變手勢遙控器!
【嘉楠堪智K230開發板試用體驗】手勢識別
【BPI-CanMV-K230D-Zero開發板體驗】人臉檢測、手勢識別、車牌識別
攻克園林電動剪刀難題的策略與方法--【其利天下技術】
基于DPU-PYNQ來實現石頭剪刀布的手勢識別
評論