SDK/linux_sdk/linux_sdk/acuity-ovxlib-dev/include/vsi_nn_assert.h:35:32:错误:
数组‘assert_failed_CASE_VERSION_is_higher_than_OVXLIB_VERSION_25’的大小为负
typedef char assert_paste(assert_failed##msg##_, line)[2*!!(cond)-1];
按照https://docs.khadas.com/zh-cn/vim3/HowToConvertToUseNPU.html上的教程
把一个100%确定能用有正确结果的custom.weights和custom.cfg喂给NPU SDK
data下准备了200张416x416图片并将文件名写入validation_tf.txt
acuity-toolkit 取自 aml_npu_sdk_6.4.4.3
linux_sdk 与 toolchains 取自 aml_npu_sdk_6.4.3
(因为6.4.4.3里没这两文件夹)
Python3.5 / Pop!OS 20.04 LTS 可以成功编译aml_npu_app内的demo工程
我使用的是整合DarkNet转换脚本,本质是把0_xxx、1_xxx、2_xxx三个sh合起来。
#!/bin/bash
YOLO=custom
FILE=yolov3echo “------------ConvertDarknet------------”
…/bin/convertdarknet
–net-input ${YOLO}.cfg
–weight-input ${YOLO}.weights
–net-output ${FILE}.json
–data-output ${FILE}.data \echo “-------------Quantization-------------”
…/bin/tensorzonex
–model-input ${FILE}.json
–model-data ${FILE}.data
–source text
–source-file data/validation_tf.txt
–action quantization
–dtype float32
–reorder-channel ‘2 1 0’
–channel-mean-value ‘0 0 0 256’
–model-quantize ${FILE}.quantize
–quantized-dtype asymmetric_affine-u8
–batch-size 20
–epochs 10
–quantized-rebuild \#default batch-size(100) epochs(1) if the epochs > 1
#the numbers of pictures = batch-size * epochsecho “-------------Ovxgenerator-------------”
…/bin/ovxgenerator
–model-input ${FILE}.json
–data-input ${FILE}.data
–model-quantize ${FILE}.quantize
–reorder-channel ‘2 1 0’
–channel-mean-value ‘0 0 0 256’
–export-dtype quantized
–optimize VIPNANOQI_PID0X88
–viv-sdk …/bin/vcmdtools
–pack-nbg-unify \echo “--------------Clear-------------”
rm *.h *.c *.lib BUILD *.linux
*.vcxproj .project .cproject
*.data *.json *.quantize \echo “--------------Move--------------”
mv …/*nbg_unify cpp${FILE}
cd cpp_${FILE}
mv network_binary.nb ${FILE}.nbNPU_APP=/home/qin915/Desktop/SDK/aml_npu_app/detect_library/model_code/
#cp ${NPU_APP}/detect_yolo_v3 ${NPU_APP}/detect_yolo_v3_raw -r
cp vnn_${FILE}.c ${NPU_APP}/detect_yolo_v3/vnn_yolov3.c
cp vnn_${FILE}.h ${NPU_APP}/detect_yolo_v3/include/vnn_yolov3.h
cp vnn_post_process.h ${NPU_APP}/detect_yolo_v3/include/vnn_post_process.h
cp vnn_pre_process.h ${NPU_APP}/detect_yolo_v3/include/vnn_pre_process.hgedit ${NPU_APP}/detect_yolo_v3/yolov3_process.c
#yolov3_process.c : static char *coco_names[] = { ITEM };
#yolov3_process.c : int yolo_v3_post_process_onescale() { int num_class = NUM }
#yolov3_process.c : yolov3_postprocess() { … int size[3]={,(num_class+5)*3} }
#yolov3_process.c : yolov3_postprocess() { … int num_class = NUM }echo “--------------Build-------------”
cd ${NPU_APP}/detect_yolo_v3
LinuxSDK=~/Desktop/SDK/linux_sdk/linux_sdk
./build_vx.sh ${LinuxSDK}