Skip to content

LZY-XiXi/tensorrt10_detect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

ultralytics的TensorRT10 C++实现

环境配置

  • opencv 4.11
  • cuda 12.5
  • cudnn 9.8
  • TensorRT 10.11.0.33
  • yaml-cpp 0.8.0

OPENCV

mkdir opencv_build && cd opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DBUILD_opencv_legacy=OFF -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH= ../opencv_contrib/modules/ ../opencv

make -j8
sudo make install

默认已经完成nvidia显卡驱动的安装,若未安装,请先安装,并使用nvidia-smi检查驱动是否安装成功,并观察支持的cuda版本

YAML-CPP

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp && mkdir build && cd build
cmake ..
make -j8
sudo make install

CUDA

CUDA Toolkit Archive | NVIDIA Developer 在官网寻找适合的cuda版本进行安装

安装完成后,在/usr/local目录下,应该能看到cuda的目录。此时可以使用nvcc -V,观察是否能正常显示版本信息,若正常显示版本信息,则直接进行cudnn的安装。

终端运行

sudo touch /etc/profile.d/cuda.sh
echo 'export PATH=/usr/local/cuda/bin/:$PATH' | sudo tee -a /etc/profile.d/cuda.sh
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:/usr/lib/wsl/lib/:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile.d/cuda.sh

编辑~/.bsahrc添加下面内容,编辑完成后,记得执行source ~/.bashrc

# 下面路径请自行确认,一般只有cuda版本需要修改
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-12.5

完成后再次尝试nvcc -V观察是否正常显示cuda版本

CUDNN

cuDNN Archive | NVIDIA Developer 按照安装的cuda版本,选择cudnn版本进行安装,其中cudnn也区分8,9两个大版本

8版本的cudnn可以使用下载压缩包的形式,通过解压,移动其中的文件进行配置

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

也可以下载deb文件进行二进制安装

9版本的cudnn则使用配置apt源的二进制方式安装

TensorRT

TensorRT Download | NVIDIA Developer 寻找合适版本的TensorRT进行安装(由于TensoRT10版本对API有较多修改,所以运行本仓库代码则肯定是使用10版本的)

这里通过下载tar文件进行配置

tar -zxvf TensorRT-10.11.0.33.Linux.x86_64-gnu.cuda-12.9.tar.gz

解压后,在~/.bashrc添加下面内容,注意路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lin/TensorRT-10.11.0.33/lib

进入python目录,可以下载对应TensorRT版本的python包

测试

cd samples/sampleOnnxMNIST/
make
# 切换到TensorRT-{版本}/targets/x86_64-linux-gnu/bin目录下运行sample_onnx_mnist
cd ../../targets/x86_64-linux-gnu/bin/
./sample_onnx_mnist

若编译与运行都正常,则说明安装成功

部署

当环境配置正常,则该仓库代码部署也应该没什么问题. 一般git下来后,修改CMakeLists.txtTensorRT的路径,以及main.cpp中的文件路径后,进行编译即可。

git clone https://github.com/LZY-XiXi/tensorrt10_detect.git
cd tensorrt10_detect
mkdir build && cd build
cmake ..
make -j8
./standard

另说

本仓库代码是针对ultralytics的,所以engine文件需要利用ultralytics仓库代码进行生成。其中,直接使用ultralytics仓库的export是会出现模型文件序列化失败的。 原因,解决方案

另外,如果手动使用trtexec转化onnx文件,路径请不要使用~符号,会出现无法识别而生成engine文件失败的。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published