国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

yolov8實(shí)戰(zhàn)第六天——yolov8 TensorRT C++ 部署——(踩坑,平坑,保姆教程)

這篇具有很好參考價(jià)值的文章主要介紹了yolov8實(shí)戰(zhàn)第六天——yolov8 TensorRT C++ 部署——(踩坑,平坑,保姆教程)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

C++ 結(jié)合 TensorRT 部署深度學(xué)習(xí)模型有幾個(gè)關(guān)鍵優(yōu)勢(shì),這些優(yōu)勢(shì)在各種工業(yè)和商業(yè)應(yīng)用中極其重要:

  1. 高效的性能:TensorRT 通過(guò)優(yōu)化深度學(xué)習(xí)模型來(lái)提高推理速度,減少延遲。這對(duì)于實(shí)時(shí)處理應(yīng)用(如視頻分析、機(jī)器人導(dǎo)航等)至關(guān)重要。

  2. 降低資源消耗:TensorRT 優(yōu)化了模型以在GPU上高效運(yùn)行,這意味著更低的內(nèi)存占用和更高的吞吐量。對(duì)于資源受限的環(huán)境或在多任務(wù)并行處理的情況下,這是一個(gè)顯著優(yōu)勢(shì)。

  3. 跨平臺(tái)和硬件兼容性:C++ 是一種跨平臺(tái)語(yǔ)言,配合 TensorRT,可以在多種硬件和操作系統(tǒng)上部署深度學(xué)習(xí)模型,包括嵌入式設(shè)備和服務(wù)器。

  4. 準(zhǔn)確性和穩(wěn)定性:TensorRT 提供了精確的數(shù)學(xué)和統(tǒng)計(jì)方法來(lái)減少浮點(diǎn)運(yùn)算誤差,這對(duì)于確保深度學(xué)習(xí)應(yīng)用的準(zhǔn)確性和穩(wěn)定性至關(guān)重要。

  5. 定制和靈活性:使用 C++ 和 TensorRT,開發(fā)者可以高度定制他們的深度學(xué)習(xí)應(yīng)用。這包括調(diào)整模型結(jié)構(gòu)、優(yōu)化算法和調(diào)節(jié)性能參數(shù)以滿足特定需求。

  6. 支持復(fù)雜網(wǎng)絡(luò)和大規(guī)模部署:TensorRT 支持最新的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),并能夠處理復(fù)雜的計(jì)算任務(wù)。這對(duì)于需要部署大型、復(fù)雜網(wǎng)絡(luò)的工業(yè)應(yīng)用來(lái)說(shuō)是必要的。

  7. 易于集成和擴(kuò)展:C++ 提供了與其他系統(tǒng)和工具(如數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)服務(wù)等)集成的靈活性。此外,TensorRT 也可以輕松與其他NVIDIA工具鏈(如CUDA、cuDNN等)集成。

?

一、準(zhǔn)備

下載YOLOv8項(xiàng)目和Tensorrt部署項(xiàng)目,TensorRT C++代碼選擇:

https://github.com/xiaocao-tian/yolov8_tensorrt

yolov8參考前幾天的ultralytics。

在ultralytics新建weights文件夾,放入yolov8s.pt.

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

將src的gen_wts.py,復(fù)制到ultralytics。

運(yùn)行g(shù)en_wts.py,生成?yolov8s.wts.

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

再將weights復(fù)制到?yolov8 TensorRT。

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

二、環(huán)境準(zhǔn)備?

1.vs配置

我下載的是vs2022,只安裝c++的桌面開發(fā)。

踩坑1:特別注意,請(qǐng)先安裝Visual Studio 2019,再安裝CUDA。這樣做的目的是避免在Visual Studio 2019中看不到CUDA runtime模板。CUDA安裝過(guò)程中,會(huì)提供cuda模板插件,如果先下載好Visual Studio 2019的情況下,該插件會(huì)自動(dòng)配置。

平坑1:安裝好vs2022后,再重裝cuda。
cuda和cudnn安裝請(qǐng)看:yolov8實(shí)戰(zhàn)第一天——yolov8部署并訓(xùn)練自己的數(shù)據(jù)集(保姆式教程)_yolov8訓(xùn)練自己的數(shù)據(jù)集-CSDN博客

2.cmake配置

Index of /files

下載:cmake-3.28.0-rc1-windows-x86_64.msi?

安裝版本,自己添加環(huán)境變量。

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

