YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升
目录
前言
一、模型介绍
二、网络结构
Backbone改进
特征增强网络(neck)
检测头(head)
其它部分
三、Loss计算
四、性能表现
五、YOLOv8使用详解
添加模型
其它部分
创建数据集
数据标注
模型训练
模型预测
六、YOLOv8总结
前言
YOLO(You Only Look Once)系列模型,凭借其高效、快速的特性,已经成为目标检测领域的重要代表。作为YOLO系列中的最热门版本,YOLOv8继续沿袭了其前辈的优势,并进一步提升了性能,使得它在处理复杂场景中的目标检测任务时更加高效和精准。

· YOLOv8文档:https://v8docs.ultralytics.com/
一、模型介绍
YOLOv8 是 ultralytics 公司在 2023年1月10号开源的YOLOv5的下一个重大更新版本,也是YOLO模型系列中最热门的模型之一,因为它参考了YOLOv1到YOLOv7系列的所有模型,集各家优点于一身,在还没有开源时就收到了用户的广泛关注。YOLOv8的对各算法优点结合以及部分模块的创新,使其在图像分类、物体检测和实例分割任务中表现卓越。

二、网络结构
其主要结构如下图所示:

官方描述YOLOv8 是一个 SOTA 模型,它建立在以前YOLO版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。
从YOLOv8的网络结构可以看出,其延用了YOLOv5的网络结构思想,网络还是分为三个部分: 基于CSP(紧凑和分离)的主干网络(backbone),特征增强网络(neck),检测头(head) 三个部分。
1.Backbone改进
Backbone改进:YOLOV5中的C3模块被替换成了C2f模块,实现了进一步的轻量化。同时保持了CSP的思想,保留了YOLOv5等架构中使用的SPPF(空间金字塔池化)模块。整个YOLOv8的Backbone由CBS、C2f、SPPF三种模块组成。让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。

2.特征增强网络(neck)
YOLOv8使用PA-FPN(路径聚合网络-特征金字塔网络)的思想,具体实施过程中将YOLOV5中的PA-FPN上采样阶段的卷积去除了,并且将其中的C3模块替换为了C2f模块。

3.检测头(head)
区别于YOLOV5的耦合头,YOLOV8使用了Decoupled-Head,将分类和检测头分离,使得网络的训练和推理更加高效。

代码如下图所示:

4.其它部分
Anchor-Free思想:抛弃了Anchor-Base,采用了Anchor-Free的思想。
损失函数改进:分类使用BCEloss,回归使用DFL Loss+CIOU Loss。
样本匹配方式改进:采用了Task-Aligned Assigner匹配方式。
这些改进使得YOLOv8在保持了YOLOv5网络结构的优点的同时,进行了更加精细的调整和优化,提高了模型在不同场景下的性能。
三、Loss计算
Loss 计算过程包括 2 个部分: 正负样本分配策略和Loss计算。
现代目标检测器大部分都会在正负样本分配策略上面做文章,典型的如YOLOX 的simOTA、TOOD的TaskAlignedAssigner和RTMDet 的DynamicSoftLabelAssigner ,这类 Assigner 大都是动态分配策略,而 YOLOv5采用的依然是静态分配策略。考虑到动态分配策略的优异性,YOLOv8算法中则直接引用了TOOD的TaskAlignedAssigner。

TaskAlignedAssigner 的匹配策略简单总结为: 根据分类与回归的分数加权的分数选择正样本。

s是标注类别对应的预测分值,u是预测框和gt框的iou,两者相乘就可以衡量对齐程度。
Loss计算包括 2 个分支:分类和回归分支,没有了之前的objectness分支。
分类分支依然采用 BCE Loss回归分支需要和 Distribution Focal Loss 中提出的积分形式表示法绑定,因此使用了Distribution Focal Loss,同时还使用了CIoU Loss3个Loss采用一定权重比例加权即可。
四、性能表现
YOLOv8是个模型簇,从小到大包括:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x等。模型参数、运行速度、参数量等详见下表:

对比YOLOv5可以看出mAP和参数量都上升了不少。

五、YOLOv8使用详解
按照Ultralytics官网信息,进行YOLOv8模型训练需要使用CLI或者python来进一步操作。今天我将介绍不用代码,也可以进行YOLOv8所有模型算法的训练、部署、预测和下载!
1.添加模型
进入Coovally平台点击【全部模型】,搜索YOLOv8,在这里可以选择不同的YOLOv8版本。下载代码包或者点击另存为我的模型。进入【模型集成】页面,进行安装。


