YOLOv7实验记录

news2024/11/18 13:43:25

这篇博客主要记录博主在做YOLOv7模型训练与测试过程中遇到的一些问题。
首先我们需要明确YOLO模型权重文件与模型文件的使用
其实在github的readme中已经告诉我们使用方法,但我相信有很多像博主一样眼高手低的人可能会犯类似的错误。

训练

首先是训练时的设置:
这里的训练指的是从头开始训练,即不使用任何权重文件。
官方给出的命令如下:可以看到此时其只是使用了模型的配置文件(cfg参数所指定的),而权重文件(weights所指定的)为空,此时训练时对服务器的配置要求高。

python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml

迁移学习

迁移学习指的是我们使用官方给出的预训练模型,我们可以在这个基础上进行微调,相较于从头训练,其配置要求相对低。
使用的权重文件:
在这里插入图片描述
官方给出的命令:
可以看到此时我们使用的预训练模型为yolov7_training.pt

python train.py --workers 8 --device 0 --batch-size 32 --data data/custom.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights 'yolov7_training.pt' --name yolov7-custom --hyp data/hyp.scratch.custom.yaml

yolov7_training.pt

测试

测试指的是我们使用官方提供好的测试权重文件来进行对我们的数据进行测试。
使用的权重文件:
在这里插入图片描述
下载地址:

https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt

python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val

推理

在视频中:

python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4

在图像上:

python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg

epoch太小问题

实验中设置epoch为300,batch-size=16,但运行完成后发现模型还有优化的趋势

在这里插入图片描述
只能将其调大。重新训练

随后再次开始训练时遇到问题终止了:

磁盘空间不足问题

RuntimeError: [enforce fail at inline_container.cc:319] . unexpected pos 216903872 vs 216903768

这是由于硬盘容量不足造成的。
这是由于我们在运行过程中会产生大量的权重文件,这些文件在数量多后所占空间是极大的。要注意随时清理。
这一次其没有完全运行完便终止了,但根据迭代时的效果来看其已经不会有更多提升。

在这里插入图片描述
进行测试,效果并不理想

在这里插入图片描述

模型在训练过程中会产生大量的权重文件这些文件会占用大量的磁盘空间。但其实通过查看保存到权重文件我们可以看到很多都是在训练的某个epoch中产生的,而我们一般只需要最好的那个模型文件即可,即best.pt文件,那么我们就可以在实验过程中将这些不需要的文件删除。
我们可以选择一个个的命令输入删除:

 rm epoch_049.pt epoch_074.pt

但这种需要输入很多文件名,很是费力,这时我们可以使用只保留某个文件其余都删除:
如我们只保留best.pt,init.pt,last.pt文件

rm -f !(best.pt|init.pt|last.pt)

但在运行中可能会报错:bash中运行后会提示,不能识别 ! 这个命令符

bash: !: event not found

这时可以使用shopt 内置命令启用shell选项 (extglob), 则会识别几个扩展模式匹配运算符

模式列表是由 | 分割

查看shell选项 extglob

shopt |grep extglob

启动shell选项 extglob

shopt -s extglob

关闭shell选项 extglob

shopt -u extglob

P,R,Map一直为0问题

今天遇到的一个Map一直为0问题,说实话先前在detr模型中也曾经遇到过,但一直没有得到解决,今天在yolo中再次遇到了,说实话就很无语。后来查阅资料提到说可能是pytorch版本不匹配导致的。这下更无语了,先前博主的环境一直使用的是这个,没有出现过这个问题呀。如下图:

在这里插入图片描述
考虑到自己更换了预训练模型,心想是不是这个问题导致的,因此便重新换回了先前的模型:

发现竟然原先的模型也一直为0,这下让博主懵了,明明用的都是同样的环境呀。

升趋势。
随后博主使用了另一个服务器,发现在另一个服务器上的运行是正常的。这~,难道说博主的环境真的出了问题,随后博主打开了两个服务器的环境查看一下:发现果然环境不同。

在这里插入图片描述
在这里插入图片描述
其实在源码的依赖包配置文件中已经指出:

在这里插入图片描述

随后将其更换为一样的后。再次运行,发现问题依旧没有解决,但这时两边对比,发现labels有些不同,便猜测是数据集加载出了问题。
随后检测了一下数据集,发现果然是数据集出现了问题,labels中标签缺失,将数据集替换后再次运行便正常了。
哎,白高兴一场,还以为可以解决先前detr里面出现的问题了呢。

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

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

相关文章

Object.defineProperty() 详解

一、对象的定义与赋值 我们经常使用的定义与赋值方法 obj.xxx value 或 obj[xxx] value,并且可以定义任意类型的值,如下所示: let obj {}; obj.name bjl; obj[age] 18; obj.sayHi function() {console.log(Hi)}; console.log(obj) /…

C语言自定义类型---进阶

之前的文章中有结构体初阶知识的讲解&#xff0c;对结构体不是很了解的小伙伴可以先去去看一下结构体初阶 结构体&#xff0c;枚举&#xff0c;联合结构体结构体类型的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐 <3 <3 <3(重点)那为什么存在内…

Unity记录2.1-动作-多段跳、蹬墙跳、墙体滑落

文章首发及后续更新&#xff1a;https://mwhls.top/4450.html&#xff0c;无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评&#xff0c;非常感谢&#xff01; 汇总&#xff1a;Unity 记录 摘要&#xff1a;实现跳跃、蹬…

若依学习(前后端分离版)——自定义注解@Log(如何自定义注解,实现aop)

