计算机视觉——yolov5回归与跨网格预测、训练技巧(下篇)

yolov5

  • 1. yolov5网络架构与组件
    • 1.1 网络可视化工具 netron
    • 1.2 不同模型的配置
    • 1.3 Focus 模块
    • 1.4 CSPNet 跨阶段局部网络
    • 1.5 SPP 空间金字塔池化
    • 1.6 PANet 路径聚合网络
  • 2. 损失函数
    • 2.1 类别预测
    • 2.2 边界框回归
    • 2.3 回顾IoU
    • 2.4 IoU推广——GIoU loss
    • 2.5 IoU推广——DIoU loss
    • 2.6 IoU推广——CIoU loss
    • 2.7 总结
  • 3. YOLOv5目标框回归与跨网格预测策略
    • 3.1 回顾:目标框PASCAL VOC标注格式
    • 3.2 标记文件
      • 一个例子
    • 3.3 目标框回归
    • 3.4 YOLOv5跨网格匹配策略
  • 4. YOLOv5 训练技巧
    • 4.1 训练预热warmup
    • 4.2 自动计算锚框
    • 4.3 超参数进化
    • 4.4 自动混合精度训练
    • 4.5 断点续训 !!!!!!!!!
    • 4.6 多GPU训练
    • 4.7 并行数据加载

1. yolov5网络架构与组件

1.1 网络可视化工具 netron

在线版本:浏览器中输入链接: https://lutzroeder.github.io/netron/
netron官方的Github链接:https://github.com/lutzroeder/netron

1.2 不同模型的配置

image-20230330125609425

1.3 Focus 模块

image-20230330125649829

一个小实验:image-20230330125759484

Focus()模块是为减少错误和提高速度而设计的,而不是提高精度。

image-20230330125817968

1.4 CSPNet 跨阶段局部网络

image-20230330130033908

1.5 SPP 空间金字塔池化

在CSP上添加SPP块,因为它显着地增加了接收字段,分离出了最重要的内容,几乎没有降低网络的操作速度。

image-20230330130227107

1.6 PANet 路径聚合网络

在这里插入图片描述

2. 损失函数

image-20230330132632064

2.1 类别预测

image-20230330132725856

2.2 边界框回归

image-20230330132834504

2.3 回顾IoU

image-20230330132939901

2.4 IoU推广——GIoU loss

image-20230330133049144

image-20230330133128505

C 框是包围A、B的最小的框

2.5 IoU推广——DIoU loss

image-20230330133321890

蓝色为对角线,两框中心点的距离为d

image-20230330133417955

在IoU和GIoU一样的情况下,DIoU还有变化。

2.6 IoU推广——CIoU loss

image-20230330134044029

优化的偏导数

image-20230330134111209

2.7 总结

image-20230330133521568

还有CIoU等等,大家感兴趣可以自己了解。

image-20230330133750549

DIoU波动稳定,对不同值的适应能力比较强;实验比较G&C:CIoU的表现比较好,YOLOv5默认用CIoU计算Loss

image-20230330133841706

3. YOLOv5目标框回归与跨网格预测策略

3.1 回顾:目标框PASCAL VOC标注格式

左上角为坐标原点

image-20230411130856440

3.2 标记文件

image-20230411130758602

图右框住的部分可以看出,框的宽高等做了归一化;两种标记文件是可以转换的

一个例子

image-20230411131155876

3.3 目标框回归

image-20230411131242684

蓝色是预测框,虚线是先验框(anchor)

image-20230411131537172

两个模型的计算方式出现了改变;原始的yolo / darknet框方程式存在严重缺陷。宽度和高度完全不受限制,它可能导致失控的梯度、不稳定、NaN损失并最终完全失去训练。

对于yolov5,确保通过sigmoid所有模型输出来修补此错误,同时还要确保中心点保持不变1=fcn (0) ,因此模型的标称零输出将导致使用标称锚框大小(即预先设置的锚框)。当前的方程式将锚点的倍数从最小0限制为最大4(这个地方的解释:sigmoid函数取值[0,1],因此其平方乘以2 的取值范围就是[0,4]),并且锚框-目标匹配也已更新为基于宽度-高度倍数,标称上限阈值超参数为4.0。

image-20230411131755033

3.4 YOLOv5跨网格匹配策略

image-20230411133646563

4. YOLOv5 训练技巧

4.1 训练预热warmup

刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡)。选择warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XNOeFks2-1681870777889)(C:/Users/dell/AppData/Roaming/Typora/typora-user-images/image-20230411134042225.png)]

0-30个epoches的warmup,学习率从很小增加很快,第三张图是不同的预热策略。

例子:余弦退火调整学习率。

image-20230411134459791

4.2 自动计算锚框

Anchor给出了目标宽高的初始值,需要回归的是目标真实宽高与初始宽高的偏移量,而不使用anchor的做法需要回归宽高的绝对量。
Autoanchor only runs when the best possible recall (BPR,最大可能召回率) is under threshold;在yolov5中,BPR小于98%就会自动计算锚框。

image-20230411134658548

也可以自己禁用这一功能,自动计算的锚框信息会保存在模型的权重文件中。

4.3 超参数进化

在yolov5中采用类似GA遗传算法来进行优化,但yolov5无交配这一操作。

image-20230411134851198

4.4 自动混合精度训练

image-20230411135027934

如何使用呢?

image-20230411135219448

4.5 断点续训 !!!

image-20230411135522128

4.6 多GPU训练

image-20230411135801847

推荐的模式:

image-20230411135819929

4.7 并行数据加载

多线程加载数据从而加快速度,最下面的是并行流水线加载

