运行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就可以

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值