基于PyTorchMindX高性能预训练模型HRNet

目录

1 任务介绍

1.1 HRNet模型概述

1.2 MindStudio介绍

2 安装教程

2.1 安装说明

2.2 环境依赖配置

2.2.1 CANN安装

2.2.2 安装依赖

2.3 安装 MindStudio

3 MindStudio复现HRNet推理与训练功能

3.1 模型转换

3.1.1 创建工程

3.1.2 配置工程属性

3.1.3 pth->onnx

3.1.4 onnx->om

3.2 sdk推理

3.2.1 创建工程并配置工程属性

3.2.2 运行推理

3.2.3 求精度

3.3 mxbase推理

3.3.1 创建工程并配置工程属性

3.3.2 前处理

3.3.3 编译

3.3.4 运行推理

3.3.5 求精度

3.4 modelarts训练

3.4.1 创建训练作业

3.4.2 执行训练

4 FAQ

5 从昇腾社区获取更多帮助

1 任务介绍

1.1 HRNet模型概述

HRNet是一个用于图像分类的高分辨网络。通过并行连接高分辨率到低分辨率卷积来保持高分辨率表示,并通过重复跨并行卷积执行多尺度融合来增强高分辨率表示。在像素级分类、区域级分类和图像级分类中,证明了这些方法的有效性。其创新点在于能够从头到尾保持高分辨率,而不同分支的信息交互是为了补充通道数减少带来的信息损耗,这种网络架构设计对于位置敏感的任务会有奇效。

1.2 MindStudio介绍

MindStudio是一套基于华为昇腾 AI 处理器开发的 AI 全栈开发工具,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过IDE的方式向开发者提供各种服务功能。其中,针对安装与部署MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利;针对算子开发,MindStudio提供包含UT 测试、ST测试、TIK算子调试等的全套算子开发流程。支持 TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发;针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率;针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。

本文以HRNet模型为例,指导用户使用MindStudio平台进行模型转换(pth-onnx-om)、sdk推理、mxBase推理以及连接modelarts训练。

2 安装教程

2.1 安装说明

在一站式导航中点击“下载方式,用户手册”,根据安装指南进行安装。

其主要安装流程如下图所示。

所需环境如下。

MindStudio安装之前,安装依赖不是必选的。若要将项目在本地运行,则需要根据项目安装相应版本的依赖,配置所需的环境;若要将项目在远端服务器运行,则需在服务器上配置相应的环境和依赖。

2.2 环境依赖配置

2.2.1 CANN安装

CANN(Compute Architecture for Neural Networks)是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。

用户根据实际使用需要,下载对应的CANN软件包,具体安装流程可以参考官网的用户手册。

CANN软件包下载地址:

昇腾社区-官网丨昇腾万里 让智能无所不及

CANN安装流程:

昇腾社区-官网丨昇腾万里 让智能无所不及

2.2.2 安装依赖

(1)安装Python依赖

Python官方网站下载安装Python3.7.5到本地:

Python Release Python 3.7.5 | Python.org

打开高级系统设置 > 环境变量 > Path > 编辑 > 新建。

将Python安装环境下的Scipts路径添加到Path里。

安装Python依赖:

pip install xlrd==1.2.0

pip install absl-py

pip install numpy

pip install requests

(2)安装MinGW依赖

根据电脑配置选择合适的版本下载:

MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

将MinGW安装包解压到自定义的路径,按照上述环境变量的配置方法,将 MinGW路径下的bin文件夹添加到Path中。

安装配置完成后,打开cmd输入gcc -v

(3)安装CMake依赖

下载地址:Download | CMake

同样将cmake安装路径添加到Path中

2.3 安装 MindStudio

下载地址:昇腾社区-官网丨昇腾万里 让智能无所不及

双击MindStudio_{version}_win.exe安装包,按照提示安装即可。

3 MindStudio复现HRNet推理与训练功能

3.1 模型转换

3.1.1 创建工程

选择File > New > Project。

选择Ascend App。

点击Change选择CANN Version。

点击Remote Connection > 配置SSH,连接远端服务器。

连接成功后,点击Remote CANN location,选择相应的CANN版本。

选好后,点击Finish。

选择工程类型ACL Project(Python) > 点击Finish,工程创建成功。

3.1.2 配置工程属性

选择File > Project Structure。

选择Add Python SDK。

选择SSH Interpreter:其中Deploy选择已经配置好的SSH,Interpreter选择远端的一个python版本,并在Name处为其命名。

