準備工作
-
安裝vmware,vmware在我們的百度網盤可以下載到
鏈接:https://pan.baidu.com/s/1nhXQxRgYh9cDEFMw5sMvAQ
提取碼:z1dm -
下載我們準備好的虛擬機
地址:
鏈接:https://pan.baidu.com/s/1mdZV9jn74RCxKp_pUh4mew 提取碼:623k -
本章的例程與上一節的相同,請移步
Powersensor AI教程1.1-數字識別-tf模型訓練下載。
介紹
本章主要介紹的PowersensorAI部署的第二個環節,通過xilinx的DNNDK,將tensorflow訓練好的模型進行固化、編譯等操作。最終生成powersensor可以運行的elf文件。這個環節稱爲dnndk環節。
編譯過程
-
打開虛擬機,登錄密碼是123
-
在虛擬機的
/home/xiaobo/powersensor
目錄下新建ministNumber
文件夾(隨教程發佈的案例會已經存在),並把案例目錄下的dnndk
文件夾和dataset_valid
文件夾複製到新建的文件夾下面。如果要使用自己新訓練的模型,需要把自己的模型(在案例目錄/pc/run
下面的2個模型文件)替換掉我們準備好的文件。
-
在虛擬機裏的dnndk文件夾裏在打開終端:
-
第一步,模型固定,把tensorflow的權值固定到結構中,指令是
./1_vitisAI_keras2frozon.sh
xiaobo@ubuntu:~/powersensor/fashion-minist/dnndk$ ./1_vitisAI_keras2frozon.sh
############################################
Convert keras h5 model to frozon model begin
Vitis AI 1.1
############################################
I0515 05:22:53.318743 139635748165376 keras_to_tensorflow.py:146] Converted output node names are: [u'dense_out/Softmax']
INFO:tensorflow:Froze 8 variables.
I0515 05:22:53.326545 139635748165376 tf_logging.py:115] Froze 8 variables.
INFO:tensorflow:Converted 8 variables to const ops.
I0515 05:22:53.329962 139635748165376 tf_logging.py:115] Converted 8 variables to const ops.
I0515 05:22:53.332588 139635748165376 keras_to_tensorflow.py:178] Saved the freezed graph at frozon_result/model.pb
############################################
Convert completed
############################################
frozon完模型,工具會把網絡節點的名稱打印出來。一般地,第一個是輸入節點,最後一個是輸出節點。
- 第二步,量化,注意把
2_vitisAI_tf_quantize.sh
中的input_nodes
、input_shapes
、output_nodes
改成與第一步打印的節點名稱一致。
xiaobo@ubuntu:~/powersensor/fashion-minist/dnndk$ ./2_vitisAI_tf_quantize.sh
#####################################
Quantize begin
Vitis AI 1.1
#####################################
('../dataset/fashion-mnist/t10k-images-idx3-ubyte.gz', '../dataset/fashion-mnist/t10k-labels-idx1-ubyte.gz')
t10k labels:10000
t10k datas shape:(10000,28,28)
INFO: Checking Float Graph...
INFO: Float Graph Check Done.
INFO: Calibrating for 100 iterations...
100% |#########################################################################|
INFO: Calibration Done.
INFO: Generating Deploy Model...
INFO: Deploy Model Generated.
********************* Quantization Summary *********************
INFO: Output:
quantize_eval_model: ./quantize_results/quantize_eval_model.pb
deploy_model: ./quantize_results/deploy_model.pb
#####################################
QUANTIZATION COMPLETED
#####################################
- 第三步,編譯模型
./3_vitisAI_tf_compile.sh
記住這兩個節點的名稱和模型的名稱,在Powersensor上的edge階段就使用這兩個名稱來引用節點。
編譯完成後會在當前目錄的compile_result
目錄下生成dpu_testModel_0.elf
文件,這個就是最終要在DPU上運行的二進制庫,把它從虛擬機裏拷貝出來備用: