文章目录
1、简介
OpenVINO的全称是:Open Visual inference and Neural network Optimization,开放视觉推理和神经网络优化工具集,它是一整套面向AI应用的Intel软件解决方案。
2、OpenVINO工具套件的构成。
2.1、Traditional Computer Vision
- OpenCV(Open Source Computer Vision Library),是一款加速计算机视觉的Intel软件,它是视觉领域最常用的库,可以轻松在Intel硬件上加速
- OpenCV是一个常用的计算机视觉库,它不仅能够读写图像,寻找边缘,旋转图像,而且还可以做一些更高级包括视频编解码,视频识别推理等高级功能。
- OpenVINO套件已经包含OpenCV。
2.2、Tools & Libraries
- 视频压缩可以靠软件,也可以靠专门的硬件处理
- 软件
- 驱动(Driver) —— 在GPU固有功能的上层
- VAAPI(Libva) —— 视频加速API
- Media-SDK —— 用来对视频进行编解码等后处理,通过Python或C++的 API 完成视频的解码编码操作,还可以通过OpenCV,FFMPEG,Gstreamer访问Media-SDK。
2.3、 DLDT
Intel为加速神经网络的计算推出了DLDT(Deep Learning Deployment Toolkit,深度学习部署套件),它是OpenVINO的一个组成部分
DLDT运行的基本步骤:
- 输入预训练模型
- 使用模型优化器:把所有模型转换成中间表示,即IR,它是python脚本,可以更改权重格式,优化拓扑
- 推理引擎读取IR文件并在AI应用中进行推理
模型优化器是一种跨平台的命令行工具,可促进训练和部署环境之间的转换,执行静态模型分析,并将深度学习模型调整为中间表示 (IR) ,通过推理引擎实现最佳执行。
模型优化器会生成模型的中间表示 (IR) 文件,可以使用推理引擎对其进行读取、加载和推理。中间表示包括一个描述网络拓扑的 .xml 文件和一个包含权重数据的 .bin 文件。一般用XML文件作为读入模型的文件,应用程序会通过前缀寻找到相同文件目录下的.BIN文件自动读入。
3、从模型到系统的完整流程
- 1、Model:获取模型
- 需要一个基于深度学习的模型来执行分析任务,比如分割,检测,细分等
- 模型在另外的框架中进行训练,例如Tensorflow或者caffe
- 2、Prepare Inference:推理前准备(转换模型格式)
- 模型通常在云环境中进行训练,云环境拥有所有的计算资源
- 但是要为推理做好准备,有时是在较小的设备上进行推理
- 模型通常采用浮点格式,有时是在执行整数或者其它设备上运行,因此还需要转换数据格式
- 3、Benchmark:性能指标基准评测。
- 了解其每秒能执行多少次推理,可以使用多种优化技术与多种数据格式对所有模型进行性能指标评测。
- 4、Select System:选择合适的平台
- 5、Decode Density:解码密度
- 想知道设备可以支持多少个摄像头,需要一个系统支持尽可能多的摄像头或者视频流,从而降低每个摄像头的成本,因此需要了解解码能力与编码能力
- 5个跟10个摄像头的编码解码密度是不同的,取决于不同设备
- 6、Full Pipeline:完整测试
- 解码、编码与推理任务是一起运行的,一起运行所得到的结果可能差强人意
- 因此要模拟完整的工作环境负载,所有功能同时执行,使用Gstreamer进行模拟
- 7、AI Application:构建应用
- 构建软件或使用OpenVINO将视频分析流程和推理整合到现有的应用中
- 构建软件或使用OpenVINO将视频分析流程和推理整合到现有的应用中
4、流程详解
4.1、Model:获取模型
有3种方法获取模型
1、使用模型下载器下载
2、从0开始自己训练模型
- (Collect)尽可能收集与推理环境相同的数据
- (Prepare)使用CV技术对这些数据进行清洗、裁剪、分离,拿到真正有用的数据,
- (Annotate)对这些分离的数据进行信息标注,这样的数据集作为我们训练的输入数据集
- (Train)训练
3、从Model Zoo中下载
许多model zoo模型都包含了原始的训练格式,包括支持使用自己的数据集进行重新训练的所有格式以及特定数据进行集体训练时,准确性与性能显著提升。
因此可以复制整个训练项目,从0开始或者从设置的检查点开始,直接用自己的数据集来替换原始的数据集。
4.2、Prepare Inference:用推理转换模型
可以将各种模型转化为ONNX格式,再使用模型优化器转化成中间的IR格式,最后使用推理引擎执行IR推理。
模型优化器可以将其转化为正确的库函数或内核,以及校准为INT8的流程。
4.3、Benchmark:性能调试
- 通过内置的性能计算器来调试
- 通过Dev Cloud 云环境进行调试
4.4、Decode Density:解码与编码能力
4.5、Full Pipeline:完整测试
- Gstreamer可以用于视频分析
-
video1.mp4
是输入视频文件 -
decodebin
对视频进行解码 -
videoconvert
转换视频格式,为下一阶段推理做准备 -
face-detection.xml
使用脸部检测模型进行人脸检测 -
emotions-recognition.xml
用输出的结果进行情绪识别
4.6、AI Application:AI应用
提供了许多相关的插件与应用