YOLO学习

本文为记录YOLO算法与YOLOv5模型学习而做

前言:跟随B站up“cv视觉与图像处理”与土堆老师进行入门学习,已有一定的CNN与pytorch基础

学习注意:api简单,问题在于算法含义与实现、模型的优化

环境配置,参考文章《基于Yolov5环境配置详解(真的很方便很简单)

目标检测目的:

定位:找到检测图像中带有给定标签的“单个目标”

检测:找到图像中带有给定标签的“所有目标”

注意,在检测时要先“找到”再“预测”,因此有不同的指标来评估,若“找不到”则“预测”也无从谈起

故目标检测中有“正样本”概念(正样本指的是包含所需目标的样本,也就是需要被检测和识别的目标物体)

目标检测常用数据集:

PASCAL VOC数据集

The PASCAL Visual Object Classes Challenge 2012 (VOC2012) (ox.ac.uk)

MS COCO数据集

COCO - Common Objects in Context (cocodataset.org)

目标检测性能指标

正样本:通常指的是具有特定属性或标签的样本数据。在目标检测任务中,正样本指的是包含所需目标的样本,也就是需要被检测和识别的目标物体。

负样本:其他类别或不包含目标的样本。

一、检测精度:精度(Precision):精度表示模型预测为正样本中真实为正样本的比例

                         召回率(Recall):召回率表示真实为正样本中被模型预测为正样本的比例

                         F1 值(F1 Score):F1 值综合考虑精度和召回率,是精度和召回率的调和平均值

                         IoU(Intersection over Union):IoU 是目标检测中常用的指标,表示预测框与                           真实框的交集面积与并集面积的比值

                         AP(Average Precision):平均精度是在目标检测任务中常用的指标,衡量模                             型 对单个类别的检测准确性。它计算了预测框与真实框之间的匹配程度(前缀带                             个小写m则是多类别综合的平均值)

                         MR(Miss Rate):漏检率表示模型未检测到的真实目标数量与总真实目标数量                             之比。通常用于衡量模型的遗漏情况。

                         FPPI(False Positives Per Image):每张图像的假阳率表示在检测结果中错误                           预测为正样本的数量与图像数之比。用于评估模型的误报情况。

二、检测速度:前传耗时:一张图片从输入到输出所耗费的时间

                         每秒帧数FPS:每秒钟能处理的图片数量

                         浮点运算量FLOPS:处理一张图片所需要的浮点运算数量

YOLO算法基本构成与思想

首先从传统神经网络上的“层级”概念为YOLOv5算法实现大致分层(由chat GPT3.5 turbo生成)

 在YOLOv5算法中,可以将其分为以下几个层级:
  1. 特征提取层级:YOLOv5使用了一种名为CSPDarknet53的神经网络架构作为特征提取器。该层级负责从输入图像中提取高级语义特征,捕捉图像中的边缘、纹理和形状等信息。CSPDarknet53网络由一系列卷积层、批量归一化层和激活函数层组成,以构建图像特征表示。

  2. 特征金字塔层级:YOLOv5在特征提取层之后引入了一个特征金字塔网络。该层级通过在不同尺度的特征图上应用卷积和上采样操作,获得多尺度的特征表示。这有助于检测不同大小的目标,并提高模型对细节和上下文的感知能力。

  3. 检测头层级:YOLOv5的检测头是用于预测目标类别和边界框的关键部分。它由一系列卷积层和全连接层组成,负责将特征图转换为目标预测。检测头层级会生成一组锚框,并通过卷积操作对每个锚框进行类别预测和边界框回归。

  4. 损失函数层级:YOLOv5使用了一种综合的损失函数来训练模型。该损失函数包括目标检测中常用的分类损失(预测的类别概率和实际类别标签间)、边界框损失(对目标边界框的定位准确性的计算)和置信度(对目标存在与否的判断准确性)损失。损失函数层级计算预测结果与真实标签之间的差异,并通过反向传播来更新网络参数,以使模型逐渐优化。

这些层级在YOLOv5算法中相互配合,共同完成目标检测任务。特征提取层级和特征金字塔层级负责提取图像特征,并通过多尺度的特征表示提供更好的检测能力。检测头层级负责生成目标预测,而损失函数层级则用于训练模型并优化其参数。通过这种分层设计,YOLOv5能够实现高效准确的目标检测。

