首页 > 其他分享 >半小时搞定Yolov5安装配置及使用(详细过程)

半小时搞定Yolov5安装配置及使用(详细过程)

时间:2024-01-11 13:58:55浏览次数:24  
标签:Yolov5 detect 半小时 pt -- py 搞定 python

之前在学习目标检测的时候,正值Yolov5发布,当时试用了下感觉还不错,最近有时间 使用最新的Yolov5源码,重新整理下安装配置到使用过程。。实践整个过程半小时即可搞定(前提已有Anaconda)

在这里插入图片描述

总体来看Yolov5的速度和效率较之前yolov4等系列都快,准确度更高。。

在下载配置Yolov5前,先要安装好Anaconda环境,可参考之前博文:最新Anaconda3的安装配置及使用教程(详细过程)

Yolov5官方doc:https://docs.ultralytics.com/quick-start/


1. 下载Yolov5

1.1 下载Yolov5源码:

在这里插入图片描述

直接git clone到本地工作目录,等待下载完成:

git clone https://github.com/ultralytics/yolov5

在这里插入图片描述
Yolov5代码目录架构:
在这里插入图片描述

1.2 下载Yolov5预训练模型:

既已经训练好的权重参数数据,可以直接使用,就不要在本机再做Traninig了

在这里插入图片描述

找到最新的release,点开下面的Assets下载(.pt文件就是pytorch的模型文件):
在这里插入图片描述
下载后放到Yolov5源码根目录,或新建个weights/目录中使用:
在这里插入图片描述

yolov5共有四种模型:yolov5s、yolov5m、yolov5l、yolov5x。

不同的预训练模型 ,效果和精度不一样,如下图

在这里插入图片描述

其中yolov5s目标检测速度最快,因为其网络参数最少,但相应的,检测效果相比是最差的

而yolov5x是检测效果最好的,参数最多,而时间上最慢。。

具体使用可以根据实际需要,例如如果目标检测应用场景比较看重速度,就用yolov5s.pt
在这里插入图片描述
其中P5/P6模型的差异:(模型后面不带6的就是P5)

  • YOLOv5-P5 models (same architecture as v4.0 release): 3 output layers P3, P4, P5 at strides 8, 16, 32, trained at --img 640
python detect.py --weights yolov5s.pt  # P5 models
                           yolov5m.pt
                           yolov5l.pt
                           yolov5x.pt
  • YOLOv5-P6 models: 4 output layers P3, P4, P5, P6 at strides 8, 16, 32, 64 trained at --img 1280
python detect.py --weights yolov5s6.pt  # P6 models
                           yolov5m6.pt
                           yolov5l6.pt
                           yolov5x6.pt

模型在GPU 下的效率测试数据图:
在这里插入图片描述

P5模型在Coco数据集的训练参数图:
在这里插入图片描述

2. 安装Yolov5

源码下完后,下面开始安装Yolov5所需模块,

直接pip install -r requirements.txt,等待安装完成即可

python -m pip install -r requirements.txt

在这里插入图片描述

如果没有cuda默认安装的pytorch-cpu版,如果有gpu可以安装gpu版:https://pytorch.org/get-started/locally/, 提升速度

在这里插入图片描述

可以打开看下requirements.txt的依赖包:
在这里插入图片描述

3. 测试Yolov5 :

