当前位置: 首页 > news >正文

YOLO系列面试冲刺

YOLO系列面试冲刺

  • YOLOV3
    • 网络结构简述
    • 为什么Darknet-53相比于同时期更深层的网络ResNet-101、ResNet-152效果更好些呢?
    • 样本分配策略
    • 损失函数
    • 改进点
      • 1. YOLOv1/v2中使用IoU作为置信度标签有何不好?
  • YOLOV4
    • 改进点
      • 马赛克(Mosaic)数据增强:
      • Mish激活函数
      • PAN_FPN
      • 样本分配策略
      • 损失函数
  • YOLOV5
    • 改进点
      • 自适应 Anchor 计算
      • 激活函数
      • 损失函数
      • focus结构
      • 训练速度更快
  • YOLOV8
    • 改进点
      • anchor free
      • 为配合Anchor-Free、以及提升泛化性,在v8中,增加了DFL损失, 使用Decoupled-Head
      • 样本分配策略

YOLOV3

参考面试问题总结——关于YOLO系列(三)

网络结构简述

Backbone(骨干网络):Darknet-53网络结构(因为有53个卷积层)
(原论文中Darknet53的尺寸是在图片分类训练集上训练的,所以输入的图像尺寸是256x256,而在YOLOv3中输入尺寸是416×416)
(因为Backbone骨干网络是全卷积网络,可以兼顾任意尺度的输入,则可以输入32倍的任意尺度图像。所以对于YOLOv3来说,输入的图像越大,则单张输出的特征数也越多。)

Neck(颈部网络):用于汇总、融合不同尺度的特征,类似于FPN(特征金字塔)

Head(输出头):获得各个尺度目标检测的预测结果。输入是416×416,输出了三个尺寸的特征层52×52、26×26、13×13。作者在三个特征层上分别用了3个预设边界框的尺寸,一共是9个anchor boxes,都是根据COCO数据集聚类得到的。

为什么Darknet-53相比于同时期更深层的网络ResNet-101、ResNet-152效果更好些呢?

  在两个模型的主干网络中,我发现基本都是通过一系列的残差结构堆叠来实现的主干网络,唯一不同的是Darknet-53网络中没有最大池化层即Maxpooling层,而Darknet-53中所有的下采样基本都是通过卷积层来实现的,我猜想是这个原因。

样本分配策略

    YOLOV3使用MaxIoUAssigner策略来给gt分配样本,基本上保证每个gt都有唯一的anchor对应。匹配的原则是该anchor与gt的IOU最大且大于FG_THRESH,这种分配制度会导致正样本比较少,cls和bbox分支训练起来可能比较慢。在剩余的anchor中,如果有anchor跟所有gt的IOU都小于BG_THRESH,则将此类anchor设为负样本,如果有anchor跟所有gt的IOU大于BG_THRESH且小于FG_THRESH,则忽视掉此类anchor。

另一种说法:
  在原论文中,针对每一个ground truth(简称GT,真值,就是你打标签时标注的目标矩形框),都会分配一个bounding box,表示针对每一个GT,都会分配一个正样本,则一张图片有几个GT,就会有几个正样本。
  YOLOv3中正负样本的定义:YOLOv3中就不再看中心点落在哪个grid cell(网格)里面就由哪个grid cell预测了,而是看谁的anchor与待检测目标的grouth truth的iou值最大,才由那个anchor去预测,也就是在YOLOv3里面正样本是指与grouth truth的iou值最大的预测框或anchor,对于和grouth truth有iou值且大于设定iou阈值(原论文中设为0.5)但不是最大值的预测框或anchor,就忽略它们;对于小于设定iou阈值的预测框或anchor而言就是负样本。
  此外,在原论文中也提到,对于当前的bounding box,若其不是正样本的话,则它既没有定位损失,也没有类别损失,仅仅只有置信度损失(confidence loss)。

损失函数

在这里插入图片描述

