【YOLO】目标检测 YOLO框架之train.py参数含义及配置总结手册(全)

server/2024/10/9 15:15:16/

1.一直以来想写下基于YOLO开源框架的系列文章,该框架也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。
2.熟悉、梳理、总结下YOLO目标检测相关知识体系,之前实战配置时总是临时性检索些注释含义,但很多时候不太全或不想要,借此机会总结、更新下。
3.欢迎批评指正,跪谢一键三连!

  • YOLO框架系列总结-核心目录文件及含义如下所示:
    在这里插入图片描述

1.train.py parse_opt方法配置参考示例

def parse_opt(known=False):# argparse是python用于解析命令行参数和选项的标准模块,用于解析命令行参数,输入训练的参数和选项。parser = argparse.ArgumentParser()# 指定一个网络模型# yolov5s.pt, yolov5m.pt, yolov5l.pt, yolov5x.pt   这四种对应的是img = 640# yolov5s6.pt, yolov5m6.pt, yolov5l6.pt, yolov5x6.pt   这四种对应的是img = 1280parser.add_argument('--weights', type=str, default=ROOT / 'weights/yolov5s.pt', help='initial weights path')parser.add_argument('--cfg', type=str, default='', help='model.yaml path')parser.add_argument('--data', type=str, default=ROOT / 'data/WaterSurfaceGarbageDetection.yaml', help='dataset.yaml path')parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')parser.add_argument('--epochs', type=int, default=300)# 一次往GPU哪里塞多少张图片了。决定了显存占用大小,默认是16。parser.add_argument('--batch-size', type=int, default=8, help='total batch size for all GPUs, -1 for autobatch')# img-size# 照片的尺寸,它在网络运行过程中,会将输入图片 / 视频的大小进行一个resize, 再送到我们的神经网络中,输入和输出的大小可能不变,但是在运算的过程中会改变parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')# 非矩阵大小图片处理方式parser.add_argument('--rect', action='store_true', help='rectangular training')# resume 重新开始; (中断后)继续;是否从最新的训练模型继续训练parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent 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('--noval', action='store_true', help='only validate final epoch')parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor')parser.add_argument('--noplots', action='store_true', help='save no plot files')parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')# 是否缓存图片,方便训练parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')# --device:CUDA设备,如果使用CPU训练就写cpu,如果用一块GPU训练就写0,如果有多块GPU就写 0,1,2,3parser.add_argument('--device', default='0', 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')# yolov5官方的预训练权重是基于FP16的,训练的时候使用的是FP32,此处储存空间就增加了一倍;# 同时官方预训练权重是不包含optimizer参数的,而我们训练的时候是把optimizer参数保存了的,这个可以打印出来看一下,# 所以最终我们训练的权重比预训练权重大很多。parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer')# 多GPUparser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')# 指数据装载时cpu所使用的进程数,默认为8parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)')# 保存路径parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')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('--cos-lr', action='store_true', help='cosine LR scheduler')# 标签平滑  防止过拟合,标签平滑,弱化单个标签的作用parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')# 早停机制parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2')parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')# Weights & Biases argumentsparser.add_argument('--entity', default=None, help='W&B: Entity')parser.add_argument('--upload_dataset', nargs='?', const=True, default=False, help='W&B: Upload data, "val" option')parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval')parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use')opt = parser.parse_known_args()[0] if known else parser.parse_args()return opt

2.参数配置含义及作用

  • 源文件下载链接: YOLO框架train.py 中参数配置解释、数据标注格式解释
    在这里插入图片描述

3.参考链接

  • GitHub-ultralytics/yolov5

http://www.ppmy.cn/server/34284.html

相关文章

视频教程下载:为 GPTs 商店构建 10 个 GPTs获得被动收入

欢迎来到 AI 驱动的内容创作新时代 - GPT 商店。这门综合课程是您成为定制和利用 GPT 模型解决多样化应用的专家的路线图。无论你是错过了应用商店革命的初始浪潮还是乘着它取得了成功&#xff0c;这都是你站在下一个重大数字飞跃前沿的机会。 课程模块&#xff1a; - 介绍 Ch…

Redis-分片机制

概述 业务需要&#xff1a;由于单台redis内存容量是有限的&#xff0c;无法实现海量的数据实现缓存存储 概念&#xff1a;由多个redis节点协助工作的机制就是redis的分片机制 作用&#xff1a;为了实现redis扩容 特点&#xff1a;分片机制把该机制中包含的多台redis缓存服务…

【数据结构】链表专题3

前言 本篇博客我们继续来讨论链表专题&#xff0c;今天的链表算法题是经典中的经典 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 目录 1.判断链表是否…

亚马逊AWS免费优质证书分享-无服务器开发(有答案)

亚马逊云AWS又出了一张程序员⌨️专属免费证书了&#xff01;这次证书是关于目前云上开发最&#x1f525;的Serverless无服务器开发&#xff0c;Serverless服务说白了就是一台服务器&#xff0c;大家可以部署写好的代码&#xff0c;但是服务器是由AWS帮忙维护的&#xff0c;减轻…

​【收录 Hello 算法】第 3 章 数据结构

第 3 章 数据结构 Abstract 数据结构如同一副稳固而多样的框架。 它为数据的有序组织提供了蓝图&#xff0c;算法得以在此基础上生动起来。 本章内容 3.1 数据结构分类3.2 基本数据类型3.3 数字编码 *3.4 字符编码 *3.5 小结

45. UE5 RPG 增加角色受击反馈

在前面的文章中&#xff0c;我们实现了对敌人的属性的初始化&#xff0c;现在敌人也拥有的自己的属性值&#xff0c;技能击中敌人后&#xff0c;也能够实现血量的减少。 现在还需要的就是在技能击中敌人后&#xff0c;需要敌人进行一些击中反馈&#xff0c;比如敌人被技能击中后…

消息队列面试题(二)

1. 请解释消息队列中的消息堆积现象以及如何处理堆积问题。 消息队列中的消息堆积现象是指当消息的生产速度超过消费者的处理能力时&#xff0c;消息会在队列中逐渐积累&#xff0c;形成堆积。这种现象可能会引发一系列问题&#xff0c;如内存或磁盘告警&#xff0c;从而导致所…

从零开始学AI绘画,万字Stable Diffusion终极教程(六)

【第6期】知识补充 欢迎来到SD的终极教程&#xff0c;这是我们的第六节课&#xff0c;也是最后一节课 这套课程分为六节课&#xff0c;会系统性的介绍sd的全部功能&#xff0c;让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 …