學習如何在 MYIR 的 ZU3EG FPGA 開發板上部署 Tiny YOLO v4,對比 FPGA、GPU、CPU 的性能,助力 AIoT 邊緣計算應用。
一、 為什么選擇 FPGA:應對 7nm 制程與 AI 限制 在全球半導體制程限制和高端 GPU 受限的大環境下,FPGA 成為了中國企業發展的重要路徑之一。它可支持靈活的 AIoT 應用,其靈活性與可編程性使其可以在國內成熟的 28nm 工藝甚至更低節點的制程下實現高效的硬件加速。 米爾的 ZU3EG 開發板憑借其可重構架構為 AI 和計算密集型任務提供了支持,同時避免了 7nm 工藝對國產芯片設計的制約。通過在 ZU3EG 上部署 Tiny YOLO V4,我們可以為智能家居、智慧城市等 AIoT 應用提供高效的解決方案。
CPU GPU FPGA 架構對比 二、 了解 Tiny YOLO 模型及其適用性 YOLO(You Only Look Once)是一種實時物體檢測模型,它通過一次性掃描整個圖像,實現高效的對象識別。 而其簡化版 Tiny YOLO V4 更適合嵌入式設備,具有較少的層數和參數。其輕量化特性更適合在資源受限的設備上運行,尤其在低功耗、實時檢測的邊緣計算設備中表現出色。 相比傳統 GPU,FPGA 能在小面積和低功耗下實現類似的推理性能,非常契合 AIoT 應用。像米爾 ZU3EG 這樣的 FPGA 開發板,通過底板和豐富接口的載板設計,非常適合高效的嵌入式低功耗數據處理。
Yolo V4 網絡結構圖
Tiny Yolo V4 網絡結構圖 (通過優化網絡結構和參數,保持較高檢測精度的同時,降低模型的計算量和內存占用) 三、 獲取數據集和模型 可下載開源訓練集或預訓練模型。為了確保兼容性,建議將模型轉換為 ONNX 格式,以便后續能在 FPGA 上完成優化。 1.下載 Tiny YOLO V4 模型:從Darknet 的 GitHub 倉庫 獲取 Tiny YOLO 的預訓練權重,或者在 COCO 等數據集上自行訓練模型。自定義的模型適用于特定應用場景(如車輛檢測、人臉檢測等)。 2.數據準備:若要自定義模型,可使用 LabelImg 等工具對數據集進行標注,將數據轉為 YOLO 格式。之后,可將 YOLO 格式轉換為 ONNX 格式,以便兼容 FPGA 優化工具鏈。
Tiny YOLO 在 Darknet 上訓練的截圖
四、 通過 Vivado HLS 為 FPGA 準備模型 要將模型部署到 FPGA,需要將神經網絡操作轉換為硬件級描述。使用 Xilinx 的 Vitis HLS(高級綜合)可以將 Tiny YOLO v4 的 C++ 模型代碼的轉化為 Verilog RTL(寄存器傳輸級)代碼,從而將模型從軟件世界帶入硬件實現。 詳細步驟: 1.模型層映射和優化:
Tiny YOLO 模型在 Vivado HLS 中的層層轉化流程圖 五、 使用 Vivado 綜合與部署 Verilog 到 米爾的ZU3EG FPGA開發板 當 HLS 生成的 RTL 代碼準備就緒后,可以使用 Vivado 將模型部署到 FPGA。 1.Vivado 中的設置:
2.I/O 約束與時序:
3.生成比特流并下載到 ZU3EG:
將 Tiny YOLO 處理模塊連接到 米爾ZU3EG開發板 的外設和接口 六、 在 FPGA 上測試并運行推理 現在 Tiny YOLO 已部署,可以驗證其實時對象檢測性能。 1.數據采集:
Tiny YOLO 模型在 ZU3EG 上顯示檢測結果的實時輸出,視頻幀中標注了檢測到的對象 七、 性能優化與調試技巧 為提高性能,可以進行以下調整:
不同優化配置對資源使用的影響
米爾MYC-CZU3EG/4EV/5EV-V2核心板及開發板
在MYIR 的 ZU3EG 開發平臺上提供了一種高效的解決方案。利用 FPGA 獨特的靈活性和低功耗優勢,助力未來 AIoT 設備的普及和智能升級。 |