目标检测算法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

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

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

相关文章

FFmpeg 中 -f 命令参数详解

FFmpeg FFmpeg是一个开源的、功能强大的多媒体框架,它能够处理几乎所有格式的音频和视频文件。FFmpeg由Fabrice Bellard创立,并由Michael Niedermayer等人继续开发。它包括了libavcodec(用于编解码)、libavformat(用于格式转换)、libavfilter(用于音视频过滤)、libavd…

微信授权登录01-PC端

目录 ## 前言 1.准备工作 1.1 网站域名 1.2 微信开放平台 2.授权授权登录开发 2.1 前端开发 2.1.1 发起授权登录跳转至扫码页面 2.1.2 扫码成功后回调处理 2.2 后端开发 2.2.1 根据code查询用户信息 2.2.2 自动注册登录 ## 后记 ## 前言 最近整了个AI助手网站&am…

React 学习-5

React 条件渲染: 与js中的写法一致 注意:在 JavaScript 中,true && expression 总是返回 expression,而 false && expression 总是返回 false。 因此,如果条件是 true,&& 右侧的元素就会被渲…

BL120协议Modbus RTU和Modbus TCP互转

Modbus网关BL120是一款专注于Modbus协议之间相互转换的通信设备。Modbus网关BL120支持多种下行采集协议,包括Modbus RTU和Modbus TCP,同时在上行转发协议方面同样支持Modbus RTU和Modbus TCP。Modbus网关为Modbus RTU和Modbus TCP协议的相互转换提供了稳…

回炉重造java----单列集合(List,Set)

体系结构: 集合主要分为两种,单列集合collection和双列集合Map,区别在于单列集合一次插入一条数据,而双列的一次插入类似于key-value的形式 单列集合collection 注:红色的表示是接口,蓝色的是实现类 ①操作功能: 增加: add()&am…

SRS流媒体服务器在Linux下的安装

目录 一、安装 1、切换到管理员权限 2、先安装基础依赖环境 3、下载SRS源文件

引领AI数据标注新纪元:景联文科技为智能未来筑基

在人工智能蓬勃发展的今天,数据如同燃料,驱动着每一次技术飞跃。在这场智能革命的浪潮中,景联文科技凭借其深厚的专业实力与前瞻性的战略眼光,正站在行业前沿,为全球的人工智能企业提供坚实的数据支撑。 全国布局&…

智能座舱语音助手产品方案

一、用户调研与痛点分析 1.目标用户分析 用户画像 性别女性年龄50地域2-3线城市职业退休或退居二线教育中专、 大专、 本科财务家庭财务管理者爱好享受生活、 照顾家庭标签有闲有小钱二、产品定位与卖点提炼 购车目的 愉悦自我, 专属于自己的座驾: 家…

bitmap requires a valid src attribute

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、问题记录四、 推…

ncnn 算子操作描述

ncnn 算子操作描述,具体查询见 ncnn/docs/developer-guide/operators.md at master Tencent/ncnn GitHub 都是从上述地方copy过来的,做备份。 具体如下:(针对有些算子 用pytorch 实现了用例,可以对比学习&#xf…

Java学习笔记网站技术博客汇总

江南一点雨网站 https://www.javaboy.org/ 个人博客 https://yanbingzn.github.io/ CS-Notes 面试笔记 https://www.cyc2018.xyz/ JavaGuide(Java学习&面试指南) https://javaguide.cn/home.html SpringMVC 教程 https://springmvc.javaboy…

C++运算符重载(操作符重载)

运算符重载 1. 运算符重载基础1.1 运算符重载语法1.2 运算符重载细节补充1.3 更多的运算符重载 2. 重载单目运算符3. 如何直接输入输出对象类型——重载运算符 << 和 >>3.1 单个对象实现 cou <<3.2 多个对象实现 cout<<3.3 右移运算符 输入 cin >&g…

Excel-VBA报错01-解决方法

【已删除的部件:部件/xl/vbaProject.bin。(Visual Basic for Applications(VBA))】 1.问题复现&#xff1a; Win10 &#xff1b;64位 &#xff1b;Office Excel 2016 打开带有宏的Excel文件&#xff0c;报错&#xff1a;【已删除的部件&#xff1a;部件/xl/vbaProject.bin。…

KBU1010-ASEMI新能源专用KBU1010

编辑&#xff1a;ll KBU1010-ASEMI新能源专用KBU1010 型号&#xff1a;KBU1010 品牌&#xff1a;ASEMI 封装&#xff1a;KBU-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;10A 功率(Pd)&#xff1a;中小功率 芯片个数&#xff1a;4…

pandas数据清洗和统计实例

步骤&#xff1a; 统计每一个列的标签个数去除或者填充某一列NaN值遍历某一列分组统计在DataFrame中插入行在DataFrame中追加行 pandas读取Json数据或csv数据 以一个json数据为例&#xff0c;只要json每一个object都一致就可以&#xff1a; # 读取json或csv df_f pd.read_…

抖店选品都怎么选品?什么样的产品更吸引人,更具有购买力?

大家好&#xff0c;我是电商花花。 抖店选品一直都是我们无货源商家的核心问题&#xff0c;不管是出单、还是爆单&#xff0c;店铺想要有销量的前提下都是选品。 很多人一上来就是就是选品&#xff0c;没有选品经验还瞎选品&#xff0c;结果到最后选了一堆出单的产品&#xf…

回声消除原理

回声消除原理 回声消除是一种音频处理技术&#xff0c;用于消除声学空间中发生的回声。其基本原理如下&#xff1a; 1. 远端信号估计 捕获远端扬声器发出的信号&#xff08;通常通过麦克风&#xff09;。使用自适应滤波器估计远端信号&#xff0c;即回声信号。 2. 回声信号…

用wordpress建外贸独立站的是主流的外贸建站方式

WordPress因其易用性、灵活性和强大的功能支持&#xff0c;成为了外贸企业首选的网站建设平台。 从技术和功能角度来看&#xff0c;WordPress提供了丰富的主题和插件&#xff0c;这些都是构建专业外贸网站所必需的。例如&#xff0c;有专门为外贸网站设计的主题和插件&#xf…

【栈】Leetcode 验证栈序列

题目讲解 946. 验证栈序列 算法讲解 在这里就只需要模拟一下这个栈的出栈顺序即可&#xff1a;使用一个stack&#xff0c;每次让pushed里面的元素入栈&#xff0c;如果当前栈顶的元素等于poped容器中的当前元素&#xff0c;因此就需要让栈顶元素出栈&#xff0c;poped的遍历…

一篇文章帮你搞定微软云计算证书Renew

IT证书都有过期的时间&#xff0c;像AWS是3年有效期&#xff0c;谷歌是2年&#xff0c;微软是1年&#xff0c;那这些证书到期该怎么Renew更新呢&#xff1f; 小李哥最近的微软AZ-204证书要到期了&#xff0c;到期前半年就会收到Microsoft发来提醒邮件。大家在这半年内任何时间都…