使用MindStudio进行X3D模型onnx推理

前言

本次进行的X3D模型onnx推理实验在远端服务器和MindStudio上协同进行,相当于把远程服务器的环境移植到MindStudio上进行onnx推理实验。
MindStudio是基于华为晟腾AI处理器研究开发的全栈开发平台,相当于一款功能极其丰富的IDE,关键功能包括工程开发、应用开发、模型开发以及算子开发。不仅如此,此开发平台还包括了一些辅助功能,例如脚本转换、精度比对、Profiling性能分析,AI核心错误分析工具等。对于MindStudio,不仅用户可以再本地享受MindStudio所提供的强大的功能支持,还支持连接服务器环境的使用,这使得个人设备算力不够等情况的用户也可以方便使用,该IDE对用户的交互体验很好,非常适合用户完成各种晟腾模型任务。

一、X3D模型概述

X3D是一个高效的视频网络系列,可在空间、时间、宽度和深度方面沿多个网络轴逐步扩展微型 2D 图像分类架构。受机器学习中特征选择方法的启发,采用简单的逐步网络扩展方法,在每个步骤中扩展单个轴,从而实现对复杂性的良好准确性权衡。为了将 X3D 扩展到特定的目标复杂性,在X3D模型中执行递进式前向扩展,然后执行向后收缩。X3D 实现了最先进的性能,同时需要 4.8 倍和 5.5 倍的乘法添加和参数,以实现与以前工作相似的精度。最令人惊讶的发现是,这个具有高时空分辨率的网络在处理一些视频数据湖时可以表现得非常良好,同时在网络宽度和参数方面非常轻。X3D模型在视频分类和检测基准测试方面以前所未有的效率得出了具有竞争力的精度和性能。

二、服务器推理环境准备

1、获取X3D模型onnx推理源码

进入ATC X3D(FP16)-昇腾社区 (hiascend.com),点击立即下载,并将获取的源码上传到服务器。目录结构如下图所示:
使用MindStudio进行X3D模型onnx推理_第1张图片

2、配置conda环境

在创建自己的虚拟环境时,python版本最好不小于3.8。
使用MindStudio进行X3D模型onnx推理_第2张图片

安装完上述基础依赖后,根据ATC X3D(FP16)-昇腾社区 (hiascend.com)中快速上手->获取源码->3.获取开源代码仓 进行detectron2_repo源码包和SlowFast源码包的下载与安装。

3、准备数据集

根据源码目录readme文档进行Kinetics-400数据集的获取以及简单处理,数据集目录结构如下:
├── Kinetics-400
├──val
├──abseiling
├──air_drumming
├──answering_questions
├──applauding
├──applying_cream

├──yoga
├──zumba
├──test.csv

4、准备msame工具

该过程需要使用msame工具,可以在MindStudio的Remote Terminal中执行git clone https:/gitee.com/ascend/tools.git得到tools文件夹,MindStudio的Remote Terminal连接在本文第四部分进行介绍,用户也可以直接在服务器中执行此命令。
在服务器中执行以下命令来设置环境变量
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub
进入tools/msame文件夹,设置文件权限,运行编译脚本
使用MindStudio进行X3D模型onnx推理_第3张图片

三、MindStudio环境准备

1、安装与推理环境准备

按照MindStudio用户手册中的安装指南—>安装操作来安装MindStudio,而推理环境在服务器上已经配置完成,使用MindStudio直接进行ssh连接即可。

2、工程创建

点击New Project创建新工程
使用MindStudio进行X3D模型onnx推理_第4张图片

选择Ascend App项目,在CANN Version一栏点击change进入下图界面
使用MindStudio进行X3D模型onnx推理_第5张图片

点击加号进入添加服务器页面,根据所使用服务器填入用户名,IP,密码等信息
使用MindStudio进行X3D模型onnx推理_第6张图片

服务器连接成功后,选择CANN目录

使用MindStudio进行X3D模型onnx推理_第7张图片

点击finish
使用MindStudio进行X3D模型onnx推理_第8张图片

等待本地同步远端服务器CANN文件。同步完成后,出现下图界面
使用MindStudio进行X3D模型onnx推理_第9张图片

点击next,选择ACL Project(python)项目,点击finish,完成工程创建
使用MindStudio进行X3D模型onnx推理_第10张图片

使用MindStudio进行X3D模型onnx推理_第11张图片

配置项目结构,点击File->Project Structure…进入下图页面
使用MindStudio进行X3D模型onnx推理_第12张图片

选择Add Python SDK后,选择ssh interpreter,再Deploy一栏选择远程服务器
使用MindStudio进行X3D模型onnx推理_第13张图片

接下来在Interpreter一栏选择自己的python解释器
使用MindStudio进行X3D模型onnx推理_第14张图片

完成之后如下图所示,可以对Name进行修改
使用MindStudio进行X3D模型onnx推理_第15张图片

配置本地文件夹与远程服务器映射
使用MindStudio进行X3D模型onnx推理_第16张图片