踩坑2:要驗(yàn)證cmake安裝是否成功。?

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

cmake成功安裝。

3.opencv、tensorrt配置

opencv安裝:C++實(shí)戰(zhàn)Opencv第一天——win11下配置vs,opencv環(huán)境和運(yùn)行第一個(gè)c++代碼(從零開始,保姆教學(xué))-CSDN博客

tensorrt安裝:

yolov8實(shí)戰(zhàn)第三天——yolov8TensorRT部署(python推理)(保姆教學(xué))_yolov8 tensorrt python部署-CSDN博客

踩坑3環(huán)境變量的配置

平坑3opencv、tensorrt、cudnn環(huán)境變量配置

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

至此,vs,cmake,cuda,cudnn,opencv,tensorrt全部配置完成。?

三、編譯

在tensorrt項(xiàng)目中新建build文件夾,然后使用cmake編譯,注意tensorrt項(xiàng)目中Cmakelist.txt?

分別配置自己opencv和tensorrt的地址即可。

cmake_minimum_required(VERSION 3.10)

project(yolov8)

# Modify to your path
set(OpenCV_DIR "E:/opencv/opencv/build")  
set(TRT_DIR "E:/TensorRT-8.6.1.6")  

add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)

# setup CUDA
find_package(CUDA REQUIRED)
message(STATUS "libraries: ${CUDA_LIBRARIES}")
message(STATUS "include path: ${CUDA_INCLUDE_DIRS}")
include_directories(${CUDA_INCLUDE_DIRS})

enable_language(CUDA)

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)

# TensorRT
set(TENSORRT_ROOT "E:/TensorRT-8.6.1.6")
include_directories("${TENSORRT_ROOT}/include")
link_directories("${TENSORRT_ROOT}/lib")


# OpenCV
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})

add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
target_link_libraries(myplugins nvinfer cudart)

file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
add_executable(yolov8 ${PROJECT_SOURCE_DIR}/src/main.cpp ${SRCS})

target_link_libraries(yolov8 nvinfer)
target_link_libraries(yolov8 cudart)
target_link_libraries(yolov8 myplugins)
target_link_libraries(yolov8 ${OpenCV_LIBS})

在tensorrt項(xiàng)目中新建build文件夾,然后使用cmake編譯,填寫如圖。

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

?踩坑1:No CUDA toolset found.就是找不到cuda。

The C compiler identification is MSVC 19.38.33133.0
The CXX compiler identification is MSVC 19.38.33133.0
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working C compiler: E:/vs2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
Detecting C compile features
Detecting C compile features - done
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Check for working CXX compiler: E:/vs2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
Detecting CXX compile features
Detecting CXX compile features - done
CMake Warning (dev) at CMakeLists.txt:15 (find_package):
  Policy CMP0146 is not set: The FindCUDA module is removed.  Run "cmake
  --help-policy CMP0146" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

Found CUDA: D:/CUDA (found version "12.0") 
libraries: D:/CUDA/lib/x64/cudart_static.lib
include path: D:/CUDA/include
CMake Error at D:/cmake/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:529 (message):
  No CUDA toolset found.
Call Stack (most recent call first):
  D:/cmake/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:8 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  D:/cmake/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:53 (__determine_compiler_id_test)
  D:/cmake/share/cmake-3.28/Modules/CMakeDetermineCUDACompiler.cmake:135 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:20 (enable_language)


Configuring incomplete, errors occurred!

踩坑3:找不到cudnn。

