运行yolo v8 YOLOv8-CPP-Inference C++部署遇到的问题

环境:
openCv:4.8.0
torch: 2.0.0
cuda:cuda_11.7.r11.7

遇到问题:

(tools) rog@i7:~/my_file/obj/ultralytics/examples/YOLOv8-CPP-Inference/build$ ./Yolov8CPPInference 

Running on CUDA
[ WARN:0@0.039] global net_impl.cpp:178 setUpNet DNN module was not built with CUDA backend; switching to CPU
[ERROR:0@0.039] global net_impl.cpp:1162 getLayerShapesRecursively OPENCV/DNN: [Reshape]:(onnx_node!/model.22/dfl/Reshape): getMemoryShapes() throws exception. inputs=1 outputs=1/1 blobs=0
[ERROR:0@0.039] global net_impl.cpp:1168 getLayerShapesRecursively     input[0] = [ 1 64 6300 ]
[ERROR:0@0.039] global net_impl.cpp:1172 getLayerShapesRecursively     output[0] = [ ]
[ERROR:0@0.039] global net_impl.cpp:1178 getLayerShapesRecursively Exception message: OpenCV(4.9.0-dev) /home/rog/my_file/other_LIB/my_opencv/4.8.0/opencv/modules/dnn/src/layers/reshape_layer.cpp:109: error: (-215:Assertion failed) total(srcShape, srcRange.start, srcRange.end) == maskTotal in function 'computeShapeByReshapeMask'

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.9.0-dev) /home/rog/my_file/other_LIB/my_opencv/4.8.0/opencv/modules/dnn/src/layers/reshape_layer.cpp:109: error: (-215:Assertion failed) total(srcShape, srcRange.start, srcRange.end) == maskTotal in function 'computeShapeByReshapeMask'

Aborted (core dumped)

cmake:

cmake_minimum_required(VERSION 3.5)

project(Yolov8CPPInference VERSION 0.1)


set(CMAKE_INCLUDE_CURRENT_DIR ON)

# CUDA
set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda")
find_package(CUDA 11 REQUIRED)

set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
# !CUDA


#添加OpenCV的目录  opencv目录去你编译安装的文件夹下找OpenCVConfig.cmake把该文件所在目录加进来就行了
set(CMAKE_PREFIX_PATH /home/rog/my_file/other_LIB/my_opencv/4.8.0/opencv/my_lib_x86/lib/cmake/opencv4) #×××××××××××
#寻找OpenCV库
FIND_PACKAGE(OpenCV 4.8.0 REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#打印调试信息
MESSAGE(STATUS "Project: ${PROJECT_NAME}")
MESSAGE(STATUS "OpenCV library status:")
MESSAGE(STATUS "version: ${OpenCV_VERSION}")
MESSAGE(STATUS "libraries: ${OpenCV_LIBS}")
MESSAGE(STATUS "include path: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "version:${OpenCV_VERSION}")
# !OpenCV

set(PROJECT_SOURCES
    main.cpp

    inference.h
    inference.cpp
)

add_executable(Yolov8CPPInference ${PROJECT_SOURCES})
target_link_libraries(Yolov8CPPInference ${OpenCV_LIBS})

问题解决:
问题很简单,就是onnx模型导出的imgsz参数不对。修改后的参数如下

from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8s.pt")

# Export the model
model.export(format="onnx", opset=12,dynamic=False,imgsz=[480,640])

你可能感兴趣的:(问题相关,YOLO,c++,webpack)