【深度学习】yolov5目标检测学习与调试

2024.4.15 -2024.4.16 完结

0.准备&&补充知识点

yolo检测算法可以实现目标检测、分割和分类任务。
项目仓库地址:https://github.com/ultralytics/yolov5
跟练视频:目标检测 YOLOv5 开源代码项目调试与讲解实战

lux下载视频神器:https://github.com/iawia002/lux
参考链接:Github 上lux下载神器的安装及使用教程
(之前人家叫annie,现在叫lux…)

(1).pt文件和.pth文件有什么区别?

.pt文件是保存整个PyTorch模型的,而.pth文件只保存模型的参数。

  • .pt文件:.pt文件是PyTorch的早期版本所使用的模型文件格式,通常是通过调用torch.save()函数保存的模型。
  • .pth文件:.pth文件是PyTorch的后续版本引入的模型文件格式,也是当前推荐使用的格式。只保留权重,文件相对较小

1.配置环境

Python=3.9:

conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia

检查:

>>> import torch
>>> print(torch.__version__)
1.13.0
>>> print(torch.cuda.is_available())
True
>>> print(torch.cuda.get_device_name(0)) 
NVIDIA GeForce GTX 1060

根据requirements.txt安装依赖库:

pip install -r .\requirements.txt

2.预测

2.1 调试

选择了跟视频一样的yolov5-5.0版本,但是现在已经更新到v7.0版本了。最新版本问题会少很多,因为关于模型权重的下载是按照github tags里面最新内容下载的。

出现问题

Can’t get attribute ‘SPPF’ on <module ‘models.common’ from’D:\code\yolov5-5.0\models\common.py’>

找到models/common.py文件,添加SPPF类,前面引入warrings库

import warrings
class SPPF(nn.Module):# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocherdef __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))super().__init__()c_ = c1 // 2  # hidden channelsself.cv1 = Conv(c1, c_, 1, 1)self.cv2 = Conv(c_ * 4, c2, 1, 1)self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)def forward(self, x):x = self.cv1(x)with warnings.catch_warnings():warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warningy1 = self.m(x)y2 = self.m(y1)return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

出现新问题

‘Upsample’ object has no attribute ‘recompute_scale_factor’

找到报错文件upsampling.py,将源代码报错位置改为:

return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

删掉刚才下载的pt文件,手动下载权重文件将其替换。

继续出现问题

504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:\cb\pytorch_1000000000000\work\aten\src\ATen\native\TensorShape.cpp:3191.) return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]

找到文件位置:

 # return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]# 添加  **indexing = 'ij'**return _VF.meshgrid(tensors, **kwargs,indexing = 'ij')  # type: ignore[attr-defined]

成功:
在这里插入图片描述
在exp中找到结果:
在这里插入图片描述
用lux下载视频,可以对视频进行预测。同样在参数–source中进行修改。

2.2 参数分析

parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)')

在这里插入图片描述
在–weight模型的选择上,尽管分辨率上不同(640和1280),但实际上输入和输出是保持不变的,可以得出在预测过程中图片有放缩


parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')

控制输入图像的大小,进行裁剪方便统一输入。


parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')

显示阈值,默认值0.25是作者根据经验设置比较合理的参数阈值。设置过高,一些置信度比较低的预测不会被显示。


parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')

Non-Maximum Suppression:非极大值抑制(Non-Maximum Suppression,NMS)是计算机视觉和目标检测任务中常用的一种技术,用于消除冗余或重叠的边界框预测。

在这里插入图片描述
IOU = 两块区域的交集/两块区域的并集
所以参数设置为1,框和框之间的重合部分很大;设置为0,不会有重合部分(重合的被舍弃)。

在这里插入图片描述


parser.add_argument('--view-img', action='store_true', help='display results')
parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')

action=‘store_true’,当命令行中指定了该参数时,存储的值为 True;否则,存储的值为 False。

小技巧: 为了在ide中方便点击运行,可以提前设置参数配置。
在这里插入图片描述

可以实现实时显示和保存参数。


parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')

指定显示某个类别: - - class 0,只显示person

其余参数很多,需要自查即可。

3.训练

直接点击运行问题很多,总结一下是numpy版本的问题,根据错误提示修改np.int改为int。
还有一个loss.py的问题:解决yolov5训练模型时result type Float can‘t be cast to the desired output type __int64
网络不好手动下载coco128,放在指定位置。
修改后即可开始299轮的训练。
在这里插入图片描述


parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')

指定超参数文件,超参数文件是在训练模型之前指定的相关参数,包括了:学习率lr,批量大小batch_size,正则化参数等。
通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。


parser.add_argument('--rect', action='store_true', help='rectangular training')

设置为矩形输入:
如果分辨率不是n*n,则对图像进行填充处理。
在这里插入图片描述


parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')

锚点和锚框:
锚框:目标检测之锚点与锚框
Pytorch机器学习(九)—— YOLO中对于锚框,预测框,产生候选区域及对候选区域进行标注详解
锚框是通过超参数设置,进行一个预设,算法会在图像上生成一系列位置固定的锚框,并对这些锚框进行预测,判断是否包含目标物体,以及预测框相对于锚框位置需要调整的幅度。

4.训练自己的数据集

训练自定义数据
找图片,利用在线网站半人工标注label。
修改yaml文件,开始训练!
训练后的结果保留在最后一次的weights/best.pt模型中。

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

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

相关文章

2W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPK-SAR 系列介绍

TPK-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于&#xff1b;1&#xff09;输入电源的电压变化≤5%&#xff1b;2&#xff09;输入输出之前要求隔离电压≥3000VDC&#xff1b;3&#xff09;对输出电压…

idea新建一个springboot项目

本文分为几个部分&#xff0c; 首先是在idea中新建项目&#xff0c; 然后是配置 项目的目录&#xff08;新建controller、service、dao等&#xff09;&#xff0c; 然后是自定义的一些工具类&#xff08;比如启动后打印地址等&#xff09;。 1.、创建篇 新建项目&#xff0…

Zookeeper和Redis分别实现分布式锁的原理

目录 分布式锁的概述 ZooKeeper实现分布式锁的原理 Redis实现分布式锁的原理 ZooKeeper分布式锁的工具类 Redis分布式锁的工具类 对比 分布式锁的概述 分布式锁是一种在分布式系统中用来同步多个进程对共享资源访问的机制。它可以保证在同一时刻&#xff0c;只有一个进程…

若依OSS如何支持本地上传,保存到服务器本地?

SysOssController改动&#xff1a; GetMapping("/downloadByName/**")public void download(HttpServletRequest request, HttpServletResponse response) throws IOException {String path (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPP…

IO基础-传统I/O模型

关于IO数据流有两种形式&#xff0c;来源于网络和磁盘分别叫做网络IO、磁盘IO。 客户端通过TCP和UDP协议将数据流发往服务端&#xff0c;服务端接收数据这个过程称为网络IO。 服务端读取本地文件数据到服务中的过程称为磁盘IO。 基于 Linux 一切皆文件的理念&#xff0c;在内…

[大模型]Qwen-7B-Chat WebDemo

Qwen-7B-Chat WebDemo 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行demo…

AI大模型日报#0419:全球最强开源大模型 Llama 3 发布:15T 数据预训练,参数将超 4000 亿

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 刚刚&#xff0c;全球最强开源大模型 Llama 3 发布&#xff1a;使用 15T 数据预训练&#xff0c;最大模型参数将超 4000 亿 摘要…

【目标跟踪】ByteTrack详解与代码细节

文章目录 一、前言二、代码详解2.1、新起航迹2.2、预测2.3、匹配2.4、结果发布2.5、总结 三、流程图四、部署 一、前言 论文地址&#xff1a;https://arxiv.org/pdf/2110.06864.pdf git地址&#xff1a;https://github.com/ifzhang/ByteTrack ByteTrack 在是在 2021 年 10 月…

Excel 解析工具类实现Demo,通过XSSFSheetXMLHandler使用实现

文章目录 一、功能概述二、BigExcelAnalysisUtil类三、SheetRuleUtil 类其他SheetContentsHandler 使用讲解 一、功能概述 可以校验表头以sheet维度&#xff0c;读取数据可以根据反射&#xff0c;自动把excel中的数据封装到bean主要使用了OPCPackage、XSSFReader、XSSFSheetXM…

书生浦语训练营第2期-第4节笔记

