七万字详解paddle-openVINO【CPU】-从环境配置-模型部署全流程

七万字详解paddle-openVINO【CPU】-从环境配置-模型部署全流程

在这篇文章你将会接触到:paddle-openvino框架、两者在Linux、windows多种配置方式、使用LabelMe对paddle数据的标注转换与划分、图像分类/目标检测/实例分割/语义分割的数据格式、模型训练、训练参数调整、模型保存、模型压缩(裁剪量化)与模型导出(ONNX2)。
你将会接触到6个实战项目:paddle(人像分割- RGB遥感影像分割-多通道遥感影像分割-地块变化检测)和paddle with openvino(paddleyolo、paddleyolo3、paddleOCR )

期间参考了百余篇官方技术文档、借鉴了intel的优秀工程师张晶、许钰雯、彭家丽、贾志刚、庄建、杨亦诚、raymondlo、吴卓等八位工程师,百度飞桨工程师大佬毕然、孙高峰、周湘阳、刘威威的一些资料以及大量的paddle官方开源文献

目录

  • 七万字详解paddle-openVINO【CPU】-从环境配置-模型部署全流程
    • 为什么要选择paddle+openVINO/li>
      • 会和TF、pytorch、caffe冲突吗/li>
  • 三张图讲清openVINO-飞桨
      • 1、openVINO部署流程
      • 2、paddlepaddle+OpenVINO
      • openVINO软件架构
      • 前端
      • 后端
      • 这其中的困难主要有三部分
    • Paddlepaddle-PaddleX-openVINO安装与环境调配
      • PaddleX介绍
      • 以蔬菜分类为例子演示PaddleX开发全流程
      • 1、安装paddle paddle
      • 2.win/Mac/linux/anaconda/pip/pycocotools
      • 安装paddleX
      • pip安装
      • Anaconda安装
      • Windows系统
      • Linux/Mac系统
      • 3、openVINO安装与相关环境适配
  • Windows安装openVINO
      • 安装步骤
      • 第1步:安装外部软件依赖项
      • 第2步:安装OpenVINOTM工具包核心组件的英特尔?发行版
      • 第3步:配置环境
      • 第4步:配置模型优化器
      • window- paddle- openVINO勾连
      • Step1: 下载PaddleX预测代码
      • Step2 软件依赖
      • Step3: 使用Visual Studio 2019直接编译CMake
      • Step4: 预测
  • Linux安装openVINO
      • 第1步:安装OpenVINOTM工具包核心组件的英特尔?发行版
      • 第2步:安装外部软件依赖项
      • 第3步:配置环境
      • 第4步:配置模型优化器
      • 预测部署测试
      • Step1 下载PaddleX预测代码
      • Step2 软件依赖
      • Step3: 编译
      • Step4: 预测
  • OpenVINO部署常见问题
      • 转模型过程中出现”ModuleNotFoundError: No module named ‘mo’”
  • paddlepaddle的训练
    • 数据准备(数据标注、转换、划分)
      • LabelMe的安装和启动
      • 图像分类
      • 目标检测
      • 实例分割
      • 语义分割
    • 数据格式
      • 图像分类ImageNet
      • 目标检测PascalVOC
      • 实例分割MSCOCO
      • 语义分割Seg
      • 地块检测ChangeDet
  • paddle模型训练与参数调整
    • 模型训练
      • 图像分类
      • 目标检测
      • 实例分割
      • 语义分割
    • 加载模型预测
      • 图像分类
      • 目标检测
      • 实例分割
      • 语义分割
    • 训练参数调整
    • 模型保存
  • 模型压缩优化
    • 模型裁剪
      • 第一步 正常训练模型
      • 第二步 参数敏感度分析
      • 第三步 模型裁剪训练
    • 模型量化
      • 使用方法
      • 量化效果
  • 部署模型导出
  • 飞桨实例演示
    • 人像分割模型
      • 预训练模型和测试数据
      • 预训练模型
      • 关于预测锯齿问题
      • 测试数据
      • 快速体验视频流人像分割
      • 前置依赖
      • 光流跟踪辅助的视频流人像分割
      • 人像背景替换
      • 模型Fine-tune
      • 前置依赖
      • 模型训练
      • 评估
      • 预测
      • 模型导出
    • RGB遥感影像分割
      • 前置依赖
      • 数据准备
      • 模型训练
      • 模型预测
      • 模型评估
    • 多通道遥感影像分割
      • 前置依赖
      • 数据准备
      • 数据分析
      • 模型训练
      • 模型预测
    • 地块变化检测
      • 前置依赖
      • 数据准备
      • 模型训练
      • 模型评估
      • 模型预测
  • OpenVINO模型转换
      • 1、环境依赖
      • 2、导出inference模型
      • 3、导出OpenVINO模型
  • paddle- openVINO部署实例
    • openvino-yolo
      • 对象检测示例代码
      • 下载和导出百度型 - YOLOV3和PPYOLO
      • 设置模型
      • 将PaddlePaddle预训练模型加载到OpenVINO推理引擎(IE)中
      • 加载图像并运行推理步骤
      • 实时摄像头演示
      • 运行Webcam Feed
    • openvino-PaddleOCR
      • 手写识别古诗
      • 通过OpenVINO运行Paddle Detection
      • 加载图片
      • 对PaddleDetection的推理结果进行后处理
      • 在openvino 上运行飞浆识别
      • 预处理输送给Paddle识别的图像
      • Load the Network
      • 开始识别古诗词
      • 可视化检测和识别结果

