目标检测算法YOLOv8简介

      YOLOv8论文尚未发布,YOLOv8由Ultralytics公司推出并维护,源码见:https://github.com/ultralytics/ultralytics ,于2024年1月发布v8.1.0版本,最新发布版本为v8.2.0,License为AGPL-3.0。

      以下内容主要来自:

      1. https://docs.ultralytics.com/

      2. https://github.com/ultralytics/ultralytics/issues/189

      3. https://viso.ai/deep-learning/yolov8-guide/

      Ultralytics YOLOv8是一种尖端、最先进(state-of-the-art, SOTA)的模型,它建立在先前YOLO版本成功的基础上,并引入了新功能和改进,以进一步提高性能和灵活性。YOLOv8的设计目标是快速、准确且易于使用,使其成为各种目标检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择

      向YOLOv5一样,根据参数数量,YOLOv8有5种不同类型的模型:nano(n), small(s), medium(m), large(l), and extra large(x),如下图所示:

      YOLOv8检测模型结构如下所示:来源:https://github.com/ultralytics/ultralytics/issues/189 ,与 YOLOv5 相比,改变如下:

      (1).将C3模块替换为C2f模块;

      (2).将Backbone中的第一个6*6 Conv替换为3*3 Conv;

      (3).删除两个Conv(YOLOv5配置中的No.10和No.14);

      (4).将Bottleneck中的第一个1*1 Conv替换为3*3 Conv;

      (5).使用解耦头(decoupled head)并删除objectness分支.

      YOLOv8架构利用几个关键组件来执行目标检测任务:

      (1).Backbone是一系列卷积层,用于从输入图像中提取相关特征。SPPF层和后续的卷积层处理各种尺度的特征,而上采样层则提高特征图的分辨率。C2f模块将高级特征(high-level features)与上下文信息相结合,以提高检测精度。最后,检测模块使用一系列卷积层和线性层将高维特征(high-dimensional features)映射到输出边界框和目标类别。

      (2).Head负责获取Backbone生成的特征图并进一步处理它们,以边界框和目标类别的形式生成模型的最终输出。在YOLOv8中,Head被设计为解耦,这意味着它独立处理对象性(objectness)、分类和回归任务。这种设计使得每个分支能够专注于各自的任务,并提高了模型的整体准确性。为了处理特征图,Head使用一系列卷积层,然后是线性层来预测边界框和类别概率。Head的设计针对速度和精度进行了优化,特别关注每层的通道数量和kernel大小,以最大限度地提高性能。注:新版本中objectness head已被删除

      (3).YOLOv8中使用的框回归损失基于Smooth L1损失函数,该函数常用于目标检测任务。该损失函数平衡了L1和L2损失函数,并且对训练数据中的异常值不太敏感。它用于计算预测的边界框坐标与ground truth坐标之间的差异。然后使用损失函数在训练过程中更新网络的权重。注:早期版本使用的是Smooth L1,新版本是CIoU、DFL、BCE.

      (4).在YOLOv8的输出层中,我们使用sigmoid函数作为objectness分数的激活函数,它表示边界框包含目标的概率。对于类别概率,我们使用softmax函数,它表示目标属于每个可能类别的概率。

      (5).YOLOv8中的Neck结构,它是一个新颖的C2f模块,与YOLOv5中使用的PANet结构不同。C2f模块取代了传统的YOLO Neck结构,并改进了网络中的特征提取。

      (6).YOLOv8中使用的网格单元的大小取决于图像的输入大小。具体来说,网格单元的大小是通过将输入图像划分为具有一定数量单元的网格来确定的,其中每个单元对应于输出特征图的一个区域。在YOLOv8中,这个网格大小由Backbone中最终卷积层的步长决定。例如,如果最终卷积层的步长(Stride)为32,则输入图像将被划分为32*32单元的网格,网格中的每个单元格将对应于输出特征图的大小为80*80的区域。类似地,如果最终的卷积层的步长为16,那么输入图像将被划分为16*16单元的网格,网格中的每个单元将对应于输出特征图的大小为40*40的区域。YOLOv8中的Stride参数是指输入图像在Backbone中下采样的像素数。

      YOLOv8主要features:

      (1).Mosaic数据增强:YOLOv8的变化是在最后10个epoch停止Mosaic增强操作以提高性能;

      (2).Anchor-Free Detection:YOLOv8改用无锚(anchor-free)检测来提高泛化能力,基于锚点(anchor-based)的检测的问题是预定义的锚点框降低了自定义数据集的学习速度。通过无锚检测,模型直接预测目标的中心点并减少边界框预测的数量,这有助于加速非最大值抑制(Non-maximum Suppression,NMS),用于消除冗余的检测框;

      (3).C2f Module:YOLOv8模型的Backbone现在由C2f模块而不是C3模块组成。两者的区别在于,在C2f中,模型连接了所有Bottleneck模块的输出。相反,在C3中,模型使用最后一个Bottleneck模块的输出。Bottleneck模块由bottleneck残差块组成,可减少深度学习网络中的计算成本。这加快了训练过程并改善了梯度流(gradient flow)。

      (4).Decoupled Head:Head部不再一起执行分类和回归。相反,它单独执行task,这提高了模型性能。

      (5).Loss:使用BCE(Binary Cross-entropy)计算分类损失;使用CIoU(Complete IoU)和DFL(Distributional Focal Loss)计算回归损失。DFL背后的主要思想是解决训练数据中类别不平衡的问题。

      GitHub:https://github.com/fengbingchun/NN_Test

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

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

相关文章

【区块链】智能合约简介

智能合约起源 智能合约这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克萨博(NickSzabo)提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下:“一个智能合约是一套以数字形式定义的承诺&a…

初识指针(4)<C语言>

前言 前面的文章,已经对指针的基础概念以及运用有了初步了解,我们可以进一步探究指针比较深入的知识,下文将主要介绍:使用指针数组模拟二维数组、字符指针变量、数组指针、二维数组传参的本质、函数指针、typedef关键字等。 目录…

AnythingLLM+Ollama构建本地知识库

前言 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型(LLM)在聊天期间作为参考使用。此应用程序允许您选择使用哪个LLM或向量数据库&#…

我必须要吹一波MATLAB 2024a,太牛逼了!|福利:附安装教程及下载地址

最近逛MATLAB官网,发现MATLAB 2024a版本已经Pre-release了,翻了下release note,不得不感叹,实在是太强了! 这次重点更新了四个工具箱: Computer Vision Toolbox Deep Learning Toolbox Instrument Contro…

如何在路由器上做端口映射

假设现在外网有一台ADSL直接拨号上网的电脑,所获得的是公网IP。然后它想访问局域网内的电脑上面的网站,那么就需要在路由器上做端口映射。在路由器上做端口映射的具体规则是:将所有发向自己端口的数据,都转发到内网的计算机。 访…

答辩PPT制作难?AI工具助你轻松搞定

在我原本的认知里面,答辩PPT是要包含论文各个章节的,在答辩时需要方方面面都讲到的,什么摘要、文献综述、实证分析、研究结果样样不落。但是,这大错特错! 答辩PPT环节时长一般不超过5分钟,老师想要的答辩P…

Photoshop中图层的应用

Photoshop中图层的应用 前言Photoshop中的图层面板Photoshop中图层的基本操作新建图层复制/剪切图层链接图层修改图层名称及颜色背景图层与普通图层栅格化图层图层的对齐与分布图层的合并 前言 图层在Photoshop中就像一层一层的透明纸,可以透过图层的透明区域看到下…

论文| Visual place recognition: A survey from deep learning perspective

2021-Visual place recognition: A survey from deep learning perspective

STM32-07-STM32_外部中断

文章目录 STM32 中断系统1. 中断2. NVIC3. EXTI4. AFIO5. 中断配置步骤6. 外部中断代码 STM32 中断系统 1. 中断 目的:中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。中断过程:当CPU正在处理某事件的时候外界发生了紧急事件请求 &#…

LabVIEW学习记录3 - 自定义函数

LabVIEW学习记录3 - 自定义函数 一、LabVIEW学习记录二、自定义函数及函数调用 一、LabVIEW学习记录 【labVIEW】学习记录LabVIEW学习记录2 - MySQL数据库连接与操作LabVIEW学习记录 - 实时显示时间LabVIEW学习记录4-局部变量、全局变量、共享变量 二、自定义函数及函数调用 …

Verilog_学习路线(小白)

#前言: 自从专心学习专业课后,发现知识点得用,越用越熟练,工具也一样,高级工具的学习可帮助我们在工作中极大地提高效率,但这里要记住一点,任何工具都是为解决实际问题出现的,即落脚…

XC7VX690T-2FFG1761I 中文资料 XC7VX690T-2FFG1761引脚图及功能说明

XC7VX690T-2FFG 是由Xilinx(赛灵思)公司生产的FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片。FPGA是一种可编程的集成电路,用户可以根据需要将其配置为具有特定逻辑功能的电路。 XC7VX690T-…

2024全新小狐狸AI免授权源码

源码安装说明: 下 载 地 址 : runruncode.com/php/19757.html 1. 在宝塔新建一个站点,选择 PHP 版本为 7.2、7.3 或 7.4。将压缩包上传到站点的根目录,并设置运行目录为 /public。 2. 导入数据库文件,该文件位于 …

【Qt】界面定制艺术:光标(cursor)、字体(font)、提示(toolTip)、焦点(focusPolicy)与样式表(styleSheet)的深度探索

文章目录 前言:1. cursor: 设置按钮的光标2. front:设置字体3. toolTip: 鼠标悬停提示4. focusPolicy:设置控件获取到焦点的策略5. styleSheet : 样式表总结: 前言: 在现代软件开发中,用户界面(UI)的设计和…

【C语言】/*操作符(上)*/

目录 一、算数操作符:、-、*、/、% 1.1 和 - 1.2 * 1.3 / 1.4 % 二、赋值操作符: 和符合赋值 2.1 连续赋值 2.2 复合赋值(自操作) 三、单目操作符:、--、(正号)、-(负号) 3.1 和 -- 3.1.1 前置 3.1.2 后置 3.1.3 前置-- …

Flutter实战记录-协作开发遇到的问题

一.前言 Android项目使用了混合架构,部分模块使用Flutter进行开发。在电脑A上开发的项目提交到git仓库,电脑B拉取后进行操作,遇到两个问题,特此做一下记录; 二.问题A Settings file ‘D:\xxx\settings.gradle’ line…

【生信技能树】数据挖掘全流程

R包的安装,每次做分析的时候先运行这段代码把R包都安装好了,这段代码不需要任何改动,每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

号外!IP SSL证书申请只需十分钟!

JoySSL官网 注册码230918 IP SSL证书是一种专为IP地址设计的SSL证书,它使得基于IP地址的网站或服务能够实现HTTPS加密,确保数据在传输过程中的安全性和完整性。以下是关于IP SSL证书的一些技术性要点和申请流程概述: 一、IP SSL证书技术要点…

搭建Docker私服镜像仓库Harbor

1、概述 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。 Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。 …

CLion 写 Rust 报Project directory `/Users/.../rsheets` does not exist.

每次打开CLion都会看到像下面这样的报错,Project directory /Users/.../rsheets does not exist.,虽然不会影响你写代码,但每次看到还是不舒服,所以研究一下怎么解决。 原因是这样的,每当我们创建一个 Cargo 项目&…