网站后缀co,菏泽百度推广公司电话,登封网络推广公司,wordpress 字母标签云YOLOv8目标检测算法相较于前几代YOLO系列算法具有如下的几点优势#xff1a;
更友好的安装/运行方式速度更快、准确率更高新的backbone#xff0c;将YOLOv5中的C3更换为C2FYOLO系列第一次尝试使用anchor-free新的损失函数
YOLOv8简介
YOLOv8 是 Ultralytics 公司继 YOLOv5…YOLOv8目标检测算法相较于前几代YOLO系列算法具有如下的几点优势
更友好的安装/运行方式速度更快、准确率更高新的backbone将YOLOv5中的C3更换为C2FYOLO系列第一次尝试使用anchor-free新的损失函数
YOLOv8简介
YOLOv8 是 Ultralytics 公司继 YOLOv5 算法之后开发的下一代算法模型目前支持图像分类、物体检测和实例分割任务。YOLOv8 是一个 SOTA 模型它建立在之前YOLO 系列模型的成功基础上并引入了新的功能和改进以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数可以在从 CPU 到 GPU 的各种硬件平台上运行。注意到ultralytics 并没有直接将开源库命名为 YOLOv8而是直接使用 Ultralytics这个单词原因是Ultralytics这个库的定位是算法框架而非特指某一个特定算法其希望这个库不仅仅能够用于 YOLO 系列模型同时也能支持其他的视觉任务如图像分类、实例分割等。下图画图YOLOv8目标检测算法同其他YOLO系列算法YOLOv5、6、7的实验对比图左边是模型参数量对比右边是速度对比。 下面两个表分别是YOLOv8和YOLOv5v7.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中设置streamTrue
YOLOv8可以处理不同类型的输入源如下表所示进行推理输入源包括静态图像、视频流和各种数据格式。表中还显示了参数 streamTrue表示可以在流模式下使用这个源。流模式有利于处理视频或实时流因为它会创建一个结果生成器而不是将所有帧加载到内存中。在处理长视频或大型数据集时使用 streamTrue 可以有效管理内存。当 streamFalse 时所有帧或数据点的结果都会存储在内存中这可能会迅速增加数据量最终导致内存不足错误。相比之下streamTrue利用生成器只将当前帧或数据点的结果保存在内存中从而大大减少了内存消耗防止出现内存不足问题 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’ 或 formatengine’等