【YOLO】YOLOv5原理

YOLOv5原理全面解析

概述

YOLOv5的主要架构

Backbone(主干网络):负责提取输入图像的多层次特征

Neck(颈部网络):进行特征融合和多尺度特征处理,通常包含FPN(特征金字塔网络)和PAN(路径聚合网络)

Prediction(预测头):基于融合后的多尺度特征图进行目标预测,包括边界框回归、置信度预测和类别分类

关键组成总结

Backbone(主干网络)

  • CSPNet:通过将特征图分为两部分,一部分直接传递,另一部分通过多个卷积层处理后再合并,减少了冗余计算,提升了模型效率
  • Darknet:传统的YOLO系列采用Darknet作为主干,YOLOv5通过CSPDarknet优化了特征提取过程,进一步提高了性能

Neck(颈部网络)

  • FPN:FPN通过自顶向下的路径,将高层次的语义信息传递到低层次特征图,增强了低层特征的表达能力,适用于检测不同尺度的目标
  • PAN:PAN在FPN的基础上,加入了自底向上的路径,进一步聚合特征信息,增强了特征图之间的信息流动,提升了小目标的检测性能
  • SPPF:SPPF模块通过多次最大池化操作,提取不同尺度的特征,并进行拼接和卷积处理,增强了模型对多尺度特征的捕捉能力,同时保持了计算效率

Prediction(预测头)

  • 预测层:每个尺度的特征图对应一个预测层,预测输出包括边界框坐标(x, y, w, h)、置信度和类别概率
  • 锚框机制:每个预测层使用预定义的锚框(Anchor Boxes)进行目标检测,适应不同尺寸和形状的目标

损失函数总结

  • 边界框回归损失
  • 目标置信度损失
  • 类别分类损失

训练流程总结

  • 标注数据,训练和验证数据进行分类,同时进行数据增强进一步提高模型的泛化能力
  • 模型初始化,选择合适的模型,然后加载权重加速收敛
  • 前向传播,输入图像通过主干网络提取特征,通过颈部网络进行特征融合,在不同尺度特征图上进行目标检测
  • 损失计算,根据正负样本匹配结果,计算定位损失、置信度损失和分类损失,最后得到总损失
  • 反向传播与优化,反向传播计算梯度,使用优化器(如Adam、SGD)更新模型参数
  • 模型评估和调整,定期评估模型验证集的性能,根据评估结果调整学习率,损失权重等信息

推理过程总结

  • 输入处理:针对输入的图像进行预处理,匹配模型输入要求
  • 前向传播:图像通过主干网络、颈部网络进行特征提取和融合,从而实现在不同尺度上进行目标检测
  • 后处理:
    • 阈值筛选:过滤低置信度的预测框
    • 非极大值抑制(NMS):去除重叠度高的预测框,保留最优的检测结果
    • 边界框解码:将预测的边界框参数转换为实际图像坐标
  • 输出结果:返回检测到的目标类别、边界框坐标和置信度

输入端

Mosaic增强

Mosaic增强的主要目的在于将多张图片进行组合,从而增加训练数据的多样性和复杂性,使得YOLO模型在训练过程中可以更好的学习到不同场景、不同尺度和不同位置的目标特征。这不仅提升了模型的检测精度,还增强了其在实际应用中的鲁棒性和泛化能力

分析1:基本原理是什么

多图像拼接

  • 首先从数据集中随机选择四张图像,然后对这四张图像进行随机缩放,从而适应拼接后的整体布局
  • 将四张缩放后的图像按照特定的方式(通常是四个象限)拼接成一张新的大图。例如,将四张图像分别放置在左上、右上、左下和右下四个位置,参考上面图片

边界框的调整

  • 调整位置,因为图像被拼接到新的位置,原图像中的边界框需要根据新的图像布局进行位置调整
  • 调整尺寸,因为在将图像拼接到四宫格中的时候无法避免有些图片会进行缩放,那么边界的尺寸的也是需要进行相应调整从而匹配新的图像尺度

实现增强效果

  • 多样性增加:通过将不同图像的目标组合在一张图中,模型能够学习到更多样化的目标分布和背景环境
  • 上下文信息丰富:目标可能出现在不同的上下文中,这有助于模型更好地理解目标的环境和相互关系
  • 小目标检测提升:拼接后的图像可能包含更多的小目标,这有助于模型提升对小目标的检测能力

分析:具体实现分析

  • 随机选择四张图像: 从训练数据集中随机选取四张不同的图像
  • 调整图像尺寸: 对每张图像进行随机缩放,确保它们在拼接后能够合理地填充到新的大图中
  • 确定拼接位置: 设定一个新的大图的尺寸(例如,原图的两倍),并确定每张图像在新图中的位置(左上、右上、左下、右下)
  • 拼接图像: 将四张缩放后的图像按照预定的位置拼接成一张新的大图
  • 调整和合并边界框: 根据每张图像在新图中的位置,调整各自的边界框坐标,并合并到新图中
  • 在进行上述步骤后还是可以对图像进一步的增强,以增强数据的多样性

分析:拼接后的画布大小是实现预设好的吗?

拼接后的整体布局大小通常是预先设定好的。在 Mosaic 增强中,通常会设定一个固定的输出图像尺寸,例如原图的两倍(如 640x640 像素)。这个固定尺寸确保了拼接后的图像在模型训练过程中保持一致性,有助于模型更好地学习和泛化