为什么要选择paddle+openVINO/h2>

Paddlepaddle是国内百度推出的一款深度学习框架,Openvino是英特尔基于X86架构的芯片提出的一种部署方案。

飞桨主要解决的问题是AI开发者对于算力资源的巨大需求问题,飞桨提供了在线的云平台,你可以使用他们的算卡设备进行模型的训练与评估。

而openVINO解决对于主机上没有显卡或者算力不足的AI开发者的问题。

两个部分的联合,大大降低了AI开发者对于算力资源需求的门槛,从而实现较低成本的AI应用开发。使用飞桨训练的模型不能够直接部署到openVINO上,而是要经过两个转化。飞桨的模型导出ONNX模型,然后再将这个模型转换成为IR模型,才可以实现在openVINO上的部署。

会和TF、pytorch、caffe冲突吗/h3>

这个部分不仅仅没有冲突,而且还有助于去理解这三个框架。飞桨的框架他的那很多语法都是和三者非常相似的,并且比较简单,容易上手。可以帮助你去在飞桨上理解一些在算法上比较复杂的架构。第二个是这三者也是可以在openVINO上部署的

三张图讲清openVINO-飞桨

1、openVINO部署流程

2、paddlepaddle+OpenVINO

飞桨和openVINO两者之间的嵌套,其实就如上面的流程一样的,构建过程中我们使用paddle模型,然后将我们的飞桨模型通过转换器转换成IR模型,或者可以直接将一部分的飞桨模型部署到硬件上,从而实现了整个流程部署与开发。

前端

openVINO软件架构可以分成这个前端和后端两个部分,那与之相对应的代码就是我们这个read_network函数接口和load_network这两个函数接口。那前端主要功能就是通过我们这个这个read_network接口去读取第三方模型并对其做一个解析,然后通过我们的一些通用的、优化的方式,对模型的一些layer进行一些优化.这些优化都是通用的,比如说基于比如说针对某些layer的比较稀疏的一些图进行一个图层融合,或者说把一些系统中的算子推理过程中可能不需要的,我们会把这个没有用的算子给他进行剔除。然后把转化好的模型转化成我们的CNNnetwork,也就是前端的功能。

那前端这个代码部分现在有主要有三个这样的构建方法。
首先可以基于我们的如下图左侧的这样一个参数接口,去自己手动去定一个模型的拓扑结构以及相应的参数,并把它转化成CNNnetwork的形式。

其次也通过modeloptimizer去转化一个第三方的模型,形成IR的模型中间表达式,并通过IR模型的进行一个读取和解析,直接去转化成这个CNNnetwork。

第三个也是最有挑战性的,通过paddle reader 组件直接把飞桨模型进行读取和加载。通过paddle converter这个组建一对一的映射到相对应算子中,实现对前端的支持,最后直接将paddle加载入CNNnetwork 络。

后端

通过load_network这个函数接口去指定模型要跑在哪一个硬件平台上。load_network这个函数接口会去加载刚才已经优化过的CNNnetwork,并把它去推到指定的硬件平台上去进行一个前端的推理。那在这个过程中会针对不同的硬件平台做一些定制化的优化,比如说我们会通过这个内存重排或者是一些并行推理,去实现一些深度优化,保证在指定平台上能达到一个最好的推理效能。通过这个接口也可以进行一些定制化的优化设定。比如说我们可以在这个接口上是指定在多个硬件平台上去运行,这样子可以实现对多数据流的支持。同时也可以实现异构推理这样一个模式,可以会同时去生成多个推理请求,然后把这些推理情况平均分配到不同的计算单元中,给多个任务进行同时的这样一个推理,提高整个 络的吞吐量。

