yolov5错误更改与相关参数详解(train.py)

1.错误更改 

main中相关参数

if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--weights', type=str, default='', help='initial weights path')parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='model.yaml path')parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')parser.add_argument('--epochs', type=int, default=3)parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')parser.add_argument('--rect', action='store_true', help='rectangular training')parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')parser.add_argument('--notest', action='store_true', help='only test final epoch')parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')parser.add_argument('--project', default='runs/train', help='save to project/name')parser.add_argument('--entity', default=None, help='W&B entity')parser.add_argument('--name', default='exp', help='save to project/name')parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')parser.add_argument('--quad', action='store_true', help='quad dataloader')parser.add_argument('--linear-lr', action='store_true', help='linear LR')parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')opt = parser.parse_args()

coco128.yaml中代码:

# COCO 2017 dataset http://cocodataset.org - first 128 training images
# Train command: python train.py --data coco128.yaml
# Default dataset location is next to /yolov5:
#   /parent_folder
#     /coco128
#     /yolov5# download command/URL (optional)
download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: coco128/images/train2017  # 128 images
val: coco128/images/train2017  # 128 images# number of classes
nc: 80# class names
names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee','skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard','tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch','potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear','hair drier', 'toothbrush' ]

首先你先运行一次train.py然后他会帮你下载coco127数据集,然后如果出现unzip的错误

你就需要自己解压缩一下。

其中coco128.yaml中的train与val是一个文件路径且该路径是你解压以后的images/train2017

如果下载不了资源如下:【免费】coco128数据集,coco128数据集下载_coco128数据集下载资源-CSDN文库

此时应该会报错多处:

一处是:

AttributeError: module 'numpy' has no attribute 'int'.

此时你要去上面找报错的.py文件,窗口一般有,然后将改窗口中的所有np.int改成int

【已解决】AttributeError: module ‘numpy‘ has no attribute ‘int‘._attributeerror: module 'numpy' has no attribute 'i-CSDN博客

我改了好多处这个错每次运行都改一次直到没有这个错误

另一处是:

RuntimeError: result type Float can‘t be cast to the desired output type long int

 这里的long int可能是int64

然后按照本博客更改就没问题了:

一步真实解决RuntimeError: result type Float can‘t be cast to the desired output type long int_runtimeerror: result type float can't be cast to t-CSDN博客

 2.相关参数详解

参数解释:default是默认的意思,action是选中后才执行的意思。

 第一个是默认权重(初始化权重),如果从头开始训练的话可以把default改成’‘,第二个参数是模型配置,就是第一个训练模型的相关配置,相关配置在下图文件中:

 上述两行按上图配置的意思为,本次初始权重无,模型相关配置为yolov5s。

上面的data表示本次训练所用数据集,然后hyp.scratch是适配coco数据集的超参数。

上面两个第一个是训练轮数,我设置为3轮为了快点训练结束,一般是300,batchsize类似于我另一个小土堆系列学习笔记里面的batchsize就是一次处理多少张图片。

img-size是处理时把一张图片压缩后的大小,建议与参数--cfg中的模型要求大小相匹配,下面一个如果选中就是利用矩阵训练方式训练(用于图像处理时减少图像中不必要信息的产生)。img-size匹配模型如下:

 parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')

本行代码就是问你是否要在上次训练完以后的模型接着训练注意此时把default改成True不行 ,应当把defalut=“上次模型的路径”,注意此时会沿用上一次的基本参数,比如我把epochs改成5,然后resume上一次的由于上一次的epochs是3,他也只训练3轮具体解释如下图:

上面一个如果指定了就是只保存最后一轮的关键数据(.pt文件),下面一个如果选中的就是仅在最后一轮测试测试集。

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

此行参数可以看这个blog目标检测之锚点与锚框_锚点和锚框-CSDN博客

parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')

此行代码是用于超参数调优,具体如下链接:yolov5选择合适自己的超参数-超参数进化Hyperparameter Evolution_yolov5超参数进化-CSDN博客

    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')