就使用源码中的Detect.py即可:

 python detect.py --source 0  # webcam
                            file.jpg  # image 
                            file.mp4  # video
                            path/  # directory
                            path/*.jpg  # glob
                            'https://youtu.be/NUsoVlDFqZg'  # YouTube video
                            'rtsp://example.com/media.mp4'  # RTSP, RTMP, 

最新版还支持了直接通过Youtube 的url进行目标检测

3.1 Img图片测试

然后通过detect.py对图像进行目标检测:

python detect.py --source ./data/image/bus.jpg

detect.py默认使用同目录下的yolov5s.pt 模型,如果想用其他的,可以用–weights 进行指定。
在这里插入图片描述

然后可以在yolov5/runs/detect目录下找到模型输出结果的文件夹 :
在这里插入图片描述

这是源码自带的bus.jpg识别效果:
在这里插入图片描述
在网上随便找了一张图片,下载试了效果也不错,同时Yolov5处理该图片时间只用了0.3s

python detect.py --source ./data/image/people.jpg

在这里插入图片描述

3.2 Video视频测试

源码自带没有视频demo,这里就拿我老家的柯基狗崽子们做个测试,哈哈~
在这里插入图片描述
视频放到data目录中即可:
在这里插入图片描述
然后通过detect.py对视频进行目标检测:

python detect.py --source data/video/dog1.mp4

在这里插入图片描述
视频Detect就有些慢了,因为也是转换为图片放到模型处理的,我实测了19s 3M多的视频 用了97s
在这里插入图片描述

实际测试效果如下,
在这里插入图片描述

在识别有时候也会像下面错误识别为cat,如果用yolov5x.pt识别准确度会高一些,当然也可能因为小奶狗长的有点像小猫吧~~。。。

ang

当然识别率也和视频拍摄角度和清晰度、晃动程度有很大关系。。
比如用固定摄像头拍摄的图像,效果会好一些:

在这里插入图片描述

总体来看YOLOv5识别效果也不错了,后期可以对模型进行微调和优化 来提高某一类object的识别率。。。

3.3 摄像头测试

使用本机摄像头测试Yolov5实时检测:

python detect.py --source 0

在这里插入图片描述

就会弹出摄像头页面,识别到的物体会用不同颜色的方框进行标识,同时上面会显示名称和概率(置信度)

如果通过摄像头检测出识别的物体会打印出来:比如下面的person,cell phone等。
在这里插入图片描述

随便找了手边几样东西测试了下,效果还不错:
在这里插入图片描述

3.4 App测试

细心的小伙伴应该看到上面第一张图片App store的宣传照片,没错,IOS可以直接下载iDetection来通过手机摄像头实时测试/使用Yolo 目标检测:

在这里插入图片描述

App上面也是可选择四种Yolov5 model

随手选择模型打开摄像头即可实时检测:
在这里插入图片描述

在这里插入图片描述

至此 Yolov5的安装使用测试都已经OK了,根据初步印象来看,Yolov5的配置简单,并且识别效率和速度都是不错的。。

标签:Yolov5,detect,半小时,pt,--,py,搞定,python
From: https://www.cnblogs.com/HGNET/p/17958422

相关文章

  • 26-网络插件:Kubernete 搞定网络原来可以如此简单?
    通过之前的学习,相信你对Kubernetes越来越熟悉了。理论上,Kubernetes可以跑在任何环境中,比如公有云、私有云、物理机、虚拟机、树莓派,但是任何基础设施(Infrastructure)对网络的需求都是最基本的。网络同时也是Kubernetes中比较复杂的一部分。我们今天就来聊聊Kubernetes中的......
  • 11-K8 Service:轻松搞定服务发现和负载均衡 (copy)
    经过前面几节课的学习,我们已经可以发布高可用的业务了,通过PV持久化地保存数据,通过Deployment或Statefulset这类工作负载来管理多实例,从而保证服务的高可用。想一想,这个时候如果有别的应用来访问我们的服务的话,该怎么办呢?直接访问后端的PodIP吗?不,这里我们还需要做服务发现(S......
  • 04-核心定义:Kubernete 是如何搞定“不可变基础设施”的?
    在上一节课,我们已经了解了Kubernetes集群的搭建方式。从现在开始,我们就要跟Kubernetes集群打交道了。本节课我们会学习Kubernetes中最重要、也最核心的对象——Pod。在了解Pod之前,我们先来看一下CNCF官方是怎么定义云原生的。云原生技术有利于各组织在公有云、私有云......
  • 5分钟搞定vue3函数式弹窗
    前言最近接到一个需求,需要在一些敏感操作进行前要求输入账号和密码,然后将输入的账号和密码加到接口请求的header里面。如果每个页面都去手动导入弹窗组件,在点击按钮后弹出弹窗。再拿到弹窗返回的账号密码后去请求接口也太累了,那么有没有更简单的实现方式呢?函数式弹窗的使用场景......
  • 速卖通跨境智星:解决IP及环境问题,实现批量注册轻松搞定
    如果想要注册大批量的速卖通买家号,关键问题之一就是IP及浏览环境的管理。为了确保每个账号都能独立运行,使用独立的IP是必不可少的。近期,速卖通跨境智星备受关注,支持绑定代理IP,并内置反指纹技术,为用户提供了解决IP及环境问题的便捷途径。首先,使用代理IP可以模拟国外的运行环境,使每个......
  • 一文搞定JVM字节码
    公众号《鲁大猿》,寻精品资料,帮你构建Java全栈知识体系 www.jiagoujishu.cn(架构技术.cn)多语言编译为字节码在JVM运行计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。为什么jvm不能......
  • 用Scala采集文库公开资料 一键搞定千万文章收集
    我们都知道,现在各大文库网站里面的内容很多,而且很有用,对于个人来说是非常有价值的,而且能帮助我们解决很多问题。今天闲着没事,打算摸鱼,但是又觉得没有意义,想着利用现有的知识过去写一个文库信息抓取的爬虫模版,后期想要什么类型的文章直接输入关键词,然后静等资料呈上。首先,我们需要导......
  • 轻松转换,一键搞定:JVS低代码平台的日期格式转换功能详解!
    日期和时间在我们的日常生活中起着至关重要的作用,无论是计划日程、管理项目还是执行其他任务,都需要精确的时间信息。在JVS低代码平台上,日期格式转换主要依赖于逻辑引擎中的函数公式。这些函数为我们的用户提供了一种强大且灵活的方式来处理和转换日期时间数据。我们的时间函数旨在......
  • 五个开源项目帮你一站式搞定单点登录!
    大家好,我是不才陈某~单点登录(SSO)是一种验证方法,它允许用户使用一组登录凭据(如用户名和密码)来访问多个应用程序或系统。这意味着用户登录一次后,就可以无需再次登录即可访问其他系统或服务,在提高了用户体验的同时,也简化了密码管理和增强了安全性。但是单点登录在实际应用中有时会变得......
  • 一觉醒来,除了你,全体 CPer 出题水平下降一百倍:我居然半小时内 AK 了一场 CF 比赛??
    第一章:我居然半小时内AK了一场CF比赛??注意本篇文章纯属虚构,请勿对号入座叮铃铃~一阵清脆的闹钟声响起,你揉着眼睛拍掉了放在床头响个不停的闹钟。你拿出手机,看了下时间,现在是2023年12月30号,22:20。作为一位优秀的CPer,从这个时间点醒来是你常有的作息,你突然想起来今天有一场C......