也就是说,YOLO的实现中会定义一个固定的网格和画布尺寸,然后将四张图像按照指定的位置缩放填充到这个画布上,这样做的好处是确保所有拼接后的图像具有相同的输入尺寸,便于批量处理和加速训练过程

分析:不同照片进行拼接一定会导致留白区域,这些区域的处理方式如何

根据其处理步骤,首先对选中的图像进行随机缩放,然后将图片放到四宫格中,每个象限的具体位置和大小都是预先设计好的

那么处理留白区域的时候,在缩放和定位过程中,可能会出现某些区域的留白。这些留白通常会被填充为黑色(即像素值为0),或者采用与图像边缘相邻的颜色进行填充。留白区域虽然存在,但由于模型在训练过程中会见到各种组合和背景,通常不会对最终的检测性能造成显著影响

经查找YOLOv5源码,YOLOv5中默认使用的是114灰色

# 创建一张空白的大图像(画布)
mosaic_img = np.full((h, w, 3), fill_value=114, dtype=np.uint8)

分析:输入的使用使用四张图片合成一张图片,最后训练的是五张图吗?

结论:最后输入神经网络的图片不是五张,而是一张拼接后的Mosaic图像,四张原始图像被随机选取、缩放和拼接后,形成了一张新的综合图像(即 Mosaic 增强后的图像),这张综合图像作为最终的输入传递给神经网络

分析:通过Mosaic增强会导致数据减少吗?

不会导致数据减少,反而会导致数据增加从而被高效且多样化的利用,最终提高了训练样本的有效性和泛化能力

  • 按批次加载数据
    • 每一轮训练(epoch)都会将数据分成多个批次(batch),每个批次都有一组照片,假如我们总有10000张照片,那么每个批次的大小为16,那么总批次就是

  • Mosaic增强数据(重点)
    • 在每次加载一个批次的时候,从数据集中随机取出4张照片,然后将它们拼成一张Mosaic图像
    • 那么当batch_size = 16的时候,也就是16张Mosaic图像,又因为每一张Mosaic图像都是由4张原始图像拼接而成,所以实际是又64张原始照片
  • 随机选取4张照片组成
    • 即使在第一个 epoch 没有完全遍历所有图片,后续的 epoch 会随机再次选取这些未被用到或未完全利用的图片
    • 每张图片通过不同的 Mosaic 拼接组合,最终会多次出现在训练中,且背景、位置等都会变化
    • 随机选取结合 shuffle,经过多个 epoch 后,每张图片都至少会被选中一次,同时还会出现在不同的 Mosaic 图像组合中
    • 总结,随机选取是一定可以选取到全部的图片

综上所述,Mosaic 增强并不是减少了训练数据,而是多次动态组合训练数据。

 自适应锚框

学习Yolov3原理时,也有类似于的预设锚框,该处主要解决自己针对于Yolov4自适应锚框的一些疑问

分析:YOLOv3的锚框和YOLOv5锚框的区别

首先从锚框计算角度分析

  • YOLOv3
    • YOLOv3 的锚框是手动预设的固定值,基于 COCO 数据集上目标框的尺寸统计结果。换句话说,YOLOv3 的默认锚框是开发者在训练前人为选择的一组固定尺寸
    • 如果想要适配新的数据集,那么就需要手动统计目标框的尺寸然后重新设计尺寸,没有自动化的过程,从而增加了数据适配的复杂性
  • YOLOv5
    • YOLOv5 引入了
### YOLOv5的工作原理 YOLOv5作为YOLO系列的新一代模型,在多个方面进行了改进,从而提升了性能、速度以及易用性[^1]。具体来说,YOLOv5通过高效的特征提取、预测和后处理机制实现了快速而准确的目标检测[^2]。 #### 特征提取 在特征提取阶段,YOLOv5采用了先进的卷积神经网络(CNN),能够有效地捕捉图像中的多尺度特征。为了提高计算效率并减少参数量,YOLOv5引入了一些特殊的模块和技术,比如CSPNet(Cross Stage Partial Network)。这种设计不仅增强了特征表达能力,还降低了内存占用和推理时间[^3]。 ```python import torch.nn as nn class CSPBlock(nn.Module): def __init__(self, in_channels, out_channels): super(CSPBlock, self).__init__() # 定义CSPBlock内部结构... ``` #### 预测过程 对于输入图像,YOLOv5会先对其进行预处理操作,如随机缩放等变换后再送入网络中进行分析[^4]。之后,经过一系列卷积层得到不同分辨率下的特征图谱;这些特征图被用来生成边界框候选区域,并赋予相应的类别标签概率分布向量。最终输出的是一个三维张量,其中包含了每个网格单元所对应的物体存在与否的信息及其可能的位置坐标偏移值。 #### 后处理流程 当获得初步的结果后,还需要执行非极大抑制(NMS)等一系列后处理步骤来筛选掉冗余或低置信度的检测结果。这一步骤可以确保最终呈现给用户的是一组高质量且互不重叠的对象标注框。 综上所述,YOLOv5凭借其独特的架构设计与优化策略,在保持高精度的同时大幅提高了运行效率,使其成为当前最流行的目标检测框架之一。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值