YoloV5推理加速、打包DLL、C#调用总结

参考原文:(173条消息) yolov5部署之七步完成tensorRT模型推理加速_yolov5 tensorrt_Christo3的博客-CSDN博客

操作过程中遇到的问题:

  1. cudnn-10.2-windows10-x64-v8.1.1.33在标题上没有windows但下载列表内有可用内容

YoloV5推理加速、打包DLL、C#调用总结_第1张图片
  1. 程序版本最好相同,不然容易报错

  1. CMake编译时使用的CMakeLists.txt文件为Linux下修改的,windows需要变更

cmake_minimum_required(VERSION 2.6)

project(yolov5)
set(OpenCV_DIR "E:\\yolov\\opencv\\build")
set(TRT_DIR "D:\\Yolov\\TensorRT-7.0.0.11")
add_definitions(-std=c++11)

option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)
find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
enable_language(CUDA)
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}\\include)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -D_MWAITXINTRIN_H_INCLUDED")

find_package(OpenCV QUIET
    NO_MODULE
    NO_DEFAULT_PATH
    NO_CMAKE_PATH
    NO_CMAKE_ENVIRONMENT_PATH
    NO_SYSTEM_ENVIRONMENT_PATH
    NO_CMAKE_PACKAGE_REGISTRY
    NO_CMAKE_BUILDS_PATH
    NO_CMAKE_SYSTEM_PATH
    NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)

include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${TRT_DIR}\\lib)
add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h)
target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin")
target_link_libraries(yolov5 ${OpenCV_LIBS})
  1. 第5步生成.engine文件所需的.wts文件需要放到上一级文件夹内,指定路径也没成功;samples的测试图片也需要放到上一级文件夹内;

  1. REGISTER_TENSORRT_PLUGIN(YoloPluginCreator)需要放到初始化函数执行,否则原位置会导致报无法解析的外部符号错误,这样应用程序就不需要添加“yololayer.cu”文件;

  1. yolo推理图片为非字节对齐格式,这与halcon格式相同,方便直接传输,bitmap转换的图片数据指针如因对齐增加数据,使用时还需要去除;

  1. bitmap为字节对齐格式,所以行像素数如不是4的倍数,则stride需要补齐;

  1. C#调用C++的DLL如需传出数据需要引用类型,值类型需要用数组方式,且C++代码内不能做初始化或指针更新,否则指向改变,C#内无法获取数据;

  1. halcon的InterleaveChannels算子可以获取彩色图像的交叉格式数据指针Intptr;

10.yolo训练自己的检测模型需要注意图片数量、标注数量、迭代次数,否则容易出现测试无结果或检测不准确的情况,有说法是一般迭代次数300次比较好

你可能感兴趣的:(人工智能,深度学习)