如何把导出的NPU case code 编译成android平台的可执行文件?

Hi;
![IMAG0114|690x392](upload://bSAUaIH7ofrHhbJeBCkRWbNzQ5p.jpeg) 

我在aml_npu_sdk_6.4.0.10中没有找到图片中的conversion_scripts_nbg_unify这个demo code用于编译android 可执行文件。请问要如何操作?

Hello @Terry

Android平台的,帮忙看看。

@Sword 你好,在转换文件下找一下这个文件夹nbg_unify_${NAME}, NAME就是你在脚本里面设置的名字,比如我设置了NAME=yolov3,那么输出文件夹就是nbg_unify_yolov3. 这个文件夹就是文档里面的conversion_scripts_nbg_unify

hi:
我已导出了case code,如下:

sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$ ls
0_import_model.sh 2_export_case_code.sh extractoutput.py inception_v3.export.data inception_v3.quantize model
1_quantize_model.sh data inception_v3.data inception_v3.json inference.sh nbg_unify_inception_v3
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$ ls nbg_unify_inception_v3/
BUILD inceptionv3.vcxproj makefile.linux openvx_case vnn_inceptionv3.c vnn_post_process.c vnn_pre_process.c
inception_v3.nb main.c nbg_meta.json vnn_global.h vnn_inceptionv3.h vnn_post_process.h vnn_pre_process.h
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/acuity-toolkit/conversion_scripts$

没有看到文档说的mk文件,怎么编译成android的可执行文件呢?我导出case code的时候要修改什么参数才会产生mk文件?

@Sword @jasonl 帮你确认一下android sdk的问题

hi:
烦请抽时间解答!这边还要等着评估。

@Sword 这个问题稍等下,我这边帮你验证下什么情况

@Sword 原始 sdk 目录下 android_sdk\ovx_src_facenet_88\jni 里面有 mk 文件,你可以复制过去修改下

Hi:
1.aml_npu_sdk_6.4.0.10里android_sdk没有ovx_src_facenet_88这个目录,只有include和lib?
2.我这边还发现了一个问题:
console:/data/local/Amlogic/temp #
/ExeOpenCV-TensorflowLite-r19c <
/system/bin/sh: ./ExeOpenCV-TensorflowLite-r19c: not executable: 64-bit ELF file
android-ndk-r17c-linux-x86_64.zip,android-ndk-r19c-linux-x86_64.zip,这两版ndk的现象是一样的,请问怎么查出厂的固件版本》对应的ndk用哪个版本?
对应的cmake指令:
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=“arm64-v8a” -DANDROID_PLATFORM=android-28 -DANDROID_STL=c++_static …

HI:
请问你说的原始sdk在哪里?还有怎么确定板子出厂烧得是哪个版本的固件?有arm64-v8a对应指令集的固件吗?我想发挥cpu的最大频率,应如何做?

hi:
原始 sdk 目录下 android_sdk\ovx_src_facenet_88\jni在哪里找?请告知!

https://mega.nz/file/KA1ARQ7T#aAaAa1T9vx59AgF4dqOrPo03sUM_LXBOLgXx1EjxhPc
你下载下吧 ,你参考下里面的mk 吧

hi:
该链接打不开。有百度网盘分享链接吗?

hi:
该链接打不开。有百度网盘分享链接吗?

链接:https://pan.baidu.com/s/1L0DBUn5WZNBT4XqnyKbtTQ
提取码:m8q4

Hi:
编译完成后,放在板子上执行,出现以下问题:
console:/data/local/Amlogic/inceptionv3 # ls -l
total 38620
-rw-r–r-- 1 media_rw media_rw 88322 2011-01-01 12:10 goldfish_299x299.jpg
-rw-r–r-- 1 media_rw media_rw 37226334 2011-01-01 12:10 inception_v3.nb
-rw-r–r-- 1 root root 172104 2011-01-01 13:41 libjpeg_t.so
-rw-r–r-- 1 root root 2019592 2011-01-01 13:41 libovxlib.so
-rwxr-xr-x 1 root root 26272 2011-01-01 13:41 vnn_inceptionv3
console:/data/local/Amlogic/inceptionv3 #
console:/data/local/Amlogic/inceptionv3 #
console:/data/local/Amlogic/inceptionv3 #
/vnn_inceptionv3 <
CANNOT LINK EXECUTABLE “./vnn_inceptionv3”: library “libjpeg_t.so” not found
1|console:/data/local/Amlogic/inceptionv3 #
1|console:/data/local/Amlogic/inceptionv3 #
1|console:/data/local/Amlogic/inceptionv3 #
1|console:/data/local/Amlogic/inceptionv3 #
1|console:/data/local/Amlogic/inceptionv3 #
1|console:/data/local/Amlogic/inceptionv3 # export LD_LIBRARY_PATH=./
console:/data/local/Amlogic/inceptionv3 #
console:/data/local/Amlogic/inceptionv3 #
/vnn_inceptionv3 <
CANNOT LINK EXECUTABLE “./vnn_inceptionv3”: cannot locate symbol “vxIdentifyGraphInputsAndOutputs” referenced by “/data/local/Amlogic/inceptionv3/libovxlib.so”…

是否还缺其它so文件?

你要把sdk 中 libjpeg.so copy 到 vendor/lib 下,改成libjpeg_t.so

Hi:
我已经重命名了,把两个.so放到vendor/lib下,现象是一样的。

Hi:
我已经重命名了,把两个.so放到vendor/lib下,现象是一样的。

hi:
"vxIdentifyGraphInputsAndOutputs"是被libovxlib.so引用,两个so都没有实现这个函数。
sword@sword-Aspire-V3-471G:~/Amlogic-A311D/aml_npu_sdk_6.4.0.10/android_sdk/include$ grep -r “vxIdentifyGraphInputsAndOutputs” *
service/ovx_inc/VX/vx_api.h:VX_API_ENTRY vx_status VX_API_CALL vxIdentifyGraphInputsAndOutputs(vx_graph graph,
它也不是个内联函数,我还是认为缺其它so文件。