使用MindStudio进行PSENet_MobileNetv3模型的onnx推理

使用MindStudio进行PSENet_MobileNetv3模型的onnx推理

一.MindStudio介绍

MindStudio提供在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。

 

二.概述

随着卷积神经网络的发展,场景文本检测取得了迅速的进展。然而,仍然存在两个挑战,阻碍了该算法在工业应用中的应用。一方面,大多数最先进的算法需要四边形边界框,这对于定位具有任意形状的文本是不准确的。另一方面,两个彼此接近的文本实例可能会导致覆盖两个实例的错误检测。传统上,基于分割的方法可以缓解第一个问题,但通常无法解决第二个问题。为了解决这两个问题,提出了一种新的渐进尺度扩展网络(PSENet),它可以精确地检测任意形状的文本实例。更具体地说,PSENet为每个文本实例生成不同尺度的内核,并逐渐将最小尺度内核扩展到具有完整形状的文本实例。由于最小尺度核之间存在较大的几何余量,此方法能够有效地分割封闭文本实例,从而更容易使用基于分割的方法来检测任意形状的文本实例。

 

PSENet模型如图所示,使用ResNet作为PSENet主干。将低级纹理特征与高级语义特征连接起来。这些特征图在F中进一步融合,用不同的视图编码信息,促进不同尺度的核的生成。然后将特征映射F投影到n个分支中,生成多个分割结果S1、S2、…、Sn。每个Si将是一个特定比例的所有文本实例的分段掩码。在这些掩码中,S1给出了具有最小尺度(即最小核)的文本实例的分割结果,Sn表示原始分割掩码(即最大核)。在获得这些分割掩模后,使用渐进尺度扩展算法将S1中的所有实例核逐渐扩展到Sn中的完整形状,并获得最终的检测结果R。

ICDAR 2015(IC15)是文本检测的常用数据集。它总共包含1500张图片,其中1000张用于训练,其余用于测试。文本区域由四边形的4个顶点注释。

本文介绍了基于MindStudio平台,将PaddlePaddle上开源的PSENet_MobileNetv3模型部署到Ascend平台上,并进行数据预处理、推理脚本的开发,在ICDAR 2015数据集上完成推理任务。

三.推理环境准备

本图文案例中,使用的环境为本地Windows 10安装的MindStudio和远程昇腾AI运行环境。使用的MindStudio版本为5.0.RC2,Ascend-cann-toolkit版本为远程环境下的5.1.RC1。

3.1 windows端环境准备

(1)根据MindStudio官方安装指南进行安装即可。

 

 

3. 2 Linux端环境准备

(1)配置conda环境,并安装项目依赖包。

 

(2)配置环境变量

 

四.创建工程

(1)点击 “New Project” 创建新的项目,进入创建工程界面。

 

(2)选择Ascend App项目类别,然后就是常规的命名和路径修改,在CANN Version处点击change配置远程连接和远程CANN地址。

 

(3)当点击CANN Version的Change后进入下界面进行相关配置,点击远程连接配置的最右侧添加按钮。

 

(4)进入SSH Configurations后,可进行如图所示的连接配置。

 

(5) 完成远程连接设置后,点击next会进到模板选择界面,由于这里是推理任务,此时选择MindX SDK Project(Python),再点击Finish。

 

(6)配置本地和远程的项目的路径,通过选择界面菜单栏的File->Settings,找到其中Tools下的Deployment可配置本地项目路径和对应远程路径的映射。Deployment管理远程开发时的本地文件与远程文件的同步。

 

(7)配置本地,远端环境同步

 

(8)添加python解释器,选择远程环境下创建好的推理虚拟环境下的解释器。

点加号

 

 

添加好我们环境所需的解释器后,我们需要在Project和Modules下给项目配置。

 

 

五.执行推理

5.1 数据预处理

(1)ICDAR2015数据集下载链接:http://rrc.cvc.uab.es/?ch=4&com=downloads

数据集文件目录结构如下

 

(2)将原始数据集转换为模型输入的二进制数据,即bin文件,并生成数据集信息pkl文件,处理文件为pse_preprocess.py脚本文件。

 

 

(3)点击Run->Edit Configurations进入配置界面, 配置脚本运行环境。

 

运行框中的参数为模型的配置文件。

配置好后,点击运行,产生bin文件和数据集信息pkl文件,如下图所示。

 

5.2 模型转换

5.2.1 训练模型转推理模型

首先将PSE文本检测训练过程中保存的模型,转换成inference model。点击run,选择Edit Configurations

 

运行export_model.py,配置好参数后,点击ok。

 

运行框中的参数分别为模型的配置文件,训练模型路径和推理模型的存储路径。

转换结果如图所示,

 

5.2.2 导出onnx模型

运行脚本paddle2onnx.sh,将inference model转换为onnx

 

参数分别为:推理模型路径,模型文件名,参数文件名,存储文件名,ONNX的op版本,输入形状和是否启动转换程序帮助我们检查模型。

5.2.3 转换为om模型

此步借助ATC(Ascend Tensor Compiler)工具,ATC工具将开源框架的网络模型(如Caffe、TensorFlow等)以及单算子Json文件,转换成昇腾AI处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权值数据重排、内存使用优化等,可以脱离设备完成模型的预处理。

ATC工具功能架构如图所示:

 

ATC工具运行流程如图所示:

 

首先,点击Ascend,接着点击Model Converter,

 

进入以下界面,

 

Model File选择进行转换的 onnx 模型,Model Name 为模型名称,Target SoC Version 为需要转换成适配的芯片类型,并输入图片的Shape。 点击图中Model File最右边的按钮,可以生成可视化模型流程框架,帮助用户了解每层的结构与参数,如下图所示:

 

点击 ok,next,进行下一页的配置。

 

点击finish开始模型的转换。

5.3 执行离线推理

执行ais_infer.py脚本进行离线推理,测试推理模型的性能(包括吞吐率、时延).以batch size=1为例,batch size=4,8,16,32,64同理。参数分别为:模型路径,数据路径和推理结果存放路径。

 

推理结果如下图所示:

 

batch size为1时生成的图片如图所示:

 

5.4精度验证

使用后处理文件pse_postprocess.py,借助性能结果获取精度。其中的res_dir为不同batch size的性能结果存放目录,

Info_dir为数据集配置文件存放目录。

 

 

执行脚本pse_postprocess.py即可进行模型精度验证,以batch size=64为例,其他batch size同理。

 

其中参数为:模型的配置文件路径

得到如下推理结果:

 

 

F&Q

1.在执行离线推理时,切换自己创建的虚拟环境时报错

 

最后发现是忘记切换到root用户下,输入su,输入密码解决。

2.在执行离线推理时,报如下错误

 

寻求负责支撑推理的老师的帮助后,设置如下环境变量后就不会报错了。

 

 

3.在进行精度验证时,执行以下命令时,报错

 

最后发现是进入了tools目录下,执行cd ..进入主目录,执行以下命令就可以成功验证精度

 

大家遇到任何问题都可以去昇腾论坛,在帖子里提出自己关于项目的问题,会有华为内部技术人员进行答疑解惑。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值