一. 概述
随著深度学习越来越火热,近年恩智浦 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 系列 - PyeIQ】PyeIQ 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】 !!
评论