YOLO 目标检测:YOLOv3网络结构、特征输出、FPN、多尺度预测

文章目录

  • 一、YOLOV3
    • 1、网络结构
      • 1.1 整体结构
      • 1.2 主干网络
      • 1.3 特征输出
      • 1.4 特征融合
        • FPN(Feature Pyramid Networks)
        • FPN 融合
        • 上采样融合
    • 2、多尺度预测
    • 3、损失函数
    • 4、性能对比

一、YOLOV3

YOLOv3(You Only Look Once v3)是YOLO系列中的第三代版本,旨在提高目标检测的精度和速度。YOLOv3通过一些创新和改进使得其在速度和精度上有显著提升。

  • YOLOv3 论文地址:【https://arxiv.org/pdf/1804.02767】
  • YOLOv3 论文中文翻译地址:【https://blog.csdn.net/yegeli/article/details/109751358】
  • YOLOv3 最显著的改进就是在 3 个尺度上以相同的方式进行目标的检测,每种 3 个锚框,共 9 个。这使其可以检测到不同规模的目标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、网络结构

1.1 整体结构

  • 输入层:输入图像尺寸为 416×416×3,表示输入的是一个RGB图像,大小为416x416像素。

    • 416×416×3416 是图像的高度和宽度,3 是颜色通道(RGB)。
  • Darknet53:是YOLOv3的特征提取网络,相比于YOLOv2使用的Darknet19,它更加深度,包含了 53个卷积层,并且去除了全连接层(FC层)。

      • 主要通过 残差连接(residual connections) 来防止梯度消失。
      • 这一部分负责提取图像的高层特征。
  • CBL(卷积+批归一化+激活函数)

    • CBL = Conv + Batch Normalization + Leaky ReLU
      • Conv:卷积层,用于提取局部特征。
      • Batch Normalization:标准化每一层的输入,减少训练时的协方差偏移,提高训练稳定性。
      • Leaky ReLU:作为激活函数,Leaky ReLU可以避免ReLU激活函数中出现的“死亡神经元”问题,允许有小的负值输出。
  • resunit(残差单元):由 CBLAdd 操作组成。

    • Add 操作:实现了残差连接,将输入特征直接与输出特征相加,避免信息丢失,保持深层网络训练的有效性。
      • 该部分帮助网络通过跳跃连接学习残差,从而增强梯度传播,解决深层网络中梯度消失的问题。
  • resn(残差模块):resn 是 Yolov3 中的大组件,n 表示这个 Res-block 里含有多少个 Res-unit,组成如下:

    • 一个 padding
    • 一个 CBL
    • N 个残差组件
  • concat(拼接操作)

    • 将 Darknet-53 的中间层和后面的某一层的上采样进行张量拼接,达到多尺度特征融合的目的。这与残差层的 add 操作是不一样的,拼接会扩充张量维度,而 add 直接相加不会导致张量维度的改变,例如 104×104×128 和 104×104×128 拼接,结果是 104×104×256
  • 上采样:上采样(Upsampling)是一个关键的技术,用于实现多尺度特征融合,从而提高模型对不同尺度目标的检测能力

    • 多尺度特征融合:YOLOv3 在多个尺度上进行目标检测,通过上采样将低分辨率的特征图放大到高分辨率,与更高分辨率的特征图进行融合,从而捕捉到更多的细节信息,有助于模型更好地检测不同尺度的目标,尤其是小
  • 多尺度输出

    • 网络在三个不同尺度上进行目标检测:
      • 13×13×255:高层特征图,适用于检测大物体。
      • 26×26×255:中层特征图,适用于中等尺寸的物体。
      • 52×52×255:低层特征图,适用于检测小物体。
      • 每个特征图的输出大小为 H×W×(B×5 + C),其中 H×W 是特征图的大小,B 是每个格子上的预测框数,5 是每个框的属性(中心点坐标、宽高和置信度),C 是类别数。

