YOLACT边缘套件开发经验分享

基于MindStudio 的YOLACT推理开发项目

——MindX SDK边缘开发

目录

1.MindStudio介绍... 2

2.模型介绍... 2

3.环境搭建... 2

3.1开发环境安装... 2

3.2远端环境配置... 3

3.3创建项目... 5

4. 本地Git clone代码... 16

5. 项目开发... 17

5.1onnx转om离线模型转换... 17

5.2pipeline编写... 23

5.3main函数编写... 26

6. 运行推理... 28

7. 精度测评... 31

BILIBILI视频链接:YOLACT边缘套件开发经验分享_哔哩哔哩_bilibili

1.MindStudio介绍

MindStudio是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多,涵盖面广,可以进行包括网络模型训练、移植、应用开发、推理运行及自定义算子开发等多种任务。MindStudio除了具有工程管理、编译、调试、运行等一般普通功能外,还能进行性能分析,算子比对,可以有效提高工作人员的开发效率。除此之外,MindStudio具有远端环境,运行任务在远端实现,对于近端的个人设备的要求不高,用户交互体验很好,可以让我们随时随地进行使用。

2.模型介绍

YOLACT是2019年发表在ICCV上面的一个实时实例分割的模型,它主要是通过两个并行的子网络来实现实例分割的。(1)Prediction Head分支生成各个anchor的类别置信度、位置回归参数以及mask的掩码系数;(2)Protonet分支生成一组原型mask。然后将原型mask和mask的掩码系数相乘,从而得到图片中每一个目标物体的mask。论文中还提出了一个新的NMS算法叫Fast-NMS,和传统的NMS算法相比只有轻微的精度损失,但是却大大提升了分割的速度。

3.环境搭建

3.1开发环境安装

Windows版本MindStudio。按照官方安装步骤进行Windows平台MindStudio环境配置。

[参考链接](昇腾社区-官网丨昇腾万里 让智能无所不及)

在下载界面中选择软件包下载,根据系统和习惯选择相应包进行下载。

如果下载的.exe文件,下载后进行安装。

3.2远端环境配置

3.2.1 安装CANN

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

首先下载CANN安装包,选择并下载平台开发套件软件包。

[参考链接](昇腾社区-官网丨昇腾万里 让智能无所不及)

下载完成后按照如下步骤进行安装,详细说明参考昇腾社区。

[参考链接]

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

  1. 以软件包的安装用户登录安装环境。

安装依赖中安装依赖的用户为root用户,则软件包的安装用户可自行指定;若安装依赖中安装依赖的用户为非root用户,请确保软件包的安装用户与该用户保持一致。

  1. 将获取到的开发套件包上传到安装环境任意路径(如“/home/package”)。
  2. 进入软件包所在路径。
  3. 增加对软件包的可执行权限。
chmod +x 软件包名.run

软件包名.run表示开发套件包Ascend-cann-toolkit_{version}_linux-{arch}.run,请根据实际包名进行替换。

  1. 执行如下命令校验软件包安装文件的一致性和完整性。
./软件包名.run --check
  1. 执行以下命令安装软件(以下命令支持--install-path=<path>等参数,具体参数说明请参见参数说明)。
./软件包名.run –install

CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以root用户默认安装路径为例):

. /usr/local/Ascend/ascend-toolkit/set_env.sh   

用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:

  1. 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。
  2. 执行:wq!命令保存文件并退出。
  3. 执行source ~/.bashrc命令使其立即生效。

3.3创建项目

3.3.1新建项目

点击New Project。

        选择Ascend App,配置好项目名称,如果没有同步CANN,请点击Change按钮。

第一次使用需要配置远端服务器,点击+号进行配置。

输入远程服务器信息,测试连接成功后点击OK。

回到Remote CANN Setting界面,在Remote CANN location行右边选择CANN位置。

选择CANN所在位置

选择后点击finish

等待同步文件

同步完成后点击Next,继续创建工程

选择MindX SDK project(Python),然后点击finish。

3.3.2配置Deployment

点击Tools->Deployment,选择Configuration。

        可以在Deployment中点击+号,输入名字添加。

然后再Connection中点击SSH configuration右边的…,添加服务器。

        完成后可以在Connection中看到已经成功添加服务器,并可以通过Test Connection测试连接是否成功。

点击Mappings,在Deployment Path下方的路径选择,选择远程代码路径。

        右侧Excluded Path可以选择不拉取的文件,比如不需要把数据集拉取到本地,就选择Mappings路径中的无需拉取的文件。

右击Project,选择Deployment,选择Download from,选择刚才所设置的源,等待代码拉取。

3.3.3配置远端解释器

点击File->Project Structrue ->SDK 配置python SDK。

点击加号添加Python SDK。

选择SSH Interpreter,选择deployment,Interpreter和Name会自动填充,如果需要自定远端Python版本,则点击Interpreter后面的按钮(如下图所示),打开远端目录,选择需要的Python

        点击Project,如图所示,选择刚刚配置好的远端SDK,点击OK使配置生效。

