物体检测-系列教程24:YOLOV5 源码解析14 (训练过程解读:训练配置文件、训练脚本train.py)

😎😎😎物体检测-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传
点我下载源码

18、训练配置文件

位置yolov5/data文件夹/hyp.scratch.yaml文件

文件内容:

lr0: 0.01  # initial learning rate (SGD=1E-2, Adam=1E-3)
momentum: 0.937  # SGD momentum/Adam beta1
weight_decay: 0.0005  # optimizer weight decay 5e-4
giou: 0.05  # GIoU loss gain
cls: 0.5  # cls loss gain
cls_pw: 1.0  # cls BCELoss positive_weight
obj: 1.0  # obj loss gain (scale with pixels)
obj_pw: 1.0  # obj BCELoss positive_weight
iou_t: 0.20  # IoU training threshold
anchor_t: 4.0  # anchor-multiple threshold
fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015  # image HSV-Hue augmentation (fraction)
hsv_s: 0.7  # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4  # image HSV-Value augmentation (fraction)
degrees: 0.0  # image rotation (+/- deg)
translate: 0.5  # image translation (+/- fraction)
scale: 0.5  # image scale (+/- gain)
shear: 0.0  # image shear (+/- deg)
perspective: 0.0  # image perspective (+/- fraction), range 0-0.001
flipud: 0.0  # image flip up-down (probability)
fliplr: 0.5  # image flip left-right (probability)
mixup: 0.0  # image mixup (probability)

解释部分参数含义

  1. lr0,初始学习率
  2. lrf,余弦退火,使用余弦函数动态降低学习率
  3. warmup_epochs,刚开始的几个epoch用小一点的学习率,让模型预热
  4. GIoU(Generalized Intersection over Union)损失用于改善模型对于边界框位置的预测准确性。这个参数控制着GIoU损失在总损失中的比重
  5. cls,一个超参数,控制分类损失在总损失中的权重
  6. cls_pw,对于二元交叉熵损失(BCELoss),这个参数给出正样本的权重,用于平衡正负样本之间的不均衡
  7. fl_gamma (焦点损失伽马): 焦点损失用于缓解正负样本不平衡问题,通过减少易分类样本的损失影响,这个参数控制了焦点损失的强度
  8. 从hsv_h到最后的mixup都是图像增强的参数

19、训练脚本

在train.py中的配置参数已经在yolov5系列的第一篇博客有过讲解

train.py写了500多行代码,但是实际上能用到的很少,因为v5是一个非常工程化的版本,适应了很多版本很多场景

训练脚本可先简单分为3个部分,然后再细分

  1. 导包部分,大约30行代码,这部分不做解读
  2. 训练函数def train(),300多行代码
  3. main函数,100多行代码

由于实在太长,不可能逐行解释,我会将训练函数分成多个部分来解读,这是导包部分的代码:

import argparse
import math
import os
import random
import time
import logging
from pathlib import Pathimport numpy as np
import torch.distributed as dist
import torch.nn.functional as F
import torch.optim as optim
import torch.optim.lr_scheduler as lr_scheduler
import torch.utils.data
import yaml
from torch.cuda import amp
from torch.nn.parallel import DistributedDataParallel as DDP
from torch.utils.tensorboard import SummaryWriter
from tqdm import tqdmimport test  # import test.py to get mAP after each epoch
from models.yolo import Model
from utils.datasets import create_dataloader
from utils.general import (torch_distributed_zero_first, labels_to_class_weights, plot_labels, check_anchors, labels_to_image_weights,compute_loss, plot_images, fitness, strip_optimizer, plot_results, get_latest_run, check_dataset, check_file,check_git_status, check_img_size, increment_dir, print_mutation, plot_evolution, set_logging)
from utils.google_utils import attempt_download
from utils.torch_utils import init_seeds, ModelEMA, select_device, intersect_dicts

第一部分主要是导入了一些常用python与深度学习任务的辅助工具
第二部分主要是torch相关的工具
第三部分主要是导入yolov5项目的各个模块的辅助函数与类的实例化,一共有26个,也就是说光是辅助函数的调用就有26个,确实太复杂了

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

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

相关文章

SpringBoot项目中出现不同端口跨域问题,如何解决?

方法一:比较繁琐,适合少量Controller控制器类 方法二 :需要写一个全局的配置文件即可 在如图所示的common目录下新建一个CorsConfig的class文件 具体代码展示: import org.springframework.context.annotation.Bean; import o…

前端Vue列表组件 list组件:实现高效数据展示与交互

前端Vue列表组件 list组件:实现高效数据展示与交互 摘要:在前端开发中,列表组件是展示数据的重要手段。本文将介绍如何使用Vue.js构建一个高效、可复用的列表组件,并探讨其在实际项目中的应用。 效果图如下: 一、引言…

功能测试--APP性能测试

