色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Vitis AI在Zynq MP上實(shí)現(xiàn)手勢識別

FPGA技術(shù)江湖 ? 來源:XILINX開發(fā)者社區(qū) ? 2023-06-25 10:52 ? 次閱讀

本文作者:賽靈思工程師 Chao Zhang

FPGA得益于其高可編程性以及低延遲,低功耗的特點(diǎn),在機(jī)器學(xué)習(xí)的推理領(lǐng)域已獲得了廣泛的關(guān)注。在過去,F(xiàn)PGA對于軟件開發(fā)人員來說有較高的開發(fā)門檻,把一部分開發(fā)者擋在了門外。如今越來越完善的高階工具以及軟件堆棧使得開發(fā)者可以充分利用FPGA優(yōu)點(diǎn)對關(guān)鍵應(yīng)用進(jìn)行加速,同時(shí)不需花費(fèi)時(shí)間去了解FPGA的底層實(shí)現(xiàn)。

Xilinx Vitis AI 是用于 Xilinx 硬件平臺上的 AI 推理的開發(fā)堆棧。它由優(yōu)化的 IP(DPU)、工具、庫、模型和示例設(shè)計(jì)組成,使用Xilinx ZynqMP SOC或者Versal ACAP器件并借助強(qiáng)大的Vitis AI堆棧,已大大降低了FPGA上部署機(jī)器學(xué)習(xí)應(yīng)用的門檻。

本文將使用Tensorflow 2.0從零搭建并訓(xùn)練一個(gè)簡單的CNN模型來進(jìn)行數(shù)字手勢識別,并部署運(yùn)行在ZynqMP開發(fā)板上,來熟悉Vitis AI的工作流程。

我們首先用Tensorflow 2.0創(chuàng)建模型并針對目標(biāo)數(shù)據(jù)集進(jìn)行訓(xùn)練,然后使用Vitis AI 工具對模型進(jìn)行量化/編譯等處理,獲得運(yùn)行DPU所需要的xmodel文件。最后需要編寫調(diào)用Vitis AI runtime的主機(jī)應(yīng)用,該應(yīng)用運(yùn)行在CPU上,進(jìn)行必要的預(yù)處理/后處理以及對DPU進(jìn)行調(diào)度。

1d6dece2-1078-11ee-962d-dac502259ad0.png

1Vitis AI環(huán)境配置

Vitis AI支持業(yè)界通用的Pytorch/Tensorflow/Caffe訓(xùn)練框架。模型創(chuàng)建和訓(xùn)練工作完全在通用框架下進(jìn)行開發(fā)。開始工作之前需要先在Host機(jī)器上配置好Vitis-AI Docker環(huán)境,這部分完全參考https://github.com/Xilinx/Vitis-AI Guide即可。以下所有在Host機(jī)器上完成的步驟(訓(xùn)練/量化/編譯)都是在Vitis AI docker 及vitis-ai-tensorflow2 conda env環(huán)境下完成。

2數(shù)據(jù)集

本實(shí)例使用的數(shù)字手勢數(shù)據(jù)集:

https://github.com/ardamavi/Sign-Language-Digits-Dataset (感謝開源數(shù)據(jù)集作者Arda Mavi )

3源碼說明

本項(xiàng)目的工程文件保存在 Github目錄:

https://github.com/lobster1989/Handsign-digits-classification-on-KV260

有4個(gè)主要文件夾:

1. code:

此處包含所有源代碼,包括用于訓(xùn)練/量化/編譯任務(wù)的腳本,以及在 ARM 內(nèi)核上運(yùn)行的主機(jī)應(yīng)用程序。

2. output:

生成的模型文件。

3. Sign-Language-Digits-Dataset:

數(shù)據(jù)集應(yīng)該下載并放在這里。

4. target_zcu102_zcu104_kv260:

準(zhǔn)備復(fù)制到目標(biāo)板運(yùn)行的文件。

4創(chuàng)建/訓(xùn)練模型

Host機(jī)器上運(yùn)行 "train.py" 腳本,train.py腳本中包含了模型的創(chuàng)建和訓(xùn)練過程。模型的創(chuàng)建主要代碼如下,使用Keras的function式 API(注意sequential 式API目前Vitis AI不支持)。創(chuàng)建的模型包含4個(gè)連續(xù)的Conv2D+Maxpolling層,然后跟隨一個(gè)flatten layer,一個(gè)dropout layer,以及兩個(gè)全連接層。