3.3.4配置MindX SDK

打开MindStudio,在File中选择File > Settings > Appearance & Behavior > System Settings > MindX SDK,进入MindX SDK管理页面,点击Install进入远程配置界面。在配置前,请确保远端环境已经配置好MindX SDK和CANN Toolkits。

  1. 在Remote Connection一栏配置远程连接,输入申请的账号密码等相关信息。
  2. 在Remote CANN Location 一栏选择远端安装CANN Toolkits的路径,具体到版本,这里选择的是5.0.4版本。
  3. 在Remote SDK Location 一栏选择远端安装MindSDK的路径,这里选择的时Mxvision 2.0.4 版本。
  4. Local SDK location为本地默认的xSDK安装位置,会将远端的SDK同步过来。

点击ok后开始同步,配置完成后,如果界面如下图所示,则表示成功。

4. 本地Git clone代码

         点击最下方的Terminal,打开本地终端。

         可以看到左下角已经打开本地终端。

复制Github代码链接:https://github.com/bubbliiiing/yolact-pytorch.git, 在本地终端输入git clone https://github.com/bubbliiiing/yolact-pytorch.git并运行。

5. 项目开发

5.1onnx转om离线模型转换

我使用的是Pytorch模型,他的权重是一个pth文件,而Mind SDK里面支持的是om模型,所以我们需要进行一个转换。首先我们要把我们的pth文件转换成onnx文件,然后再转换成om模型。

5.2.1 pth转换成onnx

pth转换成onnx模型首先就是要加载权重,然后用权重来初始化自己的模型,随后调用torch自带的转onnx函数就可以完成模型的转换。代码仓库链接如下:

GitHub - bubbliiiing/yolact-pytorch: 这是一个yolact-pytorch的库,可用于训练自己的数据集

pth模型我们直接下载,链接如下:

https://github.com/bubbliiiing/yolact-pytorch/releases/download/v1.0/yolact_weights_coco.pth

在om转onnx时,需要将predict.py中21行代码改为mode = "export_onnx",然后运行python3 predict.py就可以得到onnx模型。

5.2.2 onnx转om模型

选择Ascend->Model Converter

在Model File中选择需要转换的onnx模型路径,选择后会自动分析模型,分析后得到如下。

这里软件自动解析模型,将模型的输入形状填写到了Shape下,在Type下也自动填写了精度类型。具体ACT模型转换时所有可以用到的参数,可以在此链接中详细查询https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/msug/msug_000394.html。

点击Select选择输出结点。

找到模型的所有输出节点,右击后选择select

选择所有输出结点后点击OK,返回界面后点击Next

由于本模型中未使用AIPP,继续点击Next。

这一步无需修改,点击Finish。

可以看到ATC工具开始运行转换模型。

模型转换成功后得到如下输出

5.2pipeline编写

         绘制整个流程的流程图,画出流程图如下。

 

         图像读取步骤中我选择使用cv2完成。据流程图编写完整的pipeline,创建yolact.pipline文件,打开后进行插件编排。

         首先选择输入插件,我选择使用appsrc插件,将其拖出来。

之后使用推理插件mxpi_tensorinfer0两者之间拖动连线连接起来。

点击mxpi_tensorinfer0插件,在modelPath中选择推理使用的om模型路径,如何转换得到om模型会在下文讲到。

以此类推,完成所有插件编排后结果如下。

点击Text,可以看到想要插件流程的代码。

5.3main函数编写

创建流:若创建失败则退出。

 

运用StreamManagerApi 读取pipeline。

载入图片,进行推理。

对推理结果进行后处理。

推理结果保存并计算精度

至此主函数编写完毕,命名为main.py,放到主目录下。

6. 运行推理

放入一张生活场景的图片,点击Run下的Edit Configuration

Deployment选择我们所在服务器,Executable选择执行文件,即main.py,Command Arguments中可以输入我们想要输入的参数。比如我们在执行图像可视化时,就输入—image=”street.jpg”。

点击OK完成设置,然后点击工具类的三角形图标,开始运行。

可以看到文件夹中已经生成了img.jpg输出结果。

可视化结果图像如下。

7. 精度测评

基于coco数据集进行精度测评,coco数据集放置目录结构如下。

├── data

│   ├── coco_test

│   │   ├── annotations    

│   │   ├── images    

├── convert

│   └── -----

├── model_data  

│   └── -----

├── utils  

│   └── -----

├── images  

│   └── -----

├── main.py

├── README.md  

执行精度评估,同理在Run下的Edit Configuration中配置运行设置。

配置如下,设置main.py为执行文件,不需要添加任何参数。点击OK完成配置并点击运行。

运行精度结果如下

得到精度结果如下:

精度指标

精度

bbox mAP 0.5:0.95

30.4%

bbox mAP 0.5

52.0%

segm mAP 0.5:0.95

27.3%

segm mAP 0.5

47.7%

对比原代码仓库的精度如下:

可见精度结果对比完全一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值