Swin-Transformer适配昇腾开源验证任务心得
首先看了一下任务计划书:https://bbs.huaweicloud.cn/blogs/440522,主要目的是将 Swin-Transformer 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,也就是说验证Swin-Transformer能不能在使用Ascend(昇腾)运行。
开发过程
明确目的后开始熟悉模型,Swin-Transformer 的github网址:https://github.com/microsoft/Swin-Transformer,官方没有直接给出预训练模型,代码仓库的get_started.md文件有模型训练方法,网络上也可以搜索到其它的模型训练方法,如:https://gitcode.com/gh_mirrors/de/deep-learning-for-image-processing/tree/master/pytorch_classification/swin_transformer。为了方便后续使用,我把代码库中的代码文件fork到了我自己的代码仓库,class_indices.json文件需要根据自己的训练数据集进行编写,格式如下图:
模型文件训练好之后就可以从本地的图片之中选择进行推理。
编写推理代码,使用NPU推理模型:
官方并没有直接提供模型在NPU的推理代码,需要自己编写,可以参考:https://gitcode.com/huyanbo/Swin-Transformer/overview,
使用conda创建python虚拟环境:本人python版本3.10,然后再安装numpy,本人numpy版本1.23.5。再把predict_npu.py里面表明的依赖库安装下来,其他的依赖库按照提示安装即可。
使用NPU推理模型需要安装pytorch、CANN和torch_npu,版本要相对应,还要额外安装psutil库和attrs库。
先安装CANN,参考:https://www.hiascend.com/zh/developer/download/community/result?module=cann。
pytorch和torch_npu的安装参考:https://github.com/Ascend/pytorch/blob/master/README.zh.md。
依赖安装完成后,就可以运行推理代码文件实现模型的使用。输入需要识别的图片路径,模型会对该图片进行分析并返回属于各个类别的置信度。
1 验收材料
(1)验证DEMO地址:https://gitcode.com/huyanbo/Swin-Transformer/overview
(2)验证DEMO修改记录(可以有多个修改记录,只包含和本任务验证强相关的提交记录,比如添加依赖、增加配置文件、演示开源软件功能使用的代码等):https://gitcode.com/huyanbo/Swin-Transformer/commits/detail/8bb5a355bb07e0b1a0104e3bf0f1a278d077fff7?ref=Npu_demo
(3)博客地址:https://bbs.huaweicloud.cn/blogs/article
2 资源清单
产品名称 |
NPU架构 |
CPU架构 |
操作系统 |
云堡垒机 |
Ascend 910B3 |
鲲鹏计算Kunpeng-920 |
Huawei Cloud EulerOS 2.0 (aarch64) |
3 测试结果
此模型是图像分类模型,部署完成后运行代码可以输入想识别的图片路径,模型会将其属于各个类别的置信度返回出来。
Npu推理
运行程序前
运行程序后
我编辑npu时指定了npu编号为4,可以看到npu:4已经在运行了。
推理结果
输入的图片:
得到的结果
可以看到属于玫瑰的置信度最高,接近于1,模型识别正确。
- 点赞
- 收藏
- 关注作者
评论(0)