
Yolact 模型部署实战
按照齐感官方给出的教程进行部署,要注意在赋值命令的时候pdf的-会被识别成—,需要进行更改
按照文档要求产生了名为 yolact-sim.onnx 的模型,并且创建了 dataset.txt 文档,文档里面写需要识别的自己找的图片的路径 ./data/dog.jpg ,目录结构如下
.
├── data
│ └── dog.jpg
├── dataset.txt
└── yolact-sim.onnx
之后正式开始
导入模型
将开放模型转换为符合 VIP 模型网络描述文件 (.json) 和权重文件 (.data)
pegasus import onnx --model yolact-sim.onnx --output-model yolact-sim.json --output-data yolact-sim.data
此时如果出现以下错误需要安装 cuda10.1再试
libcudart.so.10.1: cannot open shared object file: No such file or directory
成功后得到 yolact-sim.json 和 yolact-sim.data 文件
创建YML文件
生成inputmeta
生成一个 .yml 格式的 inputmeta 文件,以配置ACUITY模型的输入数据集,这个文件用于ACUITY中的训练、转储、量化、推理和导出操作
pegasus generate inputmeta --model yolact-sim.json --input-meta-output yolact-sim-inputemeta.yml
成功后得到 yolact-sim-inputemeta.yml 文件
修改 yolact-sim-inputemeta.yml 中的 scale 参数为 0.0039
生成postprocess
为 ACUITY 模型生成后处理文件。后处理文件描述输出后处理任务
pegasus generate postprocess-file --model yolact-sim.json --postprocess-file-output yolact-sim-postprocess-file.yml
成功后得到 yolact-sim-postprocess-file.yml 文件
量化
量化网络数据。注意不要对已量化的 TensorFlow 和 TensorFlow Lite 模型转换而来的 ACUITY 网络执行量化
pegasus quantize --model yolact-sim.json --model-data yolact-sim.data --batch-size 1 --device CPU --with-input-meta yolact-sim-inputemeta.yml --rebuild --model-quantize yolact-sim.quantilize --quantizer asymmetric_affine --qtype uint8
成功后得到量化表 yolact-sim.quantilize 文件
预推理
对 ACUITY 模型执行推理
pegasus inference --model yolact-sim.json --model-data yolact-sim.data --batch-size 1 --dtype quantized --model-quantize yolact-sim.quantilize --device CPU --with-input-meta yolact-sim-inputemeta.yml --postprocess-file yolact-sim-postprocess-file.yml
成功后得到很多个 tensor 文件
导出代码和NBG 文件
将 ACUITY 模型导出到 OpenVX 应用程序,以便与 Vivante OVXLIB C 库一起运行。
pegasus export ovxlib --model yolact-sim.json --model-data yolact-sim.data --dtype quantized --model-quantize yolact-sim.quantilize --batch-size 1 --save-fused-graph --target-ide-project 'linux64' --with-input-meta yolact-sim-inputemeta.yml --postprocess-file yolact-sim-postprocess-file.yml --output-path ovxlib/yolact/yolact --pack-nbg-unify --optimize "VIP9000PICO_PID0XEE" --viv-sdk ${VIV_SDK}
此时可能会出错提示缺少库,按要求安装即可
sudo apt-get install libjpeg62-dev
另外可能遇到缺少 vsi_nn_pub.h 头文件的问题,观察了下是有这个库的,最后发现按照官方配的环境变量出了问题,修改后解决
原本写的是是 acuity-toolkit-binary-6.6.1 ,现在改成了 VivanteIDE5.7.0
运行成功得到 ovxlib 文件夹,里面的 yolact 文件夹内容包括nbg文件等, nb 文件在 ovxlib\yolact_nbg_unify 中
按照文档还有另一个命令,区别在最后一段上面用的 --pack-nbgunify 下面用的 --pack-nbgviplite ,并且执行报错, nify 是仿真侧的代码, viplite 是部署代码,但是 acuity-toolkit-binary 6.6.1版本没有了选项 --pack-nbg-viplite
pegasus export ovxlib --model yolact-sim.json --model-data yolact-sim.data --dtype quantized --model-quantize yolact-sim.quantilize --batch-size 1 --save-fused-graph --target-ide-project 'linux64' --with-input-meta yolact-sim-inputemeta.yml --postprocess-file yolact-sim-postprocess-file.yml --output-path ovxlib/yolact/yolact --pack-nbg-viplite --optimize "VIP9000PICO_PID0XEE" --viv-sdk ${VIV_SDK}
模型算力测量
pegasus measure --model yolact-sim.json
得到最后绿色字体的第三行即为预测结果
I Build torch_jit complete.
I Dump analysis to /home/zzr/yolov32/analysis.json
I sum_macc:77.49G sum_param:50.85M sum_activation:211.45M
I End measuring...
I ----------------Error(0),Warning(0)----------------
作为参考 yolov3 的 32.99G MACC 算力和 yolov3-tiny 的 2.79G macc 的算力需求,YOLACT 明显对算力的需求大很多, V853 的 MPU 算力为 1TOPS=1000GOPS ,在 500M 频率下,理论算力是 0.5T ,现在得到的是 77.49G ,那么帧率就为0.5T/0.078T=6 帧