现在常见的模型推理部署框架有很多,例如:英特尔的OpenVINO,英伟达的TensorRT,谷歌的Mediapipe。今天我们来对这些框架及其相关设备做一个介绍和对比。
OpenVINO是英特尔针对自家硬件平台开发的一套深度学习工具库,包含推断库,模型优化等等一系列与深度学习模型部署相关的功能。
OpenVINO™工具包是用于快速开发应用程序和解决方案的综合工具包,可解决各种任务,包括模拟人类视觉,自动语音识别,自然语言处理,推荐系统等。该工具包基于最新一代的人工神经网络,包括卷积神经网络(CNN),循环和基于注意力的网络,可在英特尔®硬件上扩展计算机视觉和非视觉工作负载,从而最大限度地提高性能。它通过从边缘到云的高性能,人工智能和深度学习推理来加速应用程序。
OpenVINO特点:
OpenVINO是一个比较成熟且仍在快速发展的推理库,提供的demo和sample都是很充足的,上手比较容易,可以用来快速部署开发,尤其是Intel的硬件平台上性能超过了大部分的开源库,毕竟是自家的亲儿子。可以这么说在x86上推断能力没有什么框架可以与之媲美。
OpenVINO对各类图形图像处理算法进行了针对性的优化,从而扩展了Intel的各类算力硬件以及相关加快器的应用空间,实现了AI范畴的异构较量,使传统平台的视觉推理能力获得了很大水平的提高。OpenVINO实现了一套通用的API,能够夹杂挪用CPU、GPU、Movidius NCS和FGPA的算力来配合完成一次视觉推理,预先实现了一系列的功能库、OpenCL kernel等,能够缩短产品面世时间。
基于OpenVINO,应用在新零售、教育、智能交通、智慧金融、智慧城市、智能工场以及无人驾驶等范畴,OpenVINO已经在国内外顶尖客户的方案中显现出强大的优势。
TensorRT是一个高性能的深度学习推理优化器,可以为深度学习应用提供低延迟,高吞吐率的部署推理。TensorRT可用于对超大规模数据中心,嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow,Caffe,Mxnet,Pytorch等几乎所有的深度学习框架,将TensorRT和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。
MediaPipe是个基于图形的跨平台框架,用于构建多模式应用的机器学习管道。
MediaPipe可在移动设备,工作站和服务器上跨平台运行,并支持移动GPU加速。使用MediaPipe,可以将应用的机器学习管道构建为模块化组件的图形。
MediaPipe专为机器学习从业者而设计包括研究人员,学生,和软件开发人员,他们实施生产就绪的ML应用程序,发布伴随研究工作的代码,以及构建技术原型。MediaPipe的主要用例上使用推理模型和其他可重用组件对应用机器学习管道进行快速原型设计。MediaPipe还有助于机器学习技术部署到各种不用硬件平台上的演示和应用程序中。
我们将从多方位,多角度的对这三种框架进行比较。
OpenVINO模型部署分为两个部分:模型优化器和推理引擎。
模型优化器将训练好的模型转换为推理引擎可以识别的中间表达–IR文件,并在转换过程中对模型进行优化。
推理引擎接受经过模型优化器转换并优化的网络模型,为Intel的各种计算设备提供高性能的神经网络推理运算。
TensorRT也是两个部分:build and deployment 。
build:这个阶段主要完成模型转换,将不同框架的模型转换到TensorRT。模型转换时会完成前述优化过程中的层间融合,精度校准。这一步的输出是一个针对特定GPU平台和网络模型的优化过的TensorRT模型,这个TensorRT模型可以序列化存储到磁盘或内存中。存储到磁盘中的文件称之为 plan file。
deployment主要完成推理过程。将上面一个步骤中的plan文件首先反序列化,并创建一个 runtime engine,然后就可以输入数据(比如测试集或数据集之外的图片),然后输出分类向量结果或检测结果。
模型推理部署框架 | TensorFlow | Caffe | Mxnet | Pytorch | Kaldi | ONNX |
---|---|---|---|---|---|---|
OpenVINO | √ | √ | √ | √ | √ | |
TensorRT | √ | √ | √ | √ | √ | |
Mediapipe | √ |
模型推理部署框架 | 应用平台 |
---|---|
OpenVINO | CPU,GPU,嵌入式平台都可以使用,尤其是在CPU上首选OPenVINO。DepthAI嵌入式空间AI平台。 |
TensorRT | 只能用在NIVDIA的GPU上的推理框架。NIVDIA自家的Jetson平台。 |
Mediapipe | 服务端,移动端,嵌入式平台。TPU |
模型推理部署框架 | 容易 | 中等 | 困难 |
---|---|---|---|
OpenVINO | √ | ||
TensorRT | √ | ||
Mediapipe | √ |
TensorRT只能在GPU设备上运行。如果仅作为学习就需要一台不错的电脑,而要部署到硬件上,更是需要额外购买Jetson设备,因为Jetson仅是一块开发板,彩色摄像头,双目摄像头都需要自己购买安装,还要学习Jetson的开发。学习时间学习成本非常高。
Mediapipe仅支持TensorFlow ML框架。对于学习其他深度学习框架的小伙伴来说是非常不友好的。Mediapipe提供的预训练模型也是非常少的,不能给小伙伴们学习提供太多的帮助。
好马还需配好鞍。软件层面上的对比我们已经看到,现在让我们来看看它们各自部署到的硬件平台。
首款开源软硬一体OpenCV AI Kit(OAK),OAK-D也叫DepthAI是嵌入式空间AI平台,可帮助您构建具有真正实时3D对象定位和跟踪的产品。OAK-D减轻了AI深度视觉等工作的负担,直接从内置摄像头进行处理,使您的主机有能力处理特定位于应用程序的数据。最棒的是它是模块化的并获得MIT许可的开源设备。可以将这些Spatial AI/CV超级功能添加到实际的商业产品中。
OAK-D自身带有一颗4K/60fps的彩色摄像头和双目摄像头,搭载Intel MyriadX VPU芯片,可以应用于人脸识别,车辆识别,社交距离探测,避障等场景。
OAK-D国内唯一销售渠道
Jetson Nano是NVIDIA推出的人工智能计算机。Jetson Nano支持高分辨率传感器,可以并行处理多个传感器,并且可在每个传感器流上运行多个神经网络。它还支持许多常见的人工智能框架,让开发人员轻松地将自己偏爱的模型及框架集成到产品中。
Coral Dev Board是Google推出的单板计算机,Coral Dev Board TPU可快速构建原型,涵盖物联网(IOT)和需要快速设备上ML推理的通用嵌入式系统。然后,用户可以使用SOM结合使用板对板连接器的自定义底板,快速从原型过渡到生产。
嵌入式平台 | 体积 | 算力 | 接口 | 自带设备 | 是否需要连接主机 | 价格 |
---|---|---|---|---|---|---|
DepthAI | 体积小巧 | 4TOPS | USB3.0 Type-C | 核心模块,Depthai底板,4K/60fps的彩色摄像头,两颗黑白摄像头用于双目测距 | 需要通过USB或者SPI等接口连接主机 | $299(带有一颗彩色摄像头和两颗单目摄像头) |
Jetson Nano | 开发板体积较大 | 0.472TOPS | RJ-45, USB3.0 x4,HDMI等 | 核心模块,DevKit带有底板 | 运行操作系统,无需连接主机 | $99 Nano模组,需要自己做载板。$129 Nano开发套件(均不含摄像头) |
Coral Dev Board | 中等,如一张银行卡大小 | 4TOPS | HDML,USB3.0,Type-C等 | TPU模块,底板 | 运行操作系统,无需连接主机 | $150(不含摄像头) |
嵌入式平台 | 优点 | 缺点 |
---|---|---|
DepthAI | 集成度较高,自带彩色摄像头,双目摄像头,OnBoard深度计算,API简单支持多个平台。 | 需要主机配合 |
Jetson Nano | 良好的软件生态系统和资源,附加的软件库,灵活性较高,运行操作系统无需主机配合。 | 集成度较低,需要自行购买搭配外设,如彩色相机、双目相机等。Production Module需要另外购买或设计底板,加上各种外设体积较大,使用难度大,学习成本较高, 各种外设数据的获取均需要自行编码。 |
Coral Dev Board | 接口丰富,运行操作系统无需主机配合。 | 仅支持TensorFlow ML框架。甚至不是完整的TensorFlow Lite,仅支持量化为8位整数。 |
在Coral,DepthAI,Jetson Nano之间让你做出选择的主要理由可能是:
不过,您要为Jetson Nano的灵活性付出金钱的代价。。。它是最昂贵的,最慢且功耗最高。
相反,DepthAI价格最低,功耗最低,速度第二快,同时允许直接从图像传感器获得大量专用的计算机视觉功能。
Edge TPU是最快的,但是相对于Jetson Nano和DepthAI(Myriad)而言,缺点是,数据路径(视频)必须流经主CPU,并被压缩为Edge的正确格式TPU芯片需要,然后从芯片外进入神经处理(Edge TPU芯片本身),因此功率/热量大大超过了需要,并且CPU承担了这项工作。
DepthAI和Jetson Nano都在这里占有优势。在DepthAI上,MIPI摄像机直接连接到具有直接访问神经处理的内存的成像管道,并且还连接了视差深度,哈里斯滤波,运动估计等计算机视觉硬件模块,因此非常高效。同样,Jetson Nano在CPU和GPU之间具有有效的共享内存设置,因此直接从图像传感器获取图像数据并进行神经推理是资源高效的。而且,尽管没有专用的硬件模块,但GPU在这项工作上也相当出色。这是Edge TPU的唯一真正缺点,但是它仍然具有很多优势,例如与Google的所有机器学习工具,模型等紧密集成在一起,这些都是业界领先的。
参考链接:
OAK中国
首款开源软硬一体OpenCV AI Kit(OAK)用户问题官方答疑实录 Q&A
mddium.com
https://towardsdatascience.com
TensorRT 介绍 - qccz123456 - 博客园
MediaPipe:Google Research 开源的跨平台多媒体机器学习模型应用框架
openvinotoolkit.org
TensorRT 介绍 - qccz123456 - 博客园
OpenVINO基础知识_我爱加菲猫-CSDN博客_openvino
Neural Processors and Hosts We’ve Found (So Far)