【目标检测】YOLO系列总结

YOLO系列总结反思

回顾了一下之前看过的YOLO系列,本来想自己从头写一个博客,后来发现大佬都写的极其好了,就变成了阅读笔记。

深度学习论文学习流程:

  • 首先搜索一下相关的论文讲解
  • 在对原论文进行学习
  • 代码核心部分:
    • 网络搭建
    • 数据处理
    • loss

YOLO系列理论:

各个系列的YOLO资源如下:

01 YOLOV1

  • YOLO系列-霹雳吧啦Wz

    • 很好的初步理解,并且可以结合原文有一下补充讲解。
  • YOLOV1-木盏

    • 输入图片划分为

      7

      ×

      7

      7 \times 7

      7×7网格,对每个网格单独进行检测,但是这里有一个问题就是YOLO为什么能够检测比Grid_Cell(网格)大很多的物体?

      • 其实YOLO的做法并不是把每个单独的网格输入到模型,而是在训练阶段通过网格对物体的中心点位置进行划分之用,没有对网络进行切片(网格没有脱落整体关系)
    • 网络结构基本思想是:预测位置、大小及物体分类都是通过CNN暴力Predict预测出来的。

    • YOLOV1总体价值

      • L

        e

        a

        k

        y

        R

        e

        L

        U

        Leaky-ReLU

        LeakyReLU:不会直接让负数为0,但会衰减负数的输出

        y

        =

        {

        x

        x

        >

        0

        0.1

        x

        o

        t

        h

        e

        r

        w

        i

        s

        e

        y = \begin{cases} x &x>0 \\ 0.1x&otherwise \\ \end{cases}

        y={x0.1xx>0otherwise

      • 分而治之:用网络来划分图片区域,每块区域独立检测目标

      • 端到端的训练:损失函数的反向传播可以贯彻整个网络,这本身也是One-Stage检测方法的游戏

  • YOLOv1-小小小绿叶

    • YOLOV1的思路:直接在输出层回归Bouding box的位置和Bounding Box所属的类别(整张图作为Inputs,将目标检测问题转换为一个回归的问题)
    • 最后输出

      7

      ×

      7

      ×

      30

      7 \times 7 \times 30

      7×7×30 是因为每个网格预测2个bounding box 的(x, y, w, h, confidence)及20个概率类别(通用公式: SxS个网格,每个网格要预测B个bounding box还要预测C个categories,输出就是S x S x (5×B+C)的一个tensor。 注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的)

02 YOLOV2

  • YOLO系列-霹雳吧啦Wz

    • 能够比较直接简单的理解YOLOv2模型,但是还是需要进一步看一些其他博客和原文进行补充。
  • YOLOV2-木盏

    • Batch Normalization:模型收敛带来显著的提升,并且同时消除其他正则化的必要。
    • High Resolution Classifier:输入图形分辨率的提升问题,显著来看是必然的。
    • Anchor机制的引入:但是对其理解还是需要在看一下其他博客(主要是看看Faster-Rcnn的讲解)
    • Direct location prediction: 可以参照霹雳吧啦的视频讲解
  • YOLOv2-小小小绿叶

    • PassThrough:

03 YOLOV3

  • YOLO系列-霹雳吧啦Wz

    • 能够比较直接简单的理解YOLOv2模型,但是还是需要进一步看一些其他博客和原文进行补充。
      • 附带了IOU系列和 Focal Loss的讲解
  • YOLOV3-江大白

  • YOLOV3-木盏

    • YOLO系列的每一代提升,很大一部分取决于BackBone网络的提升
    • BackBone:整个V3的结果是没有池化层和全连接层的
      • 前向传播过程,张量的尺寸变换是通过改变卷积核的步长来实现(充当池化层的作用,相较于YOLOV2)
    • OutPut:预测头的改进
      • YOLOV3每个网格预测3个Box,所以每个Box需要(x, y, w, h, confidence)五个基本参数和80个类别概率,所以

        3

        ×

        (

        5

        +

        80

        )

        =

        255

        3 \times(5+80) = 255

        3×(5+80)=255

      • YOLOV1的输出头是

        (

        7

        ×

        7

        ×

        30

        )

        (7\times7 \times30)

        (7×7×30) ,只能识别20个物体,每个网格只能预测2个box

  • YOLOv3-小小小绿叶

04 YOLOV3-SPP

05 YOLOV4

  • YOLOv4-小小小绿叶
  • YOLOV4-江大白
    • 输入端:这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练
      • ​ Augmentation for small object detection一文中对大中小目标进行了区分
    • **BackBone主干网络:**将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、Dropblock
    • Neck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块FPN+PAN结构
      • 在YOLOV4中

        76

        ×

        76

        76 \times 76

        76×76

        38

        ×

        38

        38 \times 38

        38×38

        19

        ×

        19

        19 \times 19

        19×19 分别对应最小、中等及最大的Anchor Box

    • Prediction:输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms

06 YOLOV5

  • YOLOv5-小小小绿叶

    • Focus:是不是和YOLOV2中的PassThrought类似?
  • YOLOV4-江大白

    • 自适应锚框:Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。

    • 小目标检测问题(这里有个感受野计算的问题):

      • 以网络的输入608*608为例,yolov3、yolov4,yolov5中下采样都使用了5次,因此最后的特征图大小是19*19,38*38,76*76。

      • 三个特征图中,最大的7676负责检测小目标,而对应到608608上,每格特征图的感受野是608/76=8*8大小。

      • 再将608608对应到76802160上,以最长边7680为例,7680/608*8=101。

        即如果原始图像中目标的宽或高小于101像素,网络很难学习到目标的特征信息。

07 YOLOX

  • YOLOX-江大白
    • **输入端:**Strong augmentation数据增强
      • 最后几个epoch时Moasic、Mixup增强都会被关掉(由于采取了更强的数据增强方式,作者在研究中发现,ImageNet预训练将毫无意义,因此,所有的模型,均是从头开始训练的。
    • **BackBone主干网络:**主干网络没有什么变化,还是Darknet53。
    • Neck:没有什么变化,Yolov3 baseline的Neck层还是FPN结构。
    • Prediction:Decoupled Head、End-to-End YOLO、Anchor-free、Multi positives
      • Decoupled Head:只是概率Head部分的网络结构就可了吗?
      • Anchor-Free:
        • 同样输入大小下,参数量减少了

          2

          /

          3

          2/3

          2/3

        • 怎么实现预测的?需要反复去理解
    • Yolov5s和Yolox-s主要区别
      • **输入端:**在Mosa数据增强的基础上,增加了Mixup数据增强效果;
      • **Backbone:**激活函数采用SiLU函数;
      • **Neck:**激活函数采用SiLU函数
      • **输出端:**检测头改为Decoupled Head、采用anchor free、multi positives、SimOTA的方式。

版权声明:本文为CSDN博主「你好啊:)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Leomn_J/article/details/121773986

你好啊:)

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