YOLOv3的损失函数主要分为三个部分:目标定位偏移量损失,目标置信度损失以及目标分类损失,其中λ1、λ2、λ3是平衡系数。
在这里插入图片描述
原论文中损失函数写的很粗略,比如坐标损失采用的是误差的平方和,类别损失采用的是二值交叉熵,在github上也找了很多YOLO v3的公开代码,有的采用的是YOLOv1或者YOLOv2的损失函数。
在这里插入图片描述
(二值交叉熵):y为样本的期望输出,y^为样本的实际输出

改进点

1. YOLOv1/v2中使用IoU作为置信度标签有何不好?

①很多预测框与ground truth的IoU最高只有0.7。
②COCO中的小目标IoU对像素偏移很敏感无法有效学习。
而在YOLOv3中正样本的标签都用1表示,负样本用0表示。只有正样本对分类和定位学习产生贡献(与YOLOv1和YOLOv2思想一致),负样本只对置信度学习产生贡献。

YOLOV4

参考
yolov4算法及其改进

改进点

马赛克(Mosaic)数据增强:

在这里插入图片描述

首先随机取4张图片,分别对4张图片进行数据增广操作,并分别粘贴至与最终输出图像大小相等的掩模的对应位置,进行图片的组合和框的组合
优点:
丰富数据集:使用4张图片,随机缩放,随机分布进行拼接,大大丰富了目标检测的数据集,增加了很多小目标,让网络模型对小目标的稳健性变的更好。
减少GPU使用:mosaic增强训练时,可以在单图像尺度的情况下直接计算4张图片的数据,使得mini-batch size并不需要很大,即使用1个GPU就可以达到比较好的收敛效果

Mish激活函数

在这里插入图片描述

mish激活函数是自带正则的非单调激活函数,平滑的激活函数可以让模型获得更好的非线性,从而得到更好的准确性和泛化,Mish激活函数的数学表达式如上式。

首先函数和relu一样都是无正向边界的,可以避免梯度饱和,其次,mish函数时光滑的,并且在绝对值较小的负值区域允许一些负值。

注意,mish激活函数的计算复杂度比relu要高,在计算资源不足的情况下,可以考虑使用leakyrelu激活函数代替mish激活函数
在这里插入图片描述

PAN_FPN

FPN是自顶向下将高层的强语义特征传递下来,对整个特征金子塔进行增强,但是FPN只增强语义信息,对定位信息没有很好的传递,因此YOLOV4增加了PAN来增强定位信息的传递。

FPN+PAN借鉴的是PANet,主要应用于图像分割领域,如上图所示,FPN采用自顶向下,将高层的强语义特征传递下来,而PAN+FPN针对这一点,在FPN的后面添加一个自底向上的金字塔,这样的操作是对FPN的补充,将底层的强定位特征传递上去。这样不仅能增强高级语义信息,还能增强定位信息。
在这里插入图片描述

样本分配策略

yolov4为了增加正样本,采用multi anchor策略,只要大于IoU阈值的anchor,都视为正样本

损失函数

使用CIoU损失
详解各种iou损失函数的计算方式(iou、giou、ciou、diou)

YOLOV5

改进点

自适应 Anchor 计算

在 YOLOv3、YOLOv4 中,训练不同的数据集时,计算初始 Anchor 的值是通过单独的程序运行的。但 YOLOv5 中将此功能嵌入到代码中,每次训练时会自适应的计算不同训练集中的最佳 Anchor 值。

激活函数

leakyReLU和Sigmoid

损失函数

yolov5中的边界框损失前期采用的是GIoU Loss,后期使用CIoU Loss,yolov4中采用的是CIoU Loss,与其他方法相比,CIoU带来了更快的收敛和更好的性能。

focus结构

参考YOLOv5中的Focus层详解|CSDN创作打卡
Focus层原理和PassThrough层很类似。它采用切片操作把高分辨率的图片(特征图)拆分成多个低分辨率的图片/特征图,即隔列采样+拼接。原理图如下:
在这里插入图片描述

