ubuntu18.04 安装yolov5环境及推理环境

news/2024/7/11 1:14:39 标签: YOLO

文章目录

  • 1、安装anaconda3
    • 1.2、环境变量配置
    • 1.3、添加/更换 conda 清华源
  • 2、安装pytorch1.6
  • 3、CUDA安装
  • 4、安装cuDNN
  • 5、安装tensorRT
  • 6、安装opencv4.6
  • 7、tensorRT部署yolov5模型推理

1、安装anaconda3

官方网网址

https://www.anaconda.com/download#downloads

在这里插入图片描述

去到下载的文件夹内,执行命令:bash Anaconda3-2023.09-0-Linux-x86_64.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2、环境变量配置

vim ~/.bashrc

// 加入安装目录,换成你前面设置的安装目录
export PATH=/root/yes/condabin:$PATH

// 刷新当前用户环境(激活环境)
source ~/.bashrc

// 查看版本
conda -V

1.3、添加/更换 conda 清华源

conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'    #必需
conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/'  #必需
conda config --set show_channel_urls yes

2、安装pytorch1.6

1、创建虚拟环境
conda create -n pytorch1.6 python=3.8

2、python安装pytorch1.6
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

3、设置python的环境变量
alias python='/root/yes/envs/yolov5/bin/python3.8'

4、下载yolov5-v3版本代码
git clone https://github.com/ultralytics/yolov5.git
或下载yolov5版本v3.1 https://github.com/ultralytics/yolov5/releases/tag/v3.1

5、在volov5路径下执行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

6、验证
python detect.py --source ./inference/images/ --weight weights/yolov5s.pt --conf 0.4

3、CUDA安装

# 选择生成软链接,不需要安装驱动
sudo sh cuda_11.7.89_440.33.01_linux.run

# 查看CUDA版本
cat /usr/local/cuda/version.txt

# 测试CUDA,安装成功则显示PASS
cd  /usr/local/cuda-11.7/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

4、安装cuDNN

官网网址

https://developer.nvidia.com/rdp/cudnn-download

在这里插入图片描述
在这里插入图片描述

1、解压到当前目录
tar -xf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz

2、拷贝头文件和库到cuda目录下
进入目录(拷贝头文件)
cd /cudnn-linux-x86_64-8.9.7.29_cuda11-archive/include
cp cudnn.h /usr/local/cuda-11.7/include/

进入目录(拷贝库)
cd cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib
cp libcudnn* /usr/local/cuda-11.7/lib64

chmod a+r /usr/local/cuda-11.7/include/cudnn.h
chmod a+r /usr/local/cuda-11.7/lib64/libcudnn*

查看版本

cat cudnn-linux-x86_64-8.9.7.29_cuda11-archive/include | grep CUDNN_MAJOR -A 2

至此CUDN + cuDNN安装完成,可以执行相关训练文件查看是否有gpu信息输出,或监控一下gpu状态

watch -n 1 nvidia-smi

5、安装tensorRT

查看是否安装NVIDIA显卡

lspci | grep -i nvidia

查看显卡信息

nvidia-smi

tensorRT官网网址(GA表示正式发布稳定版本、EA抢先版)

https://developer.nvidia.com/nvidia-tensorrt-8x-download

在这里插入图片描述

1、解压
tar zxf TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz

2、移动
mv TensorRT-8.0.1.6 /opt

3、配置环境变量
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.0.1.6/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.0.1.6/include
source ~/.bashrc

4、安装python API
cd /opt/TensorRT-8.5.1.7/python
pip install tensorrt-7.1.3.4-cp37-none-linux_x86_64.whl

5、安装 Python UFF 包,支持tensorflow模型转化
cd /opt/TensorRT-8.5.1.7/uff
pip install uff-0.6.9-py2.py3-none-any.whl

# 测试 Python UFF 是否安装成功
which convert-to-uff

6、安装 graphsurgeon,支持自定义结构
cd /opt/TensorRT-8.5.1.7/graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl

在这里插入图片描述
查看tensorRT python api 版本

python
import tensorrt as trt
print(trt.__version__)

6、安装opencv4.6

官网网址

https://opencv.org/releases/

在这里插入图片描述

1、解压
unzip opencv-4.6.0.zip

2、进入目录
cd opencv-4.6.0

3、创建目录进入目录
mkdir build
cd build

4、编译
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=True ..

注解:
1. CMAKE_INSTALL_PREFIX 是opencv的安装地址 默认安装在 usr/local
2. CMAKE_BUILD_TYPE 是opencv安装的版本,Release和Debug两种可选,默认安装Release
3. OPENCV_ENABLE_NONFREE 是否使用部分被申请了专利的算方法 这里选True的话就可以使用了
4. OPENCV_GENERATE_PKGCONFIG 强烈建议开启这个 设置为ON OPENCV_GENERATE_PKGCONFIG 因为opencv4默认不生成.pc文件,所以加上这句用于生成opencv4.pc文件,支持pkg-config功能。opencv4版本及以上 这里用ON

5、cmake 结束后执行 make指令
注:终端输入nproc 命令可以查看自己电脑有多少线程。我的电脑有8个,使用其中6个线程编译。
sudo make -j6    #在build 文件内 执行该命令  数字越大 后续make的过程就越快。

6、拷贝库
sudo make install

7、配置环境变量
vim ~/.bashrc
#文件末尾添加以下内容 并保存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

执行
source ~/.bashrc