PaddleX介绍

这里参考百度飞桨的官方技术文档点击深入了解

PaddleX可视化客户端基于PaddleX开发的可视化深度学习模型训练套件,目前支持训练视觉领域的图像分类、目标检测、实例分割和语义分割四大任务,同时支持模型裁剪、模型量化两种方式压缩模型。

PaddleX中的所有模型训练都可以总结为以下3个步骤
定义:过程、数据集和模型,就可以得到一个AI 模型

2.win/Mac/linux/anaconda/pip/pycocotools

安装paddleX

pip安装

下面是Windows安装命令

Anaconda安装

Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。使用Anaconda可以通过创建多个独立的Python环境,避免用户的Python环境安装太多不同版本依赖导致冲突。
代码安装

pycocotools安装问题

PaddleX依赖pycocotools包,如安装pycocotools失败,可参照如下方式安装pycocotools

Windows系统

Windows安装时可能会提示Microsoft Visual C++ 14.0 is required,从而导致安装出错,这个是时候需要下载VC build tools安装再执行如下pip命令
下载链接
https://go.microsoft.com/fwlink/inkId=691126

注意:安装完后,需要重新打开新的终端命令窗口

Linux/Mac系统

Linux/Mac系统下,直接使用pip安装如下两个依赖即可

3、openVINO安装与相关环境适配

如果是使用window操作系统的伙伴遇到困难可以参考之前写的一篇博客,里面有每步的截图。
博客链接

但是这里因为要和飞桨适配,所以下载的版本有一些特定的要求。这里推荐使用OpenVINO 2020.4与2021.1版本

注意:
由于PaddleX分割模型使用了ReSize-11 Op,OpenVINO 2021.1版本开始支持支持Resize-11 ,CPU下请务必下载OpenVINO 2021.1+版本
由于VPU在OpenVINO 2021.1版本下转换的分类模型会出现Range layer不支持的情况,VPU下请务必下载OpenVINO 2020.4版本

可以看下各大软硬设备对openVINO的支持

第2步:安装OpenVINOTM工具包核心组件的英特尔?发行版

1、从适用于Windows的OpenVINOTM工具包的英特尔?分发下载OpenVINOTM工具包包文件的英特尔?分发。从下拉菜单中选择适用于Windows的OpenVINOTM工具包的英特尔?发行版。

2、转到“Downloads”文件夹,双击中
w_openvino_toolkit_p_.exe,打开一个窗口,允许您选择安装目录和组件。

4、默认情况下,Intel?Distribution of OpenVINO?安装到以下目录,在文档的其他地方称为: C:Program Files (x86)Intel openvino_。为了简单起见,还创建了一个最新安装的快捷方式:C:Program Files (x86)Intel openvino_2021。

5、可选:可以选择自定义来更改安装目录或要安装的组件。

必须更新多个环境变量,然后才能编译和运行OpenVINOTM应用程序。打开命令提示符,然后运行setupvars.bat批处理文件以临时设置环境变量:

注意:不建议运行配置命令的Windows PowerShell,改用命令提示符(cmd),这里我试过了,只能用终端,不是建议。

建议:关闭命令提示窗口时,OpenVINO工具包环境变量将被删除。作为一个选项,您可以手动永久设置环境变量。

第4步:配置模型优化器

Model Optimizer是基于Python的命令行工具,用于从流行的深度学习框架(如Caffe、TensorFlow*、Apache MXNet*、ONNX和Kaldi)导入训练有素的模型。

模型优化器是OpenVINO工具包英特尔发行的关键组件。对模型执行推断(ONNX和nGraph模型除外)需要通过模型优化器运行模型。当通过模型优化器转换预训练的模型时,输出是 络的中间表示(IR)。中间表示是一对描述整个模型的文件:

.xml:描述 络拓扑
.bin:包含权重和偏置二进制数据

1、在搜索窗口框中输入cmd打开命令提示符,然后按Enter键。在打开的窗口中输入命令:

七万字详解paddle-openVINO【CPU】-从环境配置-模型部署全流程

2、转到模型优化器先决条件目录。

3、运行此批处理文件以配置Caf

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月26日
下一篇 2022年1月26日

相关推荐