一、为什么要微调&#xff1f; 1. 适应特定任务或领域&#xff1a;虽然预训练的模型通常具有广泛的知识和理解能力&#xff0c;但它们可能不完全适应特定任务的需求。通过在特定的数据集上微调模型&#xff0c;可以使模型更好地理解和处理与特定任务或领域相关的数据。 2. 提高…

G口服务器的作用是什么?

对于大型的网络游戏企业和网络媒体视频等服务一般都使用带宽比较大一点的网络配置&#xff0c;而G口服务器则就是指带宽1G以上的服务器&#xff0c;非常适用于对带宽和流量要求比较高的业务需求&#xff0c;那G口服务器的作用是什么呢&#xff1f; G口服务器能够用来部署一些大…

【uniapp】微信小程序2024手机号快速验证及无感登录教程(内附代码)

组件&#xff1a;手机号快速验证组件 适用对象&#xff1a;企业/个体 费用&#xff1a;0.03元/次 目录 前言思路前端后端代码无感登录onload事件无感登录方法登录判断后端mini_login2 最后 前言 最近注册了公司&#xff0c;可以注册具有支付能力的小程序了&#xff0c;各种材料…

在Nuxt.js中添加PostCSS自动前缀器

在其他浏览器中&#xff0c;有些 CSS 属性需要带有前缀。如-webkit- | -o- | -ms- 等等 Autoprefixer 是一个 PostCSS 插件&#xff0c;可以将你的CSS代码渲染到浏览器中自动补充厂商前缀&#xff0c;因此你不用担心自己编写的CSS代码有浏览器兼容性问题。 如&#xff1a; .fl…

Spark:性能调优实战

链接&#xff1a; 文字文档 极客链接 一、资源申请&并行度 spark.executor.cores一个Executor中同时可以执行的task数目&#xff08;在Executor内存不变的情况下&#xff0c;executor-cores数越大&#xff0c;平均下来一个task可以使用的内存就越少&#xff09; spark.…

kaggle咖啡销售分析案例侧重可视化折线图条形图扇形图柱状图

目录 概述 环境依赖 数据描述 代码概述 导包 数据读取 统计缺失值 数据结构概述 描述统计 时间轴数据转换 月交易统计直方图 周交易统计图 小时数据转换 小时折线图 销售关系可视化统计 销售占比扇形图 价格箱线图 各类别多维度条形图统计 商店位置交易量折线…

简单分享下文件下载中心的实现和代码

背景 业务中很常见的场景,就是下载. 而随着业务数据越来越大, 下载的负担也越来越重, 时间越来越久 因此经常会将其做成异步的, 先给前端返回,然后开一个线程去处理. 然后等处理完用户到一个专门的页面下载. 表 要实现这样的功能, 肯定要把下载的内容存起来: -- t_train_fi…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们&#xff0c;令人振奋的消息来啦&#xff01;本月&#xff0c;我们特地为大家准备了一份特别的粉丝福利&#xff01;只要您轻轻一点&#xff0c;关注我们的公众号&#xff0c;就有机会抽取现金红包&#xff0c;让您的生活多一份惊喜与喜…

【微信公众平台】扫码登陆

文章目录 前置准备测试号接口配置 带参数二维码登陆获取access token获取Ticket拼装二维码Url编写接口返回二维码接收扫描带参数二维码事件编写登陆轮训接口测试页面 网页授权二维码登陆生成ticket生成授权地址获取QR码静态文件支持编写获取QR码的接口 接收重定向参数轮训登陆接…

游泳耳机哪个牌子好?体验与口碑兼顾的4大游泳耳机汇总!

最近的天气越来越炎热了&#xff0c;许多人选择游泳作为一种既能锻炼身体又能享受清凉的活动。而随着科技的发展&#xff0c;越来越多的运动爱好者希望在游泳时也能享受到音乐的乐趣。因此&#xff0c;游泳耳机应运而生&#xff0c;成为市场上的热门产品。然而&#xff0c;面对…

使用PixVerse使用指定的角色生成视频

PixVerse 是一款可以将文字描述转换为高清视频的AI视频生成工具&#xff0c;它还支持直接生成原神角色的专属动画视频。以下是如何使用PixVerse使用指定的角色生成视频的步骤&#xff1a; 1. 点击PixVerse 网址 访问以下网址&#xff1a;https://app.pixverse.ai/create/vide…