1.MindStudio介绍
MindStudio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过Web的方式向开发者提供以下4项服务功能。MindStudio除了具有工程管理、编译、调试、运行等一般普通功能外,还能进行性能分析,算子比对,可以有效提高工作人员的开发效率。除此之外,MIndStudio具有远端环境,运行任务在远端实现,对于近端的个人设备的要求不高,用户交互体验很好,可以让我们随时随地进行使用。MindStudio可以单独安装在Windows上。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann-toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。
2.PraNet模型概述
PraNet是一种基于并行反向注意力的网络,用于精确分割结肠镜图像中的息肉。具体来说,PraNet首先使用并行的部分解码器(PPD)在高级层中聚合特征。基于这个组合特征,该网络生成一个全局映射图作为以下组件的初始引导区域。此外,该网络还使用反向注意模块(RA)挖掘边界线索,该模块能够建立区域和边界线索之间的关系。由于区域和边界之间的迭代交互机制,PraNet能够校正预测结果中相互矛盾的区域,从而提高分割精度。在五个具有挑战性的数据集,六个指标上定量和定性的实验结果表明,PraNet显著地提高了分割精度,并且在泛化性能和分割实时性(∼50fps)方面具有明显优势。
3.服务器端推理环境准备- 获取Pytorch onnx推理项目源代码仓
git clone https://github.com/DengPingFan/PraNet.git -b master
2. 获取模型评测脚本文件
git clone https://github.com/plemeri/UACANet
3. 当前目录结构
4. 配置conda环境、安装依赖包
5. 下载pth模型文件,将模型文件放入文件夹PraNet中
6.准备数据集,本模型使用Kvasir数据集作为测试集
4.配置客户端MindStudio并进行推理1. 安装和配置环境
前往网页昇腾社区-官网丨昇腾万里 让智能无所不及
并下载安装
2. 创建工程
选择Ascend App 项目
其中CANN版本应选择远端服务器,点击change
添加远程服务器
填写远端服务器信息,测试连接,连接成功后,选择CANN目录
点击完成
等待本地同步远端服务器CANN文件。同步成功后,选择ACL Project(python)项目,点击完成,完成新建项目
配置项目结构
选择add python SDK
选择ssh interpreter
添加远程服务器
选择python解释器
配置本地文件夹与远程服务器映射
从远端服务器拉取代码
数据预处理
数据预处理将原始数据集转换为模型输入的数据,使用PraNet_preprocess.py
第一个参数是数据集路径,第二个参数是数据预处理后的输出路径
数据预处理成功
生成PNG图片输入info文件,使用benchmark推理需要输入图片数据集的info文件,用于获取数据集。使用get_info.py脚本,输入已经获得的图片文件,输出生成图片数据集的info文件
第一个参数指定数据格式,第二个参数指定数据集路径,第三个参数指定输出info文件的路径,其余参数指定读取数据的长宽,运行后获得pre_bin.info文件
运行PraNet_pth2onnx.py文件将pth文件导出为onnx文件
第一个参数是读入pth的路径,第二个参数是输出onnx的路径
使用onnxsim优化onnx文件
onnx 转 om
转换om模型成功后,使用mindstudio remote终端执行benchmark推理
启动ssh session,切换conda环境、工作目录
使用Benchmark工具进行推理,配置benchmark工具需要的环境
执行benchmark命令
推理成功,需要对推理结果进行后处理,通过PraNet_postprocess.py进行后处理
第一个参数是需要后处理文件的路径,第二个参数是处理后文件的输出路径。
后处理成功后,使用Eval.py进行精度评估
第一个参数是金标准路径,第二个参数是预测结果路径,第三个参数是评估结果输出路径
310执行完毕,经该模型迁移至310P,将上述流程在Ascend310P上在执行一遍
精度和性能均达标。
5.Q&A:Q: 使用benchmark工具时报错
./benchmark.x86_64: error while loading shared libraries: libacl_dvpp.so: cannot open shared object file: No such file or directory
A: 使用命令source /usr/local/Ascend/ascend-toolkit/set_env.sh
激活环境后,错误消失
Q: ATC转换模型后发生精度损失怎么办?
A:可以在ATC转换命令后增加参数--precision_mode=allow_fp32_to_fp16
--buffer_optimize=off_optimize
Q:pth转换onnx发生报错,找不到模型怎么办?
A:将./lib/PraNet_Res2Net.py的res2net50_v1b_26w_4s(pretrained=True)修改为res2net50_v1b_26w_4s(pretrained=False)
Q:模型的性能没有达到预期标准怎么办?
A:使用命令aoe --framework 5 --model PraNet-19_dybs_sim_n.onnx --job_type 1 --output ./test --input_shape "input:1,3,352,352"
其中model参数后使用onnx模型,job_type可选1或者2,output参数指定输出om的路径,input_shape指定了输入格式的大小以及batch