這個(gè)模型僅僅作為示例,各位也可以嘗試使用其它的CNN模型或進(jìn)行優(yōu)化。

# Function: create a custom CNN model

def customcnn():

inputs = keras.Input(shape=image_shape)

x = layers.Conv2D(32, (3,3), activation='relu', input_shape=image_shape)(inputs)

x = layers.MaxPooling2D((2,2))(x)

x = layers.Conv2D(64, (3,3), activation='relu')(x)

x = layers.MaxPooling2D((2,2))(x)

x = layers.Conv2D(128, (3,3), activation='relu')(x)

x = layers.MaxPooling2D((2,2))(x)

x = layers.Conv2D(128, (3,3), activation='relu')(x)

x = layers.MaxPooling2D((2,2))(x)

x = layers.Flatten()(x)

x = layers.Dropout(0.5)(x)

x = layers.Dense(512, activation='relu')(x)

outputs = layers.Dense(10, activation='softmax')(x)

model = keras.Model(inputs=inputs, outputs=outputs, name='customcnn_model')

model.summary()

# Compile the model

model.compile(optimizer="rmsprop",

loss="categorical_crossentropy",

metrics=['acc']

)

return model

該模型在第 10 個(gè)epoch在驗(yàn)證數(shù)據(jù)集上獲得了 0.7682 的精確度。

1d8800e6-1078-11ee-962d-dac502259ad0.png

5模型量化

訓(xùn)練完Tensorflow2.0模型后,下一步是使用Vitis AI quantizer工具對模型進(jìn)行量化。量化過程將 32 位浮點(diǎn)權(quán)重轉(zhuǎn)換為 8 位整型 (INT8),定點(diǎn)模型需要更少的內(nèi)存帶寬,從而提供更快的速度和更高的運(yùn)行效率。如果需要進(jìn)一步優(yōu)化計(jì)算量級,還可以使用Vitis AI提供的剪枝(pruning)工具。

1d8f33e8-1078-11ee-962d-dac502259ad0.png

運(yùn)行quantize.py腳本進(jìn)行量化,運(yùn)行結(jié)束后將生成量化后的模型''quantized_model.h5''。

進(jìn)行quantize的代碼部分如下,調(diào)用VitisQuantizer,需要提供的輸入包括上個(gè)步驟生成的float模型,以及一部分圖片(推薦為100~1000張)作為calibration的輸入。Calibration操作使用提供的圖片進(jìn)行正向運(yùn)算,不需要提供label

# Run quantization

quantizer = vitis_quantize.VitisQuantizer(float_model)

quantized_model = quantizer.quantize_model(

calib_dataset=train_generator

)

6評估量化后模型

我們可以測試評估下量化后的模型是否有精度的損失。量化模型的評估可以直接在 python 腳本中利用TensorFlow框架完成。讀入模型,重新compile, 然后調(diào)用evaluation相關(guān) API對模型進(jìn)行評估。主要代碼部分如下

# Load the quantized model

path = os.path.join(MODEL_DIR, QAUNT_MODEL)

with vitis_quantize.quantize_scope():

model = models.load_model(path)

# Compile the model

model.compile(optimizer="rmsprop",

loss="categorical_crossentropy",

metrics=['accuracy']

)

# Evaluate model with test data

loss, acc = model.evaluate(val_generator) # returns loss and metrics

運(yùn)行“eval_quantize.py”腳本即可完成評估。通過評估發(fā)現(xiàn),量化后的模型沒有發(fā)生精度損失。當(dāng)然實(shí)際并不總是如此,有時(shí)候量化后的模型會有些許精度損失,這和不同的模型有關(guān)系。這時(shí)候我們可以使用Vitis AI提供finetuning來精調(diào)模型 。

7編譯模型