image-20230411135840504

DDP模式

image-20230411140013152

可以在github上看详细命令和介绍 点击跳转

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大四的告诫

👂 LOCK OUT - $atori Zoom/KALONO - 单曲 - 网易云音乐 👂 喝了一口星光酒(我只想爱爱爱爱你一万年) - 木小雅 - 单曲 - 网易云音乐 其实不是很希望这篇文章火,不然就更卷了。。 从大一开始,每天10小时…

腾讯云轻量4核8G12M应用服务器带宽、月流量详细性能评测

腾讯云轻量4核8G12M应用服务器带宽,12M公网带宽下载速度峰值可达1536KB/秒,折合1.5M/s,每月2000GB月流量,折合每天66GB,系统盘为180GB SSD盘,地域节点可选上海、广州或北京,4核8G服务器网来详细…

Praat脚本-037 | 批量把标注TextGrid生成韵律文本

目录 引题方案一方案二方案三获取脚本关注版权说明 引题 Praat是一种非常出色、轻便、开源免费的标注工具,它的最主要用途是标注,即对语音信号中的一些特征、信息进行标注,保存为TextGrid文件,这个TextGrid文件实质 上就是一种文…

Harmony OS 开发指南——源码下载和编译

本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个目标平台的二进制文件。 坑点总结: 下载源码基本上没有太多坑&#xf…

Web前端-Vue2.0框架学习

Web前端-Vue框架学习 1. 前端工程化与Webpack1.1 隔行变色的demo实现1.2 webpack的基本使用1.3 webpac插件1.3.1 webpack-dev-server插件1.3.2 html-webpack-plugin 1.4 webpack中的loader(加载器)1.4.1 css-loader1.4.2 less-loader1.4.3 url-loader &a…

Node【Global全局对象】之【URL】

文章目录 🌟前言🌟URL🌟URL组成部分🌟URL 类🌟url.href🌟url.pathname🌟url.port🌟url.protocol🌟url.search🌟url.searchParams🌟url.hash&#…

C语言模拟银行排队叫号(链队)

一.队列 队列是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队…

C++进阶——二叉搜索树BST

C进阶——二叉搜索树BST 其实应该是二叉树内容的进阶版本: 二叉树在前面C数据结构阶段已经讲过,本节取名二叉树进阶是因为: map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构二叉搜索树的特性了解,有…

【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

自然语言处理:词嵌入简介

动动发财的小手,点个赞吧! Word Embeddings 机器学习模型“查看”数据的方式与我们(人类)的方式不同。例如,我们可以轻松理解“我看到一只猫”这一文本,但我们的模型却不能——它们需要特征向量。此类向量或…

C/C++每日一练(20230417)

目录 1. 字母异位词分组 🌟🌟 2. 计算右侧小于当前元素的个数 🌟🌟🌟 3. 加一 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 J…

通过简单demo让你秒懂Python的编译和执行全过程

基本说明 python 是一种解释型的编程语言,所以不像编译型语言那样需要显式的编译过程。然而,在 Python 代码执行之前,它需要被解释器转换成字节码,这个过程就是 Python 的编译过程。 DEMO演示讲解 假设我们有以下 Python 代码&…

Session使用和原理分析图与实现原理-- 代码演示说明 Session 的生命周期和读取的机制代码分析

目录 Web 开发会话技术 -Session —session 技术 session 基本原理 Session 可以做什么 如何理解 Session Session 的基本使用 session 底层实现机制 原理分析图 代码演示 CreateSession.java 测试 Session 创的机制, 注意抓包分析​编辑 ReadSession.j…

python+vue 基于推荐算法的在线电影视播放网站

以广大影视剧迷们为研究对象,深入了解影视剧迷对在线视频观看视频的需求进行分析,形成系统需求分析设计一个符合影视剧迷们需求的在线视频网站。设计网站的前期工作包括对系统的各个功能进行详细分析,对数据库设计进行详细的描述,…

【C++】STL理解【容器】

【C】STL理解【容器】 1. STL概念引入 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,从函数(functions),类别(classes),函数库(function libraries),类别库(class libraries…

nssctf web 入门(6)

这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。 目录 [SWPUCTF 2021 新生赛]caidao [SWPUCTF 2021 新…

GitLab与jekins结合构建持续集成(cl)环境(2)

目录 GItlab配置邮箱 绑定邮箱 创建群组 添加人员 创建一个项目 添加文件 新建分支 如何拉取代码 Git bash 演示 Git GUI演示 安装jenkins 更改插件镜像源 配置jenkins使用gitlab更新代码 安装jekins插件 配置jenkins免密拉取gatlab代码 jenkins创建项目 将代码…

VUE基本使用详解

目录 一、VUE框架原理 1. 了解VUE框架 2. VUE框架原理 3. MVC设计模式 4. MVVM设计模式 二、引入VUE框架 1. 本地引入 2. 网络引入 三、安装Vue插件 一、VUE框架原理 1. 了解VUE框架 vue 框架 是基于MVVM设计模式的前端框架,其中的Vue对象是MVVM设计模式中的VM视图…

Zebec Protocol 出席香港 Web3 峰会,带来了哪些信息?

梳理香港加密新政的细节,一个明确的脉络是,香港加密新政的整体目的是令虚拟资产交易明确化和合法化,通过不断完善的监管框架,促进香港虚拟资产行业的可持续和负责任地发展。 在加强合规和持牌经营的监管思路下,长期审慎…

TensorFlow 和 Keras 应用开发入门:1~4 全

原文:Beginning Application Development with TensorFlow and Keras 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形…