電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Xilinx Kria KV260進(jìn)行AI火災(zāi)探測(cè)

使用Xilinx Kria KV260進(jìn)行AI火災(zāi)探測(cè)

2022-10-27 | zip | 0.98 MB | 次下載 | 2積分

資料介紹

描述

介紹

問(wèn)題:消防隊(duì)面臨著人手不足、隊(duì)伍有效戰(zhàn)斗力下降等諸多挑戰(zhàn)。最近,挑戰(zhàn)包括城市人口增加、更復(fù)雜的人口稠密建筑物和與大流行相關(guān)的措施。因此,為了增強(qiáng)消防人員對(duì)火災(zāi)事件的快速響應(yīng),建議安裝一個(gè)視頻分析系統(tǒng),以便及早發(fā)現(xiàn)火災(zāi)爆發(fā)。

目標(biāo):我的解決方案包括建立一個(gè)分布式計(jì)算機(jī)視覺系統(tǒng),以提供對(duì)建筑物火災(zāi)的早期檢測(cè)系統(tǒng)的分布式和模塊化特性允許輕松部署,而無(wú)需設(shè)置更多基礎(chǔ)設(shè)施。在不增加人力規(guī)模的情況下,有助于增強(qiáng)船員的消防能力。這可以通過(guò)使用 Xilinx Kria KV260 實(shí)現(xiàn)邊緣 AI 加速圖像處理功能來(lái)實(shí)現(xiàn)。部署時(shí),國(guó)務(wù)院當(dāng)局可以利用社區(qū)現(xiàn)有的監(jiān)控?cái)z像頭獲取視頻。這種模塊化方法是提供快速部署的關(guān)鍵技術(shù),因?yàn)閿z像機(jī)已經(jīng)安裝到位。

開發(fā)流程總結(jié)

使用的硬件是 Xilinx Kria KV260,用于加速計(jì)算機(jī)視覺處理和以太網(wǎng)連接的相機(jī)套件。嵌入式軟件應(yīng)使用 Vitis AI。在我的 PC 上,將使用現(xiàn)有的火災(zāi)探測(cè)數(shù)據(jù)集訓(xùn)練自定義 Yolo-V4 模型。之后,使用 Xilinx YoloV4 流程對(duì) DPU 實(shí)例的模型進(jìn)行量化、修剪和編譯。最后,它部署在 Kria KV260 上。

pYYBAGNYqieAGF6AAAC-839USpA673.png
?

PC:設(shè)置 SD 卡映像

首先,我們需要為 Kria KV260 Vision AI Starter Kit 準(zhǔn)備 SD 卡。

包裝盒中提供了 16GB 的 SD 卡,但我建議至少使用 32GB,因?yàn)樵O(shè)置可能會(huì)超過(guò) 16GB 的空間。

我們將使用 Ubuntu 20.04.3 LTS 下載。從網(wǎng)站下載圖像并將其保存在您的計(jì)算機(jī)上。

pYYBAGNYqimAE_5TAACRkAz-psg179.png
?

在您的 PC 上,下載 Balena Etcher 以將其寫入您的 SD 卡。

或者,您可以使用命令行(警告:確保寫入正確的驅(qū)動(dòng)器/dev/sdb必須是您的 SD 卡)

  • xzcat ~/Downloads/iot-kria-classic-desktop-2004-x03-20211110-98.img.xz | sudo dd of=/dev/sdb bs=32M
poYBAGNYqiyACMPuAAAu2ygugB0020.png
?

完成后,您的 SD 卡已準(zhǔn)備就緒,您可以將其插入 Kria。

Kria:設(shè)置賽靈思 Ubuntu

USB 鍵盤、USB 鼠標(biāo)、USB 攝像頭、HDMI/DisplayPort 和以太網(wǎng)連接到 Kria。

pYYBAGNYqi-AfTFAAAI89TIe4TE956.png
?

連接電源以打開 Kria,您將看到 Ubuntu 登錄屏幕。

默認(rèn)登錄憑據(jù)是:用戶名:ubuntu密碼:ubuntu

啟動(dòng)時(shí),界面可能非常慢,所以我運(yùn)行了這些命令來(lái)禁用動(dòng)畫調(diào)整以加快速度。

gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.shell.extensions.dash-to-dock animate-show-apps false

接下來(lái),通過(guò)執(zhí)行系統(tǒng)更新并調(diào)用此命令將系統(tǒng)更新到最新版

sudo apt upgrade
請(qǐng)注意,有必要進(jìn)行更新,因?yàn)樵缙诎姹镜?Vitis-AI 不支持 Python,如論壇帖子中所述。

安裝用于系統(tǒng)管理的 xlnx-config snap 并進(jìn)行配置更多信息見 Xilinx wiki ):

sudo snap install xlnx-config --classic
xlnx-config.sysinit

現(xiàn)在檢查設(shè)備配置是否正常工作。

sudo xlnx-config --xmutil boardid -b som

使用示例安裝 Smart Vision 應(yīng)用程序和 Vitis AI 庫(kù)。智能視覺應(yīng)用程序包含我們將重用的 DPU 的比特流,庫(kù)樣本也將用于稍后測(cè)試我們訓(xùn)練的模型)

sudo xlnx-config --snap --install xlnx-nlp-smartvision
sudo snap install xlnx-vai-lib-samples

檢查已安裝的示例和應(yīng)用程序

xlnx-vai-lib-samples.info
sudo xlnx-config --xmutil listapps

運(yùn)行上述命令后,您還會(huì)注意到 Model Zoo 樣本所需的 DPU 指紋。

pYYBAGNYqjKARZ0YAAA-iUUAHLk854.png
?

讓我們運(yùn)行其中一個(gè)示例。在我們這樣做之前,請(qǐng)連接您的 USB 攝像頭并確保檢測(cè)到視頻設(shè)備。我正在使用 Logitech C170,它在/dev/video1

v4l2-ctl --list-devices
poYBAGNYqjSAOPqUAAA0DHSE_7M842.png
?

加載智能視覺應(yīng)用程序并啟動(dòng)它。您可以四處玩耍并了解 Kria 的功能。

sudo xlnx-config --xmutil loadapp nlp-smartvision
xlnx-nlp-smartvision.nlp-smartvision -u

在運(yùn)行任何加速器應(yīng)用程序之前,我們總是需要從比特流中加載 DPU。下一次,我們可以簡(jiǎn)單地調(diào)用 smartvision 應(yīng)用程序,它將為我們加載比特流。或者,您可以創(chuàng)建自己的打包應(yīng)用程序。

注意:加速器比特流位于/lib/firmware/xilinx/nlp-smartvision/.

由于我的計(jì)劃是使用 YOLOv4 框架,我們來(lái)測(cè)試一個(gè)來(lái)自模型動(dòng)物園的示例。有“ yolov4_leaky_spp_m”預(yù)訓(xùn)練模型。

sudo xlnx-config --xmutil loadapp nlp-smartvision

# the number 1 is because my webcam is on video1
xlnx-vai-lib-samples.test-video yolov4 yolov4_leaky_spp_m 1

上述命令將在您第一次運(yùn)行時(shí)下載模型。模型安裝到 ~/snap/xlnx-vai-lib-samples/current/models目錄

pYYBAGNYqjeARhIAAAF1wzthyH8116.png
?

有了這個(gè),Kria 運(yùn)行良好,讓我們訓(xùn)練我們自己的模型

PC:運(yùn)行 YOLOv4 模型訓(xùn)練

要訓(xùn)??練模型,請(qǐng)遵循 Xilinx 提供的07-yolov4-tutorial文檔。它是為 Vitis v1.3 編寫的,但當(dāng)前 Vitis v2.0 的步驟也完全相同。

該應(yīng)用程序用于檢測(cè)火災(zāi)事件,因此在此處下載火災(zāi)圖像開源數(shù)據(jù)集

fire-smoke(2059 年的圖像,包括標(biāo)簽)-GoogleDrive

對(duì)于培訓(xùn),請(qǐng)參考.cfg此處的火災(zāi)數(shù)據(jù)集文件。

我們必須修改此.cfg配置文件以與 Xilinx Zynq Ultrascale+ DPU 兼容:

[#1] Xilinx 建議文件輸入大小為 512x512(或 416x416 以加快推理速度)

poYBAGNYqjmAafIZAABP3q7SsTQ759.png
?

[#2] DPU 不支持 MISH 激活層,因此將它們全部替換為 Leaky 激活層

pYYBAGNYqjuAaDKNAACz7VZGtao949.png
?

[#3] DPU 僅支持最大 SPP maxpool 內(nèi)核大小為 8。默認(rèn)設(shè)置為 5、9、13。但我決定將其更改為 5、6、8。

poYBAGNYqj-ALG5TAABJaXDKc6A429.png
?

我在 Google Colab 上對(duì)其進(jìn)行了訓(xùn)練。我遵循了 YOLOv4 的標(biāo)準(zhǔn)訓(xùn)練過(guò)程,沒有做太多修改。

在我的 github 頁(yè)面中找到包含分步說(shuō)明的 Jupyter 筆記本。

這是損失的進(jìn)展圖。我運(yùn)行了大約 1000 次迭代,因?yàn)槲覜]有太多的帶寬資源可以繼續(xù)。我覺得這個(gè)原型的準(zhǔn)確性已經(jīng)足夠好了,但如果可以的話,我建議訓(xùn)練到幾千次迭代。

poYBAGNYqkKAB6P9AAKhjlUxgCw823.png
?

下載最佳權(quán)重文件 ( yolov4-fire-xilinx_1000.weights)。我在 CPU 上本地運(yùn)行 yolov4 推理,一張圖像大約需要 20 秒!稍后我們將看到它可以使用 FPGA 加速到接近實(shí)時(shí)的速度。

./darknet detector test ../cfg/fire.data ../yolov4-fire.cfg ../yolov4-fire_1000.weights image.jpg -thresh 0.1
pYYBAGNYqkWAa8qZAAFytbR1fmo457.png
?

我們現(xiàn)在擁有經(jīng)過(guò)訓(xùn)練的模型,并準(zhǔn)備將其轉(zhuǎn)換為部署在 Kria 上。

PC:轉(zhuǎn)換TF模型

下一步是將暗網(wǎng)模型轉(zhuǎn)換為凍結(jié)的張量流圖。keras-YOLOv3-model-set 存儲(chǔ)庫(kù)為此提供了一些有用的腳本。我們將在 Vitis AI 存儲(chǔ)庫(kù)中運(yùn)行一些腳本。

首先安裝docker,使用這個(gè)命令:

sudo apt install docker.io
sudo service docker start
sudo chmod 666 /var/run/docker.sock # Update your group membership

拉取泊塢窗圖像。這將使用以下命令下載最新的 Vitis AI Docker。請(qǐng)注意,此容器是 CPU 版本。(確保運(yùn)行 Docker 的磁盤分區(qū)至少有 100GB 的磁盤空間)

$ docker pull xilinx/vitis-ai-cpu:latest
pYYBAGNYqkeAIGyWAAGIRGckB4Q737.png
?

克隆 Vitis-AI 文件夾

git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI
cd Vitis-AI
poYBAGNYqkmAa7APAABe8nyiv0M427.png
?

啟動(dòng) Docker 實(shí)例

bash -x ./docker_run.sh xilinx/vitis-ai-cpu:latest
pYYBAGNYqk6ACZQnAABg_npSY0g478.png
?

進(jìn)入 docker shell 后,克隆教程文件。在撰寫本文時(shí),Vitis v1.4/v2.0 的教程文件已被刪除,我認(rèn)為它正在升級(jí)過(guò)程中。無(wú)論如何,該教程在較新的版本中都可以正常工作,因此請(qǐng)恢復(fù)到最新的 v1.3 提交。

> git clone https://github.com/Xilinx/Vitis-AI-Tutorials.git
> cd ./Vitis-AI-Tutorials/
> git reset --hard e53cd4e6565cb56fdce2f88ed38942a569849fbd # Tutorial v1.3

現(xiàn)在我們可以從這些目錄訪問(wèn) YOLOv4 教程:

  • 從主機(jī)目錄:~/Documents/Vitis-AI/Vitis-AI-Tutorials/Design_Tutorials/07-yolov4-tutorial
  • 從 docker 實(shí)例中:/workspace/Vitis-AI-Tutorials/07-yolov4-tutorial

進(jìn)入教程文件夾,創(chuàng)建一個(gè)名為“ my_models ”的新文件夾并復(fù)制這些文件:

  • 訓(xùn)練后的模型權(quán)重:yolov4-fire-xilinx_last.weights
  • 訓(xùn)練配置文件:yolov4-fire-xilinx.cfg
pYYBAGNYqlCAWsmVAABfimcZNms864.png
?

在 scripts 文件夾下,您將找到convert_yolov4腳本。編輯文件以指向我們自己的模型(cfg 和 weights 文件):

  • ../my_models/yolov4-fire-xilinx.cfg \
  • ../my_models/yolov4-fire-xilinx_last.weights \
pYYBAGNYqlKAfzEnAAB11MCdocg766.png
?

現(xiàn)在回到終端并輸入 docker 實(shí)例。激活 tensorflow 環(huán)境。我們將開始轉(zhuǎn)換 yolo 模型的過(guò)程

> conda activate vitis-ai-tensorflow
> cd /workspace/Vitis-AI-Tutorials/Design_Tutorials/07-yolov4-tutorial/scripts/
> bash convert_yolov4.sh

轉(zhuǎn)換后,您現(xiàn)在可以在“keras_model”文件夾中看到 Keras 模型 (.h5)。以及“tf_model”文件夾下的凍結(jié)模型(.pb)。

pYYBAGNYqlWAaSP4AABp4qSikGo847.png
?

PC:量化模型

我們需要將部分訓(xùn)練圖像復(fù)制到文件夾“ yolov4_images ”。這些圖像將用于量化期間的校準(zhǔn)。

創(chuàng)建一個(gè)名為“ my_calibration_images ”的文件夾,并在其中粘貼一些訓(xùn)練圖像的隨機(jī)文件。然后我們可以將所有圖像的名稱列出到 txt 文件中。

> ls ./my_calibration_images/ > tf_calib.txt
pYYBAGNYqlmAFtvGAAK5tvnA-lA407.png
?

然后編輯yolov4_graph_input_keras_fn.py ,指向這些文件位置。

poYBAGNYqluACR5qAABzZAvvV2Q604.png
見第 26-27 行
?

運(yùn)行./quantize_yolov4.sh。這將在yolov4_quantized目錄中生成一個(gè)量化圖。

poYBAGNYql2AI-tlAACF8ZvYCFM536.png
?

現(xiàn)在您將在“yolov4_quantized”文件夾中看到量化的凍結(jié)模型。

pYYBAGNYqmCAJxxWAACA7Z8_4F4690.png
?

PC:編譯xmodel和prototxt

創(chuàng)建用于編譯 xmodel 的 arch.json,并將其保存到相同的“ my_models 文件夾中。

請(qǐng)注意使用我們之前在 Kria 上看到的相同 DPU 指紋。在這種情況下,以下內(nèi)容適用于 Kria B3136 配置 (Vitis AI 1.3/1.4/2.0)

{
"fingerprint":"0x1000020F6014406"
}
poYBAGNYqmKAbg0wAACLKRTgygQ587.png
?

修改compile_yolov4.sh指向我們自己的文件

NET_NAME=dpu_yolov4
ARCH=/workspace/Vitis-AI-Tutorials/Design_Tutorials/07-yolov4-tutorial/my_models/arch.json
vai_c_tensorflow --frozen_pb ../yolov4_quantized/quantize_eval_model.pb \
--arch ${ARCH} \
--output_dir ../yolov4_compiled/ \
--net_name ${NET_NAME} \
--options "{'mode':'normal','save_kernel':'', 'input_shape':'1,512,512,3'}"

運(yùn)行編譯

> bash -x  compile_yolov4.sh
pYYBAGNYqmaAciNTAACfAAqMDY4431.png
?

在“yolov4_compiled”文件夾中,您將看到 meta.json 和 dpu_yolov4.xmodel。這構(gòu)成了可部署模型。您可以將這些文件復(fù)制到 Kria,因?yàn)槲覀兘酉聛?lái)將使用它。