如何自定义注解 aop的基本知识与应用 若依对用户的一些更新删除等敏感操作操作进行了日志记录 注解定义和切面处理的项目位置 第一步&#xff1a;自定义注解log 定义了注解的相关信息。这里定义的属性可以在使用时加以定义 注解Target和Retention的作用 第二步切面逻辑…

动手实现一遍Transformer

最近乘着ChatGpt的东风&#xff0c;关于NLP的研究又一次被推上了风口浪尖。在现阶段的NLP的里程碑中&#xff0c;无论如何无法绕过Transformer。《Attention is all you need》成了每个NLP入门者的必读论文。惭愧的是&#xff0c;我虽然使用过很多基于Transformer的模型&#x…

synchronized从入门到踹门

synchronized是什么synchronized是Java关键字&#xff0c;为了维护高并发是出现的原子性问题。技术是把双刃剑&#xff0c;多线程并发给我带来了前所未有的速率&#xff0c;然而在享受快速编程的过程&#xff0c;也给我们带来了原子性问题。如下&#xff1a;public class Main …

【微服务】认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

[1.3_2]计算机系统概述——中断和异常

文章目录第一章 计算机系统概述中断和异常&#xff08;一&#xff09;中断的作用&#xff08;二&#xff09;中断的类型&#xff08;三&#xff09;中断机制的基本原理小结第一章 计算机系统概述 中断和异常 中断的作用中断的类型 内中断&#xff08;也称“异常”&#xff09;…

ES之DSL查询文档基础查询

分类 query查询分类 总体规律就是逻辑性的&#xff0c;从外层的你干嘛&#xff0c;到下一层的查询类型&#xff0c;再到下一层的查询字段&#xff08;如果需要的话&#xff09;和然后是查询内容 查询所有 语法 get /索引库名/_serarch {"query":{"查询条件…

【Linux】配置动态IP

动态IP 服务器重启完成之后&#xff0c;我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址&#xff0c;具体信息如 下: 从图中我们可以看到&#xff0c;并没有获取到linux系统的IP地址&#xff0c;这是为什么呢&#xff1f;这是由于启动服务器时未 加载网卡&#x…

2D图像处理:Qt + Opencv使用光度立体法检测Halcon中提供的缺陷图像

文章目录 不需知道光源方向一、光度立体法(后续有时间在查资料研究)1.1 问题1:Slants和Tilts的理解(暂时是理解的)1.2 问题1:Gradient通道数为1,为何像素点对应的值会有两个?1.3 问题2:F(r,c)=(u(r,c),v(r,c)) 关于高斯曲率和平均曲率如何计算的?二、非标定光源实现光…

C++经典20题型,满满知识,看这一篇就够了(含答案)

今天找了20道c的经典题型&#xff0c;看这一篇就够了&#xff0c;全是干货 目录 1、题目&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总…

【蓝桥杯集训11】BFS(4 / 4)

目录 844. 走迷宫 - BFS求最短路 1233. 全球变暖 - BFS 845. 八数码 - 最短路BFS 状态表示 一二维坐标转换 为什么BFS保证走的是最短路&#xff1f; 一二维坐标转换&#xff08;nn矩阵&#xff09; 1562.微博转发 - BFS按层遍历 有向图 844. 走迷宫 - BFS求最短路 活…

Centos7安装中文字体

一、背景 最近一直在重写2021年毕设的前端页面&#xff0c;用vue3vite实现的响应式布局&#xff0c;目前完成10%。但在部署到Linux上时&#xff0c;遇到了服务端生成的中文验证码混乱的问题&#xff0c;通过远程断点&#xff0c;排除编码的问题&#xff0c;原来是由于Linux没有…

Linux网络编程 第六天

目录 学习目标 libevent介绍 libevent的安装 libevent库的使用 libevent的使用 libevent的地基-event_base 等待事件产生-循环等待event_loop 使用libevent库的步骤&#xff1a; 事件驱动-event 编写一个基于event实现的tcp服务器&#xff1a; 自带buffer的事件-buff…

深圳大学计软《面向对象的程序设计》实验14 运算符重载2和函数模板

A. 日期比较&#xff08;运算符重载之类型转换&#xff09; 题目描述 定义一个日期类CDate&#xff0c;包含属性&#xff1a;年、月、日&#xff0c;都是整数。 构造函数含单个参数&#xff0c;参数是八位整数&#xff0c;默认值为0&#xff0c;实现整数转为日期类型&#x…

【基于感知损失的无监督泛锐化】

PercepPan: Towards Unsupervised Pan-Sharpening Based on Perceptual Loss &#xff08;PercepPan&#xff1a;基于感知损失的无监督泛锐化&#xff09; 在基于神经网络的全色锐化文献中&#xff0c;作为地面实况标签的高分辨率多光谱图像通常是不可用的。为了解决这个问题…

C++初学笔记整理

目录 1. C关键字 2. 命名空间 1&#xff09;命名空间的引入和概述 2&#xff09;命名空间的定义 3&#xff09;std与命名空间的使用 4).相关特性 3. C输入&输出 4. 缺省参数 1 &#xff09;缺省参数概念 2&#xff09;使用及分类 a.全缺省 b.部分缺省 5. 函数…

力扣-337打家劫舍III(dp)

力扣-337打家劫舍III 1、题目 337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有…

【FMCW 01】中频IF信号

FMCW信号 调频连续波(frequency modulated continuous wave&#xff0c;FMCW)顾名思义&#xff0c;就是对信号的频率进行线性调制的信号。 从时域上看&#xff0c;对频率的调制&#xff0c;就像一把连续的锯齿波。其中每一个锯齿叫做一个chirp&#xff0c;其持续的时间叫做ch…