YOLOv5模型的快速推理方法

一· 概述

ultralytics 开发的目标检测算法 YOLOv5 有着广泛的应用,在速度和精准度上做了良好的平衡,被很多商业化开发所采纳。本文档主要记录使用 pip 安装的方式快速的部署推理 YOLOv5 的模型文件, yolov5 的原始模型文件为 .pt .

本文档适用于 yolov5 v6.0v6.1的安装。

二· 环境与依赖库安装

2.1 部署环境

  • Windows 10
  • Visual Studio 2019
  • CUDA 11.3 cuDNN 8.4
  • miniconda
  • Pytorch 1.7 或 1.8

注:确保除 Pytorch 外上述环境已经正确安装,安装过程不再赘述.

2.2 创建虚拟环境并安装依赖

  1. 创建 conda 虚拟环境```shell
conda create -n yolov5_env python=3.8 -y
  1. 激活虚拟环境
conda activate yolov5_env
  1. 安装 Pytorch
# 安装指令复制于Pytorch官方网站
# CUDA 11.1
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html# CUDA 11.3
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.3 -c pytorch -c conda-forge

注:Pytorch 可根据实际情况安装 1.71.8 版本, 以及对应的 CUDA 版本。官方网站提供了详细的安装指令。

  1. 校验 Pytorch 安装
python -c "import torch; print(torch.__version__)"

注:如果安装成功,会显示 Pytorch 的版本号。如: 1.8.1+cu1111.8.1

或者执行

python -c "import torch; print(torch.cuda.is_available())"

注:如果安装成功并启用 CUDA ,会显示 True

  1. 安装 yolov5
pip install yolov5==6.1.6

注:yolov5 可根据实际情况安装 6.06.1 版本。pypi提供的小版本号并非和 github 上的版本号一致,按照大版本号安装即可。

  1. 校验安装
yolov5 --help

注:如果安装成功,会显示 yolov5 的帮助信息。如下所示:

INFO: Showing help with the command 'yolov5 -- --help'.NAMEyolov5SYNOPSISyolov5 COMMANDCOMMANDSCOMMAND is one of the following:trainTo be called from yolov5.clivaldetectexport

注:如果执行报错,可能是因为 yolov5 的安装路径与当前的命令行所在路径不一致,可以尝试切换到 yolov5 的安装路径再次执行。不必担心,这不会影响 yolov5 的使用。

三· 快速推理

由于上述的安装过程,可能在命令行中会因为路径问题导致无法直接使用 yolov5 命令,此处不建议直接使用 yolov5 命令,而是使用 python 脚本的方式进行推理。

3.1 下载模型文件

下载 yolov5 v6.1版本的模型文件,可以在 github 上的 yolov5 releases 页面下载。 这里以 yolov5s.pt 为例。

3.2 推理脚本

import yolov5
from yolov5.models.common import AutoShape, Detectionsmodel_path = 'yolov5s.pt'
# 载入模型
model = yolov5.load(model_path) # yolov5.models.common.AutoShape# 待检测的图片
img = 'images_D03.png'# 推理,默认参数
results = model(img)  # yolov5.models.common.Detections# 使用特定尺寸进行推理
# results = model(img, size=1280)# 数据增强,能够检测出更多的目标,当然也有可能出现误检
# results = model(img, augment=True)# 检测结果数据解析,所属类别、置信度、目标位置信息
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]# 显示检测结果
Detections.show(results,labels=False) # 不显示标签与置信度
Detections.pred# 保存检测结果图片
results.save(save_dir='results/')

至此,YOLOv5 的快速推理方法已经介绍完毕,可以根据实际情况进行调整。

另一种接口与实现方法(大同小异):

from yolov5 import YOLOv5
import torchmodel_path = 'yolov5x_person_det_v2.2.1/weights/best.pt'
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')print(f"YOLOv5 is using {device} device")image_path = 'images_D03_20240506010410_edited_0000000054.png'model = YOLOv5(model_path, device)
print(type(model))results = model.predict(image_path)
# 使用特定尺寸进行推理
# results = model.predict(image, size=1280)# 数据增强,能够检测出更多的目标,当然也有可能出现误检
# results = model.predict(image, augment=True)# 多个参数一起使用
# results = model.predict(image, size=1280, augment=True)# 如果需要检测多张图片的话,可以使用列表
# results = model.predict([image1, image2], size=1280, augment=True)# 检测结果数据解析,所属类别、置信度、目标位置信息
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]# 显示检测结果
results.show()# 保存检测结果
results.save(save_dir='results/')

四· 参考文档

  • YOLOv5 Github
  • YOLOv5 Official
  • YOLOv5 Pytorch

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15324.shtml

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

相关文章

2024.5.6力扣刷题记录-二叉树学习记录5(未完)

一、学习视频 【二叉树的层序遍历【基础算法精讲 13】】 https://www.bilibili.com/video/BV1hG4y1277i/?share_sourcecopy_web&vd_sourcedc0e55cfae3b304619670a78444fd795 二、跟练代码 1.102. 二叉树的层序遍历 # Definition for a binary tree node. # class Tree…

Sui生态DeFi项目Cetus和Aftermath宣布启动孵化器

Sui DeFi中的去中心化交易所Cetus和Aftermath Finance联合Sui基金会宣布启动新的孵化器,为初创项目提供更多可行性途径。这两个DeFi项目在Sui上有着较长的历史,自去年一同与主网推出以来,目前在TVL方面位居前五。这两个项目的持久性和成功使它…

国产数据库TiDB的常用方法

TiDB的常用方法主要涉及安装配置、数据操作、性能调优以及监控和维护等方面。以下是对这些常用方法的归纳和介绍: 1. 安装与配置 安装TiDB:根据官方文档的指引,用户可以按照步骤进行TiDB的安装。配置TiDB:安装完成后&#xff0c…

curl: (60) SSL certificate problem: self-signed certificat

目录: 1、背景2、测试结果 1、背景 今天帮忙客户排查问题,报错请求超时,但是ping客户的ip以及测试端口都是通的,最终不得不从中台服务器上发起请求客户回调接口,报错如下: 怀疑是客户的证书有问题&#xf…

什么是以太坊?

以太坊(Ethereum)是一个开源的区块链平台,它支持智能合约和去中心化应用(dApps)。由Vitalik Buterin于2015年推出,以太坊为开发者提供了一个灵活的编程环境,使他们能够在区块链上创建和部署各种…

C语言.数据结构.顺序表

1.顺序表的概念及结构 1.1线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,…

C++ char[]、char*、const char*、string 相互转换

在写C代码时,会经常用到char[]、char*、const char*、string 相互转换,现总结如下,供大家参考。 原类型目标类型转换代码char[]char*char ch[] "test string"; char *c ch;char[]const char*char ch[] "test string"…

闲鱼电商运营高级课程,一部手机学会闲鱼开店赚钱(34节课)

课程目录 1,闲鱼更货出售主要核心原理.mp4 2、闲鱼前期开店准备.mp4 3.账号基础信息设置1.mp4 4、提升账号权重.mp4 5、注意避免违规行为.mp4 6、实接课 应该怎么选择爆款产品.mp4 7、分析商品的闲鱼市场.mp4 8、寻找最低价货源.mp4 9、怎么寻我优质的货源…

leetcode 239. 滑动窗口最大值、347.前 K 个高频元素

leetcode 239. 滑动窗口最大值、347.前 K 个高频元素 leecode 239. 滑动窗口最大值 题目链接 :https://leetcode.cn/problems/sliding-window-maximum/description/ 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的…

Nginx Proxy Manager 单机多Docker Compose 反向代理配置

同步发表于我的个人博客 问题描述 单机下部署多个docker-compose, 并用nginx proxy manager 反代其他docker compose的流量,出现连不上其他docker compose 下的container的问题 尝试过的解决方式 1、地址用docker0的地址,端口用其他container暴露出来…

VOS3000被DDOS攻击后该怎么办

VOS3000遭受DDoS攻击的应对措施 当VOS3000遭受DDoS攻击时,可以采取以下几个步骤来应对: 立即启动防火墙:尽管难以完全阻止DDoS攻击,但防火墙可以在一定程度上帮助抵御攻击,减轻其造成的危害。 联系服务器提供商&#…

实现文本文件的复制

#include <stdio.h> #include <stdlib.h>int main(int argc, char *argv[]) {// 检查命令行参数的数量&#xff0c;确保包括源文件路径和目标文件路径if (argc ! 3) {printf("Usage: %s sourceFile destFile", argv[0]);exit(1);}FILE *srcFp; // 源文件…

634 · 单词矩阵

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { public: struct Trie {Trie() {next.resize(26, nullptr);end false;} std::vector<Trie*> next; b…

视频监控技术前沿探索:智能化趋势与EasyCVR视频汇聚技术应用

在数字化时代的浪潮中&#xff0c;视频监控技术以其独特的优势&#xff0c;正在安防领域书写着新的篇章。它不仅为公共安全部门提供了强大的技术支持&#xff0c;还深入到教育、政府、娱乐、医疗、酒店、运动等多个领域&#xff0c;成为维护社会秩序、保障人民安全的重要工具。…

LearnOpenGL(二十)之立方体贴图

一、创建立方体贴图 首先&#xff0c;生成一个纹理&#xff0c;并将其绑定到纹理目标GL_TEXTURE_CUBE_MAP&#xff1a; unsigned int textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 因为立方体贴图包含有6个纹理&#xff0…

Pytorch深度学习实践笔记3

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 视频来自【b站刘二大人】 目录 1 梯度下降&#…

【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程

目录 一、导入数据 二、选择特征 三、十折交叉验证 四、划分训练集和测试集 五、训练高斯贝叶斯模型 六、预测测试集 七、查看训练集和测试集上的分数 八、查看混合矩阵 九、输出评估指标 一、导入数据 # 根据商户数据预测其是否续约案例 import pandas #读取数据到 da…

2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针

import java.util.Scanner;public class Main {static Scanner scnew Scanner(System.in);public static void main(String[] args) {int nsc.nextInt();//数组长度int tsc.nextInt();//操作次数int arr[]new int[n];char arr1[] new char[t];int arr2[] new int[t];int vis…

C++ RBTree封装mapset

目录 RBTreeNode的声明 RBTree结构 map结构 set结构 改造红黑树 迭代器类 迭代器成员函数 默认成员函数 Insert set map RBTreeNode的声明 template<class T> struct RBTreeNode {RBTreeNode<T>* _left;RBTreeNode<T>* _right;RBTreeNode<T>*…

非等值连接、等值连接、自然连接

目录 一、笛卡尔积 二、三种连接的关系 三、非等值连接 四、等值连接 五、自然连接 一、笛卡尔积 要理解非等值连接、等值连接、自然连接首先要理解笛卡尔积。 学过《离散数学》的应该很熟悉笛卡尔积。 简单来说&#xff0c;就是有两个集合&#xff0c;其中一个集合中的元…