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

文章目录

  • 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.82、python安装pytorch1.6
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch3、设置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.15、在volov5路径下执行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple6、验证
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.xz2、拷贝头文件和库到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/lib64chmod 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.gz2、移动
mv TensorRT-8.0.1.6 /opt3、配置环境变量
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 ~/.bashrc4、安装python API
cd /opt/TensorRT-8.5.1.7/python
pip install tensorrt-7.1.3.4-cp37-none-linux_x86_64.whl5、安装 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-uff6、安装 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.zip2、进入目录
cd opencv-4.6.03、创建目录进入目录
mkdir build
cd build4、编译
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版本及以上 这里用ON5、cmake 结束后执行 make指令
注:终端输入nproc 命令可以查看自己电脑有多少线程。我的电脑有8个,使用其中6个线程编译。
sudo make -j6    #在build 文件内 执行该命令  数字越大 后续make的过程就越快。6、拷贝库
sudo make install7、配置环境变量
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_exampleopencv_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.mzph.cn/news/226219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

心理测试网站源码,知己心理React心理健康测试

源码介绍 React心理健康测试网站源码&#xff0c;帮助需要的人更好地了解自已的心理健康状态和人格特征。 React可以在Vite中启用HMR&#xff0c;并且包含了几人EsLint规则。只需要使用react antd-mobile即可 轻松部署完成。

数据分析为何要学统计学(9)——总体不服从正态分布时使用什么假设检验方法?

大多数情况下&#xff0c;我们都假设样本所在总体服从正态分布&#xff0c;然后使用t检验、方差分析等假设检验方法。但是总体如果不服从正态分布&#xff0c;那么就得使用非参数检验方法&#xff0c;如Mann-Whitney U检验和Wilcoxon秩和检验。其中Mann-Whitney U检验适用于独立…

千梦网创:逮住一闪而过的机会疯狂摩擦

我这个人平时想的就多&#xff0c;睡觉也在想事情&#xff0c;有时候睡觉里想的事情往往都是很纯粹的、很绝妙的&#xff0c;但是经常性一醒过来就忘了&#xff0c;再去回忆怎么也想不起来了。 灵感只在特定的环境下产生&#xff0c;这类环境是不可再生和模拟的。 机会只因特…

【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.auto&#xff06;范围for二.decltyp…

用Python快速从深层嵌套 JSON 中找到特定的 Value

有时候&#xff0c;我们拿到一个JSON数据的时候&#xff0c;会难以看出其逻辑层次结构。 这时候就需要我们进行代码解析了。 代码&#xff1a; import jsondef find_json_value(data_json, value, path""):if isinstance(data_json, dict):for k, v in data_json.…

JS解构赋值:

数组解构&#xff1a; 将数组的单元值快速批量的赋值给一系列变量的简洁语法 变量的顺序对应数组单元值的位置依次进行赋值操作 const arr [100,60,80];//数组解构 赋值const [max,min,avg] arr;//const [max,min,avg] [100,60,80];// const max arr[0];// const min ar…

Web 应用程序性能测试核心步骤

通常大家做web 应用程序的时候会有哪些操作呢&#xff1f;今天就来看看常见的web 应用程序的常见操作。 Web 应用程序性能测试核心步骤 1&#xff1a;识别测试环境。确定物理测试环境和生产环境&#xff0c;以及测试团队可用的工具和资源。物理环境包括硬件、软件和网络配置。…

决策单调性 => 二分队列:P3515

https://www.luogu.com.cn/problem/P3515 p i max ⁡ j 1 n ( a j ∣ i − j ∣ ) − a i p_i\max_{j1}^n(a_j\sqrt {|i-j|})-a_i pi​maxj1n​(aj​∣i−j∣ ​)−ai​&#xff0c; p p p 之间独立&#xff0c;直接拆绝对值&#xff0c;到时候reverse再做一遍即可。 拆绝对…