1.2 主干网络

  1. 输入层
  • 输入尺寸: 416×416×3,表示输入的是一个416x416的RGB图像。
  • 卷积层 1:第一个卷积层有 32个3x3的滤波器,该层的输出尺寸为 256×256,也就是图像经过卷积处理后的尺寸。
  1. 特征提取(多层卷积)
  • 第二层卷积:输入尺寸 208×208×64,进行卷积操作后输出尺寸为 128×128
  • 第3层卷积:接着进行一个 1x1卷积,输出 128×128
  • 残差块(Residual):接下来,应用了一个 3x3的卷积,通过残差连接(skip connection)优化特征图的传递,输出仍为 128×128
  1. 更深层的卷积块
  • 通过多次卷积块的堆叠,网络逐步提取图像的高层特征。
    • 104×104×128 经过 3x3卷积1x1卷积 后输出 64×64
    • 重复类似的操作,输出逐步减小,特征图的深度逐渐增大。
  1. 中间特征提取
  • 特征图尺寸
    • 通过更深的网络,特征图进一步缩小到 52×52×25626×26×512
  • 在这个阶段,网络继续通过卷积层提取更多抽象的特征,并通过 残差单元(Residual Unit) 来加深网络。
  1. 输出特征图
  • 在输出阶段,YOLOv3会通过三个不同尺度的特征图进行目标检测:
    • Scale 1: 对应 13×13×1024 特征图,适合检测大物体。
    • Scale 2: 对应 26×26×512 特征图,适合检测中等物体。
    • Scale 3: 对应 52×52×256 特征图,适合检测小物体。
  1. YOLO Detection
  • 最后的输出层包括 卷积操作Conv),用于生成最终的预测框和类别概率。
  • Softmax层:用于归一化类别的输出,确保输出的概率和为1。

1.3 特征输出

。YOLOv3采用了 多尺度检测(Multi-Scale Detection),通过三个不同尺寸的特征图来捕捉不同大小的物体。

