飞桨AI创造营2期-t7-部署
(Datawhale34期组队学习)
1知识点
- openvino+ONNX部署
- nano部署
- edgeboard部署
- 安卓部署
- 服务器端在线部署
2具体内容
2.1ONNX部署
2.1.1介绍
ML模式的开放模式,允许各种ML框架和工具之间转化模型 定义了公共算子
2.1.2使用ONNX
- 标准如桥梁,链接首选模型,转化模式,在runtimes允许
- Operator List 算子列表
2.1.3工具
1.涉及工具
- PP
- PaddleSeg
- Paddle2ONNX
- Onnx
- Onnxruntime
2.Netron:Offline AI Model Visualisation Tool 查看模型参数
2.1.4步骤
- 导出模型
- 动态图-》静态图
- config
- model
- save_dir
- input_shape
- 静态图-》Onnx模型
- model_dir
- model_filename model.pdmodel
- model_filename model.pdiparams
- save_file unetv2.onnx
- opset_version 11
- enable-onnx_checker True
- 验证
2.2openvino
2.2.1介绍
1.视频AI: input - Decode - Pre-Processing - Inference - Post-Processing - Encode - output
Inference - CPU\GPU\FPGA\VPU OpenVINO提升性能、易于开发、代码复用
2.推理: 模型层Vector全连接信息,推测每个Box Coordinates,ClassScores
3.评估性能
2.2.2部署
- 安装包
- 第三方库 pip docker conda apt yum
- 源码编译
2.2.3Toolkit生态
1.生态
2.开发流程
- 构建(model)
- PP
- OpenModelZoo
- 工具
- Model Downloader:可访问并下载多个预训练模型
- Accuracy Checker:可使用已知数据集检查模型IR文件的精度
- 优化(Optimizer)OpenVino的模式
- 基于Python,导入训练好的模型并将其转换为中间表达式
- 对预设的拓扑结构进行转换,优化模型的性能或空间表现
- 与硬件无关的通用型优化方案
- 优化策略(线性操作)
- 分解BatchNorm和ScaleShift:BN层分解为Mul->Add->Mul->Add序列;ScaleShift层分解为Mul->Add序列
- 合并线性操作:合并Mul->Add序列为单个Mul->Add实例
- 融合线性运算:融合Mul->Add到卷积或全连接层
- 分组卷积融合适用于TF拓扑的特定优化。将分割输出的卷积结果合并,然后使用Concat以与分割输出相同的顺序重新组合它们
- ResNet优化(步长优化)
- 将大于1的步长从内核大小为1的卷积层移动到上层卷积层
- 更改Eltwise层的输入形状,则模型优化器添加一个Pooling层来对其
4.部署 Inference Engine - User Application
3参考
https://aistudio.baidu.com/aistudio/education/lessonvideo/2264067
|