上一行参数暂时无用,下面一行指定后可以将图片放入缓存区以便于更快训练。

可以看下面的链接:YOLOV5代码理解——类权重系数和图像权重系数_yolov5 imagesweight-CSDN博客

    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
上面一个是用于选定训练设备,下面一个是对图像进行变换让图像大小变换。
parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')

上一个参数是是否用多重类别训练如果选中就是不用,下面一个是是否使用Adam优化器优化梯度否则为SGD。

    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')

--sync-bn 是否开启跨卡同步BN;开启参数后即可使用 SyncBatchNorm多 GPU 进行分布式训练。

--local_rank是ddp参数,不可更改,用于单卡多GPU分布训练。

    parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')parser.add_argument('--project', default='runs/train', help='save to project/name')parser.add_argument('--entity', default=None, help='W&B entity')parser.add_argument('--name', default='exp', help='save to project/name')

'--workers'数据装载时cpu所使用的线程数,在每轮加载图片时,dataloader一次性创建workers数量个工作进程,每个进程都负责调度一个batchsize的数据,并加载到内存中,dataloader从内存找到本轮所需要的batch,如果找到就使用,如果没有就要继续加载batch到内存。、

'--project'训练结果存放地默认时“runs/train”

--entity是以实体的方式保存模型,在机器学习和深度学习的上下文中,"实体"(entity)通常指的是用于版本控制、追踪实验以及管理模型训练过程中的各种资源的一个标识符或名称。这个概念在使用一些特定的工具和服务时尤为重要,比如Weights & Biases (W&B),它是一个流行的机器学习实验跟踪平台。

--name就是新建一个default中的一个文件存参数project下面,最后每次的训练都存在该文件夹下。

parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
parser.add_argument('--quad', action='store_true', help='quad dataloader')

上一个就是如果选中了就不新建name里面的文件夹了比如第一个exp,如果在训练一个就会有exp1,如果选中这个参数,再一次训练就不会新建一个exp1而是存在exp里。

下一个就是quad可以看看这个,yolov5的quad dataloader参数讲解-CSDN博客

   parser.add_argument('--linear-lr', action='store_true', help='linear LR')

 如果选中就是上一个(线性方式)来调整优化器学习速率,下面一个就是用cos的方式来修改优化器速率。

    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')

'--label-smoothing'是光滑标签防止过拟合。

--upload_dataset上传数据集作为Artifact Table,在Weights & Biases (W&B) 中,Artifact 是一种用于存储和版本控制数据集、模型和其他文件的机制。Artifact 可以帮助你更好地管理和跟踪实验中使用的数据,确保可重复性和透明性。Artifact Table 则是一种结构化的方式来展示和分析这些数据。Artifact Table 允许你以表格的形式存储和查看数据集,这对于数据分析和可视化非常有用。

'--bbox_interval'可以指定边界框的日志间隔用于W&B库

在使用 Weights & Biases (W&B) 进行模型训练时,记录边界框(bounding box)图像可以帮助你可视化模型的预测结果,并跟踪其性能随时间的变化。设置边界框图像的日志记录间隔可以控制这些图像被记录的频率,从而平衡日志的详细程度和存储开销。

'--save_period'设置每隔几轮保存一个模型日志,默认“-1”是不用w&b库保存
    parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')

数据集版本标识默认采用最后一个版本。

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

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

相关文章

第4章 基于中点电流的NPC逆变器中点电压平衡策略

1. 工作原理 1.1 NPC型三电平逆变器工作原理 NPC型三相三电平逆变器有A、B、C三个桥臂,其组成结构是相同的,本章以A相为例,对其工作原理进行分析。开关器件SA1和SA3、SA2和SA4为互补器件,通过控制开关器件的导通和关断状态&#…

【C++】内联函数inline、关键字auto与新式for

内联函数 内联函数背景 我们在使用C语言中我们都学过函数,我们知道函数在调用的过程中需要开辟栈帧。如果我们需要频繁的调用一个函数,假设我们调用10次Add()函数,那我们就需要建立10次栈帧。我们都知道在栈帧中要做很多事情,例如…