把远程服务器的代码拉取到本地
使用MindStudio进行X3D模型onnx推理_第17张图片

四、在MindStudio上执行推理

1、数据预处理

参照ATC X3D(FP16)-昇腾社区 (hiascend.com)的数据预处理部分,将数据集以及其标签文件处理好

2、生成数据集bin文件

使用MindStudio终端在当前目录下创建一个data_bin_bs1的文件夹
使用MindStudio进行X3D模型onnx推理_第18张图片

运行X3d_preprocess.py,在Command Arguments一栏填写运行此脚本所需的参数设置
使用MindStudio进行X3D模型onnx推理_第19张图片

在data_bin_bs1目录下生成bin数据文件
参数解释:
–cfg:模型配置文件
DATA.PATH_TO_DATA_DIR:标签文件路径
DATA.PATH_PREFIX:数据集路径
TEST.BATCH_SIZE:批次参数
X3D_PREPROCESS.DATA_OUTPUT_PATH:输出文件路径
使用MindStudio进行X3D模型onnx推理_第20张图片

3、pyth文件转onnx文件

运行X3d_pth2onnx.py导出onnx文件
使用MindStudio进行X3D模型onnx推理_第21张图片

在当前目录下生成X3D模型的onnx文件x3d_s.onnx
使用MindStudio进行X3D模型onnx推理_第22张图片

4、onnx模型转换为om模型

首先填写模型信息,找到远端服务器中onnx模型的路径,然后选择模型输入格式,自己填写输入图片的尺寸,点击next。如下图所示:
使用MindStudio进行X3D模型onnx推理_第23张图片

模型信息填写成功后,等待有关模型数据的预处理,完成后点击next
使用MindStudio进行X3D模型onnx推理_第24张图片

上述步骤成功后,下图页面会自动填写模型转换的具体命令
使用MindStudio进行X3D模型onnx推理_第25张图片

参数解释:
–model:为ONNX模型文件。
–framework:5代表ONNX模型。
–output:输出的OM模型。
–input_format:输入数据的格式。
–input_shape:输入数据的shape。
–check_report:分析报告。
–soc_version:处理器型号。
最终模型转换成功,如下图所示:
使用MindStudio进行X3D模型onnx推理_第26张图片

5、模型benchmark推理性能验证

导出om模型后,使用MindStudio的Remote Terminal进行benchmark推理,依次执行以下步骤
开启远程服务器终端
使用MindStudio进行X3D模型onnx推理_第27张图片

激活服务器中自己创建的虚拟环境
使用MindStudio进行X3D模型onnx推理_第28张图片

进入X3D工作目录
使用MindStudio进行X3D模型onnx推理_第29张图片

增加benchmark工具可执行权限,进行性能验证
在这里插入图片描述

报错的原因是因为没有导入benchmark工具推理所需的依赖,执行一下source /usr/local/Ascend/ascend-toolkit/set_env.sh命令即可解决。
最后得到的性能如下图所示
使用MindStudio进行X3D模型onnx推理_第30张图片

6、X3D模型精度验证

在Remote Terminal中设置main文件权限并执行推理命令,生成om_res_bs1文件夹
使用MindStudio进行X3D模型onnx推理_第31张图片

参数解释:
–model :输入的om文件。
–input:输入的bin数据文件。
–device:NPU设备编号。
–outfmt:输出数据的格式。
然后执行X3d_postprocess.py脚本文件
使用MindStudio进行X3D模型onnx推理_第32张图片

参数解释:
–cfg:模型配置文件。
TEST.BATCH_SIZE:输入参数。
X3D_POSTPROCESS.OM_OUTPUT_PATH :后处理结果放置位置。
精度结果:
使用MindStudio进行X3D模型onnx推理_第33张图片

五、FAQ

Q:执行所有python脚本文件时,Command Arguments如何填写?
使用MindStudio进行X3D模型onnx推理_第34张图片

A:与在远程服务器上运行命令时的参数一样即可,可将其直接复制到Command Arguments一栏。

Q:在310P服务器上如何进行X3D模型的onnx推理验证?

A:310P上执行推理与310基本一样,只需把soc_version=310的地方更换为soc_version=310P即可。

Q:模型转换时,自己添加完模型后,MindStudio对其自动解析得出的shape和format不能成功实现om模型的导出

使用MindStudio进行X3D模型onnx推理_第35张图片

A:点击删除按钮,自己手动配置模型输入信息即可。其中最重要的一步就是shape一栏的填写,具体可参考MindStudio用户手册中的模型转换一节来配置输入信息。

Q:MindStudio已经成功连接服务器,但配置远程python解释器时,无法检测到自己conda环境里的所有依赖。

A:建议先进行ssh配置和Deployment同步,再进行远程python解释器的连接

最后,开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以从昇腾社区获得更多的帮助。
昇腾官网:https://www.hiascend.com/
昇腾社区:https://bbs.huaweicloud.com/
昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html

你可能感兴趣的:(AI,python,服务器,linux,深度学习)