YOLOv5物体检测

news2024/11/25 4:42:07

一、环境安装

1.1、anaconda安装 ,根据官方地址一步步安装,此略过。

https://www.anaconda.com/download

创建虚拟环境

conda  create -n yolov5 python=3.8

配置国内源,加速下载 (可选)

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

1.2、pytorch安装

https://pytorch.org/index.html
https://pytorch.org/get-started/previous-versions/

# 选择V1.8.2版本下
# CUDA 10.2 (英伟达显卡1650/1600/..选择)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
# CUDA 11.1 (英伟达显卡30以上选择)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
# CPU Only (电脑没有GPU选)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cpu

1.3、yolov5下载

https://github.com/ultralytics/yolov5/tree/master

下载yolov5 v7.0版本
https://github.com/ultralytics/yolov5/releases/tag/v7.0 AssetsSource code.zip压缩包

1.3.1 requirements.txt文件修改

修改yolov5模型内的requirements.txt文件,主要是

numpy==1.18.5修改 numpy==1.20.3
Pillow==7.1.2修改 Pillow==8.3.0
注释掉torch,torchvision,因为文件内的版本和实际pytorch下载对应的版本可能不同,且已经有下载

1.3.2 下载预训练模型

yolov5有yolov5n、yolov5s、yolov5m、yolov5l、yolov5x五种参数模型,模型对应的参数params依次增加。
在这里插入图片描述
Assets下下载五种模型,放置到yolov5-7.0文件夹下。
在这里插入图片描述

1.3.3 模型测试

通过终端输入以下内容,检验模型检测效果。

python detect.py

二、模型检测

2.1、关键参数

weights:训练好的模型文件

yolov5n、yolov5s、yolov5m、yolov5l、yolov5x五种参数模型。

python detect.py --weights yolov5s.pt
python detect.py --weights yolov5x.pt

source:检测的目标,可以是单张图片、文件夹、屏幕或者摄像头等

python detect.py --weights yolov5s.pt --source 0   #摄像头
											   img.jpg #图片
											   vid.mp4 #视频
python detect.py --weights yolov5s.pt --source data/images/bus.jpg	
python detect.py --weights yolov5s.pt --source screen #整个屏幕检测									   

conf-thres :置信度阈值,越低框越多,越高框越少

python detect.py --weights yolov5s.pt --conf-thres 0.8

iou-thres :iou阈值,越低框越少,越高框越多

三、数据集构建

3.1、标注工具

视频类数据集可以使用opencv进行视频抽帧

import cv2
import matplotlib.pyplot as plt
video = cv2.VideoCapture('./bat.mp4')
ret,frame=video.read()
plt.imshow(frame)
plt.imshow(cv2.cvtcolor(frame,cv2.COLOR_BGR2BGR)) #转换图片通道

num=0
save_step=30  #间隔帧
while True:
	ret,frame=video.read()
	if not ret:
		break
	num+=1
	if num % save_step ==0:
		cv2.imwrite('./images/'+str(num)+".jpg",frame)

labelimg

pip install labelimg

输入labelimg
(1) 打开文件夹Open Dir,确定文件存储位置Change Save Dir
(2) 点击PascalVOC使图片以YOLO格式存储
(3)点击图片目标,出现Create_RectBox进行标记
(4)图片标记label格式为txt,包括五条数据,第一个为类别,后四个为目标坐标
在这里插入图片描述

四、模型训练

4.1、数据处理

image:存放图片
train:训练集数据
val:验证集数据
label:存放标签
train:训练集标签,与训练集图片命名一一对应
val:验证集标签,与验证集图片命名一一对应
classes.txt不需要放文件内

4.2、关键参数

data:数据集描述文件
weights:预训练权重文件
data默认是选择coco128.yaml,此处复制coco128.yaml文件命名为bvn.yaml。主要根据自己路径修改里面path、train、val参数,其中classes根据实际目标检测对象类别进行修改