【深度学习】图像分类数据集

图像分类数据集 MNIST数据集是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transfo…

【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作

Retrieve 检索 示例 1. 构造数据 创建表结构 create table exam1(id bigint, name varchar(20) comment同学姓名, Chinesedecimal(3,1) comment 语文成绩, Math decimal(3,1) comment 数学成绩, English decimal(3,1) comment 英语成绩 ); 插入测试数据 insert into ex…

Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)

文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…

RNN实现阿尔茨海默症的诊断识别

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 导入数据 import torch.nn as nn import torch.nn.functional as F import torchvision,torch from sklearn.preprocessing import StandardScaler from torch.utils.data import TensorDatase…

编程题-最长的回文子串(中等)

题目: 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s &…

CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)

CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据) 目录 CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)预测效果基本介绍CNN-GRU卷积门控循环单元时间序列预测一、引言1.1、研究背景与意义1.2、研究现状1…

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式: --行内样式:写在标签的style属性中(不推荐) --内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中) --外联样式&#xf…

2024年终总结

回顾 今年过年没回老家,趁着有时间,总结一下24年吧。 我把23年看做是打基础的一年,而24年主要是忙于项目的一年,基本上大部分时间都是忙着交付软件,写的一些文章也大部分都是项目中遇到的问题和解决方案,虽…

[c语言日寄]越界访问:意外的死循环

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

使用 KNN 搜索和 CLIP 嵌入构建多模态图像检索系统

作者:来自 Elastic James Gallagher 了解如何使用 Roboflow Inference 和 Elasticsearch 构建强大的语义图像搜索引擎。 在本指南中,我们将介绍如何使用 Elasticsearch 中的 KNN 聚类和使用计算机视觉推理服务器 Roboflow Inference 计算的 CLIP 嵌入构建…

maven的打包插件如何使用

默认的情况下,当直接执行maven项目的编译命令时,对于结果来说是不打第三方包的,只有一个单独的代码jar,想要打一个包含其他资源的完整包就需要用到maven编译插件,使用时分以下几种情况 第一种:当只是想单纯…

Golang Gin系列-7:认证和授权

在本章中,我们将探讨Gin框架中身份验证和授权的基本方面。这包括实现基本的和基于令牌的身份验证,使用基于角色的访问控制,应用中间件进行授权,以及使用HTTPS和漏洞防护保护应用程序。 实现身份认证 Basic 认证 Basic 认证是内置…

CTF-web: phar反序列化+数据库伪造 [DASCTF2024最后一战 strange_php]

step 1 如何触发反序列化? 漏洞入口在 welcome.php case delete: // 获取删除留言的路径,优先使用 POST 请求中的路径,否则使用会话中的路径 $message $_POST[message_path] ? $_POST[message_path] : $_SESSION[message_path]; $msg $userMes…

C语言自定义数据类型详解(一)——结构体类型(上)

什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…

SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门

前言 在分布式系统中,雪崩效应(Avalanche Effect)是一种常见的故障现象,通常发生在系统中某个组件出现故障时,导致其他组件级联失败,最终引发整个系统的崩溃。为了有效应对雪崩效应,服务保护方…

升级到Mac15.1后pod install报错

升级Mac后,Flutter项目里的ios项目运行 pod install报错, 遇到这种问题,不要着急去百度,大概看一下报错信息,每个人遇到的问题都不一样。 别人的解决方法并不一定适合你; 下面是报错信息: #…

STM32 PWM驱动舵机

接线图: 这里将信号线连接到了开发板的PA1上 代码配置: 这里的PWM配置与呼吸灯一样,呼吸灯连接的是PA0引脚,输出比较单元用的是OC1通道,这里只需改为OC2通道即可。 完整代码: #include "servo.h&quo…

使用 concurrently 实现前后端一键启动

使用 concurrently 实现前后端一键启动 本文适合: 前后端分离项目(如 React Node.js),希望通过一条命令同时启动前端和后端服务。 工具链: Node.js、npm、concurrently。 耗时: 3 分钟。 文章目录 使用 c…