c语言单向链表

看如下代码&#xff0c;这是一个完整的可运行的c源文件&#xff0c;要注意的点&#xff1a; c语言程序运行不一定需要头文件NULL其实是 (void*)0&#xff0c;把指针赋值成(void*)0,就是防止程序员不想该指针被引用的时候被引用&#xff0c;引用地址为0的值程序会引起系统中断&…

PyQt6 QSpacerItem弹簧控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计46条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xff0c;薪资也从12k涨到了18k&#xff0c;对于工作都还没两年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王&#xff0c;感觉自己年轻&#xff…

自动化访客互动:提升网站效益与用户体验的关键优势

在激烈的市场竞争环境中&#xff0c;想抢占市场&#xff0c;获得收益并不容易。每一个订单的完成都要经过一定的销售周期&#xff0c;所以企业可以根据销售周期每个阶段的特点进行优化&#xff0c;留住客户。其中&#xff0c;企业可以在与客户在线互动的过程中&#xff0c;让互…

ShardingSphere-JDBC 和 ShardingSphere-Proxy,你选择哪一个

参考文章 总结&#xff1a; 只使用Java&#xff0c;ShardingSphere-JDBC更好有异构语言的话&#xff0c;ShardingSphere-Proxy 更好混用也挺香

Spring Boot 默认缓存

Spring 提供了三个常用的注解&#xff1a;Cacheable、CachePut 和 CacheEvict 一、Cacheable&#xff0c;CachePut&#xff0c;CacheEvict区别 当使用缓存时&#xff0c;Spring 提供了三个常用的注解&#xff1a;Cacheable、CachePut 和 CacheEvict&#xff0c;它们的区别如下…

Balking(犹豫)设计模式

多个线程监控某个共享变量&#xff0c;A线程监控到共享变量发生变化后即将触发某个动作&#xff0c;但此时发现有另外一个线程B已经针对该变量的变化开始了行动&#xff0c;因此A便放弃了准备开始的工作&#xff0c;我们把这样的线程交互称为Balking&#xff08;犹豫&#xff0…

小红书商品详情API:电商助力

一、引言 随着互联网的普及和电商行业的快速发展&#xff0c;消费者对于商品信息的获取方式也在不断变化。小红书作为一款以内容分享为主的社交电商平台&#xff0c;吸引了大量用户。为了满足用户对商品信息的快速获取需求&#xff0c;小红书提供了商品详情API接口。本文将探讨…

Stream流中anyMatch和allMatch和noneMatch的区别

1.anyMatch 两个集合的交集 Testpublic void a17() {List<User> list new ArrayList<>();list.add(new User("张三", 12, "南京"));list.add(new User("李四", 13, "北京"));list.add(new User("王五", 14, …

python调用属性一样调用方法property

1 python调用属性一样调用方法property python通过property达到像调用属性一样来调用方法。 存在两种方式&#xff1a; &#xff08;1&#xff09; 类属性&#xff1a;在类中定义值为property对象的类属性。 &#xff08;2&#xff09; 装饰器&#xff1a;在方法上应用装饰…

Web测试、APP测试常用技巧(错过你一定会后悔)

1. web元素定位七种方式 优先使用的6种 find_element_by_id (返回一个元素)find_element(s)_by_class_name (根据类名获取元素列表)find_element(s)_by_name (根据标签的name属性值返回包含标签对象元素的列表)find_element(s)_by_link_text (根据连接文本获取元素列表)find_…

linux环境安装可操作图库语言Gremlin的图框架HugeGraph

原创/朱季谦 若你还没接触过图数据库&#xff0c;可能看到这个概念时&#xff0c;会比较蒙蔽。 图是什么&#xff1f;图数据库又是什么&#xff1f; 首先&#xff0c;在数据结构中&#xff0c;图是一种由顶点&#xff08;vertex&#xff09;集合及顶点间关系集合组成的一种非…