网络架构图(参考文章yolov5s-5.0网络模型结构图_yolov5s网络结构图-CSDN博客

YOLO算法中基本名词解释

YOLOv5本质上依旧是一个神经网络模型,所以了解了其各层级的作用与含义,也许有助于更好地使用和适应应用环境?

1.Anchor boxes(锚框):预定义的一组固定大小和长宽比的框,用于捕捉不同大小和形状的目标。每个锚框定义了一个参考框,用于预测目标的位置和尺寸。

2.Grid cells(网格单元):将输入图像划分为固定大小的网格,每个网格单元负责检测图像中的目标,并预测与其关联的边界框和类别。

3.Class confidence score(类别置信度得分):表示预测边界框中包含某个特定类别目标的概率得分。通常,类别置信度得分是预测类别概率中最大的值。

4.Non-maximum suppression(非极大值抑制):一种后处理技术,用于抑制多个重叠的边界框,只保留置信度最高的边界框。这样可以排除重复预测,并提高目标检测的准确性。

5.Intersection over Union (IoU)(交并比):用于衡量两个边界框之间重叠程度的指标。IoU计算为两个边界框交集区域面积除以它们的并集区域面积。

6.Backbone network(骨干网络):YOLO算法中用于提取图像特征的主要卷积神经网络。常见的主干网络包括Darknet、ResNet、EfficientNet等。

7.Loss function(损失函数):用于衡量预测边界框和真实边界框之间的差异的函数。YOLO算法通常使用组合损失函数,包括目标存在损失、边界框坐标损失和类别损失。

8.Region of Interest (RoI)(感兴趣区域):在YOLO算法中,感兴趣区域指的是具有较高可能性包含目标的区域。YOLO算法通过将网格单元与锚框相关联,将感兴趣区域缩小到边界框所在的位置。

9.Feature map(特征图):通过主干网络提取的图像特征。YOLO算法将特征图用于边界框和类别的预测。

10.Ground Truth bounding box(真实边界框,GT框),在目标检测任务中用于表示标注的目标位置和尺寸的矩形框。

11.多尺度融合(Multi-scale Fusion):多尺度融合是指在目标检测过程中使用不同尺度的特征来检测不同大小的目标。YOLO算法通过在不同层次的特征图上进行预测以实现多尺度的目标检测。

12.Feature Pyramid Network (FPN):Feature Pyramid Network是一种用于多尺度目标检测的网络结构。它通过在主干网络中引入上采样和下采样操作,构建了一个金字塔式的特征图结构。

13.bottleneckCSP模块:一种常用于目标检测模型的网络模块,它结合了bottleneck和CSP(Cross Stage Partial)结构。这个模块在YOLOv5中被用作backbone网络中的基本构建块。因此YOLOv5中的深度常用来指代该模块的数量。

14.concatenate(连接)操作:将几个特征子图连接在一起,形成一个更大的特征图。

15.SPP(Spatial Pyramid Pooling)空间金字塔池化:SPP的主要思想是在卷积层之后引入池化层,以不同尺度对特征图进行金字塔式的分割和池化。这样可以获得不同尺度的特征表示,并且不需要将特征图调整为固定大小。具体地说,SPP将输入特征图分割成不同尺度的子区域,并对每个子区域进行池化操作(例如最大池化)。然后,将每个尺度的池化结果连接(concatenate)形成一个固定长度的特征向量。这样,无论输入图像的尺寸如何,都可以得到具有相同长度的特征表示。

16.depth_multiple   控制网络的深度(BottleneckCSP数)。

17.width_multiple  控制网络的宽度(卷积核数量)。

18.focus层:YOLOv5中引入的一种特殊的卷积层。其作用是将输入的特征图进行切分、拼接和卷积操作,以提取更为丰富的特征表示。

19.Path-Aggregation Network 路径聚合网络:单独的一项技术,建议另行了解。

YOLOv5损失函数

YOLOv5的损失函数由classification loss + localization loss + confidence loss构成

损失函数检测量:

classification loss:由类别预测(Class Prediction)形成,YOLO的标签输出是不互斥的,它允许目标拥有多个标签

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值