目标检测再升级!YOLOv8模型训练和部署

YOLOv8 是 Ultralytics 开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

YOLOv8还有一个关键特性是它的可扩展性,由于其被设计成一个框架,支持所有以前YOLO的版本,使得在不同版本之间切换和比较它们的性能变得容易。

YOLOv8创新改进点:

1.Backbone。使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

2.PAN-FPN。毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块

3.Decoupled-Head。是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

4.Anchor-Free。YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

5.损失函数。YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

6.样本匹配。YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式。

image.png

image.png

1、C2f模块是什么?与C3有什么区别?

我们不着急,先看一下C3模块的结构图,然后再对比与C2f的具体的区别。针对C3模块,其主要是借助CSPNet提取分流的思想,同时结合残差结构的思想,设计了所谓的C3 Block,这里的CSP主分支梯度模块为BottleNeck模块,也就是所谓的残差模块。同时堆叠的个数由参数n来进行控制,也就是说不同规模的模型,n的值是有变化的。

image.png

其实这里的梯度流主分支,可以是任何之前你学习过的模块,比如,美团提出的YOLOv6中就是用来重参模块RepVGGBlock来替换BottleNeck Block来作为主要的梯度流分支,而百度提出的PP-YOLOE则是使用了RepResNet-Block来替换BottleNeck Block来作为主要的梯度流分支。而YOLOv7则是使用了ELAN Block来替换BottleNeck Block来作为主要的梯度流分支。

损失函数

对于YOLOv8,其分类损失为VFL Loss,其回归损失为CIOU Loss+DFL的形式,这里Reg_max默认为16。

VFL主要改进是提出了非对称的加权操作,FL和QFL都是对称的。而非对称加权的思想来源于论文PISA,该论文指出首先正负样本有不平衡问题,即使在正样本中也存在不等权问题,因为mAP的计算是主正样本。

image.png

q是label,正样本时候q为bbox和gt的IoU,负样本时候q=0,当为正样本时候其实没有采用FL,而是普通的BCE,只不过多了一个自适应IoU加权,用于突出主样本。而为负样本时候就是标准的FL了。可以明显发现VFL比QFL更加简单,主要特点是正负样本非对称加权、突出正样本为主样本。

针对这里的DFL(Distribution Focal Loss),其主要是将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布。

image.png

DFL 能够让网络更快地聚焦于目标 y 附近的值,增大它们的概率;

DFL的含义是以交叉熵的形式去优化与标签y最接近的一左一右2个位置的概率,从而让网络更快的聚焦到目标位置的邻近区域的分布;也就是说学出来的分布理论上是在真实浮点坐标的附近,并且以线性插值的模式得到距离左右整数坐标的权重。

样本的匹配

标签分配是目标检测非常重要的一环,在YOLOv5的早期版本中使用了MaxIOU作为标签分配方法。然而,在实践中发现直接使用边长比也可以达到一阿姨你的效果。而YOLOv8则是抛弃了Anchor-Base方法使用Anchor-Free方法,找到了一个替代边长比例的匹配方法,TaskAligned。

为与NMS搭配,训练样例的Anchor分配需要满足以下两个规则:

正常对齐的Anchor应当可以预测高分类得分,同时具有精确定位;

不对齐的Anchor应当具有低分类得分,并在NMS阶段被抑制。基于上述两个目标,TaskAligned设计了一个新的Anchor alignment metric 来在Anchor level 衡量Task-Alignment的水平。并且,Alignment metric 被集成在了 sample 分配和 loss function里来动态的优化每个 Anchor 的预测。

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

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

相关文章

springboot集成cas客户端

Background 单点登录SSO(Single Sign ON),指在多个应用系统中,只需登录一次,即可在多个应用系统之间共享登录。统一身份认证CAS(Central Authentication Service)是SSO的开源实现,利用CAS实现SSO可以很大程…

【Python学习】Python学习8-Number

目录 【Python学习】Python学习8-Number 前言在变量赋值时被创建Python支持四种不同的数据类型整型(Int)长整型(long integers)浮点型(loating point real values)复数(complex numbers) Python Number 类型转换Python math 模块、cmath 模块Python数学函数Python随…

以太网交换基础

0x00 前言 以为主要的作用的笔记的记忆,所以多为问答的形式进行记录。 什么是以太网? 以太网是一种局域网技术,用于链接终端,进行网络通信。 什么是冲突域? 冲突域是指连接在同一公共介质上的所有节点的集合。 就…

【Leetcode】 447. 回旋镖的数量

文章目录 题目思路代码 题目 447. 回旋镖的数量 思路 问题要求计算平面上所有回旋镖的数量,即找到满足题设条件的点组合 (i, j, k)。回旋镖的定义是指有两个相同的距离,分别从点 i 到 j 和点 i 到 k。具体思路是: 遍历每个点&#xff0c…

【数据结构 | 二叉树入门】

数据结构 | 二叉树入门 二叉树概念:二叉树特点:二叉树的基本形态特殊二叉树满二叉树完全二叉树 二叉树的存储结构二叉树的遍历先序遍历中序遍历后序遍历 计算二叉树的节点个数计算叶子节点的个数树的高度求第k层节点个数 二叉树概念: 如下图…

