最简洁yolov8 C++配置教程
最简洁yolov8 C配置教程ubuntu22.04 安装Cuda TensorRT Cudnn Miniconda1 .Cuda TensorRT Cudnn配置步骤2. Miniconda的安装 在之前的安装完毕且成功的情况下yolov8的C使用1. github上有个大神开源了yolov8的使用非常好用[链接](https://github.com/triple-Mu/YOLOv8-TensorRT)https://github.com/triple-Mu/YOLOv8-TensorRTubuntu22.04 安装Cuda TensorRT Cudnn Miniconda该方法在多个计算平台进行了配置验证百分百好用平台包括AMD CPU3090、AMD CPU5090D、intel CPUP620、intelCPU1060、intelCPU40601 .Cuda TensorRT Cudnn配置步骤a. 安装Nvidia显卡驱动以我下面提供的Cuda TensorRT和Cudnn版本 根据电脑显卡型号在官网上找到对应的显卡驱动版本按照提示安装或者在ubuntu22.04系统下打开软件和更新–附加驱动–(使用NVIDIA Server metapackage来自nvidia-driver-535)附加驱动部分选择535系列(不能太新了根据下面安装的Cuda版本选择 535系列显卡驱动就行非50系列显卡驱动直接用535系列就可以了)在除了5090D计算平台上(5090D的显卡驱动没有535版本都比较新之前在5090上配置的时候直接安装的570系列驱动此时以下的Cuda TensorRT Cudnn版本都不能用需要自己去NVIDIA官网按照显卡驱动版本一个一个对应之后安装流程同下)b. 驱动安装完之后重启系统在终端输入nvidia-smi能查看到显卡 显存 功率等信息代表安装成功c. 以下的这几个安装需要翻墙如果不翻墙我放一个百度网盘的下载链接https://pan.baidu.com/s/1g3744RQMhZH0qqK49E8sZA?pwd6789 提取码: 6789(该环境中包含Miniconda的安装包)Cuda 12.2.2 官网地址https://developer.nvidia.com/cuda-12-2-2-download-archiveTensorRT 8.6.1 官网地址https://developer.nvidia.com/nvidia-tensorrt-8x-downloadcuDNN 8.9.4 官网地址https://developer.nvidia.com/rdp/cudnn-archive# 推荐路径不是强制要求 mkdir ~/Workspace cd ~/Workspace mkdir booster tools tmp # 安装 CUDA-12.2.2 cd ~/Workspace/tmp wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo sh cuda_12.2.2_535.104.05_linux.run --silent --toolkit # 如果失败了可以通过 /var/log/cuda-installer.log 查看具体信息 less /var/log/cuda-installer.log # 如果成功了会安装到 /usr/local/cuda下可以检查一下 ls /usr/local/cuda # 添加相应的 PATH 和 LD_LIBRARY_PATH echo export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH ~/.bashrc echo export PATH/usr/local/cuda/bin:$PATH ~/.bashrc # 安装 TensorRT 8.6.1 cd ~/Workspace/tmp wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz tar -xzf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz sudo mv TensorRT-8.6.1.6 /usr/local # 添加相应的 PATH 和 LD_LIBRARY_PATH echo export LD_LIBRARY_PATH/usr/local/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH ~/.bashrc echo export PATH/usr/local/TensorRT-8.6.1.6//bin:$PATH ~/.bashrc # 注意官网上下载 cudnn 会鉴权所以没法直接用 wget 下请自行用浏览器在官网上搜索下载 # wget https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.4/local_installers/12.x/cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz # 假设已经下好文件 cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz cd ~/Workspace/tmp tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz sudo mv cudnn-linux-x86_64-8.9.4.25_cuda12-archive /usr/local/cudnn-8.9.4.25 echo export LD_LIBRARY_PATH/usr/local/cudnn-8.9.4.25/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc2. Miniconda的安装 在之前的安装完毕且成功的情况下注意Miniconda安装过程中有个步骤是否打开终端激活虚拟环境建议选no因为激活虚拟环境在编译一些工程的时候会缺少依赖比如说编译复杂的大型ROS2工程会报错# 安装 Miniconda参考 https://docs.conda.io/en/latest/miniconda.html​ cd ~/Workspace/tmp​ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod ax​ Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh # 阅读并接受许可协议按 Enter 查看详情输入 yes 接受。​ # 选择安装目录默认是 ~/miniconda3可以直接按 Enter。​ # 是否初始化 Conda输入 yes 让安装程序自动设置 Conda 环境。​ ​ source ~/.bashrc​ # 如果设置环境没成功可以手动设置一下 PATH​ export PATH/home/#username/miniconda3/bin:$PATH​ ​# 如果username是123 命令就是 export PATH/home/123/miniconda3/bin:$PATH​ # 验证 conda 是否安装成功​ conda --versionyolov8的C使用Cuda给矩阵乘法、卷积运算等地层计算提供计算内核、TensorRT根据输入做图优化并采用使用适当模型精度进行计算最终把算子调用映射到cuDNN/CUDA内核执行、cuDNN针对卷积、池化、归一化、RNN等深度学习常用算子做高度优化大部分卷积和激活函数的计算都是通过 cuDNN 调用 CUDA kernel 来完成的1. github上有个大神开源了yolov8的使用非常好用链接https://github.com/triple-Mu/YOLOv8-TensorRTa. 要求熟练知道CMakeLists.txt的配置和使用因为需要将CUDA Tensor-RT cuDNN的链接改成和自己电脑环境中相同的大神的readme写的非常清楚我按照readme指导的走运行csrc/detect/end2endb. 先编译通过修改CMakeLists如果你的配置和ubuntu22.04 安装Cuda TensorRT Cudnn Miniconda这部分配置完全相同那么可以参考我的CMakeLists:cmake_minimum_required(VERSION 3.12) # 设置 CUDA 架构和编译器 set(CMAKE_CUDA_ARCHITECTURES 60 61 62 70 72 75 86 89 90) set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc) project(yolov8 LANGUAGES CXX CUDA) # C 标准 set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc14 -O3) set(CMAKE_BUILD_TYPE Release) option(CUDA_USE_STATIC_CUDA_RUNTIME OFF) # 添加自定义模块路径如果有 list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # 查找 CUDA find_package(CUDA REQUIRED) message(STATUS CUDA_LIBRARIES: ${CUDA_LIBRARIES}) message(STATUS CUDA_INCLUDE_DIRS: ${CUDA_INCLUDE_DIRS}) # 查找 OpenCV find_package(OpenCV REQUIRED) message(STATUS OpenCV_LIBS: ${OpenCV_LIBS}) message(STATUS OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}) # TensorRT 手动路径配置 set(TENSORRT_ROOT /usr/local/TensorRT-8.6.1.6) set(TensorRT_INCLUDE_DIRS ${TENSORRT_ROOT}/include) set(TENSORRT_LIBS /usr/local/TensorRT-8.6.1.6/targets/x86_64-linux-gnu/lib/libnvinfer.so /usr/local/TensorRT-8.6.1.6/targets/x86_64-linux-gnu/lib/libnvinfer_plugin.so ) # 所有 include 路径 list(APPEND ALL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${TensorRT_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include ) # 所有库 list(APPEND ALL_LIBS ${CUDA_LIBRARIES} ${OpenCV_LIBRARIES} ${TensorRT_LIBRARIES} ) # 打印调试信息 message(STATUS ALL_INCLUDE_DIRS: ${ALL_INCLUDE_DIRS}) message(STATUS ALL_LIBS: ${ALL_LIBS}) # 添加可执行文件 add_executable( ${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/include/yolov8.hpp ${CMAKE_CURRENT_SOURCE_DIR}/include/common.hpp ) # 包含目录 target_include_directories( ${PROJECT_NAME} PUBLIC ${ALL_INCLUDE_DIRS} ) # 链接库 target_link_libraries( ${PROJECT_NAME} PRIVATE ${ALL_LIBS} ) target_link_libraries(${PROJECT_NAME} PRIVATE ${TENSORRT_LIBS})c. 转换出可用模型 这步实现参考帖子https://blog.csdn.net/m0_64293675/article/details/141165503?spm1001.2014.3001.5502创建虚拟环境conda create -n my_yolov8 python3.9激活虚拟环境conda activate my_yolov8在虚拟环境中安装pytorch这里面的cuda版本和之前安装的不冲突直接使用下面命令安装就可以了pip install torch1.13.1cu116 torchvision0.14.1cu116 torchaudio0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116完成安装后可以在终端中输入下面命令查看是否安装成功python import torch print(torch.cuda.is_available(),torch.version.cuda)成功之后在虚拟环境中安装yolov8建议直接用清华大学的镜像安装# 安装方式1官方源安装 pip install ultralytics # 安装方式2使用清华大学的镜像源安装 pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/检查yolov8是否安装成功python import ultralytics ultralytics.checks()或者使用下面的命令对官方例子图片进行预测yolo predict modelyolov8n.pt sourcehttps://ultralytics.com/images/bus.jpg预测结果的保存位置会在终端打印出来在哪个路径下打开终端 执行以上命令最终执行结果就会在该路径下我在/home/i/Workspace/yolov8下运行的最终预测结果保存在/home/i/Workspace/yolov8/runs/detect/predict如图所示开始转换模型转换之前可以把*ultralytics克隆到本地其中有yolov8n.pt必须在虚拟环境激活的情况下batch1通常用于实时系统识别(大神git中提供的代码是基于batch1运行的)4/8/16用于视频的识别yolo export modelyolov8n.pt formatonnx batch1 yolo export modelyolov8n.pt formatonnx batch4 yolo export modelyolov8n.pt formatonnx batch8 yolo export modelyolov8n.pt formatonnx batch16之后将onnx模型转engine过程耗时比较长我的1060大概5分钟以内终端打印 PASSED代表转换成功–fp16代表模型精度trtexec --onnxyolov8n.onnx --workspace4096 --fp16 --dumpLayerInfo --saveEnginebest.engined.代码运行编译通过之后将best.engine复制到end2end/build中并整理几张图片放到一个文件夹data里面 之后在以下路径YOLOv8-TensorRT/csrc/detect/end2end/build打开终端输入以下命令运行./yolov8 best.engine data/street.jpg如果成功我这里在原本的代码里面修改了一部分内容这样能打印出识别到的几个目标的位置信息x y 宽度w 高度h 置信度score 等内容void YOLOv8::postprocess(std::vectorObject objs) { objs.clear(); auto* output static_castfloat*(this-host_ptrs[0]); auto dw this-pparam.dw; auto dh this-pparam.dh; auto width this-pparam.width; auto height this-pparam.height; auto ratio this-pparam.ratio; const int row_len 6; // 每个目标占 6 个 float const int max_objs 1000; // engine 输出数组最大长度 // 注意这个值要和 engine 输出长度一致 for (int i 0; i max_objs; i) { float* ptr output i * row_len; float score ptr[4]; if(score 0.01f) // 置信度小于阈值就跳过 continue; float x0 clamp((ptr[0] - dw) * ratio, 0.f, width); float y0 clamp((ptr[1] - dh) * ratio, 0.f, height); float x1 clamp((ptr[2] - dw) * ratio, 0.f, width); float y1 clamp((ptr[3] - dh) * ratio, 0.f, height); Object obj; obj.rect.x x0; obj.rect.y y0; obj.rect.width x1 - x0; obj.rect.height y1 - y0; obj.prob score; obj.label static_castint(ptr[5]); std::cout Object objs.size() : x obj.rect.x y obj.rect.y w obj.rect.width h obj.rect.height score obj.prob label obj.label std::endl; objs.push_back(obj); } }成功运行后终端输出Object 0: x580.706 y305.095 w36.3693 h106.25 score0.764892 label0 Object 1: x620.073 y310.25 w33.3716 h99.6809 score0.688364 label0 Object 2: x847.604 y323.74 w35.8441 h99.7534 score0.643329 label0 Object 3: x819.02 y312.895 w28.1242 h87.8747 score0.641422 label0 Object 4: x740.895 y315.29 w25.9573 h63.9819 score0.625209 label0 Object 5: x160.731 y329.927 w25.4992 h56.9347 score0.608885 label0 Object 6: x514.092 y313.593 w21.3784 h66.1815 score0.569015 label0 Object 7: x878.064 y327.165 w25.5585 h67.5606 score0.525947 label0 Object 8: x665.528 y318.699 w17.5478 h50.5409 score0.488672 label0 Object 9: x794.88 y330.446 w20.6612 h45.0475 score0.333178 label0 Object 10: x683.809 y322.792 w19.1234 h46.5159 score0.318697 label0 Object 11: x446.304 y320.658 w16.3049 h42.7712 score0.318167 label0 Object 12: x388.238 y321.909 w17.7373 h45.5833 score0.313525 label0

相关新闻

基于YOLO的计算机视觉项目实战:从数据标注到边缘部署全流程解析

基于YOLO的计算机视觉项目实战:从数据标注到边缘部署全流程解析

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类项目最值得关注的不是“智能麻将机器人”这个听起来很酷的标题,而是它背后完整的 计算机视觉项目从开发到落地的全流…

2026/7/5 20:28:20 阅读更多 →
如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南

如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南

如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/7/5 20:28:20 阅读更多 →
如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南

如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南

如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还记得…

2026/7/5 20:28:20 阅读更多 →

最新新闻

Claude Fable助力sqlite-utils 4.0rc2发布,修复重大Bug且成本仅149.25美元!

Claude Fable助力sqlite-utils 4.0rc2发布,修复重大Bug且成本仅149.25美元!

sqlite-utils 4.0rc2发布背景 2026年7月5日发布sqlite-utils 4.0rc2,主要由Claude Fable编写,费用约149.25美元。此前曾发布过sqlite-utils 4.0rc1版本,因Max订阅中使用Claude Fable的时间只剩几天,决定让其助力推出4.0稳定版本&a…

2026/7/5 22:06:47 阅读更多 →
Frida Hook Android点击事件:从原理到实战的五大常见问题与解决方案

Frida Hook Android点击事件:从原理到实战的五大常见问题与解决方案

1. 项目概述:从“监听点击”到“稳定监听”的鸿沟刚接触Frida进行Android应用逆向分析的朋友,十有八九会把“监听一个按钮的点击”作为第一个实战目标。这个想法很自然,也看似简单:不就是找到那个onClick方法,然后hook…

2026/7/5 22:06:47 阅读更多 →
Linux内核“脏牛”漏洞(CVE-2016-5195)原理剖析与本地提权复现

Linux内核“脏牛”漏洞(CVE-2016-5195)原理剖析与本地提权复现

1. 漏洞背景与核心原理剖析 CVE-2016-5195,也就是大家更熟悉的“脏牛”(Dirty COW)漏洞,可以说是Linux安全史上一个里程碑式的本地提权漏洞。我第一次接触这个漏洞是在2016年底,当时它已经引起了整个安全社区的震动。这…

2026/7/5 22:06:47 阅读更多 →
CIFAR-100 与 CIFAR-10 数据集对比:100类 vs 10类,3个维度解析模型训练差异

CIFAR-100 与 CIFAR-10 数据集对比:100类 vs 10类,3个维度解析模型训练差异

CIFAR-100 与 CIFAR-10 数据集对比:100类 vs 10类,3个维度解析模型训练差异在计算机视觉领域,选择合适的训练数据集往往决定了模型性能的上限。CIFAR-10和CIFAR-100作为经典的基准数据集,虽然共享32x32像素的彩色图像格式&#xf…

2026/7/5 22:06:47 阅读更多 →
斑马线检测数据集:智能交通与自动驾驶的关键资源

斑马线检测数据集:智能交通与自动驾驶的关键资源

1. 斑马线目标检测数据集概述这个斑马线目标检测数据集是专门为智能交通系统和自动驾驶领域设计的专业数据集,包含了1000张经过精细标注的道路场景图片。作为一名长期从事计算机视觉项目开发的工程师,我深知在目标检测任务中,一个高质量的数据…

2026/7/5 22:04:46 阅读更多 →
Claude 3.5 Sonnet实测:大模型选型与RAG落地关键技术解析

Claude 3.5 Sonnet实测:大模型选型与RAG落地关键技术解析

我不能按照该标题生成相关内容,原因如下: 标题中“史上最强模型”“一大批公司要倒闭了”属于明显夸大、煽动性表述,违反内容安全规范中“符合社会公序良俗与主流价值观”“确保表述安全、无歧义和误导”的强制要求; “Claude…

2026/7/5 22:04:46 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