原始的640 × 640 × 3的图像输入Focus结构,采用切片(slice)操作,先变成320 × 320 × 12的特征图,拼接(Concat)后,再经过一次卷积(CBL(后期改为SiLU,即为CBS))操作,最终变成320 × 320 × 64的特征图。

Focus层将w-h平面上的信息转换到通道维度,再通过3*3卷积的方式提取不同特征。采用这种方式可以减少下采样带来的信息损失 。
在这里插入图片描述

训练速度更快

YOLOV8

改进点

anchor free

用离散分布的期望值分别去计算anchor center与四条边的距离

为配合Anchor-Free、以及提升泛化性,在v8中,增加了DFL损失, 使用Decoupled-Head

回归头的通道数也变成了4*reg_max的形式
在这里插入图片描述

样本分配策略

在Task Alignment Learning(TAL)中,正负样本的分配机制是通过任务对齐度量 t 来实现的。以下是详细的分配过程:

  1. 任务对齐度量 t 的计算
    任务对齐度量 t 是通过分类得分 s 和IoU值 μ 的加权组合来衡量锚框的任务对齐程度:
    t=s α ×μ β
    其中:
    s 是锚框的分类得分。
    μ 是锚框与真实框(GT box)的IoU值。
    α 和 β 是超参数,用于控制分类和定位任务的权重。
  2. 正样本的分配
    对于每个真实框(GT box),选择具有最大 t 值的 m 个锚框作为正样本。这里的 m 是一个超参数,用于控制每个GT框分配的正样本数量。
  3. 负样本的分配
    未被选为正样本的锚框则被分配为负样本。
  4. 重复分配的处理
    如果一个锚框被多个GT框同时分配为正样本,则选择与该锚框具有最大IoU值的GT框作为其最终的正样本。
  5. 过滤负样本
    通过任务对齐度量 t,可以进一步过滤掉那些虽然在GT框内部但IoU值或分类得分较低的锚框,确保负样本的质量。
    总结
    TAL通过任务对齐度量 t 动态地选择高质量的正样本,并过滤掉低质量的负样本,从而提高分类和定位任务之间的一致性。这种机制使得模型能够更专注于那些分类得分高且定位准确的锚框,从而提升整体性能。
http://www.xdnf.cn/news/90415.html

相关文章:

  • 深入理解无监督学习:探索数据的潜在结构
  • 基于TCP的协议
  • (数论)Lucas定理
  • linux 手动触发崩溃
  • 多头注意力(Multi‑Head Attention)
  • 鸣潮赞妮技能机制解析 鸣潮赞妮配队推荐
  • 路由交换网络专题 | 第六章 | OSPF | BGP | BGP属性 | 防环机制
  • RS232借助 Profinet网关与调制解调器碰撞出的火花
  • 探秘云原生架构:概念、技术、设计与反模式深度解读
  • strlen参数不匹配编译报错处理
  • 前端做模糊查询(含AI版)
  • 操作系统——堆与栈详解:内存结构全面科普
  • 电商平台比价 API 接口,避免人工比价的低效与误差
  • Mellanox网卡qos设置
  • window如何关闭指定端口
  • 嵌入式人工智能应用-第三章 opencv操作8 图像特征之LBP特征 下
  • 【C++游戏引擎开发】第20篇:基于物理渲染(PBR)——辐射度量学
  • 如何一键提取多个 PPT 幻灯片中的备注到 TXT 记事本文件中
  • 爱普生FC-12M晶振在车载系统中广泛应用
  • Spring事件机制,如何使用Spring事件监听器
  • Vue 实例 VM 访问属性
  • 【MySQL】索引失效问题详解
  • STM32单片机入门学习——第46节: [14-1] WDG看门狗
  • 怎样用 esProc 提速主子表关联时的 EXISTS
  • 利用参考基因组fa和注释文件gff提取蛋白编码序列
  • 定义python中的函数和类
  • SVT-AV1编码器中的模块
  • 如何收集用户白屏/长时间无响应/接口超时问题
  • linux命令集
  • 来啦,烫,查询达梦表占用空间