检测
下载源码:github链接
最好先在本地跑通demo,得到结果
模型转换
1、运行pytorch2onnx.py文件,把nanotrackv3.pth模型转换为onnx文件。
2、后使用atc命令运行ATC工具把onnx转换为om文件(这一步骤需要在Atlas开发板上运行)
atc --model=nanotrack_backbone_255.onnx --framework=5 --output=nanotrack_T --input_shape="images:1,3,255,255" --soc_version=Ascend310
出现上图提示则代表模型转换成功
准备Atlas上的Nanotrack推理代码
文件结构如下图所示:
可参考:昇腾社区官方文档(目标检测)
atlas_tracker.py文件中定义追踪器,其中包括输入输出数据集、执行推理、解析输出、释放模型资源、具体推理过程等
该追踪器参考Nanotrack源代码修改成使用AscendCL接口,具体是在run_model里对输入数据进行处理:
- 组织输入数据的dataset结构
- 组织输出数据的dataset结构
- 推理完成后, 将输出数据转换为numpy格式
- 释放 aclmdlDataset 类型数据
main.py文件是读取视频文件,对视频文件中的目标进行跟踪,并在视频上显示跟踪结果。
注:一定要释放acl模型的相关资源
开始先初始化acl相关资源,后进行推理,最后acl去初始化
if __name__ == '__main__':
context = init_acl(DEVICE_ID) # 初始化acl相关资源
main()
deinit_acl(context, 0) # acl 去初始化
在Atlas芯片上推理
首先把该项目导入进Atlas上,配置好相关python环境,进入NanoTrack_Atlas主目录下,运行python3 main.py
可以看出跟踪得分较高,效果不错
跟踪结果保存在video文件夹下
下载到本地可以查看跟踪结果