path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)
# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter

在这里插入图片描述
weights默认是选择yolov5s.pt模型,此处可以根据实际情况更改为yolov5n、yolov5m、yolov5l、yolov5x四种模型进行训练。

在这里插入图片描述

4.3、模型结果解读

模型训练结果会在run文件夹下的train文件的exp.中,文件内包含很多参数,其中weights中有训练最好的best.pt和最差的last.pt模型。
在这里插入图片描述
可以在终端通过tensorboard --logdir runs进行展示结果

五、模型验证

根据预训练完的模型,得到weights中有训练最好的best.pt,通过终端输入以下参数进行模型验证

python val.py --weights runs/train/exp34/weights/best.pt

可以通过参数将图片/视频/…结果输出到桌面(–view-img)

python val.py --weights runs/train/exp34/weights/best.pt --source datasets/xx.jpg --view-img

在这里插入图片描述
train中包含很多输出,其中包含训练的batch结果,验证集的val_batch0_pred.jpg结果。
在这里插入图片描述

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

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

相关文章

在 Docker 中进入 Redis 容器后,可以通过以下方法查看 Redis 版本:

文章目录 1、info server2、redis-cli -v 1、info server [rootlocalhost ~]# docker exec -it spzx-redis redis-cli 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> info server # Server redis_version:6.2.6 redis_git_sha1:00000000 redis_git_dirty:0 redis_bui…

kubernetes K8S 挂载分布式存储 ceph

目录 一、Ceph简介 二、Ceph核心组件介绍 三、安装Ceph集群 1初始化实验环境 1.1、配置静态IP: 1.2、配置主机名: 1.3、配置hosts文件: 1.4、配置互信 1.5、关闭防火墙 1.6、关闭selinux 1.7、配置Ceph安装源 1.8、配置时间同步 …

应用数据安全

一、数据安全概述 应用的安全性是一个应用能否成功的关键。 HarmonyOS提供了系统安全、IDE/工具安全以及应用安全生态等三个层面的安全能力。 1、系统安全层面 HarmonyOS通过完整性保护、漏洞防利用、安全可信环境等安全防护技术,从架构上支持了应用的安全运行&…

WebGIS开发四大开源框架对比

本篇文章主要介绍GIS开发四大地图框架的差异和特点。 Cesium: Cesium是目前主流的一款三维地图框架,支持桌面端、web端、移动端等多平台。Mapbox:高清经纬度矢量瓦片,个性化前端表达,前端矢量绘制,支持海量地名地址。…

小白学大模型:自定义信息抽取Agent

