【ATU Book-i.MX8 系列 - eIQ】eIQ介紹

一.   概述

隨著深度學習越來越火熱,近年恩智浦 NXP 也開始著手部屬相關的應用 ; 就如人臉識別、物件識別、物件分類、肢體分析等等...故規劃出一套相當完善的 機器學習開發環境 eIQ/PyeIQ/eIQ Auto 並應用於專門為 i.MX8 系列。這能夠幫助使用者快速開發與應用機器學習,輕鬆入門機器學習的領域 !!

此文章將以系列博文的方式呈現 PyeIQ 的介紹。如下圖文章架構圖所示,此 機器學習開發環境 eIQ 是隸屬 eIQ(edge intelligence) 機器學習開發環境 - 應用層 的子系列 !!此篇文章將逐一介紹 ; 什麼是 什麼是 eIQ ? PyeIQ ? 什麼是 eIQ Auto ? 再來著重介紹此篇的主題 eIQ 的介紹 !

*** 此文章系列將以 NXP i.MX8M Plus 開發平台為主

機器學習快速上手方式,請參照 PyeIQ 實作 !!

大大通精彩方案  【ATU Book-i.MX8 系列 - PyeIQPyeIQ 2.0 安裝與應用



eIQ 系列博文 - 文章架構示意圖

 

二.  什麼是 eIQ ? 什麼是 PyeIQ ? 什麼是 eIQ Auto? eIQ 種類介紹

eIQ (edge intelligence) 是 NXP 所開發的機器學習開發環境。因避免混淆,故在此釐清 eIQ / eIQ Auto / PyeIQ 各別的應用方向與說明。如圖下所示,在 NXP i.MX8 系列的 eIQ 與 PyeIQ,以最簡單的方式來區分的話,就僅是 C / C ++ 與 Python 的平台差異。雖然近年 Python 火熱快速發展,有著大量豐富的代碼資源,提供足夠便利性,但從實際應用的角度仍是 C/C++ 較為適當快速,更能夠有效控制應用資源,以達到程式最佳化的目的。故透過 NXP 所量身打造的 eIQ 機器學習開發環境,就能無縫銜接!

在 NXP S32V 系列的 eIQ 機器學習開發環境就稱作 eIQ Auto !! 

大大通精彩方案    S32V 下的 eIQ auto 的安装使用简介分享


eIQ 各機器學習開發環境之示意圖

 

在機器學習領域中,不外乎就是定義模型、訓練模型、最佳化模型、轉換模型、進行推理等流程步驟 !!而 eIQ 機器學習開發環境則是著重於 推理層(Inferenece) 的應用,這裡將提供數種機器學習框架的推理引擎,如 Tensorflow Lite 、 ArmNN 、 ONNX 、OpenCV 等等 !! 能夠給予使用者相當完善完整的環境,讓應用無痛轉移至 i.MX8 平台上 !!


eIQ 機器學習開發環境之定位示意圖

 

三.  eIQ 介紹

eIQ 是 NXP 量身打造的機器學習開發環境(套件),主要語言是 C / C++
如下圖所示,該套件裡面整合 OpenCV 4.2、Tensorflow Lite 2.2.0 、 ArmNN 20.02.01、 ONNX Runtime 1.1.2 等開源推理引擎(Inference Engines),並提供相當豐富的硬體加速應用資源,像是 Arm Compute Libray、OpenCL、OpenVX ,可以直接向 CPU(Arm Cotex-A)、GPU(GC7000) 與 神經網路加速器 NPU(Vivante VIP8000) 溝通來達到硬體加速的目標 !


eIQ 機器學習開發環境架構示意圖

 

此外,亦提供數個範例讓開發者快速上手,如下圖所示,含有 DNN 物件偵測(Object Classification)、物件分割(Object Segmentation)、YOLOv3、肢體識別(Bodys Detection) 等等應用; 單張運行測試i.MX8QM CPU 約 92.3 ms 、 i.MX8QM GPU 約 12.5 ms 、i.MX8MPlus NPU 約 2.5 ms !!


eIQ 機器學習開發環境 DEMO 示意圖

 

 i.MX8 eIQ 套件安裝方式 : 

僅需要在原有的 Yocto BSP 設置中,將 local.conf 檔案添加以下段落 !! 則可開始重新編譯專案與生成新的映像檔(image),隨後燒入至 SD 卡中即可。

(1) 找到conf 檔案:

位於 : Yocto folder/buildxwayland/conf

(2) 重新設置 conf 檔案:

請至 /buildxwayland/conf/local.conf 加入以下指令
$ IMAGE_INSTALL_append += "packagegroup-imx-ml"
$ PACKAGECONFIG_append_pn-opencv_mx8 += " test"

$ TOOLCHAIN_TARGET_TASK_append += "tensorflow-lite-staticdev tensorflow-lite-dev"
$ TOOLCHAIN_TARGET_TASK_append += "armnn-dev onnxruntime-dev"

(3) 再次進行 BSP 編譯 :

支援 eIQ 所需的 Qt5 資源 (建議使用)
$ bitbake imx-image-full

補充說明 - eIQ 支援平台 :

 

 

四.  參考文件

[1] NXP Document - i.MX Machine Learning User's Guide
[2] NXP Document - i.MX Yocto Project User's Guide.pdf

如有任何相關 eIQ  技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 eIQ  的技術文章 !!敬請期待 【ATU Book-i.MX8 系列 - eIQ】 !!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論