ReID ONNX推理
本次实验在MindStudio软件上进行,首先用户需要按照教程依次配置python环境,MinGW依赖,Java依赖,安装Cmake。MindStudio是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,提供用户在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务依靠模型可视化、算力测试、IDE本地仿真调试等功能,极大的提高了用户的开发效率,相比于很多用户不熟悉服务器的换进配置和命令形式,MindStudio采用菜单栏的形式简化了所有的命令操作,以可视化的操作让用户快速上手。同时MindStudio的社区活跃度非常高,在提出一个issue后,很快可以得到开发者的回复,方便解决我们其中遇到的问题。
一、概述
随着深度卷积神经网络的不断改进,行人重识别领域也有了很大的进步,但大多数的SOTA的算法都是设计了很复杂的网络结构和融合了多支路的特征。ReID模型则是一个结合了近些年来在行人重识别(Person ReID)算法中的一些训练技巧产生的Baseline,这些训练技巧包括Warmup Learning Rate、Center Loss、Last Stride等,使得模型在Market1501数据集上达到了94.5% rank-1以及85.9%mAP。
二、服务器端推理环境准备
1、 从下面链接下载Pytorch Onnx推理项目源代码仓
ATC ReID (FP16)- 昇腾社区 (hiascend.com)
2、 将下载后的压缩包上传到310服务器,并解压,模型文件存储在ReID_for_ Pytorch目录中
可通过scp命令或xshell等软件。
3、 使用下面命令下载ReID原仓库代码到当前目前中
git clone https://github.com/michuanhaohao/reid-strong-baseline
4、 当前目录结构
5、 配置conda环境、安装依赖包
4.1、深度学习框架
CANN == 5.1.RC1
torch == 1.8.0
torchvision == 0.9.0
onnx == 1.7.0
4.2、python第三方库
numpy == 1.20.3
Pillow == 8.2.0
opencv-python == 4.5.2.54
yacs == 0.1.8
pytorch-ignite == 0.4.5
6、 pth模型文件已经在下载的压缩包中。
7、 准备数据集
本推理模型使用Market1501数据集的测试集,请用户自行获取该数据集,上传并解压数据集到服务器任意目录,这里我将数据集目录放在了/opt/npu目录下。
三、客户端Mindstudio
3.1 安装和配置环境
按照Mindstudio用户手册中的安装指南—>安装操作来安装Mindstudio。
推理环境在远端服务器上已经配置完成。(安装教程 )
3.2 创建工程
选择Ascend App 项目
其中CANN版本应选择远端服务器,点击change
添加远程服务器
填写远端服务器信息,测试连接,连接成功后,选择CANN目录。
点击完成。
等待本地同步远端服务器CANN文件。同步成功后,选择ACL Project(python)项目,点击完成,完成新建项目。
配置项目结构
选择add python SDK
选择ssh interpreter
添加远程服务器
选择python解释器
配置本地文件夹与远程服务器映射
从远端服务器拉取代码
拉取代码成功
数据预处理
数据预处理将原始数据集转换为模型输入的数据,使用ReID_preprocess.py(找到该文件,然后右键选择Modify Run Configuration)
gallery同理也是同样的操作,再产生后gallery信息后,可在MindStudio命令控制台,将预先产生prep_dataset_gallery内的文件移动到prep_dataset_query目录。
数据预处理成功
生成JPEG图片输入info文件,使用benchmark推理需要输入图片数据集的info文件,用于获取数据集。使用gen_dataset_info.py脚本,输入已经获得的图片文件,输出生成图片数据集的info文件。
第一个参数为生成的数据集文件格式,第二个参数为预处理后的数据文件的相对路径,第三个参数为生成的数据集文件保存的路径。运行成功后,在当前目录中生成prep_bin.info。
运行ReID_pth2onnx文件将pth文件导出为onnx文件
onnx 转om(点击AscendModel Converter)
转换om模型成功后,使用mindstudio remote终端执行benchmark推理
启动ssh session,切换conda环境、工作目录
使用Benchmark工具进行推理,配置bemchmark工具需要的环境
执行benchmark命令获得om模型的吞吐率
推理成功,需要对推理结果进行后处理,通过ReID_postprocess.py进行后处理得到推理精度
其余的batch_size也是同样的操作,得到的结果如下表1所示,official为官方提供的精度。
输出结果如表1所示:
得到的om离线模型推理在mAP和Rank-1评价指标上精度与该模型github代码仓上公布的精度对比,精度下降在1%范围之内,故精度达标。
310执行完毕,经该模型迁移至710,将上述流程在Ascend710上在执行一遍
精度和性能均达标。
四、FAQ
Q:如果你仅从Asc end/modelzoo 拉取你的项目,通常会出现没有benchmark软件
A:所以还是建议下载每个项目安装包的形式来获取项目代码,以ReID模型为例,链接如下ATC ReID (FP16)- 昇腾社区 (hiascend.com) 。
Q:当出现下面的问题时,需要为其增加环境设置
A:使用下面的命令
source /usr/local/Ascend/ascend-toolkit/set_env.sh
Q: 依据下面方式配置python代码运行环境,其实使用的并不是虚拟环境,而是base环境
A: 目前找到的解决方式是右键,然后点击Modify Run Configuration,配置python虚拟环境
Q:类似上一问题,使用MindStudio运行文件时,每次都会和服务器进行文件同步,所以容易导致的问题时,当本地任何文件和服务器有差异时,会强制性将其变化为一致,导致受影响的文件很大。除非你的操作是一次性成功的。
A:希望开发者和社区能够注意到这一点。另外可以增加一个功能是可选择性的下载服务器的文件,而不是一次性只能下载全部的文件。
五、从昇腾社区获得更多帮助
开发者在使用 MindStudio或进行算子开发过程中遇到任何问题,都可以来昇腾社区获得更多的帮助。
昇腾官网:https://www.hiascend.com/
昇腾社区:https://bbs.huaweicloud.com/
昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.htm