模型的編譯需要用到Vitis AI compiler(VAI_C)。這個(gè)步驟實(shí)際上是把量化后的模型轉(zhuǎn)化為可以在DPU上運(yùn)行的指令序列。VAI_C 框架的簡化流程如下圖所示,包含模型解析,優(yōu)化和代碼生成三個(gè)階段。模型解析步驟對模型的拓?fù)溥M(jìn)行解析,生成用Xilinx的中間表示層(Intermediate Representation)表示的計(jì)算圖(computation graph)。然后是執(zhí)行一些優(yōu)化操作,例如計(jì)算節(jié)點(diǎn)融合或者提高數(shù)據(jù)重用。最后的步驟是生成DPU架構(gòu)上運(yùn)行的指令序列。

1da9d0f4-1078-11ee-962d-dac502259ad0.png

運(yùn)行compile.sh腳本即可完成編譯過程。主要代碼如下,使用vai_c_tensorflow2命令。注意需要提供目標(biāo)DPU配置的arch.json文件作為輸入(--arch選項(xiàng))。編譯步驟完成后會生成DPU推理用的xmodel文件。

compile() {

vai_c_tensorflow2

--model $MODEL

--arch $ARCH

--output_dir $OUTDIR

--net_name $NET_NAME

}

8主機(jī)程序

DPU作為神經(jīng)網(wǎng)絡(luò)加速引擎,還需要CPU主機(jī)對其進(jìn)行控制和調(diào)度,提供給DPU數(shù)據(jù)輸入/輸出。另外還需要對這部分運(yùn)行在ARM或Host CPU上的應(yīng)用而言, Vitis AI提供了Vitis AI Runtime (VART) 以及Vitis AI Library來方便應(yīng)用開發(fā)。VART比較底層,提供更大的自由度。Vitis AI library屬于高層次API,構(gòu)建于 VART 之上,通過封裝許多高效、高質(zhì)量的神經(jīng)網(wǎng)絡(luò),提供更易于使用的統(tǒng)一接口

VART具有C++和Python兩套API。多數(shù)機(jī)器學(xué)習(xí)開發(fā)者習(xí)慣用Python來開發(fā)和訓(xùn)練模型,在部署階段甚至可以不用切換語言。本例子中提供了使用Python接口的host程序app_mt.py。使用Python API的簡化流程如下。

# Preprocess

dpu_runner = runner.Runner(subgraph,"run")

# Populate input/out tensors

jid = dpu_runner.execute_async(fpgaInput, fpgaOutput)

dpu_runner.wait(jid)

# Post process

9開發(fā)板上運(yùn)行

如果使用的是 Xilinx zcu102/zcu104/KV260 官方 Vitis AI 啟動文件,則3 塊板上的 DPU 配置都相同。可以在 3 個(gè)平臺上運(yùn)行相同的xmodel文件,主機(jī)上的所有步驟完成后,將以下文件復(fù)制到目標(biāo)板上。共需要xmodel文件,主機(jī)程序,以及一些用來測試的圖片。

1db758a0-1078-11ee-962d-dac502259ad0.png

啟動開發(fā)板并運(yùn)行 app_mt.py ,用 -d指定圖片路徑,-m指定xmodel文件,-t 指定CPU上運(yùn)行的線程數(shù)。

很幸運(yùn),10張測試圖片的推理結(jié)果都是正確的。

root@xilinx-zcu102-2021_1:/home/petalinux/Target_zcu102_HandSignDigit#python3 app_mt.py -d Examples/ -m customcnn.xmodel

Pre-processing 10 images...

Starting 1 threads...

Throughput=1111.96 fps, total frames = 10, time=0.0090 seconds

Correct:10, Wrong:0, Accuracy:1.0000

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21791

    瀏覽量

    605095
  • 手勢識別
    +關(guān)注

    關(guān)注

    8

    文章

    225

    瀏覽量

    47823
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    31443

    瀏覽量

    269836
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    610

    瀏覽量

    47250
  • Vitis
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    7475