poYBAGNYqmiAX8MAAABfdqbWiYQ325.png
?

請(qǐng)注意,如果您遵循舊指南,您可能會(huì)看到正在使用的 *.elf 文件。這被 *.xmodel 文件替換

從 Vitis-AI v1.3 開始,該工具不再生成 *.elf 文件。而不是 *.xmodel 將用于在邊緣設(shè)備上部署模型。

對(duì)于某些應(yīng)用程序,需要*.prototxt文件和*.xmodel文件。要?jiǎng)?chuàng)建 prototxt,首先我們可以復(fù)制示例并進(jìn)行修改。

請(qǐng)注意根據(jù)您的 YOLO 配置要遵循的事項(xiàng):

  • “biases”:必須與 yolo.cfg 文件中的“anchors”相同
  • “num_classes”:必須與 yolo.cfg 文件中的“classes”相同
  • “l(fā)ayer_name”:必須與 xmodel 文件中的輸出相同
poYBAGNYqmuAZ01mAAHIlge2XTY711.png
?

對(duì)于 layer_name,您可以轉(zhuǎn)到 Netron ( https://netron.app/ ) 并打開 your.xmodel 文件。由于 YOLO 模型有 3 個(gè)輸出,您還會(huì)看到 3 個(gè)結(jié)束節(jié)點(diǎn)。

對(duì)于每個(gè)節(jié)點(diǎn) (fix2float),您可以從名稱中找到編號(hào)。

pYYBAGNYqm2AMOLFAAByRUNyWBg399.png
?

如果您在運(yùn)行模型時(shí)可能遇到分段錯(cuò)誤,很可能是由于.prototxt文件配置錯(cuò)誤。如果是這樣,請(qǐng)返回此處并驗(yàn)證一切是否正確。

Kria:在 Kria Ubuntu 上測(cè)試部署

這些是您應(yīng)該復(fù)制到 Kria 的必要文件。

創(chuàng)建一個(gè)名為“dpu_yolov4”的文件夾并復(fù)制所有模型文件。我選擇在我的 Documents 文件夾中創(chuàng)建它。該應(yīng)用程序需要以下 3 個(gè)文件:

  • 元.json
  • dpu_yolov4.xmodel
  • dpu_yolov4.prototxt
poYBAGNYqm-AZ6fJAAARLPY2PTw292.png
?

我們可以通過(guò)直接從 snap bin 文件夾中調(diào)用test_video_yolov4可執(zhí)行文件來(lái)測(cè)試模型。

> sudo xlnx-config --xmutil loadapp nlp-smartvision # Load the DPU bitstream

> cd ~/Documents/
> /snap/xlnx-vai-lib-samples/current/bin/test_video_yolov4 dpu_yolov4 0

你會(huì)看到它檢測(cè)到所有的火。在這種情況下,有多個(gè)重疊的框。我們?cè)趧?chuàng)建 python 應(yīng)用程序時(shí)會(huì)考慮到這一點(diǎn)。

poYBAGNYqnSAVOQMAAB1oDDpCAE898.png
?

Kria:Python 應(yīng)用程序?qū)崿F(xiàn)

在我的 Github 頁(yè)面中,您將找到我的完整應(yīng)用程序?qū)崿F(xiàn)。它考慮了重疊框并執(zhí)行非最大抑制 (NMS) 邊界框算法。它還打印邊界框的置信度。此外,坐標(biāo)記錄在框架中。在現(xiàn)實(shí)生活中的系統(tǒng)中,這些信息將被發(fā)送到轉(zhuǎn)發(fā)器并提醒負(fù)責(zé)人員。

pYYBAGNYqnaATkWxAADYGGmW1Ao290.png
?

視頻

?

結(jié)論

使用賽靈思工具進(jìn)行加速,我們可以看到推理如何從我的 PC CPU 上的 20 秒 1 幀提高到賽靈思 DPU 加速器上的至少 5 幀/秒。這相當(dāng)于將推理速度提高了 100 倍!由于 Kria 還是一款小巧輕便的設(shè)備,它具有高性能、易于部署和低功耗的特點(diǎn)。

pYYBAGNYqnuAefW0AAV1YFvq8NE481.png
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)