按照齐感官方给出的教程进行部署,要注意在赋值命令的时候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 帧