功能测试--APP性能测试 内存数据查看内存测试 CPU数据查看CPU测试 流量和电量的消耗流量测试流量优化方法电量测试电量测试场景(大) 获取启动时间启动测试--安卓 流畅度流畅度测试 稳定性稳定性测试 内存数据查看 内存泄露:内存的曲线持续增长(增的远比减…

git上拉下来的web项目,只有一个.git路径解决

代码拉下来的时候,web项目路径只有一个.git,可能指没有致命分支: 用idea打开web项目;切换到对应的分支即可

基于Ambari搭建大数据分析平台

一、部署工具简介 1. Hadoop生态系统 Hadoop big data ecosystem in Apache stack 2. Hadoop的发行版本 Hadoop的发行版除了Apache的开源版本之外,国外比较流行的还有:Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等&am…

Vuex和Pinia

Vuex概述 vuex是一个vue的状态管理工具,状态就是数据(多组件共享数据)。 优势: 共同维护一份数据,数据集中化管理响应式变化操作简洁(vuex提供了一些辅助函数) vuex的使用 安装vuex插件 y…

代理IP是否会导致网络连接变慢?

目录 一、代理IP的工作原理及其在网络中的作用 二、代理IP可能导致网络连接变慢的因素 三、案例分析 四、优化代理IP使用的建议 五、总结 在网络世界中,代理IP的使用非常普遍,尤其是在需要隐藏真实IP地址、访问受限资源或进行网络爬虫等场景下。然而…

4. Linux文件属性和目录系列

在 Linux 系统中,文件和目录是基本的文件系统组成部分。文件系统是用于组织和存储文件的一种结构,而文件和目录则是文件系统的核心元素。以下是对 Linux 文件和目录的详细解释: 1. 文件(File) 在 Linux 中,文件是数据的集合,可以是文本文件、二进制文件、设备文件等。…

1362:家庭问题(family)

【算法分析】 搜索 从每个顶点尝试开始搜索,如果成功开始进行一次搜索,即可标记整个连通分量。成功开始搜索的次数即为连通分量的个数。搜索过程中对这一趟搜索到的顶点做计数,能达到在最大计数即为顶点数量最多的连通分量的顶点数。…

如何查看mnist数据集的图片

import numpy as np import matplotlib.pyplot as pltdef read_mnist_images(filename):with open(filename, rb) as f:# 读取魔术数字、图像数量、行数、列数magic_number int.from_bytes(f.read(4), big)number_of_images int.from_bytes(f.read(4), big)rows int.from_by…

UE4案例记录

UE4案例记录(制作3D角色显示在UI中) 制作3D角色显示在UI中 转载自youtube视频 https://www.youtube.com/channel/UCC8f6SxKJElVvaRb7nF4Axg 新建项目 创建一个Actor 场景组件->摄像机组件->场景捕获组件2D,之后添加一个骨骼网格体…

CLion 配置 Qt 开发环境

文章目录 CLion 配置 Qt 开发环境环境说明基本配置1. 创建Qt项目2. 设置CLion工具链3. 配置外部工具 一些问题的补充 CLion 配置 Qt 开发环境 环境说明 操作系统:Windows 10 CLion版本:2023.3.4 CMake版本:3.27.7 Qt6版本:6.6…

Java特性之设计模式【组合模式】

一、组合模式 概述 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#x…

AHU 汇编 实验一

一、实验名称:实验1 实验1 用Debug命令查看寄存器和内存中的内容 实验目的:求掌握使用Debug命令查看寄存器和内存的方法。 通过第2章两个简单实例认识汇编语言程序,初步了解程序格式;段定义;标号;DOS系统功能&#xf…

基于恒功率PQ控制的三电平并网逆变器MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 三相 T 型三电平逆变器电路如图所示,逆变器主回路由三个单相 T 型逆变器组成。 直流侧输入电压为 UPV,直流侧中点电位 O 设为零电位,交流侧输出侧是三相三线制连…

如何深度学习

信息爆炸时代,诞生了很多新的学习方式,非常轻松就能掌握知识,比如,每天听一本书,半个小时就能学习一本书的精华,比如订阅名家专栏或者课程,在不长的时间内内就能学到很多知识。 很多人认为这样…

ADC不同类型以及原理

对逐次逼近型(SAR)的理解: 对于我们做技术的而言,用查表法来通俗解释更合适。只是为了提高查表的速度,这个表格不是我们常规的计算温度的时候,表头温度下限,表尾温度上限,而是一上来…

SkiROS2:技能型机器人控制平台的探索之旅

文章目录 引言背景介绍SkiROS2架构实际使用案例1. 在仓库中执行物品搬运任务技能定义行为树构建代码实现 2. 家庭服务机器人技能定义行为树构建代码实现 展望:SkiROS2与大模型技术的结合融合大模型的决策制定情境感知与自适应技能持续学习与技能改进挑战与机遇 结论…

接口隔离原则的实现方法及具体应用

文章目录 一、接口的设计原则二、接口隔离的原则三、实现口隔离原则的方法四、隔离原则的示例代码 一、接口的设计原则 接口应该尽可能地小,尽量只包含一个功能模块所需的方法。这样可以避免接口的臃肿和不必要的依赖关系,提高代码的灵活性和可维护性。 …

【数据结构取经之路】快速排序的非递归实现

概述 递归实现快速排序在一些场景下有栈溢出的风险,下面就谈谈如何用非递归的方法实现快速排序。 非递归实现的思想 递归实现与非递归实现快速排序的本质是一致的,效率并不会因为用了非递归实现而有所提升。递归实现快速排序的本质就在于通过递归&…