修改动态库

#打开下列文件
sudo vim /etc/ld.so.conf.d/opencv.conf 
 
# 添加lib路經 在 末尾 保存退出
/usr/local/lib
 
# 更新
sudo ldconfig

#终端输入以下两命令,显示正常则安装成功
pkg-config --modversion opencv4 #查看版本号
pkg-config --libs opencv4 #查看libs库

编译指令

CXX ?= g++

CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv4)
LDFLAGS += $(shell pkg-config --libs --static opencv4)

all: opencv_example

opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS)

%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS) $(INC)

clean: ; rm -f example.o opencv_example

7、tensorRT部署yolov5模型推理

torch官网

https://pytorch.org/

进入虚拟环境

pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu117

模型转换

python export.py --weights yolov5s.pt --include  engine --device 0

# 需要指定尺寸,因为tensort推理的时候不会做缩放,要求尺寸统一(FP32)
python export.py --weights yolov5s.pt --include  engine --device 0 --img 384 640

# 半精度推理(推理也需要加上half)FP16
python export.py --weights yolov5s.pt --include  engine --device 0 --img 384 640 --half

测试推理
python detect.py --weights yolov5s.engine


yolov5-pytorch推理速度
image 1/2 /root/tensorRT_test/test/yolov5-7.0/data/images/bus.jpg: 640x480 4 persons, 1 bus, 41.1ms
image 2/2 /root/tensorRT_test/test/yolov5-7.0/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 41.2ms
Speed: 0.2ms pre-process, 41.1ms inference, 0.7ms NMS per image at shape (1, 3, 640, 640)

tensort推理
image 1/2 /root/tensorRT_test/test/yolov5-7.0/data/images/bus.jpg: 640x640 4 persons, 1 bus, 2.9ms
image 2/2 /root/tensorRT_test/test/yolov5-7.0/data/images/zidane.jpg: 640x640 2 persons, 2 ties, 2.9ms
Speed: 0.5ms pre-process, 2.9ms inference, 0.8ms NMS per image at shape (1, 3, 640, 640)

tensort推理(384*640)
image 1/2 /root/tensorRT_test/test/yolov5-7.0/data/images/bus.jpg: 384x640 3 persons, 1 bus, 2.0ms
image 2/2 /root/tensorRT_test/test/yolov5-7.0/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 1.9ms
Speed: 0.5ms pre-process, 2.0ms inference, 0.8ms NMS per image at shape (1, 3, 384, 640)

Torchhub模型预测使用


http://www.niftyadmin.cn/n/5269080.html

相关文章

聊聊long类型装箱和拆箱性能问题

前言 这个主题主要讨论Java中long类型自己手动装箱和系统自动装箱的性能问题&#xff0c;在Java中,long类型是基本数据类型,Long类型是long的包装类。 手动装箱和自动装箱 手动装箱:通过直接调用Long的valueOf方法,将long装箱为Long long l 123; Long L Long.valueOf(l);…

linux 将java程序设置为开机自启动、以服务的方式自启动

创建服务文件 [rootmike ~]# cd /etc/systemd/system [rootmike system]# vim client.service[Unit] DescriptionClient Service Afternetwork.target[Service] Typesimple ExecStart/opt/jre/bin/java -jar /opt/agent-server-1.0-SNAPSHOT.jar /opt/client.conf WorkingDire…

目标检测YOLO实战应用案例100讲-光伏电站热斑检测

目录 前言 国内外研究现状 光伏电站无人机巡检系统的研究现状

【AI】YOLO学习笔记

作为经典的图像识别网络模型&#xff0c;学习YOLO的过程也是了解图像识别的发展过程&#xff0c;对于初学者来说&#xff0c;也可以了解所采用算法的来龙去脉&#xff0c;构建解决问题的思路。 1.YOLO V1 论文地址&#xff1a;https://arxiv.org/abs/1506.02640 YOLO&#x…

AR游戏开发

增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;游戏是一种整合了虚拟和现实元素的游戏体验。玩家通过使用AR设备&#xff08;如智能手机、AR眼镜或平板电脑&#xff09;来与真实世界互动&#xff0c;游戏中的数字内容与真实环境相结合。以下是一些关于AR游戏…

第4章-第3节-Java中跟数组相关的几个算法以及综合应用

在写这篇博文之前&#xff0c;先大概说明一下&#xff0c;就是很常见的数组算法如求最大值、一维数组的遍历等&#xff0c;这里就不去专门说明了&#xff0c;只说一些有代表性的&#xff0c;然后就是冒泡排序算法很容易查阅到&#xff0c;这里也不专门说明了&#xff0c;只说明…

ChatGPT4 Excel 高级组合函数用法index+match完成实际需求

在Excel 函数用法中有一对组合函数使用是非常多的,那就是Index+match组合函数。 接下来我们用一个实际的需求让ChatGPT来帮我们实现一下。 我们给ChatGPT4发送一个prompt:有一个表格A2至A14为业务员B列至H列为1月至7月的销售额,请根据J2单元格的业务员与K2单元格的月份查找出…

18个非技术面试题

请你自我介绍一下你自己&#xff1f; 这道面试题是大家在以后面试过程中会常被问到的&#xff0c;那么我们被问到之后&#xff0c;该如果回答呢&#xff1f;是说姓名&#xff1f;年龄&#xff1f;还是其他什么&#xff1f; 最佳回答提示&#xff1a; 一般人回答这个问题往往会…