2.创建数据集
进入【图像数据】页面,点击创建数据集,输入数据集名称、描述,选择任务类型,上传压缩包文件。创建数据集时可以按照比例拆分训练集、验证集、测试集。

3.数据标注
进入【辅助标注】页面,点击创建样本集,进入样本集详情页,创建好标签进行数据标注。可以选择几组数据进行人工标注,标注完成后发布为数据集启动微调训练,剩余样本集数据即可全部自动化完成。



4.模型训练
进入数据集详情页,输入任务名称,选择模型配置模版,设置实验E-poch次数,训练次数等信息,即可开始训练。


TIP:平台也内置了YOLOv8系列的模型算法,也可以直接使用内置算法进行模型训练。

5.模型预测
模型训练完成后,完成模型转换与模型部署后,即可上传图片进行结果预测。完成后还可以将模型下载与分享。


六、YOLOv8总结
1.高效性与实时性
YOLOv8以其出色的处理速度著称,能在保持高精度检测的同时,实现实时性要求。这得益于其优化的网络结构和训练策略,使其非常适合自动驾驶、智能监控等需要快速响应的应用场景,为用户带来流畅、即时的检测体验。
2.先进的网络结构
YOLOv8采用创新的骨干网络和颈部结构,结合Transformer与CNN的优势,有效提升了图像特征提取能力。多尺度特征融合和自适应锚框选择等机制,进一步增强了模型的检测精度和鲁棒性,使其在各种复杂场景下都能表现出色。
3.创新的检测头设计
YOLOv8引入无锚分裂Ultralytics头,摒弃了传统的基于锚的检测方式,提高了检测的灵活性和准确性。这种创新设计使得模型能够更精确地检测不同形状和大小的物体,尤其适合处理复杂背景和多样化场景。
4.广泛的适用性和灵活性
YOLOv8提供多种预训练模型,支持多种计算机视觉任务,如实例分割、姿态检测等。用户可根据具体需求选择合适的模型,节省训练时间和资源,展现出其广泛的适用性和灵活性,满足多样化的应用场景需求。
综上所述,YOLOv8以其高效性、先进的网络结构、创新的检测头设计以及广泛的适用性和灵活性等优点和创新点,在目标检测领域取得了显著进展。
相关文章:
YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升
目录 前言 一、模型介绍 二、网络结构 Backbone改进 特征增强网络(neck) 检测头(head) 其它部分 三、Loss计算 四、性能表现 五、YOLOv8使用详解 添加模型 其它部分 创建数据集 数据标注 模型训练 模型预测 六、YOLOv8总结 前言 YOLO(You Only Lo…...
【Python】使用Selenium 操作浏览器 自动化测试 记录
【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等-CSDN博客文章浏览阅读389次。【自动化】Python SeleniumUtil 工具。https://blog.csdn.net/G971005287W/article/details/144565691?spm1001.2014.3001.5501【学习记录】浏览器指纹相关学习记录&am…...
GDPU软件工程习题(挖空版)
答案: GDPU软件工程24期末复习-CSDN博客 1.8 练习题 一、填空题 软件工程是一门综合性的交叉学科,它涉及计算机学科、( )学科、( )学科和( )学科。软件工程研究的主要内容是 ( )、( )、( ) 三个方…...
【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap
re:Invent 是全球云计算领域的顶级盛会,每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂,分享最新的技术成果和创新实践,深圳 UG 作为亚马逊云科技技术社区的重要组成部分,将借助 re:Invent 的东风,举办此…...
Hutool工具包的常用工具类的使用介绍
前言 Hutool 是一个轻量级的 Java 工具类库,提供了非常丰富的工具方法,可以大大减少开发时的重复性工作。它的目标是让 Java 开发更简单、更高效。Hutool 提供了多种常用功能,以下是一些常用工具类的使用介绍: 1. StrUtil - 字符…...
C++简明教程(文章要求学过一点C语言)(2)
一、什么是代码文件(头文件和源文件) 想象你在写一篇很长的故事(这就好比是一个 C 程序),你可能会把故事分成不同的章节(类似于 C 中的文件)。 头文件(.h):它…...
防火墙技术与网络安全
网络已经成为了人类所构建的最丰富多彩的虚拟世界,网络的迅速发展,给我们的工作和学习生活带来了巨大的改变。我们通过网络获得信息,共享资源。如今,Internet遍布世界任何一个角落,并且欢迎任何一个人加入其中…...
html 中 表格和表单的关系与区别
在 HTML 中,表格 (<table>) 和表单 (<form>) 是两种常用于展示数据和收集用户输入的元素。它们具有不同的功能和结构。以下是关于这两者的详细介绍: 1. HTML 表格(<table>) 表格用于展示结构化的数据…...
基于Java的购物网站毕业论文
标题:基于 Java 的购物网站 内容:1.研究背景 1.1.国内研究进展 近年来,随着我国电子商务市场的不断发展,越来越多的企业开始涉足电子商务领域。其中,基于 Java 的购物网站成为了众多企业的首选。Java 语言具有跨平台、安全性高、稳定性好等优…...
Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透
文章目录 1、 缓存预热2、 缓存雪崩3、 缓存击穿4、 缓存穿透总结 1、 缓存预热 什么是预热: mysql加入新增100条记录,一般默认以mysql为准作为底单数据,如何同步给redis(布隆过滤器)这100条新数据。 为什么需要预热…...
wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势
开发CuteMySQL/CuteSqlite开源客户端的时候,需要使用Scintilla编辑器,来高亮显示SQL语句,作为C/C领域最成熟稳定又小巧的开源编辑器,Scintilla提供了强大的功能,wxWidgets对Scintilla进行包装后的是控件类:…...
【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?
要在 Windows 上编译 etcd 及 etcdctl 工具,并使用 bat 脚本启动 etcd 集群,首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤: 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…...
服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例
服务器存储数据恢复环境: 一台V7000存储上共12块SAS机械硬盘(其中1块是热备盘),组建了2组Mdisk,创建了一个pool。挂载在小型机上作为逻辑盘使用,小型机上安装的AIXSybase。 服务器存储故障: V7…...
冯诺依曼架构与哈佛架构的对比与应用
冯诺依曼架构(Von Neumann Architecture),也称为 冯诺依曼模型,是由著名数学家和计算机科学家约翰冯诺依曼(John von Neumann)在1945年提出的。冯诺依曼架构为现代计算机奠定了基础,几乎所有现代…...
Hive其四,Hive的数据导出,案例展示,表类型介绍
目录 一、Hive的数据导出 1)导出数据到本地目录 2)导出到hdfs的目录下 3)直接将结果导出到本地文件中 二、一个案例 三、表类型 1、表类型介绍 2、内部表和外部表转换 3、两种表的区别 4、练习 一、Hive的数据导出 数据导出的分类&…...
CMake function使用
在 CMake 中,function 用于定义一个可复用的代码块,可以在 CMake 脚本中多次调用。它类似于其他编程语言中的函数。函数内的变量默认是局部的,不会影响外部的变量,除非显式地使用 PARENT_SCOPE 来修改父级作用域中的变量。 基本语…...
【AI学习】Huggingface复刻Test-time Compute Scaling技术
OpenAI ChatGPT o1 背后的关键技术Test-time Compute Scaling,Huggingface实现并开源了! Hugging Face 团队发布了一篇关于“开源模型中的推理阶段计算扩展”(Test-time Compute Scaling) 的研究文章。Hugging Face 团队通过复现…...
前端导出PDF的组件及方法
前端导出PDF的组件及方法 在Web应用程序中,导出PDF文件是一项常见的需求。无论是为了打印、分享还是存档,能够将网页内容转换为PDF格式都非常有用。幸运的是,前端开发者有多种方法和组件可以实现这一功能。在本文中,我们将详细介…...
Mac升级macOS 15 Sequoia后,无法ssh连接本地虚拟机
现象 macOS 15后,无法ssh连接本地启动的虚拟机,提示错误: No route to host,也ping不通。包括UTM、Parallels Desktop这两个虚拟机软件。之前都是没问题的,通过一些简单排查,目前没发现什么问题。 在虚拟…...
Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集MI-FGSM介绍背景算法原理 MI-FGSM代码实现MI-FGSM算法实现攻击效果 代码汇总mifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