原文標(biāo)題:使用Vitis AI 在Zynq MP上實(shí)現(xiàn)手勢識別

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何用10行代碼輕松ZYNQ MP實(shí)現(xiàn)圖像識別

    Vitis-AI工具,如何僅僅使用10行代碼,就能在ZYNQ MP器件上部署深度學(xué)習(xí)模型實(shí)現(xiàn)圖像分類。 簡介 Xilinx Vitis-AI
    的頭像 發(fā)表于 10-09 10:47 ?4693次閱讀
    如何用10行代碼輕松<b class='flag-5'>在</b><b class='flag-5'>ZYNQ</b> <b class='flag-5'>MP</b><b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>圖像<b class='flag-5'>識別</b>

    閑談Vitis AI|DPUUltraScale平臺下的軟硬件流程(1)

    本篇中,我想跳過一些細(xì)枝末節(jié), 先簡單介紹 AMD Xilinx Vitis AI Zynq 這個(gè)硬件加速平臺下軟硬件開發(fā)的基本思路和流程,把各個(gè)開發(fā)流程和工具分開,幫助剛剛接觸
    的頭像 發(fā)表于 12-21 10:15 ?2068次閱讀

    labview 實(shí)現(xiàn)手勢識別 !!!????

    新人小白想知道怎么用labview實(shí)現(xiàn)簡單的手勢識別識別上下左右就行。哪位大神能給講講
    發(fā)表于 11-02 23:36

    使用Vitis EBAZ4205(ZYNQ)礦機(jī)上實(shí)現(xiàn)"Hello World!"

    立即學(xué)習(xí)—60天FPGA工程師入門就業(yè)項(xiàng)目實(shí)戰(zhàn)特訓(xùn)營(3月16日開班)Vitis是 Xilinx 最新推出的開發(fā)平臺,雖然Vitis 早就在電腦安裝好了,但一直沒怎么使用。現(xiàn)在用低成本的ZY
    發(fā)表于 03-06 22:59

    【創(chuàng)龍TLZ7x-EasyEVM評估板試用連載】基于ZYNQ的動態(tài)手勢識別系統(tǒng)

    項(xiàng)目名稱:基于ZYNQ的動態(tài)手勢識別系統(tǒng)試用計(jì)劃:申請理由:申請人為研究生,本科期間參加過多個(gè)國家級省市級競賽并獲得多項(xiàng)榮譽(yù),擁有豐富的Xilinx嵌入式系統(tǒng)的開發(fā)經(jīng)驗(yàn)。已對zynq
    發(fā)表于 04-23 10:33

    【KV260視覺入門套件試用體驗(yàn)】Vitis AI 初次體驗(yàn)

    一、基礎(chǔ)環(huán)境 硬件:KV260視覺入門套件 攝像頭:海康720P USB攝像頭(因?yàn)椴渴?b class='flag-5'>Vitis AI之后懶得poweroff插MIPI camera了,直接USB) 軟件:Ubuntu
    發(fā)表于 09-10 13:15

    【KV260視覺入門套件試用體驗(yàn)】五、VITis AI (人臉檢測和人體檢測)

    一、DPU 鏡像環(huán)境配置 官方鏡像已經(jīng)安裝好了可以安裝相關(guān)配置,示例來源Vitis AI Library用戶指南3.0版本,首先需要安裝DPU鏡像。 1.1、克隆Vitis
    發(fā)表于 09-26 16:22

    【KV260視覺入門套件試用體驗(yàn)】六、VITis AI車牌檢測&amp;車牌識別

    視覺技術(shù)實(shí)現(xiàn)的自動識別車輛牌照號碼的過程。該技術(shù)通過圖像采集、車牌檢測、字符分割和字符識別等步驟,實(shí)現(xiàn)對車牌號碼的自動獲取與識別。車牌
    發(fā)表于 09-26 16:28

    【KV260視覺入門套件試用體驗(yàn)】基于Vitis AI的ADAS目標(biāo)識別

    /vitis_ai_library/models -r 四、ADAS目標(biāo)識別體驗(yàn) (一)目標(biāo)識別 接上HDMI顯示器、鍵盤&鼠標(biāo),KV260
    發(fā)表于 09-27 23:21

    【KV260視覺入門套件試用體驗(yàn)】Vitis AI 構(gòu)建開發(fā)環(huán)境,并使用inspector檢查模型

    推斷開發(fā)平臺,它可以幫助開發(fā)者賽靈思的 FPGA 和自適應(yīng) SoC 實(shí)現(xiàn)高效的 AI 應(yīng)用部署。它是一個(gè)強(qiáng)大而靈活的 AI 開發(fā)平臺,
    發(fā)表于 10-14 15:34

    【KV260視覺入門套件試用體驗(yàn)】Vitis AI Library體驗(yàn)之OCR識別

    的接口。由此可簡化深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的使用,對于不具備深度學(xué)習(xí)或 FPGA 知識的用戶也是如此。Vitis AI Library 使開發(fā)者能夠?qū)W⒂陂_發(fā)自己的應(yīng)用,而不是底層硬件。 二、實(shí)現(xiàn) 相較于
    發(fā)表于 10-16 23:25

    10行代碼輕松ZYNQ MP實(shí)現(xiàn)圖像識別

    如今各種機(jī)器學(xué)習(xí)框架的普及使得個(gè)人搭建和訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)模型越來越容易。然而現(xiàn)實(shí)中大量的機(jī)器學(xué)習(xí)模型訓(xùn)練完后需要在邊緣端部署,那么我們看看借助Xilinx Vitis-AI工具,如何僅僅使用10行代碼,就能在ZYNQ MP器件上
    的頭像 發(fā)表于 08-02 08:03 ?2247次閱讀
    10行代碼輕松<b class='flag-5'>在</b><b class='flag-5'>ZYNQ</b> <b class='flag-5'>MP</b><b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>圖像<b class='flag-5'>識別</b>

    Zynq使用Vitis的雙ARM Hello World

    電子發(fā)燒友網(wǎng)站提供《Zynq使用Vitis的雙ARM Hello World.zip》資料免費(fèi)下載
    發(fā)表于 12-14 10:15 ?3次下載
    <b class='flag-5'>Zynq</b><b class='flag-5'>上</b>使用<b class='flag-5'>Vitis</b>的雙ARM Hello World

    使用Vitis-AI進(jìn)行車牌識別

    電子發(fā)燒友網(wǎng)站提供《使用Vitis-AI進(jìn)行車牌識別.zip》資料免費(fèi)下載
    發(fā)表于 06-27 09:49 ?2次下載
    使用<b class='flag-5'>Vitis-AI</b>進(jìn)行車牌<b class='flag-5'>識別</b>

    10行代碼輕松ZYNQ MP實(shí)現(xiàn)圖像識別的步驟

    Xilinx Vitis-AI 是用于 Xilinx 硬件平臺上的 AI 推理的開發(fā)堆棧。它由優(yōu)化的 IP、工具、庫、模型和示例設(shè)計(jì)組成。
    的頭像 發(fā)表于 07-04 09:20 ?1669次閱讀
    10行代碼輕松<b class='flag-5'>在</b><b class='flag-5'>ZYNQ</b> <b class='flag-5'>MP</b><b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>圖像<b class='flag-5'>識別</b>的步驟
    主站蜘蛛池模板: 国产精品一区二区三区四区五区| 豆奶视频在线高清观看| 四虎永久在线精品国产免费| 欧美00后rapper潮水| 两个奶被男人揉了一个晚上| 久久精品热99看二| 九九热在线视频观看这里只有精品| 国语自产拍在线视频普通话| 国产在线视精品在亚洲| 国产在线精品亚洲视频在线| 国产一区二区精品视频| 国产亚洲999精品AA片在线爽| 国产午夜精品鲁丝片| 国语自产拍在线视频普通话| 九九精品久久| 旧里番ovaの催○セイ活指导| 久久婷婷五月免费综合色啪| 快播av种子| 免费人成在线观看网站视频| 欧美xxxxx九色视频免费观看| 青青草在现线免费观看| 日韩欧美一区二区三区在线| 色琪琪无码成人AV视频| 偷偷鲁青春草原视频| 亚洲电影成人 成人影院| 一本道久在线综合道| 最好看中文字幕国语| 99在线这精品视频| 成人1000部免费观看视频| 国产成人久久婷婷精品流白浆| 国产精品久久久久久久久齐齐| 国产午夜视频在永久在线观看| 花蝴蝶高清在线视频免费观看| 久久se精品一区二区国产| 麻豆第一区MV免费观看网站 | 牲高潮99爽久久久久777| 色在线视频亚洲欧美| 无码天堂亚洲内射精品课堂| 亚洲精品无码AAAAAA片| 2019中文字幕乱码免费| ZZoo兽2皇|