YOLOv8目标检测算法

YOLOv8目标检测算法相较于前几代YOLO系列算法具有如下的几点优势:

  • 更友好的安装/运行方式
  • 速度更快、准确率更高
  • 新的backbone,将YOLOv5中的C3更换为C2F
  • YOLO系列第一次尝试使用anchor-free
  • 新的损失函数

YOLOv8简介

YOLOv8 是 Ultralytics 公司继 YOLOv5 算法之后开发的下一代算法模型,目前支持图像分类、物体检测和实例分割任务。YOLOv8 是一个 SOTA 模型,它建立在之前YOLO 系列模型的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括:一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。注意到ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 Ultralytics这个单词,原因是Ultralytics这个库的定位是算法框架,而非特指某一个特定算法,其希望这个库不仅仅能够用于 YOLO 系列模型,同时也能支持其他的视觉任务如图像分类、实例分割等。下图画图YOLOv8目标检测算法同其他YOLO系列算法(YOLOv5、6、7)的实验对比图,左边是模型参数量对比,右边是速度对比。
在这里插入图片描述
下面两个表分别是YOLOv8和YOLOv5(v7.0版本)官方在 COCO Val 2017 数据集上测试结果,从中看出 YOLOv8 相比 YOLOv5 精度提升大,但是 N/S/M 模型相应的参数量、FLOPS等提高了不少。
在这里插入图片描述
在这里插入图片描述

YOLOv8概述

提供了一个全新的SOTA模型,和YOLOv5一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求,同时支持图像分类、目标检测、实例分割和姿态检测任务
在骨干网络和Neck部分将YOLOv5的C3结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,大幅提升了模型性能;需要注意的是C2f 模块中存在Split等操作对特定硬件部署没有之前那么友好

  • Head部分换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based换成了Anchor-Free Loss
  • 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss

下图画出YOLOv8目标检测算法的整体结构图,原图从mmyolo仓库(https://github.com/open-mmlab/mmyolo/blob/dev/configs/yolov8/README.md)获取
在这里插入图片描述

YOLOv8模型

YOLOv8目标检测算法的模型配置文件如下:
在这里插入图片描述
从配置文件可以看出,YOLOv8与YOLOv5模型最明显的差异是使用C2F模块替换了原来的C3模块,两个模块的结构图(原图:https://mmyolo.readthedocs.io/zh_CN/latest/recommended_topics/algorithm_descriptions/yolov8_description.html)下图所示。
在这里插入图片描述
另外Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free。其结构对比图(原图:https://mmyolo.readthedocs.io/zh_CN/latest/recommended_topics/algorithm_descriptions/yolov8_description.html)如下所示:
在这里插入图片描述
当然YOLOv8相较于之前YOLO系列算法还有其他的改变,具体参考官方源码库(https://github.com/ultralytics/ultralytics)和mmyolo库(https://mmyolo.readthedocs.io/zh_CN/latest/recommended_topics/algorithm_descriptions/yolov8_description.html)

YOLOv8安装

(1)直接安装: pip install ultralytics
(2)下载仓库安装:git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

YOLOv8训练

yolov8的训练采用命令行的模型(当然也可以使用api调用的方式),下面是yolov8官方给定的训练方式:
在这里插入图片描述
一个简单的单卡模型训练命令如下:
在这里插入图片描述
一个简单的多卡模型训练命令如下:
在这里插入图片描述
当然更多的参数在训练时可以被指定,这些参数包括如下:
在这里插入图片描述
上面列举一些常见的参数,还有一些如训练策略的一些参数可从一下链接查看:https://docs.ultralytics.com/modes/train/#arguments

YOLOv8验证

yolov8的验证采用命令行的模型(当然也可以使用api调用的方式),下面是yolov8官方给定的验证方式:
在这里插入图片描述
当然更多的参数在验证时可以被指定,这些参数包括如下:
在这里插入图片描述

YOLOv8推理测试

yolov8的推理测试采用api调用的方式,下面是yolov8官方给定的测试方式:
在这里插入图片描述

YOLOv8推理可为各种任务生成预测结果,可返回一个结果对象列表或一个节省内存的结果对象生成器(在使用流模式时,即在model中设置stream=True)

YOLOv8可以处理不同类型的输入源(如下表所示)进行推理,输入源包括静态图像、视频流和各种数据格式。表中还显示了参数 stream=True表示可以在流模式下使用这个源。流模式有利于处理视频或实时流,因为它会创建一个结果生成器,而不是将所有帧加载到内存中。(在处理长视频或大型数据集时,使用 stream=True 可以有效管理内存。当 stream=False 时,所有帧或数据点的结果都会存储在内存中,这可能会迅速增加数据量,最终导致内存不足错误。相比之下,stream=True利用生成器,只将当前帧或数据点的结果保存在内存中,从而大大减少了内存消耗,防止出现内存不足问题)
在这里插入图片描述
model.predict()接受多个参数,可在推理时通过下面的这些参数覆盖默认值:
在这里插入图片描述
更多的信息如图像格式、视频格式、检测结果格式等信息请参考官网:https://docs.ultralytics.com/modes/predict/#working-with-results

YOLOv8导出

yolov8模型的导出采用命令行的模型(当然也可以使用api调用的方式),下面是yolov8官方给定的模型导出方式:
在这里插入图片描述
YOLOv8模型的导出设置是指用于保存或导出模型以便在其他环境或平台中使用的各种配置和选项。这些设置会影响模型的性能、大小以及与不同系统的兼容性。一些常见的YOLOv8导出设置包括导出模型文件的格式(如 ONNX、TensorFlow等)、运行模型的设备(如 CPU、GPU),以及是否存在掩码或每个方框多个标签等附加功能。可能影响导出过程的其他因素包括模型用于的特定任务以及目标环境或平台的要求或限制,必须仔细考虑和配置这些设置,以确保导出的模型针对预期用例进行了优化,并能在目标环境中有效使用。下表列出模型在导出过程中常见的一些配置信息:
在这里插入图片描述

可用的YOLOv8模型的导出格式如下表所示,您可以使用format参数导出任何格式,例如format=‘onnx’ 或 format='engine’等
在这里插入图片描述

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

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

相关文章

FiboSearch Pro – Ajax Search for WooCommerce 商城AJAX实时搜索插件

FiboSearch Pro是最受欢迎的WooCommerce 产品搜索插件。它为您的用户提供精心设计的高级 AJAX 搜索栏,并提供实时搜索建议。默认情况下,WooCommerce 提供非常简单的搜索解决方案,没有实时产品搜索,甚至没有 SKU 搜索。FiboSearch&…

uniapp开发微信小程序底部地区选择弹框

个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人站…

React Native 图片组件基础知识

在 React Native 中使用图片其实跟 HTML 中使用图片一样简单,在 React Native 中我们使用Image组件来呈现图片的内容,其中主要的属性有:source。这个属性主要是设置图片的内容,它可以是网络图像地址、静态资源、临时本地图像以及本…

Android侧滑栏(一)可缩放可一起移动的侧滑栏

在实际的各类App开发中,经常会需要做一个左侧的侧滑栏,类似于QQ这种。 今天这篇文章总结下自己在开发中遇到的这类可以跟随移动且可以缩放的侧滑栏。 一、实现原理 使用 HorizontalScrollView 实现一个水平方向的可滑动的View,左布局为侧滑…

Camx--概述

该部分代码主要位于 vendor/qcom/proprietary/ 目录下: 其中 camx 代表了通用功能性接口的代码实现集合(CamX),chi-cdk代表了可定制化需求的代码实现集合(CHI),从图中可以看出Camx部分对上作为H…

Linux 性能分析之iostat命令详解

Linux 性能分析之iostat命令详解 iostat命令是IO性能分析的常用工具,其是input/output statistics的缩写。本文将着重于下面几个方面介绍iostat命令: iostat的安装iostat命令行选项说明iostat输出内容分析如何确定磁盘IO的瓶颈iostat实际案例 命令的安…

django boostrap html实现可拖拽的左右布局,鼠标拖动调整左右布局的大小或占比

一、实现的效果 最近需要在Django项目中,实现一个左右布局的html页面,页面框架使用的是boostrap。但这个布局不是简单的左右分栏布局,而是需要实现可以通过鼠标拖拽的方式动态调整左右两侧布局的大小和占比。效果大致如下: 一开始,页面分为左右两块布局: 鼠标放到中间的…

Python脚本之连接MySQL【四】

本文为博主原创,未经授权,严禁转载及使用。 本文链接:https://blog.csdn.net/zyooooxie/article/details/124640412 之前写了篇 Python脚本之连接MySQL【三】,日常使用过程中,代码实际有很多改动,特此更新…

【先进PID控制算法(ADRC,TD,ESO)加入永磁同步电机发电控制仿真模型研究(Matlab代码实现)

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

定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小

下面画出等效电路图 可以知道单片机内必然有一个电阻RX,为了简化分析,我们假设他是线性电阻(不带电容,电感的支路) 还有一个基础知识: 电容器的充电放电曲线: 还需要知道电容电压的变化是连续…

微信小程序data-item设置获取不到数据的问题

微信小程序data-item设置获取不到数据的问题 简单说明: 在微信小程序中,通过列表渲染使用wx:for根据数组中的每一项重复渲染组件。同时使用bindtap给每一项绑定点击事件clickItem,再通过data-item绑定数据。 **问题:**通过data-i…

观察者模式实战

场景 假设创建订单后需要发短信、发邮件等其它的操作,放在业务逻辑会使代码非常臃肿,可以使用观察者模式优化代码 代码实现 自定义一个事件 发送邮件 发送短信 最后再创建订单的业务逻辑进行监听,创建订单 假设后面还需要做其它的…

取个对象值导致系统崩溃

取个对象值导致系统崩溃 前言 想必各位小伙经常在项目中遇到一些错误,取对象值的时候,经常报错,又或者某些项目突然就挂经常都是出现在一些对象取值上面,然后就被领导一顿训斥 报错分析 例如: 下面这个报错大家想必不会陌生&am…

最大交换(力扣)枚举 JAVA

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 10^8] 解题思路: 1、数最…

【量化课程】08_2.深度学习量化策略基础实战

文章目录 1. 深度学习简介2. 常用深度学习模型架构2.1 LSTM 介绍2.2 LSTM在股票预测中的应用 3. 模块分类3.1 卷积层3.2 池化层3.3 全连接层3.4 Dropout层 4. 深度学习模型构建5. 策略实现 1. 深度学习简介 深度学习是模拟人脑进行分析学习的神经网络。 2. 常用深度学习模型架…

山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务

在直播软件源码平台中,服务器扮演着重要的角色,关系着视频传输、数据处理、用户管理等工作的顺利完成。随着互联网的迅猛发展,直播行业也随之崛起,全世界的人们都加入到了直播软件源码平台中,用户流量的增加让服务器的…

视频高效剪辑,轻松平均分割视频,生成高质量M3U8

您是否在处理视频剪辑时常常面临繁琐的切分工作?是否希望能够快速而精准地平均分割视频,并生成适用于在线播放的高质量m3u8文件?现在,我们的智能视频剪辑大师为您提供了一种简便而高效的解决方案!无需复杂操作&#xf…

Leaflet入门,Leaflet如何实现vue双向绑定数据添加到图片标记物到地图上,动态根据vue数据更新到地图上以及鼠标经过标记物显示提示框

前言 本章使用Leaflet的vue2-leaflet或者vue-leaflet插件方式实现vue数据绑定地图数据,实现地图标记物与vue数据的双向联动更新,以及鼠标经过标记物显示提示框功能。 实现效果演示 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定…

【量化课程】02_3.投资学基础概念

文章目录 1. 投资和投资学的关系1.1 什么是投资?1.2 什么是投资学? 2. 投资学的主要内容2.1 金融市场与投资环境2.1.1 金融资产2.1.2 债券市场的意义2.1.3 金融市场与经济2.1.4 投资过程2.1.5 竞争性的市场2.1.6 市场参与者2.1.7 主要的市场债券市场外汇…

Stable Diffusion 插件开发经验

Stable Diffusion近来大热,但是插件开发的资料少之又少。 这里提供一些插件开发的经验,可供参考。 1.替换启动页。 如果你想要在运行Stable Diffusion的基础上想要一些独有的操作,不想要进行裁剪,直接替换启动页面,那么就需要在webui中进行替换 这里modules.ui.create_ui…