一些没提到坑点:
当环境没配好会报:
Traceback (most recent call last):
File "pegasus.py", line 131, in <module>
File "pegasus.py", line 112, in main
File "acuitylib/app/importer/commands.py", line 248, in execute
File "acuitylib/vsi_nn.py", line 125, in load_onnx
File "acuitylib/app/importer/import_onnx.py", line 38, in run
File "acuitylib/app/importer/import_onnx.py", line 33, in import_onnx_ruler_module
ModuleNotFoundError: No module named 'onnxruler'
解决办法
ACUITY_TOOLS_METHOD=acuity-toolkit-binary-6.6.1
export ACUITY_PATH=/opt/ye/VeriSilicon/$ACUITY_TOOLS_METHOD/bin/
export VIV_SDK=/opt/ye/VeriSilicon/VivanteIDE5.7.0/cmdtools/
export PATH=$PATH:/opt/ye/VeriSilicon/$ACUITY_TOOLS_METHOD/bin/:/opt/ye/VeriSilicon/VivanteIDE5.7.0/ide/
export pegasus=/opt/ye/VeriSilicon/$ACUITY_TOOLS_METHOD/bin/pegasus
alias pegasus=/opt/ye/VeriSilicon/$ACUITY_TOOLS_METHOD/bin/pegasus
参考: 全志V853 NPU 体验
坑2: 存在无法转换的节点?
Traceback (most recent call last):
File "pegasus.py", line 131, in <module>
File "pegasus.py", line 112, in main
File "acuitylib/app/importer/commands.py", line 248, in execute
File "acuitylib/vsi_nn.py", line 125, in load_onnx
File "acuitylib/app/importer/import_onnx.py", line 117, in run
File "acuitylib/converter/onnx/convert_onnx.py", line 66, in init
File "acuitylib/converter/onnx/convert_onnx.py", line 114, in __shape_inference
File "acuitylib/onnx_ir/onnx_numpy_backend/shape_inference.py", line 65, in infer_shape
File "acuitylib/onnx_ir/onnx_numpy_backend/smart_graph_engine.py", line 70, in smart_onnx_scanner
File "acuitylib/onnx_ir/onnx_numpy_backend/smart_node.py", line 48, in calc_and_assign_smart_info
File "acuitylib/onnx_ir/onnx_numpy_backend/smart_toolkit.py", line 653, in multi_direction_broadcast_shape
File "acuitylib/onnx_ir/onnx_numpy_backend/smart_toolkit.py", line 640, in _braodcast_shape
ValueError: operands could not be broadcast together with shapes (1,3,40,40,0) (1,3,40,40,2)
[3572303] Failed to execute script 'pegasus' due to unhandled exception!
解决
猜测系想yolov5的版本太新, 对齐到 tag: v6.0
坑:目录没权限
Traceback (most recent call last):
File "pegasus.py", line 131, in <module>
File "pegasus.py", line 112, in main
File "acuitylib/app/importer/commands.py", line 248, in execute
File "acuitylib/vsi_nn.py", line 125, in load_onnx
File "acuitylib/app/importer/import_onnx.py", line 117, in run
File "acuitylib/converter/onnx/convert_onnx.py", line 74, in init
File "acuitylib/converter/onnx/convert_onnx.py", line 118, in __build_ruler_db
File "acuitylib/converter/ruler_tool.py", line 50, in setup_db
FileNotFoundError: [Errno 2] No such file or directory: '/opt/ye/VeriSilicon/acuity-toolkit-binary-6.6.1/bin/onnx_ruler_db.json'
解
给/opt/ye/VeriSilicon/acuity-toolkit-binary-6.6.1加权限
坑:依赖gcc编译且依赖IDE库目录
D Generate fake input /opt/c/ye/k230_yolo/100ask-yolov5-test/ovxilb/100ask-best-sim/images_262_0.tensor
gcc -Wall -std=c++0x -I. -I/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0/cmdtools//include/ -I/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0/cmdtools//include/CL -I/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0/cmdtools//include/VX -I/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0/cmdtools//include/ovxlib -I/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0/cmdtools//include/jpeg -D__linux__ -DLINUX -O3 -c main.c
cc1: warning: command-line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
main.c:22:10: fatal error: vsi_nn_pub.h: 没有那个文件或目录
22 | #include "vsi_nn_pub.h"
| ^~~~~~~~~~~~~~
compilation terminated.
make: *** [/opt/c/ye/k230_yolo/100ask-yolov5-test/ovxilb/100ask-best-sim/makefile.linux:53:main.o] 错误 1
E Fatal model compilation error: 512
W ----------------Error(1),Warning(2)----------------
Traceback (most recent call last):
File "pegasus.py", line 131, in <module>
File "pegasus.py", line 116, in main
File "acuitylib/app/exporter/commands.py", line 178, in execute
File "acuitylib/vsi_nn.py", line 650, in export_ovxlib
File "acuitylib/app/exporter/ovxlib_case/export_ovxlib.py", line 73, in run
File "acuitylib/app/exporter/ovxlib_case/casegenerator.py", line 701, in generate
File "acuitylib/app/exporter/ovxlib_case/casegenerator.py", line 660, in _gen_special_case
File "acuitylib/app/exporter/ovxlib_case/casegenerator.py", line 620, in _gen_nb_file
File "acuitylib/app/exporter/ovxlib_case/casegenerator.py", line 444, in _compile_linux
File "acuitylib/acuitylog.py", line 263, in e
acuitylib.acuityerror.AcuityError: ('Fatal model compilation error: 512', 'nbg_compile')
[3733399] Failed to execute script 'pegasus' due to unhandled exception!
解
创建/opt/ye/V853_NPU/NPU/VivanteIDE5.7.0软链接或者直接解压到这里;
保留outputs节点不是整数
解
pegasus的--outputs参数项支持完整name字符串
pegasus import onnx --model best-sim.onnx --output-data best-sim.data --output-model best-sim.json --outputs "onnx: :Sigmoid_356 onnx::Sigmoid_508 onnx::Sigmoid_657"