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

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

遇到问题1:

(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})

问题1解决:
问题很简单,就是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])

遇到问题2:

(demoenv) rog@i7:~/my_file/obj/my_yolo_v8/examples/YOLOv8-CPP-Inference/build$ ./Yolov8CPPInference 
[ERROR:0] global ./modules/dnn/src/onnx/onnx_importer.cpp (718) handleNode DNN/ONNX: ERROR during processing node with 2 inputs and 1 outputs: [Add]:(/model.22/Add_output_0)
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.5.4) ./modules/dnn/src/onnx/onnx_importer.cpp:739: error: (-2:Unspecified error) in function 'handleNode'
> Node [Add]:(/model.22/Add_output_0) parse error: OpenCV(4.5.4) ./modules/dnn/src/onnx/onnx_importer.cpp:1067: error: (-215:Assertion failed) blob_0.size == blob_1.size in function 'parseBias'
> 
Aborted (core dumped)

问题2解决:
原来的openCV版本是4.5.4 更新到4.8.0就可以

相关推荐

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

    2024-01-31 02:14:01       32 阅读
  2. YOLOv8模型部署

    2024-01-31 02:14:01       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 02:14:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 02:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 02:14:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 02:14:01       20 阅读

热门阅读

  1. 【Git】git push代码 git commit -m 提交信息约束规范

    2024-01-31 02:14:01       33 阅读
  2. 【webrtc】m98 : vs2019 直接构建webrtc及unitest工程 1

    2024-01-31 02:14:01       45 阅读
  3. 软件价值2-贪吃蛇游戏

    2024-01-31 02:14:01       41 阅读
  4. day35_js

    2024-01-31 02:14:01       37 阅读
  5. 深入到 TLP:PCI Express 设备如何通信(第二部分)

    2024-01-31 02:14:01       36 阅读
  6. ETCD节点故障的容错方案

    2024-01-31 02:14:01       38 阅读
  7. C++ 手记

    2024-01-31 02:14:01       30 阅读