【目标检测】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的方式。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值