./build_vx.sh编译报错,请官方人员帮忙解答


如图所示,进行yolov3_tiny编译时,运行./build_vx.sh报错,同样操作yolov3则不会出现这个问题。

@JLZhangg 最新代码请直接在板子上编译

我在板子上编译,会出现libnn_yolo_tiny.so生成失败的问题,报错如下,您能帮忙看看原因吗?
khadas@Khadas:~/aml_npu_app/detect_library/model_code/detect_yolo_v3_tiny$ ./build_vx.sh /home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk
/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk/common.target:85: warning: overriding recipe for target ‘bin_r/libnn_yolo_tiny.so’
/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk/common.target:64: warning: ignoring old recipe for target ‘bin_r/libnn_yolo_tiny.so’
make: Warning: File ‘yolo_tiny_process.c’ has modification time 5932096 s in the future
COMPILE /home/khadas/aml_npu_app/DDK_6.3.3.4/detect_library/model_code/detect_yolo_v3_tiny/yolo_tiny_process.c
COMPILE /home/khadas/aml_npu_app/DDK_6.3.3.4/detect_library/model_code/detect_yolo_v3_tiny/vnn_yolotiny.c
vnn_yolotiny.c: In function ‘vnn_CreateYoloTiny’:
vnn_yolotiny.c:145:29: warning: unused variable ‘data’ [-Wunused-variable]
145 | uint8_t * data;
| ^~~~
At top level:
vnn_yolotiny.c:94:17: warning: ‘load_data’ defined but not used [-Wunused-function]
94 | static uint8_t* load_data
| ^~~~~~~~~
LINK libnn_yolo_tiny.so
/usr/bin/ld: bin_r/yolo_tiny.o: in function model_create': yolo_tiny.c:(.text+0x94): undefined reference to vnn_CreateYolotiny’
/usr/bin/ld: bin_r/yolo_tiny.o: in function model_release': yolo_tiny.c:(.text+0x348): undefined reference to vnn_ReleaseYolotiny’
collect2: error: ld returned 1 exit status
make: *** [/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk/common.target:86: bin_r/libnn_yolo_tiny.so] Error 1

我这边没有问题,你做了什么修改

就是用了自己训练的yolov3tiny网络,cfg和weight用的是自己修改和训练得到的。class数为1。

而且我发现你这边直接. /build vx. sh就可以,我这边后面还要加一个sdk路径,是版本问题吗?或者我能不能把我的weigh t和cfg发给您,帮我看看您那边能否部署成功?

@JLZhangg 你更新最新的代码,再在板子上编译。你先试试原始的,如果原始没问题,就是你的库有问题。另外,单物体检测,不建议使用yolo

更新最新的代码,需要同步更新系统吗,另外请问如果是库有问题的话要怎么操作呢?

@JLZhangg 需要更新系统到最新的,按照文档修改,然后自己加打印信息调试

所以我的cfg和weights理论上就是可以直接移植的吗?我现在需要把系统、SDK、aml_npu_app全部更新到最新的,然后试一下是吗?

@JLZhangg 理论上任何的yolov3都是可以的,但是应用代码要适配的,不知道你是怎么适配的,你要自己调试

是指的SDK,系统和aml_npu_app的适配吗?

我又试了一下,即使是用原始的,不修改,编译也会报错,我按照官方文档操作,直接运行./build_vx.sh是不可以的,要加sdk路径,所以是不是我这边的路径加的有问题啊?
khadas@Khadas:~/aml_npu_app/DDK_6.3.3.4/detect_library/model_code/detect_yolo_v3_tiny$ ./build_vx.sh /home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk_6.4.3
/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk_6.4.3/common.target:85: warning: overriding recipe for target ‘bin_r/libnn_yolo_tiny.so’
/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk_6.4.3/common.target:64: warning: ignoring old recipe for target ‘bin_r/libnn_yolo_tiny.so’
LINK libnn_yolo_tiny.so
/usr/bin/ld: bin_r/yolo_tiny.o: in function model_create': yolo_tiny.c:(.text+0x94): undefined reference to vnn_CreateYolotiny’
/usr/bin/ld: bin_r/yolo_tiny.o: in function model_release': yolo_tiny.c:(.text+0x348): undefined reference to vnn_ReleaseYolotiny’
collect2: error: ld returned 1 exit status
make: *** [/home/khadas/aml_npu_sdk_6.4.3/linux_sdk/linux_sdk_6.4.3/common.target:86: bin_r/libnn_yolo_tiny.so] Error 1

@JLZhangg 你没有更新app仓库,最新的版本,可以直接在板子上编译,不需要SDK路径

您好,我使用了最新版本的app仓库,直接在板子上编译,没有任何改动,又报了另一个错误,请问是什么原因呀?
khadas@Khadas:~/Documents/aml_npu_app/detect_library/model_code/detect_yolo_v3$ sudo ./build_vx.sh
COMPILE /home/khadas/Documents/aml_npu_app/DDK_6.3.3.4/detect_library/model_code/detect_yolo_v3/yolov3_process.c
In file included from ./include/yolov3_process.h:4,
from yolov3_process.c:7:
./include/vnn_global.h:9:10: fatal error: vsi_nn_pub.h: No such file or directory
9 | #include “vsi_nn_pub.h”
| ^~~~~~~~~~~~~~
compilation terminated.
make: *** [makefile.linux:52: bin_r/yolov3_process.o] Error 1

@JLZhangg 请参照文档,升级到最新的系统

我更新最新的系统和app仓库,确实可以跑通,但使用我自己的cfg和weights转换后的代码就不行了,这种情况我需要怎么调试呢,能不能给个大致的方向呢?

@JLZhangg 我在文档里面写得很清楚了怎么适配,文档里面的示例也正好是yolov3

不是,我的意思是,我按照这个文档一样的操作,得出的.h和.c文件,放到aml_npu_app里面运行,会报错。如果用原始的就不会,所以是不是cfg文件有些地方是不能改动的,或者说有改动的话需要怎么调试使编译成功呢?

另外,我直接运行官方提供的demo,其他网络都可以成功识别,但是Yolo_tiny识别不出图像内容。