自然语言处理(NLP)是人工智能和语言学领域的分支,它致力于使计算机能够理解、解释和生成人类语言。信息抽取和信息生成是NLP中的两个基础任务: 信息抽取是从文本中自动识别出结构化信息的过程。这些信息通常是实体(如人…

APO的告警关联和告警故障影响面功能介绍

一般IT系统都会配置一系列告警来提醒运维或开发人员,系统存在问题。将告警进行分类之后,至少会有以下种类的告警: 系统运行资源告警(CPU、内存、磁盘) 网络质量告警Kubernetes事件告警应用级别告警(延时、错…

Java项目: 基于SpringBoot+mybatis+maven中小型医院网站管理系统(含源码+数据库+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven中小型医院网站管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、…

逻辑回归函数求导过程自推 LaTex 语法

背景 之前对逻辑归回函数求导过程进行过推导,当时不会用公式编辑,直接在纸上手动推导的,再重写一下,顺便回顾一下数学知识。 逻辑回归函数 逻辑回归的数学函数表达式为: g ( z ) 1 1 e − 2 g(z)\frac{1}{1e^{-2…

光控资本:国企改革概念股是什么意思?

国企改革概念股是指与国有企业改革相关的上市公司股票。 这些国企获益于国企改革方针,并有望在改革进程中完结企业运营结构优化、企业竞争力加强、运营效果添加、股票估值提高。相关国企股票的商场表现通常会遭到国企改革方针开展、企业改革成效、商场全体行情等多…

轻松编排工作流,浅谈DolphinScheduler如何使用Python调用API接口?

最近,在做某大型零售企业项目时,有客户用到DolphinScheduler,并咨询是否可以用Python脚本编排工作流?该如何实现?相信有很多人会有这样的疑问,那么,本文将为我们简单分享DolphinScheduler的优势…

2024骨传导耳机品牌推荐!深度实测五大超值尖货!

作为一位有着十余年数码测试经验的博主,近期经常收到粉丝朋友询问哪款骨传导耳机值得入手之类的问题,骨传导耳机作为当下非常热门的蓝牙机型,拥有不入耳佩戴更健康舒适等问题,那么在本次的耳机选购课堂中,主要想跟大家…

Craft:年度 Mac 应用,卡片式笔记新星

今年的年度 Mac 应用大奖颁给了Craft,这是一款集笔记、文档和个人管理于一体的独特工具。Craft 最大的亮点在于其卡片式的交互设计,这种设计让信息组织变得更加直观且高效。 尽管它仅上线了一年时间,但已经展现出了不输于许多老牌笔记应用的…

【MySQL】数据库基础认识

W...Y的主页 😊 代码仓库分享💕 目录 1. 数据库基础 1.1 什么是数据库 1.2 主流数据库 1.3 基本使用 1.3.1 MySQL安装 1.3.2 连接服务器 1.3.3 服务器管理 1.3.4 服务器,数据库,表关系 1.3.5 使用案例 1.3.6 数据逻…

一些做题中总结的零散的python函数的简单运用

输出保留两位数的小数 将16进制(可修改)的数进制转换成十进制并输出 大小写转化,第一个是搞成全部大写的,第二个高成全部小写的,最后一个是搞成第一个是大写的其他全部是小写的 将这个n的两边空格去掉 使用print(n,end…

什么是PPT,怎么制作?5款办公必备的幻灯片制作软件!

要说职场人日常离不开的两样东西,非幻灯片和PPT莫属,不论是日常会议、项目汇报还是客户展示,幻灯片和PPT都扮演着至关重要的角色。 然而,很多人可能会混淆幻灯片和PPT这两个概念,认为它们是同一回事。事实上&#xff…

OpenHarmony(鸿蒙南向)——平台驱动开发【PWM】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 PWM(Pulse Width Modulation&#xff…

用通义灵码如何快速合理解决遗留代码问题?

本文首先介绍了遗留代码的概念,并对遗留代码进行了分类。针对不同类型的遗留代码,提供了相应的处理策略。此外,本文重点介绍了通义灵码在维护遗留代码过程中能提供哪些支持。 什么是遗留代码 与过时技术相关的代码: 与不再受支持的…

Day 43~48 smbms

SMBMS SMBMS是超市订单管理系统的简称 数据库: 项目如何让搭建? 考虑使用不使用Maven? 依赖,jar 项目搭建准备工作 1.搭建一个mavenweb项目 2.配置Tomcat 3.测试项目是否能够跑起来 4.导入项目中会遇到的jar包 jsp,servle…

在nuxt中集成mars3d

创建一个nuxt项目 创建一个项目&#xff0c;安装依赖 安装mars3d ,安装mars3d-cesium 替换app.vue <template><div id"mars3dContainer" class"mars3d-container"></div><!-- <div>123</div> --> </template&…

无人机之模拟图传篇

无人机的模拟图传技术是一种通过模拟信号传输图像数据的方式&#xff0c;它通常使用无线电模块或专用通信协议进行数据传输。 一、基本原理 模拟图传技术的工作原理是将摄像头或相机设备采集到的图像数据&#xff0c;通过模拟信号的形式进行传输。这些模拟信号在传输过程中可能…