Scale 3 — 大物体检测(52×52×255

  • 输出尺寸52×52×255,即每个格子(52x52)上有 255 个值,包含 4个坐标(bounding box位置)、1个置信度(bounding box是否包含物体)、和 80个类别的概率
  • 适用于检测 小物体,尤其是在较高层的特征图中。

Scale 2 — 中物体检测(26×26×255

  • 输出尺寸26×26×255,这个特征图对应较小的物体,包含与Scale 3类似的信息。
  • 用于检测中等大小的物体,网络在这里提取到的特征较为复杂,但分辨率较低。

Scale 1 — 小物体检测(13×13×255

  • 输出尺寸13×13×255,这个特征图是最小的,适用于检测 大物体
  • 适用于捕捉较大物体的特征,因为其分辨率最低,但每个格子对应的区域较大,能够涵盖更大的物体。
  1. 特征融合的方式:
    • 在YOLOv3中,不同尺度的特征图逐层融合。这通过将较小特征图的高分辨率特征与较大特征图的深层次特征进行结合,增强了网络对不同尺度目标的敏感性。

1.4 特征融合

在目标检测任务中,不同尺度的目标(如远处的小人和近处的大车)对特征提取的要求不同:

  • 小物体检测: 小物体的特征通常较为细节化,并且位于图像的较低层次。低分辨率的特征图无法充分表达这些细节,因此需要将高分辨率的特征图与低分辨率特征图融合,才能更好地捕捉小物体的特征。
  • 大物体检测: 大物体通常占据较大的区域,因此低分辨率的特征图能够更好地捕捉大物体的信息。通过融合较高层次的特征(如13×13的特征图)与层次的细节特征(如52×52的特征图),可以显著提升对大物体的检测精度。
FPN(Feature Pyramid Networks)

是一种常用的特征融合技术,它通过利用从不同深度网络层次提取的特征来增强网络的多尺度特征表达能力。FPN 主要用于 从浅层到深层 融合特征,以更好地检测各种尺度的物体。

FPN 的主要目标是通过 自上而下的路径自下而上的路径 来融合不同尺度的特征图。这一过程有助于提升检测小物体和大物体的能力。

  1. 自上而下(Top-down)路径
  • 自上而下路径通过对高层特征图进行 上采样,将其逐渐恢复到较低层次的尺寸(高分辨率),使得它们能够与较低层的特征图结合。
  • 这个过程通常通过 转置卷积(Deconvolution)上采样(Upsampling) 来完成。
  • 这样高层的抽象特征可以被引入到低层的具体特征中,增加对小物体的敏感性。
  1. 自下而上(Bottom-up)路径
  • 自下而上路径是通过 卷积操作 来提取低层的特征图,使其逐步变得更加抽象,增强对大物体的表达能力。
  • 低层特征图的尺寸较大,但在细节上更为丰富,适合检测小物体。自下而上的路径逐渐减少特征图的空间尺寸并增加通道数。
  1. 融合(融合上下层的特征)
  • 自上而下路径和自下而上的路径相结合时,FPN通过 特征拼接加法操作,将来自不同层次的信息融合在一起。
  • 这种融合的目的是整合浅层的高分辨率细节和深层的抽象信息,从而形成更具辨识度和多尺度特征表达的特征图。
  1. 卷积层和检测
  • 在每个融合后的特征图上,FPN通常会执行卷积操作,以进一步提取多尺度的信息。
  • 最终,这些特征图会送入检测头进行目标检测任务,生成边界框和类别预测。

在YOLOv3中:

  1. 三尺度输出:YOLOv3在三个不同尺度的特征图上进行目标检测,这和FPN的目标非常相似。
  2. 特征融合:在YOLOv3中,较高层次的特征图会进行上采样,然后与低层次的特征图进行拼接,以便融合不同层次的特征信息。

观察下面四张图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 图 a:特征化图像金字塔

    • 当我们要检测不同的尺度目标时,需要把图像送入不同的尺度

    • 需要根据不同的尺度图片一次进行预测

    • 需要多少个不同尺度就需要预测多少次,效率较低

  • 图 b:单特征映射

    • 得到一个特征图并进行预测

    • 特征丢失,对于小目标效果不好

  • 图 c:金字塔特征层次结构

    • 把图像传给 backbone,在传播的过程中分别进行预测

    • 相互之间独立,特征没有得到充分利用

  • 图 d:特征金字塔网络

    • 不是简单的在不同特征图上进行预测
    • 会对不同的特征图进行融合后再进行预测
FPN 融合
  • 和前面描述的一样,为了进一步降低模型的复杂度进而提升速度,YOLOv3 选择了重用主干网络所提取的不同尺寸的特征图,主要是 8 倍、16 倍以及 32 倍下采样的特征图,同时采用了 FPN 的设计思想,分别对 16 倍、32 倍以及各自上采样后的结果进行了融合,但是也对其进行了一定的改进,在传统的 FPN 中,特征图通常是通过 加法(Add) 来进行融合的。但在 YOLOv3 中,作者选择使用 通道拼接(Concatenate) 来代替加法操作,这是为了:
    • 增加特征图的通道数:使得模型能够捕捉到更多的信息
    • 避免信息丢失:加法操作可能会导致某些重要信息被掩盖,而拼接则保留了所有原始信息
  • 1×1 卷积完成通道的一致性
  • 2×up(上采样)完成尺寸的一致性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上采样融合
  • 特征融合更有利于检测各种尺寸的物体,下图是特征融合架构图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、多尺度预测

在传统的目标检测任务中,网络往往在一个固定尺度上进行预测。但实际应用中,目标的尺寸差异很大,因此,如果只在一个尺度的特征图上进行预测,可能无法准确检测到小物体或大物体。多尺度预测(Multi-Scale Prediction)通过在多个尺度的特征图上同时进行预测,解决了这一问题。多尺度预测可以让网络在不同的特征图上做出预测,从而能够同时捕捉到不同尺寸物体的特征。

在YOLOv3中,多尺度预测 是通过在不同尺度的特征图上同时进行目标检测来实现的。具体来说,YOLOv3有三个不同尺寸的特征图,每个特征图都会进行目标检测预测。这种设计使得YOLOv3能够在处理不同大小的物体时表现得更加精确和高效。

YOLOv3的多尺度预测流程:

  1. 特征提取:YOLOv3首先通过Darknet-53提取特征,得到多个尺寸的特征图(例如:52x52x25626x26x51213x13x1024)。
  2. 上采样:较高层(低分辨率)特征图通过上采样操作增大其尺寸,以便与较低层(高分辨率)的特征图进行融合。
  3. 拼接:将不同尺度的特征图进行拼接(concatenate),将细节信息和高层抽象信息结合在一起,从而获得更丰富的特征表示。
  4. 预测:在三个不同尺度的特征图上,网络分别进行目标检测预测,包括边界框、类别、置信度等。
    • 13×13×255:用于大物体的检测。
    • 26×26×255:用于中物体的检测。
    • 52×52×255:用于小物体的检测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多尺度预测的输出

YOLOv3的每个尺度的输出形状为 H×W×(B×5 + C),其中:

  • H×W 是特征图的空间尺寸。
  • B 是每个网格(grid)单元中预测的边界框数量(YOLOv3中通常是3个框)。
  • 每个框包含 4个位置参数x, y, w, h),1个置信度(bounding box是否包含物体),以及 C个类别概率(每个物体类别的概率,YOLOv3使用80个类别)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、损失函数

在目标检测任务中,损失函数 是用于评估模型预测与真实标签之间差异的重要指标。对于YOLOv3模型来说,损失函数的设计要同时考虑物体的定位(位置损失)、置信度(置信度损失)以及类别(类别损失)的预测。YOLOv3的损失函数是由三部分组成的:定位损失置信度损失类别损失

  • 定位损失(Localization Loss)
  • 置信度损失(Confidence Loss)
  • 类别损失(Classification Loss)

1.定位损失是指预测的边界框和真实边界框之间的差异。它反映了模型对物体位置的预测误差。

  • 计算方式: YOLOv3使用 均方误差(MSE) 来衡量预测框与真实框之间的差距。具体来说,定位损失包括以下四个部分:
    • 中心点误差:预测框的中心点(x, y)与真实框的中心点之间的误差。
    • 宽度误差:预测框的宽度(w)与真实框的宽度之间的误差。
    • 高度误差:预测框的高度(h)与真实框的高度之间的误差。
    • IoU损失(Intersection over Union):YOLOv3还通过 IoU损失 来计算预测框与真实框的重叠度,作为定位损失的一个重要组成部分。

2.置信度损失衡量了模型对每个边界框是否包含物体的预测能力。YOLOv3会预测每个格子是否包含目标物体(置信度)。置信度损失是基于 二元交叉熵 来计算的,包含两种情况:

  1. 物体存在时的置信度:如果该框中有物体,模型应该预测较高的置信度。
  2. 物体不存在时的置信度:如果该框没有物体,模型的置信度应该接近0。

3.类别损失衡量了模型预测的物体类别与真实类别之间的差异。YOLOv3采用 交叉熵损失(cross-entropy loss)来计算预测的类别概率与真实类别标签之间的差异。

4、性能对比

  • AP50:IoU 阈值为 0.5 时的 AP 测量值
  • AP75:IoU 阈值为 0.75 时的 AP 测量值
  • APs:对于小目标的 AP 值
  • APm:对于中等目标的 AP 值
  • APL:对于大目标的 AP 值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

【GIS图像处理】有哪些SOTA方法可以用于将1.5米分辨率遥感图像超分辨率至0.8米精度的?

针对将1.5米分辨率遥感图像超分辨率至0.8米的需求,当前主流方法可分为以下几类,结合最新研究进展和实际应用场景,具体技术方案及SOTA方法如下: 一、基于Transformer的高效建模 1. Top-k标记选择Transformer(TTST) 核心机制:通过动态选择前k个关键标记(token),消除冗…

【电力电子】逆变器控制策略:PQ Droop下垂控制、电压电流双环控制与SPWM调制

逆变器中的 PQ Droop 控制。 1. PQ Droop 控制的定义 PQ Droop(有时也称为功率下垂控制,Power Droop Control)是微电网、并联系统或逆变器并网运行中常用的一种分布式功率控制方法。 P-Droop(有功下垂):通过调节逆变器输出频率与有功功率之间的关系实现功率分配。 Q-Dro…

【LeetCode 热题 100】5. 最长回文子串——中心扩散法

Problem: 5. 最长回文子串 文章目录整体思路完整代码时空复杂度时间复杂度:O(N^2)空间复杂度:O(1)整体思路 这段代码旨在解决经典的 “最长回文子串” (Longest Palindromic Substring) 问题。问题要求在一个给定的字符串 S 中,找到一个最长…

六、练习3:Gitee平台操作

练习3:Gitee平台操作 练习目标 掌握Gitee平台的基本操作,包括创建仓库、推送代码、团队协作等。 练习步骤 步骤1:Gitee账号准备 访问 gitee.com注册账号(如果还没有)登录Gitee 步骤2:配置SSH密钥 # …

Git软件版本控制

软件版本控制作用:软件源码版本管理、多人协作开发、版本多分支开发、代码回滚(回退)等功能。集中式版本控制:将代码仓库放在一台服务器上,开发时要依赖这台服务器。优点:简单、方便管理、适合中小型项目缺…

生产环境Spark Structured Streaming实时数据处理应用实践分享

生产环境Spark Structured Streaming实时数据处理应用实践分享 一、业务场景描述 我们所在的电商平台需要实时监控用户行为数据(如点击、下单、支付等),基于事件级别的流式数据进行实时统计、会话聚合、漏斗分析,并将结果推送到Da…

海康相机开发---HCNetSDK

HCNetSDK(Hikvision Network Software Development Kit)是海康威视专为旗下安防监控设备打造的二次开发工具包,是连接上层应用与海康设备的核心桥梁。其封装了设备底层通信协议(包括私有协议与部分标准协议)&#xff0…

构建无广告私人图书馆Reader与cpolar让电子书库随身携带

文章目录前言:告别书荒,拯救灵魂的“摸鱼神器”1、关于Reader:小而美的开源在线阅读器2、Docker部署3、简单使用reader和添加书源4.群晖安装Cpolar工具5.创建reader阅读器的公网地址6.配置固定公网地址前言:告别书荒,拯…

amd cpu是x86架构吗

是的,AMD CPU属于x86架构‌,其64位扩展(x86-64)最初由AMD设计并成为行业标准。‌ ‌AMD与x86架构的关系‌ ‌技术渊源‌:AMD自1976年起通过技术授权成为x86架构的合法制造商,与英特尔共同主导x86市场。2003…

vercel上线资源无法加载

背景:在本地跑开发服务器没问题,但是部署到 vercel 上就有问题上一次出现类似问题是在更新游戏引擎方法后本地可以跑但是上线没有成功,当时是因为 runner.html 是在部署时通过脚本从远端仓库拉取的,所以解决方案:1.更新…

Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?

目录 一、为什么需要模块化? 二、Node.js 的模块化规范 三、CommonJS 模块化 1. 基本语法 2. 特点 3. 缺点 四、ES6 模块(ESM) 1. 基本语法 2. 特点 3. 在 Node.js 中的使用 五、CommonJS 和 ES6 模块的区别 六、实际开发中的选择…

设计模式:代理模式(Proxy Pattern)

文章目录一、代理模式的定义二、实例分析三、示例代码一、代理模式的定义 代理模式是一种结构型设计模式,它为某个对象提供一个代理或占位符,以控制对这个对象的访问。简单来说代理对象在客户端和目标对象之间起到中介作用,客户端并不会直接操…

数据类型序列化-封装

/// <summary> /// 定义泛型接口 /// </summary> /// <typeparam name"T">T</typeparam> public interface ISettingValue<T> {/// <summary>/// value/// </summary>T DoubleValue { get; }/// <summary>/// key//…

PitVis-2023挑战赛:内镜下垂体瘤手术视频中的手术流程识别|文献速递-深度学习人工智能医疗图像

Title题目PitVis-2023 challenge: Workflow recognition in videos of endoscopic pituitary surgeryPitVis-2023挑战赛&#xff1a;内镜下垂体瘤手术视频中的手术流程识别01文献速递介绍内镜视觉挑战赛与PitVis-2023挑战赛背景及核心内容 “内镜视觉&#xff08;EndoVis&#…

2025年8月个人工作生活总结

本文为 2025年8月工作生活总结。研发编码 无处不在的AI 现在很多地方都在推AI&#xff0c;广西的人工智能走在前列&#xff0c;要赋能各行各业。至于我&#xff0c;主要就是在写点代码&#xff0c;写点交差的文档。其实现在我已经有点分析哪些代码哪些文字是AI写的了。我工作用…

Dubbo常见面试题

1、默认使用的是什么通信框架&#xff0c;还有别的选择吗? 默认也推荐使用netty框架&#xff0c;还有mina。 2、服务调用是阻塞的吗&#xff1f; 默认是阻塞的&#xff0c;可以异步调用&#xff0c;没有返回值的可以这么做。 3、一般使用什么注册中心&#xff1f;还有别的…

简单的加密算法

// 加密函数&#xff08;32位版本&#xff09; //这里的 data 是ID&#xff0c; dword encrypt(dword data, dword key, int shift) {data ^ key; // 第一步&#xff1a;异或混淆// 循环左移&#xff08;shift范围1-31&#xff09;return (data << sh…

升级的MS9125S USB投屏控制芯片(VGAHD输出)

MS9125S是一款USB单芯片投屏器&#xff0c;内部集成了USB 2.0控制器和数据收发模块、视频DAC、HD接口和音视频处理模块&#xff0c;支持压缩视频传输。MS9125S可以通过USB接口显示或者扩展PC、智能手机、平板电脑的显示信息到更大尺寸的显示设备上&#xff0c;支持VGA和HD视频接…

求欧拉回路:Hierholzer算法图解模拟

代码模板&#xff1a;List<Integer> resultList new ArrayList<>();List<Integer> hierholzer() {dfs(0);resultList.add(0);// 数组反转Collections.reverse(resultList);return resultList; }void dfs(int start) {for(int end : G[start]) {if(!vis[star…

Kafka面试精讲 Day 2:Topic、Partition与Replica机制

【Kafka面试精讲 Day 2】Topic、Partition与Replica机制 在“Kafka面试精讲”系列的第二天&#xff0c;我们将深入剖析Kafka最核心的三大数据组织机制&#xff1a;Topic&#xff08;主题&#xff09;、Partition&#xff08;分区&#xff09;与Replica&#xff08;副本&#x…