“E [vnn_VerifyGraph: xx]CHECK STATUS” 问题

之前在VIM3上成功运行过推断,并完成了自己实现的后处理。但是后来接了OS08A10相机之后,网络就无法正常运行了。就只是网络相关的代码无法使用。

用的最新的DDK,固件是"VIM3_Ubuntu-xfce-bionic_Linux-4.9_arm64_EMMC_V20191231"

报错如下:
1、交叉编译的示例程序报错:
D [setup_node:368]Setup node id[0] uid[4294967295] op[NBG]
D [print_tensor:136]in(0) : id[ 0] vtl[0] const[0] shape[ 960, 384, 3, 1 ] fmt[u8 ] qnt[ASM zp= 0, scale=1.000000]
D [print_tensor:136]out(0): id[ 4] vtl[0] const[0] shape[ 60, 24, 32, 1 ] fmt[u8 ] qnt[ASM zp=141, scale=0.109417]
D [print_tensor:136]out(1): id[ 5] vtl[0] const[0] shape[ 60, 24, 48, 1 ] fmt[u8 ] qnt[ASM zp= 28, scale=0.386585]
D [print_tensor:136]out(2): id[ 6] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=152, scale=0.142898]
D [print_tensor:136]out(3): id[ 7] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=165, scale=0.141308]
D [print_tensor:136]out(4): id[ 1] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=176, scale=0.727347]
D [print_tensor:136]out(5): id[ 3] vtl[0] const[0] shape[ 60, 24, 16, 1 ] fmt[u8 ] qnt[ASM zp= 0, scale=0.003922]
D [print_tensor:136]out(6): id[ 2] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[f16] qnt[NONE]
D [optimize_node:312]Backward optimize neural network
D [optimize_node:319]Forward optimize neural network
I [compute_node:261]Create vx node
Create Neural Network: 29ms or 29261us
I [vsi_nn_PrintGraph:1421]Graph:
I [vsi_nn_PrintGraph:1422]***************** Tensors ******************
D [print_tensor:146]id[ 0] vtl[0] const[0] shape[ 960, 384, 3, 1 ] fmt[u8 ] qnt[ASM zp= 0, scale=1.000000]
D [print_tensor:146]id[ 1] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=176, scale=0.727347]
D [print_tensor:146]id[ 2] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[f16] qnt[NONE]
D [print_tensor:146]id[ 3] vtl[0] const[0] shape[ 60, 24, 16, 1 ] fmt[u8 ] qnt[ASM zp= 0, scale=0.003922]
D [print_tensor:146]id[ 4] vtl[0] const[0] shape[ 60, 24, 32, 1 ] fmt[u8 ] qnt[ASM zp=141, scale=0.109417]
D [print_tensor:146]id[ 5] vtl[0] const[0] shape[ 60, 24, 48, 1 ] fmt[u8 ] qnt[ASM zp= 28, scale=0.386585]
D [print_tensor:146]id[ 6] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=152, scale=0.142898]
D [print_tensor:146]id[ 7] vtl[0] const[0] shape[ 60, 24, 64, 1 ] fmt[u8 ] qnt[ASM zp=165, scale=0.141308]
I [vsi_nn_PrintGraph:1431]***************** Nodes ******************
I vsi_nn_PrintNode:159node[0] [in: 0 ], [out: 4, 5, 6, 7, 1, 3, 2 ] [19aef860]
I [vsi_nn_PrintGraph:1440]******************************************
I [vsi_nn_ConvertTensorToData:750]Create 1105920 data.
Verify…
E [vnn_VerifyGraph:79]CHECK STATUS 79
E [main:200]CHECK STATUS 200

2、在VIM3上通过cmake编译的代码报错:
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [_init_tensor:352]Create vx tensor fail.
E [_create_tensor:407]Create vx tensor fail.
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
D [setup_node:367]Setup node id[0] uid[0] op[NBG]
D [optimize_node:311]Backward optimize neural network
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
D [optimize_node:318]Forward optimize neural network
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
I [compute_node:260]Create vx node
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
E [vsi_nn_GetTensors:826]Tensor id 0/0
Segmentation fault

CMakLists如下:
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DDLIB_JPEG_SUPPORT”)
IF(CMAKE_CXX_COMPILER_ID STREQUAL “Clang”)
SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -Weverything”)
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL “GNU”)
SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -Wall -Wextra”)
ENDIF()
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

INCLUDE OPENCV

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
message(STATUS “Opencv include dir found at ${OpenCV_INCLUDE_DIRS}”)

INCLUDE sdk

include_directories(/home/khadas/ddd_detector/linux_sdk/acuity-ovxlib-dev/include)
include_directories(/home/khadas/ddd_detector/linux_sdk/build/sdk/include)
file(GLOB SDK_SHARE_LIBS “/home/khadas/ddd_detector/linux_sdk/acuity-ovxlib-dev/lib/.so")
file(GLOB SDK_STATIC_LIBS "/home/khadas/ddd_detector/linux_sdk/acuity-ovxlib-dev/lib/
.a”)

add_executable(detector main.cpp vnn_ddddetector.cpp vnn_post_process.cpp vnn_pre_process.cpp)
target_link_libraries(detector ${OpenCV_LIBS} ${SDK_SHARE_LIBS} ${SDK_STATIC_LIBS})

注意烧录固件后先别更新系统,不然会导致npu库更新,可能会有问题。

还有就是我们没有试过在VIM3上直接编译,建议在pc上交叉编译。

谢谢你的回复。我重新烧录,不更新系统,然后上面的问题解决了。
只是我之前烧录之后是做了更新的,当时程序可以运行。所以,是不是你们后来有更新过npu?
关于直接在VIM3上编译,这个是没问题的。

但现在还有个问题,无论是使用cv::imread(),还是参照"https://gitlab.com/khadas/aml_npu_app" 中的示例代码使用“cvLoadImage”,都无法读入图像。而通过“VideoCapture”读视频,或者在没有使用DDK的程序中用“imread”都没问题。

由新版本的,所以暂时不要更新

你是在python上使用这个,还是在c++上

我是在c++上实现的。是接口和opencv有冲突吗?

@wangjie_pan 我在python上试过。C++还没有,但是demo源码里并不是采用这种方式,而是用了一个旧的方式。 不清楚是否是版本冲突造成的