文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

YOLOv8 详解:从零开始理解目标检测

2024-11-28 14:48

关注

在本文中,我们将分解驱动YOLOv8的关键组件,从卷积神经网络和残差块等基本概念开始,逐步过渡到特征金字塔网络和CSPDarknet53等高级结构。最后,你将清楚地理解这些元素如何结合在一起,创造出当今最强大的目标检测模型之一。

1. 卷积架构

卷积神经网络(CNN)基于一系列处理层,最基础的是卷积层和池化层。卷积层使用卷积原理,这是一种图像处理技术,涉及两个矩阵之间的乘法操作。一个矩阵代表输入图像,另一个称为核(或卷积滤波器),生成一个新矩阵,即过滤后的图像。这个过程计算效率高,并有助于突出图像特征,如边缘。

使用滤波器进行边缘检测的卷积过程

每次卷积后,通常应用池化层以通过在较小窗口内对信息进行分组来减小过滤图像的大小,允许在保留基本特征的同时进行压缩。一种常见的池化是最大池化,它取窗口中的最大值。

最大池化过程的示意图

在CNN架构中,这种卷积和池化的循环多次重复,允许从图像中逐步提取重要特征。输出数据随后被展平并通过全连接层的神经元。传统上,这一层的输出使用softmax函数处理以产生分类概率。

简化的CNN架构图

2. 特征金字塔网络(FPN)

特征金字塔网络(FPN)是一种旨在增强目标检测和图像分割性能的架构。它利用来自不同卷积层的输出来创建特征的金字塔表示,允许更好地检测不同尺度的物体。

展示多尺度目标检测的特征金字塔网络(FPN)架构图

当我们通过卷积网络的层进行时,更深层的层倾向于捕捉细节,如小物体,而早期层关注更大物体的模式、形状和边缘。FPN的目标不仅是使用最终卷积层的输出,还使用几个中间层的输出来检测多个尺度的物体。这种多尺度检测能力是FPN有效性的关键。

3. 路径聚合网络(PANet)

路径聚合网络(PANet)是对特征金字塔网络(FPN)架构的改进。PANet加强了不同特征尺度之间的连接,并引入了额外的机制以更好地聚合信息。

为了更好地理解FPN和PANet之间的区别,想象一栋有好几层的建筑。每层楼代表图像中的不同细节层次:在底部,你看到细节(小物体),而在顶部,你得到一个更广阔的视角(更大的物体)。

PANet结构

4. 残差块

残差块由ResNet(残差网络)架构引入。它们旨在解决训练非常深的网络时的挑战,例如梯度退化和信息丢失。

残差块通常由两个或三个卷积层组成,但其定义特征是包含一个直接连接(也称为跳过连接),该连接绕过这些层并将块的输入直接链接到其输出。这在下面的图中有说明。输入信息被加到卷积层的输出上,然后传递到下一个阶段。

简单来说,如果块的输入由x表示,F(x)表示卷积层的变换函数,那么块的输出是F(x)+x。

带有跳过连接的残差块

5. CSPNet(跨阶段部分网络)

CSPNet(跨阶段部分网络)是一种用于神经网络的技术,以提高计算机视觉模型的效率和性能。它通过在通过网络块处理之前将特征图分成两部分来工作。一部分像往常一样通过网络流动,而另一部分稍后添加。这种方法减少了网络的计算负载,使其更轻巧,而不会牺牲其处理能力。CSPNet有助于平衡准确性和速度之间的权衡,确保模型保持强大而高效。

6. Darknet53和CSPDarknet53

Darknet53(下图,部分a)是一种卷积神经网络(CNN),主要用作目标检测模型中的主干(主干的概念将在下一节中解释)。它最初是为YOLOv3开发的。Darknet53旨在快速准确,能够从图像中提取相关特征。

CSPDarknet53(下图,部分b)是为YOLOv4开发的Darknet53的增强版本。它结合了CSPNet概念以优化特征学习和减少计算冗余。

Darknet53(部分a)和CSPDarknet53(部分b)的架构

7. YOLOv8中的一切如何整合

一旦我们理解了这些方法,我们就能更好地理解YOLOv8中的每一层是如何工作的。

事实上,与前身相比,YOLOv8并没有引入重大的技术革新。然而,其架构已经被简化和简化成块。它由23个主要层组成,每个层都包含子层,子层又包含更多的子层。本质上,YOLOv8就像一个俄罗斯套娃层。

YOLOv8模型架构的详细图示。主干、颈部和头部是我们模型的三个部分,C2f、ConvModule、DarknetBottleneck和SPPF是模块

在线上的YOLOv8图表有时乍一看可能过于复杂。为了更好地观察这些层,模型层字典的分解可以揭示其完整的架构,并澄清它们是如何堆叠的。YOLOv8由七个“ConvModule”层、八个“C2f”层、一个“SPPF”层、两个“Unsample”层、四个“Concat”层和一个最终检测层组成。

import torch
model_path = "my_model.pt"
model_dict = torch.load(model_path, map_location=torch.device('cpu'))
model = model_dict['model']
print(model)

通过可视化每层的组件,我们可以看到它们如何适应更广泛的架构。YOLOv8可以分为三个关键部分:

Backbone:
    ConvModule (Layer 0) - P1
    ConvModule (Layer 1) - P2
    ConvModule (Layer 2)
    C2f (Layer 3)
    ConvModule (Layer 4) - P3
    C2f (Layer 5)
    ConvModule (Layer 6) - P4
    C2f (Layer 7)
    SPPF (Layer 9)

Neck:
    Upsample (Layer 10)
    Concat (Layer 11)
    C2f (Layer 12)
    Upsample (Layer 13)
    Concat (Layer 14)
    C2f (Layer 15)
    ConvModule (Layer 16)
    Concat (Layer 17)
    C2f (Layer 18)

Head:
    ConvModule (Layer 19)
    Concat (Layer 20)
    C2f (Layer 21)
    Detection Layer (Layer 22) 

尽管Ultralytics(YOLOv8的开发者)在其官方模型表示中没有明确标记这三个部分,但这种划分被社区普遍接受,因为它反映了以前YOLO版本的结构,并有助于简化模型的理解。

来源:小白玩转Python内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