博客專欄

        EEPW首頁 > 博客 > 上手測試 Hailo:在 Toradex 模塊上加速邊緣 AI

        上手測試 Hailo:在 Toradex 模塊上加速邊緣 AI

        發布人:toradex 時間:2025-03-06 來源:工程師 發布文章

        by Toradex Allan Kamimura

        邊緣計算機視覺

        為何選擇邊緣計算?

        嵌入式設備日益智能化,許多機器學習和計算機視覺任務正被推向邊緣設備。在此類設備上運行 AI 模型雖具挑戰性,卻帶來諸多優勢:

        1. 降低延遲: 在設備端處理數據,避免了向云端或中央處理器傳輸數據的等待時間

        2. 增強隱私保護:敏感數據保留在設備內,確保符合嚴格的隱私法規要求。

        3. 節省帶寬成本:邊緣處理減少了對集中式服務器發送大量數據的需求。

        4. 提升可靠性:系統可在無網絡連接的情況下獨立運作。

        為何需要外部 AI 加速器?

        Toradex 提供多種計算機模塊(SoM),其中一些集成了神經網絡處理單元(NPU),能夠應對不同的 AI 工作負載。例如,Verdin iMX8M PlusVerdin iMX95和 Aquila AM69 均配備了專為邊緣推理加速設計的 NPU,使其適用于眾多計算機視覺和機器學習應用。

        盡管這些模塊提供了強大的 AI 解決方案,但諸如 Hailo-8、EdgeX、MemryX 及 Google Coral 等外部 AI 加速器通過提供模塊化、解耦且可擴展的邊緣 AI 推理方案來應對挑戰。這帶來了更高的靈活性和面向未來的 AI 能力。

        1. 將 AI 處理與 SoC 供應商軟件解耦
        在邊緣運行機器學習面臨的一大挑戰是將模型適配到特定硬件或運行庫上。無論是 NXP 的 eiQ 平臺、TI 的 Edge AI Studio 還是 ONNX 導出工具,每種都有其專屬的 AI 工具包和優化策略。外部 AI 加速器將 AI 工作負載從其他硬件中分離出來,提供了一個統一的跨多硬件平臺的運行環境。

        示例: 一個基于 x86 設備并使用 Hailo-8 AI 加速器開發的計算機視覺解決方案,可以無縫遷移至搭載 Hailo-8 的 Aquila AM69 模塊上而無需重構整個 AI 堆棧。這種解耦確保了僅需最小調整即可完成遷移,大大縮短了產品上市時間。

        2. 模塊化與可擴展性
        AI 應用具有動態特性,隨著工作負載復雜度的增加或新功能的創建,性能需求可能會發生變化。雖然內置的 NPU 能提供堅實的解決方案,但有時它們可能難以適應新的場景。

        Hailo簡介

        Hailo是一家 AI 處理器制造商,其產品旨在邊緣端上運行先進的機器學習應用,能夠廣泛應用于智慧城市、汽車、制造、農業、零售等多個行業和領域。

        我們使用 Hailo-8 M.2 模塊在多款 Toradex 模塊上進行了測試。Hailo-8 M.2 模塊是一款具備 26 TOPS 算力及 PCIe Gen-3.0 4通道 M-key 接口的 AI 加速器模塊。該 M.2 模塊可插入多種 Toradex 載板中,實現實時的深度神經網絡推理。

        如何 Hailo 充分利用 Toradex 生態系統?

        釋放預處理和后處理任務

        Hailo Pre-Post Processing Steps

        來源: https://hailo.ai/blog/customer-case-study-developing-a-high-performance-application-on-an-embedded-edge-ai-device/

        典型的計算機視覺流程遵循線性模式。從攝像頭捕捉源開始,直到應用程序采取行動,圖像必須經過每一個處理步驟。這意味著如果任何一個步驟比下一個耗時更長,那就是瓶頸所在。

        通常,在比較機器學習模型或硬件時,我們會非常關注推理速度,但這只是問題的一部分。

        完整的軟件堆棧

        Hailo 是一個完整的人工智能解決方案,支持常見機器學習工作流中的大部分步驟。

        1. 性能評估

          1. TAPPAS 是一個包含應用示例的代碼庫。

          2. Model Zoo 不僅提供了一些模型的基準測試結果,還包括預訓練模型。

        2. 模型訓練

          1. 部分預訓練模型附帶了再訓練環境。

        3. 編譯器和運行庫



          1. Hailo Dataflow 編譯器

          2. pyHailoRT 和 GStreamer 插件

        從 Toradex 方面來看,這一工作流程可以通過使用 Torizon 云平臺得到補充。

        1. 監控性能

          1. 提前識別任何問題,確保系統可靠性。

        2. OTA 更新

          1. 輕松更新量產設備。

        支持 Toradex 模塊硬件

        硬件

        支持的硬件配置

        系列模塊載板Hailo
        AquilaTI AM69
        (1+2 x PCIe 3.0)
        Clover
        (M.2 key B+M)
        Hailo-8
        Hailo-8L
        AquilaNXP i.MX 95
        (1 x PCIe 3.0)
        Clover
        (M.2 key B+M)
        Hailo-8
        Hailo-8L
        VerdinNXP i.MX 95
        (1 x PCIe 3.0)
        Mallow
        (M.2 key B)
        Hailo-8
        Hailo-8L
        VerdinNXP i.MX 8M Plus
        (1 x PCIe 3.0)
        Mallow
        (M.2 key B)
        Hailo-8
        Hailo-8L
        VerdinNXP i.MX 8M Mini
        (1 x PCIe 2.0)
        Mallow
        (M.2 key B)
        Hailo-8
        Hailo-8L
        ApalisNXP i.MX8
        (2 x PCIe 3.0)
        Ixora
        (Mini PCIe)
        Hailo-8R mPCIe

        軟件

        OS版本其他的資源
        Torizon OSBSP 7meta-hailo layer (即將上線)
        Torizon OSBSP 6runtime container (即將上線)
        Torizon OS MinimalBSP 6meta-hailo kirkstone
        OpenEmbedded layer for GStreamer 1.0
        tdx-reference-multimediaBSP 6meta-hailo kirkstone

        YOLOv5 示例

        在本例中,我們將運行來自 Tappas 的演示應用程序:
        完成此示例后,您應得到類似以下的輸出。以 60+ FPS 的速度運行(取決于您的攝像頭)。

        Hailo Pre-Post Processing Steps

        我們將使用:

        • 攝像頭

          • 如果使用 USB 攝像頭,由于攝像頭的捕捉速度,幀率可能會非常低。

        • 顯示器

        • Verdin i.MX8MP + Mallow Carrier 載板

          • Verdin iMX8M Plus QuadLite 1GB IT (0065) 不兼容 Framos 攝像頭。

        • Hailo AI Accelerator

        步驟:

        1. 從源碼構建 Torizon OS

          1. 構建基礎 Torizon OS

          2. 添加依賴項

        2. 硬件設置

          1. 連接Hailo設備

          2. 連接攝像頭

          3. 安裝新鏡像

        3. 檢查所有配置

        4. 運行示例

        從源代碼構建 Torizon OS

        完整指南

        首先,您可能需要檢查計算機的 RAM 和磁盤空間

        • 用于 Yocto 項目構建的計算機

        構建 Torizon OS 基礎鏡像
        我們將使用 CROPS 容器來構建以下鏡像:

        Torizon OS DistoMachineTorizon OS Image Target版本
        torizonverdin-imx8mptorizon-minimal6.8.0

        創建工作目錄

        cd ~
        mkdir ~/yocto-workdir

        運行容器(這將構建基礎鏡像)

        這將占用大量內存,并需要幾個小時才能完成。

        命令的第二行將主機卷映射到容器的 workdir 目錄。請注意,此文件夾 ~/yocto-workdir 是在上一步中創建的。

        docker run --rm -it --name=crops \
          -v ~/yocto-workdir:/workdir \
          --workdir=/workdir \
          -e MACHINE="verdin-imx8mp" \
          -e IMAGE="torizon-minimal" \
          -e DISTRO="torizon" \
          -e BRANCH="refs/tags/6.8.0" \
          -e MANIFEST="torizoncore/default.xml" \
          -e ACCEPT_FSL_EULA="1" \
          -e BB_NUMBER_THREADS="2" \
          -e PARALLEL_MAKE="-j 2" \ # not sure if I can pass those like this
          torizon/crops:kirkstone-6.x.y startup-tdx.sh

        將依賴項添加到鏡像

        要添加依賴項,首先進入 ~/yocto-workdir/layers 文件夾。

        cd ./layers

        我們將添加下面 layers:

        • meta-hailo

        • meta-gstreamer1.0

        • meta-toradex-framos

        更多關于 meta layers 的內容,請參考 完整的文檔。

        在 torizon/crops:kirkstone-6.x.y 容器中, 運行 bitbake add layers 命令。

        bitbake-layers add-layer meta-hailo/meta-hailo-accelerator
        bitbake-layers add-layer meta-hailo/meta-hailo-libhailort
        bitbake-layers add-layer meta-hailo/meta-hailo-tappas
        bitbake-layers add-layer meta-hailo/meta-hailo-vpu
        bitbake-layers add-layer meta-toradex-framos
        bitbake-layers add-layer meta-gstreamer1.0

        在 build-torizon/conf/local.conf 文件中添加 packages。在末尾添加下面內容。

        IMAGE_INSTALL:append = " libhailort hailortcli pyhailort libgsthailo hailo-pci hailo-firmware"
        IMAGE_INSTALL:append = " gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad"
        IMAGE_INSTALL:append = " v4l-utils"

        使用新的 layers 編譯鏡像。

        bitbake torizon-minimal

        你可以在下面位置找到兼容 Toradex Easy Installer 的安裝鏡像  ~/yocto-workdir/build-torizon/deploy/images/verdin-imx8mp/torizon-minimal-verdin-imx8mp-Tezi_6.8.0-devel-<date>+build.0.tar.

        硬件設置

        連接Hailo設備

        將 Hailo 設備插入 Mallow 載板的 M.2 插槽中。

        Hailo Device Connect to Mallow Carrier Board

        連接攝像頭

        將攝像頭連接到 Mallow 載板的 MIPI-CSI 接口上。

        MIPI-CSI connector of the Mallow Carrier Board

        安裝新的 Torizon OS 鏡像

        使用 Toradex Easy Installer (Tezi)  將新鏡像刷入設備。

        1. 下載Tezi

        2. 將設備置于恢復模式

        3. 安裝新編譯的鏡像

        Toradex Easy Installer - Torizon Installation

        檢查安裝情況

        Hailo 設備

        sudo su
        hailocli scan
        hailocli device-info

        這些命令的輸出應能檢測到設備已正確連接且驅動程序正常工作。

        顯示屏

        gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

        您應該在屏幕上看到一些彩色圖案。

        Camera 設備

        此步驟可能因使用的相機而異。

        v4l2-ctl -d2 -D
        v4l2-ctl --list-formats-ext -d /dev/video2

        對于 Framos 相機,輸出如下。

        root@verdin-imx8mp-15445736:~# v4l2-ctl --list-formats-ext -d /dev/video2
        ioctl: VIDIOC_ENUM_FMT
        	Type: Video Capture
        
        	[0]: 'YUYV' (YUYV 4:2:2)
        		Size: Stepwise 176x144 - 4096x3072 with step 16/8
        	[1]: 'NV12' (Y/CbCr 4:2:0)
        		Size: Stepwise 176x144 - 4096x3072 with step 16/8
        	[2]: 'NV16' (Y/CbCr 4:2:2)
        		Size: Stepwise 176x144 - 4096x3072 with step 16/8
        	[3]: 'RG12' (12-bit Bayer RGRG/GBGB)
        		Size: Stepwise 176x144 - 4096x3072 with step 16/8

        在演示中,我們將使用 YUYV 格式。因此請記住其中的數值。

        gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw ! videoconvert ! autovideosink

        運行示例

        某些攝像頭會指定分辨率和幀數,因此需相應調整這些值。這可以通過修改 PIPELINE 變量的 framerate 值來實現。

        sudo su
        cd ~/apps/detection/
        ./detection.sh


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 九江县| 常宁市| 秭归县| 克山县| 塘沽区| 青浦区| 栾城县| 怀集县| 赫章县| 石门县| 五峰| 容城县| 遂昌县| 霍邱县| 荆门市| 泗水县| 蒙阴县| 泰顺县| 四平市| 五大连池市| 泰和县| 崇礼县| 德昌县| 梓潼县| 东平县| 绥德县| 苍梧县| 阜城县| 宜昌市| 武山县| 绥滨县| 北海市| 耿马| 界首市| 绵竹市| 晴隆县| 深州市| 朝阳县| 弋阳县| 武宁县| 方正县|