通过File > Settings > Deployment > Mappings来设置映射,其目的是使本地项目与远程服务器保持同步,从而使本地选择的文件能够在远端运行,同时运行结果也能同步到两端。

点击Excluded Paths来设置排他路径,将数据集等文件设置为排他,不进行同步,防止在运行过程中误删掉数据集。

配置好映射后,可通过在“某一文件”右击 > Deployment > Download from将文件从服务器上下载下来,也可以通过Deployment > Upload to 将某一文件上传至服务器。

3.1.3 pth->onnx

选择Run > Edit Configurations来配置运行文件。

在Script path处选择pth2onnx.py,在Parameters处输入超参数,在Python interpreter处指定python解释器的版本(配置工程属性时已经配置),配置好后点击Apply > OK。

运行完成后会在远程convert文件夹下生成hrnet.onnx。

3.1.4 onnx->om

选择Ascend -> Model Converter

按照提示选择onnx模型并填写其他参数,完成后点击Next。

在此界面确认参数是否正确,若不正确则点击Previous退回上一步进行修改,若正确则点击Finish开始转换。

如图所示,模型转换成功,会在convert目录下生成hrnet.om。

3.2 sdk推理

3.2.1 创建工程并配置工程属性

选择Ascend App类型的工程,并按照3.1节同样的步骤连接CANN。

选择MindX SDK Project(Python) > Finish。

按照3.1节同样的步骤配置工程属性(设置python解释器与映射)。

3.2.2 运行推理

选择sdk目录下的run.sh文件,配置其运行参数,点击Apply > OK。

运行结果如下所示:在sdk目录下生成了result_file.txt保存推理结果。

3.2.3 求精度

将util目录下的task_metric.py文件与标签文件val_label放到sdk目录下,然后选中sdk目录下的task_metric.py文件,配置其运行参数,点击Apply > OK。

打开生成的sdk_pred_result.acc.json文件查看推理精度。

3.3 mxbase推理

3.3.1 创建工程并配置工程属性

选择Ascend App类型的工程,并按照3.1节同样的步骤连接CANN。

选择MindX SDK Project(C/C++) > Finish。

按照3.1节同样的步骤配置工程属性(设置python解释器与映射)。

3.3.2 前处理

转到sdk工程,选择util目录下编译产生的preprocess.py文件,配置其运行参数,点击Apply > OK。

处理后的图片会存放在util目录下的preprocess文件夹中。

3.3.3 编译

Mxbase推理需要先进行编译,选择mxbase目录下的build.sh文件,配置其运行参数,点击Apply > OK。

编译完成后会在mxbase文件夹下生成用来运行推理的hrnet文件。

3.3.4 运行推理

选择mxbase目录下编译产生的hrnet文件,配置其运行参数,点击Apply > OK。

运行结果如下所示:在mxbase目录下生成了mx_pred_result.txt保存推理结果。

3.3.5 求精度

将util目录下的task_metric.py文件与标签文件val_label放到mxbase目录下,然后选中mxbase目录下的task_metric.py文件,配置其运行参数,点击Apply > OK。

打开生成的mxbase_pred_result.acc.json文件查看推理精度。

3.4 modelarts训练

3.4.1 创建训练作业

由于开发环境还没提供相关镜像,所以这里采用训练作业方式进行。

登陆华为云。

右上角点击控制台。

服务列表搜索modelarts并进入。

创建训练作业。

配置作业参数,其中名称可命名为自己模型的名字,算法来源选择自定义,从给出的镜像列表中选择相应的镜像,代码目录、数据来源、训练输出位置、作业日志路径均选择obs桶里的相应位置(前提是数据与代码已上传至桶里),最后可选择保存作业参数然后点击下一步。

确认参数没问题后点击提交。

3.4.2 执行训练

训练过程会在日志中展示。

训练结束后会在桶中的输出位置

obs://mindx-user/HRNet/output/中产生pth与onnx文件。

4 FAQ

CANN连接错误

Q:连接服务器SSH成功,但是连接CANN失败:

A:有可能是因为不是root用户,若是普通用户被赋予了和root相同的权限则可以连接成功。也有可能是服务器端内存不足,查看同步CANN时产生的日志可判断是否为该原因。

5 从昇腾社区获取更多帮助

开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以来昇腾社区获 得更多的帮助。

昇腾官网:昇腾社区-官网丨昇腾万里 让智能无所不及

昇腾社区:华为云社区_大数据社区_AI社区_云计算社区_开发者中心-华为云

昇腾论坛:华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