目标检测算法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背后的主要思想是解决训练数据中类别不平衡的问题。

GitHubhttps://github.com/fengbingchun/NN_Test

相关推荐
AsItachi4 天前
基于StyleGAN2-ADA和FNW YOLOv8的玉米害虫智能检测
yolov8·stylegan2
爱爬山的木木8 天前
海思3403对RTSP进行目标检测
yolo·yolov8·3403·rtsp流·ss928
一勺汤18 天前
YOLOv8模型改进 第十七讲 通道压缩的自注意力机制CRA
yolo·目标检测·outlook·模块·yolov8·yolov8改进·魔改
就是求关注1 个月前
深度学习—基于YOLOv8的人物目标检测和分割(跟踪)
yolo·目标检测·目标跟踪·yolov8·目标分割
你的陈某某1 个月前
Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【跟踪】(八)
yolov8·npu·bytetrack·atlas800·a300i pro·ais_bench
machnerrn1 个月前
基于YOLOv9实现的自行车检测系统:为共享自行车违停项目开发(附项目源码及数据集下载)
深度学习·目标检测·毕业设计·课程设计·yolov8·yolov9·自行车违停检测
知来者逆2 个月前
基于YOLOv8目标检测与chef-transformer(T5)从图像创建食谱
人工智能·深度学习·yolo·目标检测·计算机视觉·transformer·yolov8
cheoyeon2 个月前
国产化框架PaddleYOLO结合Swanlab进行作物检测
深度学习·目标检测·作物检测·国产化·yolov8·swanlab·粮食安全
墨理学AI2 个月前
Mac 电脑配置yolov8运行环境实现目标追踪、计数、画出轨迹、多线程
yolo·macos·yolov8
不想敲代码!!!2 个月前
爆改YOLOv8|使用MobileNetV4替换yolov8的Backbone
pytorch·python·深度学习·yolo·目标检测·yolov8