User
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "E:\Anaconda3\Lib\site-packages\tensorrt\__init__.py", line 127, in <module>
    ctypes.CDLL(find_lib(lib))
                ^^^^^^^^^^^^^
  File "E:\Anaconda3\Lib\site-packages\tensorrt\__init__.py", line 81, in find_lib
    raise FileNotFoundError(
FileNotFoundError: Could not find: cudnn64_8.dll. Is it on your PATH?
Note: Paths searched were:

平坑后:警告不用管。configure:

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

?generate:

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

然后open Project。

踩坑4cmake 點(diǎn) open Project 沒(méi)反應(yīng) 。

平坑4在生成的build中找到y(tǒng)olov8.sln,右鍵打開方式選擇vs2022.

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

解決方案右鍵屬性->選擇yolov8.?

?yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

打開main.cppyolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

先注釋 表示生成.engine文件。

    //wts_name = "";

注釋后直接運(yùn)行。?

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署?

?去掉注釋,再次執(zhí)行。

wts_name = "";

yolov8 c++,yolov8,YOLO,tensorrt,yolov8,部署

?視頻太短,長(zhǎng)視頻fps在100左右。

添加fps代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849583.html

    while (char(cv::waitKey(1) != 27)) {
        cap >> image;
        if (image.empty()) {
            std::cerr << "Error: Image not loaded or end of video." << std::endl;
            break; // or continue based on your logic
        }
        auto t_beg = std::chrono::high_resolution_clock::now();
        float scale = 1.0;
        int img_size = image.cols * image.rows * 3;
        cudaMemcpyAsync(image_device, image.data, img_size, cudaMemcpyHostToDevice, stream);
        preprocess(image_device, image.cols, image.rows, device_buffers[0], kInputW, kInputH, stream, scale);
        context->enqueue(kBatchSize, (void**)device_buffers, stream, nullptr);
        cudaMemcpyAsync(output_buffer_host, device_buffers[1], kBatchSize * kOutputSize * sizeof(float), cudaMemcpyDeviceToHost, stream);
        cudaStreamSynchronize(stream);

        std::vector<Detection> res;
        NMS(res, output_buffer_host, kConfThresh, kNmsThresh);
        // 計(jì)算FPS
        frame_counter++;
        if (frame_counter % 10 == 0) { // 每10幀更新一次FPS
            auto t2 = std::chrono::high_resolution_clock::now();
            auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1);
            fps = frame_counter / time_span.count();
            t1 = t2;
            frame_counter = 0;
        }
        drawBbox(image, res, scale, labels);
        // 將FPS繪制到圖像上
        cv::putText(image, "FPS: " + std::to_string(fps), cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2);
        auto t_end = std::chrono::high_resolution_clock::now();
        
        cv::imshow("Inference", image);
        float total_inf = std::chrono::duration<float, std::milli>(t_end - t_beg).count();
        std::cout << "Inference time: " << int(total_inf) << std::endl;
    }
    //    cv::waitKey();
    cv::destroyAllWindows();

