資料介紹
描述
介紹
問題:消防隊面臨著人手不足、隊伍有效戰斗力下降等諸多挑戰。最近,挑戰包括城市人口增加、更復雜的人口稠密建筑物和與大流行相關的措施。因此,為了增強消防人員對火災事件的快速響應,建議安裝一個視頻分析系統,以便及早發現火災爆發。
目標:我的解決方案包括建立一個分布式計算機視覺系統,以提供對建筑物火災的早期檢測。系統的分布式和模塊化特性允許輕松部署,而無需設置更多基礎設施。在不增加人力規模的情況下,有助于增強船員的消防能力。這可以通過使用 Xilinx Kria KV260 實現邊緣 AI 加速圖像處理功能來實現。部署時,國務院當局可以利用社區現有的監控攝像頭獲取視頻。這種模塊化方法是提供快速部署的關鍵技術,因為攝像機已經安裝到位。
開發流程總結
使用的硬件是 Xilinx Kria KV260,用于加速計算機視覺處理和以太網連接的相機套件。嵌入式軟件應使用 Vitis AI。在我的 PC 上,將使用現有的火災探測數據集訓練自定義 Yolo-V4 模型。之后,使用 Xilinx YoloV4 流程對 DPU 實例的模型進行量化、修剪和編譯。最后,它部署在 Kria KV260 上。
![pYYBAGNYqieAGF6AAAC-839USpA673.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqieAGF6AAAC-839USpA673.png)
PC:設置 SD 卡映像
首先,我們需要為 Kria KV260 Vision AI Starter Kit 準備 SD 卡。
包裝盒中提供了 16GB 的 SD 卡,但我建議至少使用 32GB,因為設置可能會超過 16GB 的空間。
我們將使用 Ubuntu 20.04.3 LTS 下載。從網站下載圖像并將其保存在您的計算機上。
![pYYBAGNYqimAE_5TAACRkAz-psg179.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqimAE_5TAACRkAz-psg179.png)
在您的 PC 上,下載 Balena Etcher 以將其寫入您的 SD 卡。
或者,您可以使用命令行(警告:確保寫入正確的驅動器,/dev/sdb
必須是您的 SD 卡)
![poYBAGNYqiyACMPuAAAu2ygugB0020.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqiyACMPuAAAu2ygugB0020.png)
完成后,您的 SD 卡已準備就緒,您可以將其插入 Kria。
Kria:設置賽靈思 Ubuntu
將 USB 鍵盤、USB 鼠標、USB 攝像頭、HDMI/DisplayPort 和以太網連接到 Kria。
![pYYBAGNYqi-AfTFAAAI89TIe4TE956.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqi-AfTFAAAI89TIe4TE956.png)
連接電源以打開 Kria,您將看到 Ubuntu 登錄屏幕。
默認登錄憑據是:用戶名:ubuntu密碼:ubuntu
啟動時,界面可能非常慢,所以我運行了這些命令來禁用動畫調整以加快速度。
gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.shell.extensions.dash-to-dock animate-show-apps false
接下來,通過執行系統更新并調用此命令將系統更新到最新版本
sudo apt upgrade
請注意,有必要進行更新,因為早期版本的 Vitis-AI 不支持 Python,如本論壇帖子中所述。
安裝用于系統管理的 xlnx-config snap 并進行配置(更多信息見 Xilinx wiki ):
sudo snap install xlnx-config --classic
xlnx-config.sysinit
現在檢查設備配置是否正常工作。
sudo xlnx-config --xmutil boardid -b som
使用示例安裝 Smart Vision 應用程序和 Vitis AI 庫。(智能視覺應用程序包含我們將重用的 DPU 的比特流,庫樣本也將用于稍后測試我們訓練的模型)
sudo xlnx-config --snap --install xlnx-nlp-smartvision
sudo snap install xlnx-vai-lib-samples
檢查已安裝的示例和應用程序
xlnx-vai-lib-samples.info
sudo xlnx-config --xmutil listapps
運行上述命令后,您還會注意到 Model Zoo 樣本所需的 DPU 指紋。
![pYYBAGNYqjKARZ0YAAA-iUUAHLk854.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqjKARZ0YAAA-iUUAHLk854.png)
讓我們運行其中一個示例。在我們這樣做之前,請連接您的 USB 攝像頭并確保檢測到視頻設備。我正在使用 Logitech C170,它在/dev/video1
v4l2-ctl --list-devices
![poYBAGNYqjSAOPqUAAA0DHSE_7M842.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqjSAOPqUAAA0DHSE_7M842.png)
加載智能視覺應用程序并啟動它。您可以四處玩耍并了解 Kria 的功能。
sudo xlnx-config --xmutil loadapp nlp-smartvision
xlnx-nlp-smartvision.nlp-smartvision -u
在運行任何加速器應用程序之前,我們總是需要從比特流中加載 DPU。下一次,我們可以簡單地調用 smartvision 應用程序,它將為我們加載比特流。或者,您可以創建自己的打包應用程序。
注意:加速器比特流位于/lib/firmware/xilinx/nlp-smartvision/
.
由于我的計劃是使用 YOLOv4 框架,我們來測試一個來自模型動物園的示例。有“ yolov4_leaky_spp_m
”預訓練模型。
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
上述命令將在您第一次運行時下載模型。模型安裝到 ~/snap/xlnx-vai-lib-samples/current/models
目錄
![pYYBAGNYqjeARhIAAAF1wzthyH8116.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqjeARhIAAAF1wzthyH8116.png)
有了這個,Kria 運行良好,讓我們訓練我們自己的模型
PC:運行 YOLOv4 模型訓練
要訓??練模型,請遵循 Xilinx 提供的07-yolov4-tutorial文檔。它是為 Vitis v1.3 編寫的,但當前 Vitis v2.0 的步驟也完全相同。
該應用程序用于檢測火災事件,因此在此處下載火災圖像開源數據集:
fire-smoke(2059 年的圖像,包括標簽)-GoogleDrive
對于培訓,請參考.cfg
此處的火災數據集文件。
我們必須修改此.cfg
配置文件以與 Xilinx Zynq Ultrascale+ DPU 兼容:
[#1] Xilinx 建議文件輸入大小為 512x512(或 416x416 以加快推理速度)
![poYBAGNYqjmAafIZAABP3q7SsTQ759.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqjmAafIZAABP3q7SsTQ759.png)
[#2] DPU 不支持 MISH 激活層,因此將它們全部替換為 Leaky 激活層
![pYYBAGNYqjuAaDKNAACz7VZGtao949.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqjuAaDKNAACz7VZGtao949.png)
[#3] DPU 僅支持最大 SPP maxpool 內核大小為 8。默認設置為 5、9、13。但我決定將其更改為 5、6、8。
![poYBAGNYqj-ALG5TAABJaXDKc6A429.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqj-ALG5TAABJaXDKc6A429.png)
我在 Google Colab 上對其進行了訓練。我遵循了 YOLOv4 的標準訓練過程,沒有做太多修改。
在我的 github 頁面中找到包含分步說明的 Jupyter 筆記本。
這是損失的進展圖。我運行了大約 1000 次迭代,因為我沒有太多的帶寬資源可以繼續。我覺得這個原型的準確性已經足夠好了,但如果可以的話,我建議訓練到幾千次迭代。
![poYBAGNYqkKAB6P9AAKhjlUxgCw823.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqkKAB6P9AAKhjlUxgCw823.png)
下載最佳權重文件 ( yolov4-fire-xilinx_1000.weights
)。我在 CPU 上本地運行 yolov4 推理,一張圖像大約需要 20 秒!稍后我們將看到它可以使用 FPGA 加速到接近實時的速度。
./darknet detector test ../cfg/fire.data ../yolov4-fire.cfg ../yolov4-fire_1000.weights image.jpg -thresh 0.1
![pYYBAGNYqkWAa8qZAAFytbR1fmo457.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqkWAa8qZAAFytbR1fmo457.png)
我們現在擁有經過訓練的模型,并準備將其轉換為部署在 Kria 上。
PC:轉換TF模型
下一步是將暗網模型轉換為凍結的張量流圖。keras-YOLOv3-model-set 存儲庫為此提供了一些有用的腳本。我們將在 Vitis AI 存儲庫中運行一些腳本。
首先安裝docker,使用這個命令:
sudo apt install docker.io
sudo service docker start
sudo chmod 666 /var/run/docker.sock # Update your group membership
拉取泊塢窗圖像。這將使用以下命令下載最新的 Vitis AI Docker。請注意,此容器是 CPU 版本。(確保運行 Docker 的磁盤分區至少有 100GB 的磁盤空間)
$ docker pull xilinx/vitis-ai-cpu:latest
![pYYBAGNYqkeAIGyWAAGIRGckB4Q737.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqkeAIGyWAAGIRGckB4Q737.png)
克隆 Vitis-AI 文件夾
git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI
cd Vitis-AI
![poYBAGNYqkmAa7APAABe8nyiv0M427.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqkmAa7APAABe8nyiv0M427.png)
啟動 Docker 實例
bash -x ./docker_run.sh xilinx/vitis-ai-cpu:latest
![pYYBAGNYqk6ACZQnAABg_npSY0g478.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqk6ACZQnAABg_npSY0g478.png)
進入 docker shell 后,克隆教程文件。在撰寫本文時,Vitis v1.4/v2.0 的教程文件已被刪除,我認為它正在升級過程中。無論如何,該教程在較新的版本中都可以正常工作,因此請恢復到最新的 v1.3 提交。
> git clone https://github.com/Xilinx/Vitis-AI-Tutorials.git
> cd ./Vitis-AI-Tutorials/
> git reset --hard e53cd4e6565cb56fdce2f88ed38942a569849fbd # Tutorial v1.3
現在我們可以從這些目錄訪問 YOLOv4 教程:
-
從主機目錄:
~/Documents/Vitis-AI/Vitis-AI-Tutorials/Design_Tutorials/07-yolov4-tutorial
-
從 docker 實例中:
/workspace/Vitis-AI-Tutorials/07-yolov4-tutorial
進入教程文件夾,創建一個名為“ my_models ”的新文件夾并復制這些文件:
- 訓練后的模型權重:yolov4-fire-xilinx_last.weights
- 訓練配置文件:yolov4-fire-xilinx.cfg
![pYYBAGNYqlCAWsmVAABfimcZNms864.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqlCAWsmVAABfimcZNms864.png)
在 scripts 文件夾下,您將找到convert_yolov4腳本。編輯文件以指向我們自己的模型(cfg 和 weights 文件):
-
../my_models/yolov4-fire-xilinx.cfg \
-
../my_models/yolov4-fire-xilinx_last.weights \
![pYYBAGNYqlKAfzEnAAB11MCdocg766.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqlKAfzEnAAB11MCdocg766.png)
現在回到終端并輸入 docker 實例。激活 tensorflow 環境。我們將開始轉換 yolo 模型的過程
> conda activate vitis-ai-tensorflow
> cd /workspace/Vitis-AI-Tutorials/Design_Tutorials/07-yolov4-tutorial/scripts/
> bash convert_yolov4.sh
轉換后,您現在可以在“keras_model”文件夾中看到 Keras 模型 (.h5)。以及“tf_model”文件夾下的凍結模型(.pb)。
![pYYBAGNYqlWAaSP4AABp4qSikGo847.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqlWAaSP4AABp4qSikGo847.png)
PC:量化模型
我們需要將部分訓練圖像復制到文件夾“ yolov4_images ”。這些圖像將用于量化期間的校準。
創建一個名為“ my_calibration_images ”的文件夾,并在其中粘貼一些訓練圖像的隨機文件。然后我們可以將所有圖像的名稱列出到 txt 文件中。
> ls ./my_calibration_images/ > tf_calib.txt
![pYYBAGNYqlmAFtvGAAK5tvnA-lA407.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqlmAFtvGAAK5tvnA-lA407.png)
然后編輯yolov4_graph_input_keras_fn.py ,指向這些文件位置。
![poYBAGNYqluACR5qAABzZAvvV2Q604.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqluACR5qAABzZAvvV2Q604.png)
運行./quantize_yolov4.sh
。這將在yolov4_quantized目錄中生成一個量化圖。
![poYBAGNYql2AI-tlAACF8ZvYCFM536.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYql2AI-tlAACF8ZvYCFM536.png)
現在您將在“yolov4_quantized”文件夾中看到量化的凍結模型。
![pYYBAGNYqmCAJxxWAACA7Z8_4F4690.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqmCAJxxWAACA7Z8_4F4690.png)
PC:編譯xmodel和prototxt
創建用于編譯 xmodel 的 arch.json,并將其保存到相同的“ my_models ”文件夾中。
請注意使用我們之前在 Kria 上看到的相同 DPU 指紋。在這種情況下,以下內容適用于 Kria B3136 配置 (Vitis AI 1.3/1.4/2.0)
{
"fingerprint":"0x1000020F6014406"
}
![poYBAGNYqmKAbg0wAACLKRTgygQ587.png](https://file.elecfans.com/web2/M00/73/65/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'}"
運行編譯
> bash -x compile_yolov4.sh
![pYYBAGNYqmaAciNTAACfAAqMDY4431.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqmaAciNTAACfAAqMDY4431.png)
在“yolov4_compiled”文件夾中,您將看到 meta.json 和 dpu_yolov4.xmodel。這構成了可部署模型。您可以將這些文件復制到 Kria,因為我們接下來將使用它。
![poYBAGNYqmiAX8MAAABfdqbWiYQ325.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqmiAX8MAAABfdqbWiYQ325.png)
請注意,如果您遵循舊指南,您可能會看到正在使用的 *.elf 文件。這被 *.xmodel 文件替換
從 Vitis-AI v1.3 開始,該工具不再生成 *.elf 文件。而不是 *.xmodel 將用于在邊緣設備上部署模型。
對于某些應用程序,需要*.prototxt文件和*.xmodel文件。要創建 prototxt,首先我們可以復制示例并進行修改。
請注意根據您的 YOLO 配置要遵循的事項:
- “biases”:必須與 yolo.cfg 文件中的“anchors”相同
- “num_classes”:必須與 yolo.cfg 文件中的“classes”相同
- “layer_name”:必須與 xmodel 文件中的輸出相同
![poYBAGNYqmuAZ01mAAHIlge2XTY711.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqmuAZ01mAAHIlge2XTY711.png)
對于 layer_name,您可以轉到 Netron ( https://netron.app/ ) 并打開 your.xmodel 文件。由于 YOLO 模型有 3 個輸出,您還會看到 3 個結束節點。
對于每個節點 (fix2float),您可以從名稱中找到編號。
![pYYBAGNYqm2AMOLFAAByRUNyWBg399.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqm2AMOLFAAByRUNyWBg399.png)
如果您在運行模型時可能遇到分段錯誤,很可能是由于.prototxt文件配置錯誤。如果是這樣,請返回此處并驗證一切是否正確。
Kria:在 Kria Ubuntu 上測試部署
這些是您應該復制到 Kria 的必要文件。
創建一個名為“dpu_yolov4”的文件夾并復制所有模型文件。我選擇在我的 Documents 文件夾中創建它。該應用程序需要以下 3 個文件:
- 元.json
- dpu_yolov4.xmodel
- dpu_yolov4.prototxt
![poYBAGNYqm-AZ6fJAAARLPY2PTw292.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqm-AZ6fJAAARLPY2PTw292.png)
我們可以通過直接從 snap bin 文件夾中調用test_video_yolov4可執行文件來測試模型。
> 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
你會看到它檢測到所有的火。在這種情況下,有多個重疊的框。我們在創建 python 應用程序時會考慮到這一點。
![poYBAGNYqnSAVOQMAAB1oDDpCAE898.png](https://file.elecfans.com/web2/M00/73/65/poYBAGNYqnSAVOQMAAB1oDDpCAE898.png)
Kria:Python 應用程序實現
在我的 Github 頁面中,您將找到我的完整應用程序實現。它考慮了重疊框并執行非最大抑制 (NMS) 邊界框算法。它還打印邊界框的置信度。此外,坐標記錄在框架中。在現實生活中的系統中,這些信息將被發送到轉發器并提醒負責人員。
![pYYBAGNYqnaATkWxAADYGGmW1Ao290.png](https://file.elecfans.com/web2/M00/73/F7/pYYBAGNYqnaATkWxAADYGGmW1Ao290.png)
視頻
結論
使用賽靈思工具進行加速,我們可以看到推理如何從我的 PC CPU 上的 20 秒 1 幀提高到賽靈思 DPU 加速器上的至少 5 幀/秒。這相當于將推理速度提高了 100 倍!由于 Kria 還是一款小巧輕便的設備,它具有高性能、易于部署和低功耗的特點。
![pYYBAGNYqnuAefW0AAV1YFvq8NE481.png](https://file.elecfans.com/web2/M00/73/F8/pYYBAGNYqnuAefW0AAV1YFvq8NE481.png)
?
- Kria KV260視覺AI入門套件用戶指南
- 適用于AWS IoT Greengrass的Xilinx KV260入門指南
- Rpi SenseHAT與AMD-Xilinx Kria KR260和Petalinux的接口
- 創建自定義Kria KV260加速ML應用程序
- 使用KV260進行事故檢測
- 使用Xilinx KV260對智能家居設備進行手勢控制
- Vitis ai 1.4 KV260鏡像開源
- 在KV260上運行Yolov4 tiny
- Xilinx KV260 Vitis-AI 1.4人臉檢測
- 使用AI進行早期火災探測
- 為Kria KV260添加USB WiFi
- Kria KV260 AI視覺套件入門
- Xilinx Kria KV260套件的第一個硬件項目
- Vivado 2021.1中的Kria KV260入門
- Kria KV260上的動態交通燈系統
- 線型光束感煙火災探測器工作原理是什么 1384次閱讀
- 線型光束感煙火災探測器分為幾種 2520次閱讀
- 纜式線型感溫火災探測器火警常亮的原因 708次閱讀
- 纜式線型感溫火災探測器怎么復位 1003次閱讀
- 線型纜式感溫火災探測器和線型光纖的區別 1334次閱讀
- 線型纜式感溫火災探測器工作原理是什么 934次閱讀
- 熱解粒子式電氣火災監控探測器用的什么傳感器 409次閱讀
- 熱解粒子式電氣火災監控探測器原理 992次閱讀
- AMD Kria KR260 DPU配置教程3 2139次閱讀
- AMD Kria KR260 DPU配置教程2 2799次閱讀
- AMD Kria KR260 DPU配置教程 1142次閱讀
- 纜式感溫火災探測器在核電廠中的應用 1708次閱讀
- 如何在KV260上快速體驗Vitsi AI圖像分類示例程序 1664次閱讀
- 在u-boot中使用ethernet的方法 3997次閱讀
- 如何在LiDAR點云上進行3D對象檢測 2210次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論