1.1 常见的EdgeAI应用程序框架
EdgeAI即常说的边缘智能,边缘智能包含两大核心功能:
- 边缘负责将现实世界的各种物理量数字化,然后整合数据,然后跟云端双向通信,例如,将温度、压力、位置等数字化后,整合信息上传并获得下行的命令
- 智能负责从原始的数据中抽取出有用的信息,例如,物体在视频中的位置和类别
边缘智能应用程序中常见的模块是EdgeX Foundry和OpenVINOTM工具包:
- EdgeX Foundry负责从边缘处的传感器(即“物”物)收集数据,并作为双向传输引擎向企业、云和本地应用发送数据,以及从这些应用接收数据。
- OpenVINOTM工具包负责在边缘端实现AI模型的推理计算,获得推理结果
EdgeX Foundry与OpenVINOTM工具包共同实现边缘智能的典型框架,如图1-1所示。
图1-1 边缘智能应用程序典型框架
1.1.1 EdgeX Foundry简介
EdgeX Foundry是LF Edge旗下的一款开源、不受供应商限制的边缘物联网中间件平台,负责从边缘处的传感器(即“物”物)收集数据,并作为双向传输引擎向企业、云和本地应用发送数据,以及从这些应用接收数据,如图1-2所示。
图1-2 EdgeX Foundry
在边缘智能应用中使用EdgeX Foundry的好处:
- EdgeX为设备数据引入、规范化及边缘智能 (AI/ML)提供可替换的参考服务
- EdgeX共享支持新型物联网数据服务和高级边缘计算应用
- EdgeX能加快完整边缘解决方案和/或边缘硬件解决方案的上市速度
1.1.2OpenVINOTM 2022.1简介
OpenVINO工具包开源且商用免费,用于深度学习模型优化和部署,如图1-3所示。z
图1-3 OpenVINO工具包
OpenVINO工具包2022.1版于2022年3月22日正式发布,根据官宣《OpenVINO? 迎来迄今为止最重大更新,2022.1新特性抢先看》,OpenVINO2022.1将是迄今为止最大变化的版本。
从开发者的角度来看,对于提升开发效率或运行效率有用的特性有:
- 提供预处理API函数。OpenVINO??2022.1之前版本不提供OpenVINO runtime原生的用于数据预处理的API函数,开发者必须通过第三方库,比如,OpenCV,来实现数据预处理。OpenVINO2022.1自带的预处理API可以将所有预处理步骤都集成到在执行图中,这样iGPU、CPU、VPU 或今后Intel的独立显卡都能进行数据预处理,大大提高了执行效率;相比之前,用OpenCV实现的预处理,则只能在CPU上执行,如图1-3所示。
图1-4 OpenVINO预处理API
- ONNX****前端API。前端API意味着模型可以直接被OpenVINO读入,而无需使用模型优化器进行模型转换,这对于使用 ONNX 模型的开发人员非常有用。OpenVINO2022.1自动转换ONNX模型的速度(1.5秒以内)相比之前版本,有极大提升,开发人员已经感受不到ONNX模型自动转换的时间消耗了。
- AUTO **设备插件。**AUTO设备插件自动将AI推理计算加载到最合适的硬件设备上(CPU, GPU, VPU等),无需额外的开发工作即可提高模型在异构系统中(例如:12代CPU + Iris Xe 集成显卡 + DG2 独显) 的推理性能和可移植性。
- 支持直接读入飞桨模型,如图1-4所示。
图1-5 OpenVINOTM支持的深度学习框架
为实现将OpenVINO推理结果通过MQTT推送给EdgeX Foundry,本文将依次介绍:
- 使用 OpenVINO开发YOLOv5模型推理程序
- 运行带ds-mqtt的EdgeX Foundry
- 在EdgeX UI中新建MQTT Device
- 将OpenVINO推理结果推送给MQTT Broker
1.2使用 OpenVINO开发YOLOv5模型推理程序
1.2.1YOLOv5简介
Ultralytics公司贡献的YOLOv5 PyTorch (https://github.com/ultralytics/yolov5)实现版,由于其工程化和文档做的特别好,深受广大AI开发者的喜爱,GitHub上的星标超过了23.8K,而且被PyTorch官方收录于PyTorch的官方模型仓。在产业实践中,也有无数的开发者将YOLOv5直接用于自己的项目。
由于YOLOv5精度高速度快(最新的YOLOv5模型精度如下所示),使得产业界里面使用YOLOv5模型做产品和项目的人非常多。