到了這里,關(guān)于yolov8實(shí)戰(zhàn)第六天——yolov8 TensorRT C++ 部署——(踩坑,平坑,保姆教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • linux下 yolov8 tensorrt模型部署

    linux下 yolov8 tensorrt模型部署

    TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署 TensorRT系列之 Linux下 yolox tensorrt模型加速部

    2024年02月08日
    瀏覽(25)
  • YOLOv8 Tensorrt Python/C++部署教程

    YOLOv8 Tensorrt Python/C++部署教程

    https://www.bilibili.com/video/BV1Pa4y1N7HS https://github.com/Monday-Leo/YOLOv8_Tensorrt 基于 Tensorrt 加速 Yolov8 ,本項(xiàng)目采用 ONNX轉(zhuǎn)Tensorrt 方案 支持 Windows10 和 Linux 支持 Python/C++ Tensorrt 8.4.3. Cuda 11.6 Cudnn 8.4.1 onnx 1.12.0 安裝 yolov8 倉(cāng)庫(kù),并下載官方模型。 使用官方命令 導(dǎo)出ONNX模型 。 使用本倉(cāng)庫(kù)

    2023年04月25日
    瀏覽(57)
  • yolov8量化部署(基于openvino和tensorrt)

    yolov8量化部署(基于openvino和tensorrt)

    環(huán)境配置: 將pytorch模型轉(zhuǎn)為openvino模型: python量化腳本:(改編自https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/230-yolov8-optimization/230-yolov8-optimization.ipynb) python推理: C++推理:(openvino庫(kù)讀取xml文件在compile_model時(shí)報(bào)錯(cuò),暫時(shí)不明原因,改用onnx格式推理) 參考:h

    2024年02月09日
    瀏覽(24)
  • YOLOv8在NX上的tensorrt的加速部署(60幀率)

    YOLOv8在NX上的tensorrt的加速部署(60幀率)

    所有過(guò)程均可以參考本人所寫的文章 (1)虛擬環(huán)境工具 MInforge3-Linux-aarch64 Jetson 平臺(tái)都是RAM架構(gòu),平常的conda都是基于X86架構(gòu)平臺(tái)的。環(huán)境搭建參考文章 (2)YOLOv8_ros代碼,采用自己創(chuàng)建的yolov_ros代碼。yolov8_ros參考文章 (3)jetpack 環(huán)境(本篇文章是 jetpack5.1.2 )jetpack升級(jí)參考

    2024年01月18日
    瀏覽(23)
  • 【YOLO】Windows 下 YOLOv8 使用 TensorRT 進(jìn)行模型加速部署

    【YOLO】Windows 下 YOLOv8 使用 TensorRT 進(jìn)行模型加速部署

    本文全文參考文章為 win10下 yolov8 tensorrt模型加速部署【實(shí)戰(zhàn)】 本文使用的代碼倉(cāng)庫(kù)為 TensorRT-Alpha 注:其他 Yolov8 TensorRT 部署項(xiàng)目:YOLOv8 Tensorrt Python/C++部署教程 安裝Visual Studio 2019或者Visual Studio 2022、Nvidia驅(qū)動(dòng) 安裝cuda,cudnn、opencv、tensorrt并進(jìn)行相應(yīng)的環(huán)境配置,這里不做配

    2024年02月11日
    瀏覽(25)
  • yolov8n 瑞芯微RKNN、地平線Horizon芯片部署、TensorRT部署,部署工程難度小、模型推理速度快

    yolov8n 瑞芯微RKNN、地平線Horizon芯片部署、TensorRT部署,部署工程難度小、模型推理速度快

    ??特別說(shuō)明:參考官方開源的yolov8代碼、瑞芯微官方文檔、地平線的官方文檔,如有侵權(quán)告知?jiǎng)h,謝謝。 ??模型和完整仿真測(cè)試代碼,放在github上參考鏈接 模型和代碼。 ??因?yàn)橹皩懥藥灼獃olov8模型部署的博文,存在兩個(gè)問(wèn)題:部署難度大、模型推理速度慢。該篇解

    2024年01月16日
    瀏覽(27)
  • 【TensorRT】TensorRT 部署Yolov5模型(C++)

    【TensorRT】TensorRT 部署Yolov5模型(C++)

    ? 該項(xiàng)目代碼在本人GitHub代碼倉(cāng)庫(kù)開源,本人GitHub主頁(yè)為:GitHub ? 項(xiàng)目代碼: ? NVIDIA TensorRT? 是用于高性能深度學(xué)習(xí)推理的 SDK,可為深度學(xué)習(xí)推理應(yīng)用提供低延遲和高吞吐量。詳細(xì)安裝方式參考以下博客: NVIDIA TensorRT 安裝 (Windows C++) ? 經(jīng)典的一個(gè)TensorRT部署模型步驟為

    2023年04月26日
    瀏覽(22)
  • 【YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)

    【YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)

    ????博客主頁(yè): virobotics的CSDN博客:LabVIEW深度學(xué)習(xí)、人工智能博主 ??所屬專欄:『LabVIEW深度學(xué)習(xí)實(shí)戰(zhàn)』 ??上期文章: 手把手教你使用LabVIEW TensorRT實(shí)現(xiàn)圖像分類實(shí)戰(zhàn)(含源碼) ??如覺(jué)得博主文章寫的不錯(cuò)或?qū)δ阌兴鶐椭脑?,還望大家多多支持呀! 歡迎大家?關(guān)注、

    2024年02月14日
    瀏覽(23)
  • 使用Tensorrt部署,C++ API yolov7_pose模型

    使用Tensorrt部署,C++ API yolov7_pose模型

    雖然標(biāo)題叫部署yolov7_pose模型,但是接下來(lái)的教程可以使用Tensorrt部署任何pytorch模型。 倉(cāng)庫(kù)地址:https://github.com/WongKinYiu/yolov7/tree/pose 系統(tǒng)版本:ubuntu18.4 驅(qū)動(dòng)版本:CUDA Version: 11.4 在推理過(guò)程中,基于 TensorRT 的應(yīng)用程序的執(zhí)行速度可比 CPU 平臺(tái)的速度快 40 倍。借助 TensorRT,您

    2024年02月05日
    瀏覽(26)
  • 在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)

    在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)

    在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)‘下個(gè)博客是yolov7的部署’ 一、CUDA、CUDNN、TensorRT以及OpenCV安裝 CUDA安裝 CUDNN安裝 TensorRT安裝 OpenCV安裝 二、YOLOv5部署 文件準(zhǔn)備 模型文件轉(zhuǎn)換 3.生成wts文件 4.生成部署引擎 5.端側(cè)部署模型測(cè)試圖片 6.視頻檢測(cè) 7.安卓部署 8.C+

    2024年02月02日
    瀏覽(48)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包