怎么将营业执照图片转为excel表格?(批量合并识别技巧)

一、为何要将营业执照转为excel表格? 1、方便管理:将营业执照转为excel格式,可以方便地进行管理和整理,快速查找需要的信息。 2、数据处理:Excel可以提供丰富的计算和数据分析功能,转化为excel后方便数据…

12.字符串和正则表达式

使用正则表达式 正则表达式相关知识 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(…

Ubuntu上安装VMware+win11系统手册

Ubuntu安装vmware 下载: Linux 版下载地址:https://www.vmware.com/go/getworkstation-linux 安装: sudo chmod x VMware-Workstation-Full-17.5.0-22583795.x86_64.bundle 执行安装命令: sudo ./VMware-Workstation-Full-17.5.0…

AArch64 memory management学习(二)

提示 该博客主要为个人学习,通过阅读官网手册整理而来(个人觉得阅读官网的英文文档非常有助于理解各个IP特性)。若有不对之处请参考参考文档,以官网文档为准。AArch64 memory management学习一共分为两章,这是第二章。…

python基础教程八(循环1)

1. while循环 为避免多次重复的代码&#xff0c;我们会用到循环 while (condition): 执行语句 while循环的结构非常简单只要条件满足就一直循环直到&#xff0c;条件不满足为止。 例子如下&#xff1a; x1 while x<100:print(x)x1结果就是最简单的输出1-100的数字 while…

西电期末考点总结

一.“打擂台” 介绍 打擂台用于找到一个数组中的最值问题&#xff0c;先设置一个虚拟擂主&#xff0c;并保证他是“最弱的”&#xff0c;然后遍历数组&#xff0c;找到“更强的”数据&#xff0c;就交换擂主&#xff0c;“打”到最后的“擂主”就是最值数据 相关题目 1004.…

Vant2组件库van-list+Toast下拉加载滚动条回顶问题

目录 List 列表 Toast 轻提示 解决方案 1、不使用 Toast 的 加载提示 2、修改调整 pointer-event 属性值 3、判断是否为第一次加载再使用 背景 &#xff1a; 移动端项目 开发时&#xff0c;有数据长列表展示的场景需求&#xff0c;此时就用到了 Vant2 组件库里面的 <v…

Tsmaster使用笔记整理

选择厂商 根据你所选择的CAN分析仪的厂商&#xff0c;确定你的厂商设备设置。 我一般会选择PEAK&#xff0c;和 ZLG多一点&#xff0c;其他的没有用过。除了上图中的&#xff0c;市面上的CAN分析仪还有CANanlyst、广成科技、创芯科技等&#xff0c;但它们都不能在Tsmaster上使…

电源芯片浪涌电流如何产生?该怎么测试?

对于电源芯片的设计和制造商来说&#xff0c;防止芯片受到电源干扰是非常重要的。为了保障芯片能正常稳定运行&#xff0c;浪涌测试无疑是必要的。本篇文章将全方位为你介绍浪涌电流如何产生以及如何测试的过程。 电源芯片浪涌电流的产生原因 1.开关电源切换和电压突变 在电源开…

ATTCK视角下的信息收集:组策略信息收集

目录 什么是组策略&#xff1f; 本地组策略收集 域组策略收集 组策略存储收集 组策略对象收集 什么是组策略&#xff1f; Windows中的组策略&#xff08;Group Policy&#xff09;是一种管理和配置Windows操作系统的功能&#xff0c;它允许系统管理员对计算机和用户的行为…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户信息修改实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Qt 6之五:创建菜单

Qt 6之五&#xff1a;创建菜单 Qt是一种跨平台的C应用程序开发框架&#xff0c;它提供了一套丰富的工具和库&#xff0c;可以帮助开发者快速构建跨平台的应用程序&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;和非GUI应用程序。 Qt 6之一&#xff1a;简介、安…

untiy使用http下载资源

文章目录 提醒下载一个资源并保存到本地下载一张图片 提醒 部分API需要将Unity的 Edit/PrejectSetting/Player/OtherSetttings/AConfiguration/ApiCompatibilityLevel 设为.NetFramework 才可以使用 下载一个资源并保存到本地 private IEnumerator DownloadFormServer_IE(st…

cisp难不难?cisp如何备考通过率高?

*CISP 全称为Certified Information Security Professional&#xff0c;是国际上广受欢迎的信息安全专业认证之一。 对于许多信息安全领域的从业者来说&#xff0c;CISP认证是他们职业生涯中的重要一步。那么&#xff0c;CISP难不难呢?如何备考通过率更高呢?接下来&#xf…

详细探讨mfc140.dll丢失的解决方法,并比较各种方法的优劣

mfc140.dll是Microsoft Foundation Class (MFC) 库中一个重要的DLL文件&#xff0c;它包含了多个执行程序使用的函数和资源。这个库通常用于开发Windows操作系统上的应用程序。但有时会发生mfc140.dll缺失或损坏的错误&#xff0c;导致一些依赖它的应用程序无法运行。今天的这篇…