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…

DeepSeek-R1:多阶段训练提升推理能力

标题:DeepSeek-R1:多阶段训练提升推理能力 文章信息摘要: DeepSeek-R1通过结合监督学习与强化学习的多阶段训练方法,显著提升了大型语言模型的推理能力,尤其在处理复杂数学问题时表现优异。该方法克服了纯强化学习模型…

以创新芯片技术助力科技发展

在当今数字化与智能化浪潮中,芯片作为现代科技的核心,正悄然推动着各个行业的变革。厦门国科安芯科技有限公司专注于高性能芯片的研发与创新,致力于为工业、汽车和商业航天等领域提供高效、可靠的解决方案。以下是国科安芯推出的几款具有代表…

【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…

【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测

🔥【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测 📅 发布日期:2025年01月29日(大年初一) 在这个辞旧迎新的美好时刻,我们迎来了充满希望的2025年,也是十二生肖中的蛇…

使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书

使用 Docker Nginx Certbot 实现自动化管理 SSL 证书 在互联网安全环境日益重要的今天,为站点或应用部署 HTTPS 已经成为一种常态。然而,手动申请并续期证书既繁琐又容易出错。本文将以 Nginx Certbot 为示例,基于 Docker 容器来搭建一个…

C++11新特性之使用using(代替typedef)定义别名

1.介绍 传统的C使用typedef重定义一个类型存在一些限制&#xff0c;例如无法直接重定义一个模版。如下所示。 template <typename Val> struct str_map {typedef std::map<std::string, Val> type; };str_map<int>::type map1; 需要添加额外的类来实现&…

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

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

maven、npm、pip、yum官方镜像修改文档

文章目录 Maven阿里云网易华为腾讯云 Npm淘宝腾讯云 pip清华源阿里中科大华科 Yum 由于各博客繁杂&#xff0c;本文旨在记录各常见镜像官网&#xff0c;及其配置文档。常用镜像及配置可评论后加入 Maven 阿里云 官方文档 setting.xml <mirror><id>aliyunmaven&l…

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

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

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

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

搜索引擎友好:设计快速收录的网站架构

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构&#xff0c;以实现快速收录&#xff0c;可以从以下几个方面入手&#xff1a; 一、清晰的目录结构与层级 合理划分内容&#xff1a;目录结构应…

CF1098F Ж-function

【题意】 给你一个字符串 s s s&#xff0c;每次询问给你 l , r l, r l,r&#xff0c;让你输出 s s s l , r sss_{l,r} sssl,r​中 ∑ i 1 r − l 1 L C P ( s s i , s s 1 ) \sum_{i1}^{r-l1}LCP(ss_i,ss_1) ∑i1r−l1​LCP(ssi​,ss1​)。 【思路】 和前一道题一样&#…

C++ 拷贝构造

拷贝构造函数会在以下几种场景中被调用: 1. 用一个对象显式初始化另一个对象。 2. 对象按值传递给函数。 3. 函数按值返回对象。 4. 将对象插入到容器中。 5. 明确调用拷贝构造函数。 1. 当用一个对象显式初始化另一个对象时 MyClass obj1("Hello"); MyClass obj2…

2024年终总结

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

《哈佛家训》

《哈佛家训》是一本以教育为主题的书籍&#xff0c;旨在通过一系列富有哲理的故事和案例&#xff0c;传递积极的人生观、价值观和教育理念。虽然它并非直接由哈佛大学官方出版&#xff0c;但其内容深受读者喜爱&#xff0c;尤其是在家庭教育和个人成长领域。 以下是《哈佛家训…