本博客包含推理的准备和部署代码,一步步实现部署。
这个运行时生成的一个batch的数据,NCHW,就是输入的N,单图片推理就是1,把里面的数量改成1,但是你可以多生成一些bin图片放到校准文件夹中,更改输出文件名字就行,当然图片也要换换;对了这里的bin文件是可以直接进入模型的文件图片,经过resize和归一化1:查看板卡带宽Ascend-dmi --bw
2:查看板卡算力也是Ascend-dmi 后面由参数查看昇腾官网
3:下面是部署流程
3.1 转成onnx(这个每个框架都有固定API),有时候需要onnx.utils.extract_model这个函数去截取
3.2 AMCT量化 这个安装时的onnxruntime使用cpu的也可以,不影响最后结果
参考昇腾社区-官网丨昇腾万里 让智能无所不及
从这里获取样例后更改samples: CANN Samples - Gitee.com
unzip samples-master.zip
cd samples-master/python/level1_single_api/9_amct/amct_onnx/cmd然后进入下面
tree -L
|-- README_CN.md
|-- data # 数据集存放路径
|-- model # ONNX 模型文件所在目录
|-- scripts
| |-- run_calibration.sh # 执行量化封装脚本
| |-- run_convert_qat.sh # QAT模型适配CANN模型命令行脚本
| |-- run_customized_calibration.sh # 用户自定义的训练后量化脚本
|-- src|-- process_data.py # 数据集预处理脚本|-- evaluator.py #系统内置的,基于“Evaluator”基类并且包含evaluator评估器的python脚本
python3 ./src/process_data.py
这个运行时生成的一个batch的数据,NCHW,就是输入的N,单图片推理就是1,把里面的数量改成1,但是你可以多生成一些bin图片放到校准文件夹中,更改输出文件名字就行,当然图片也要换换;对了这里的bin文件是可以直接进入模型的文件图片,经过resize和归一化。
第二步:利用命令行就按照这个,如果要利用脚本就参考上面的昇腾地址,后面还是要用脚本,实现量化细节
amct_onnx calibration
--model ./model/JINGSHIWU_UFLDv2_M18_RN64_CN128_20230914.onnx #输入的模型onnx
--save_path ./results/linedetvlh #输出的名字地址
--input_shape "input:1,3,320,800" #输入的input
--data_dir "./data/calibration" #校准数据集,也是第一步出来的
--data_types="float32" #输入数据的类型 这个不能改变,量化的是权重其实已经量化,至于是int8还是float那就是后面保存的格式
--batch_num=1 #推理阶段的batch
3.3 ATC转换参考昇腾社区-官网丨昇腾万里 让智能无所不及
第一步:安装就参考官网来就行,不麻烦,X86和arm的都行,无x86的需要交叉编译环境
第二部:安装下面命令进行
atc --model=linedetvlh_deploy_model.onnx#量化后的onnx用deploy这个--framework=5 #其实就是onnx框架可选其它根据情况--output=linedetlhforce16 #输出模型名字--input_format=NCHW # 输入格式--input_shape="input:1,3,320,800"#输入shape这个多输入也可以,可看官网--precision_mode=force_fp16#这个比较重要,官网的这个讲的很清楚,这个的效率会提高但会损失精度,默认的化看官网一般都是fp16--soc_version=Ascend310 #设备型号
3.5 性能评估工具msame
https://gitee.com/ascend/tools/tree/master/msam
类型一 不加input参数
会构造全为0的假数据送入模型推理
./msame
--model "/home/HwHiAiUser/msame/colorization.om"
--output "/home/HwHiAiUser/msame/out/"
--outfmt TXT
--loop 1
4 脚本参考
官网参考昇腾社区-官网丨昇腾万里 让智能无所不及
https://gitee.com/skming7216/Ultra-Fast-Lane-Detection-v2_ATLAS