【目标检测】SSD+yolo系列(v1-v7)

目录

SSD: Single Shot MultiBox Detector — 2016

YOLO V1 — 2016

YOLO V2 — 2017

YOLO V3 — 2018

YOLO V3 SPP

YOLO V4 — 2020 cvpr

YOLO V5

YOLOX 旷视 2021CVPR

yoloV6 — 2022美团

YOLOV7 — 2022

写在前面:一些自己的总结,特别感谢博主 霹雳吧啦Wz的个人空间_哔哩哔哩_Bilibili

SSD: Single Shot MultiBox Detector — 2016

【目标检测】SSD+yolo系列(v1-v7)
  • SSD先通过卷积不断进行特征提取,在需要检测物体的网络,直接通过一个33卷积得到输出,卷积的通道数由anchor数量和类别数量决定,具体为(anchor数量(类别数量+4))。
  • SSD对比了YOLO系列目标检测方法,不同的是SSD通过卷积得到最后的边界框,而YOLO对最后的输出采用全连接的形式得到一维向量,对向量进行拆解得到最终的检测框。
  • 和fast RCNN的区别:更容易检测小目标.

YOLO V1 — 2016

和同年的SSD还有之前的fast RCNN比,并没有优势。(推理速度不如SSD,精度不如SSD和fast RCNN)

【目标检测】SSD+yolo系列(v1-v7)

【目标检测】SSD+yolo系列(v1-v7)
  1. 将一个图像分成S*S个网格,如果object的中心落在这个网格,这个网格就负责预测目标。
  2. 每个网格要预测两个bbox,两个confidence、和C类的类别分数。(YOLO v1的特点:没有anchor, 多了confidence分数,这个分数实际包含了类别和框的综合置信度预测,在测试阶段也是有无物体的预测,又叫objectness)
  3. 为什么每个网格产生2个预测框?emm还不知道,但是推理时会选置信度更大的矩形框作为输出,也就是每个格子只能预测一个物体。导致多个物体中心落在同一格子的时候就不work。

yolov1缺点:

  1. 群体小目标检测不出
  2. 定位不准确(因为没用anchor)

YOLO V2 — 2017

在V1的基础上做了以下尝试:

  1. BN层。使用后mAP能涨2%,同时可以替代dropout防止过拟合的作用。
  2. 更高分辨率的分类器(输入图像),能有4%的提升
  3. 基于anchor的预测
  4. dimension cluster。通过聚类方法获得anchor的大小
  5. 限制bbox中心坐标的偏移量t,通过sigmoid函数映射到(0,1)。使边界框限制在grid里,网络更容易收敛。其中中心坐标初始定义在grid的左上角坐标。
  6. 低层特征和高层特征的深度拼接(passthrough layer)
  7. multiscale training。训练时输入不同图像的尺寸,每迭代10batch随机选择一个尺寸。{320,352,…,608} 隔32。(因为只有卷积层,可以不限制图像大小)
  8. 更改backbone为darknet-19:

DarkNet-19卷积神经网络与VGG的不同: 激活函数由ReLu转变为Leaky ReLu; 部分3×3卷积核转变为1×1卷积核,使用到了更小的卷积核; 新增批量归一化(batchnorm层); 不再单一的最大化池化,使用全局平均池化和最大池化组合使用。

YOLO V3 — 2018

V3将backbone改为了DarkNet-53(比同精度的resnet快)。DarkNet-53加深了网络层数,引入了Resnet中的跨层加和操作。

V3 有3个预测特征层,通过卷积在深度方向上拼接(和FPN的不同,FPN是相加),实现3个尺度预测。

目标边界框的预测和YOLO V2是一样的(见第5点)将预测边界框中心限定在当前cell中。

【目标检测】SSD+yolo系列(v1-v7)

正负样本的匹配:

  1. 和gt重合度最高的框,为正样本1
  2. 和gt重合度非最高,但超过了阈值(如0.5),丢弃
  3. 不属于1.2为负样本,只有objectness的loss
  4. 上述匹配的方式会使正样本很少,可以将例如iou>0.3且中心点都落在gt对应cell的框都认为是正样本。

YOLO V3 SPP

github上yolov3-spp-ultralytics比原版yolov3高了很多。其中一些trick如下:

  • Mosaic图像增强:随机选取4张图像拼接
  • 增加了数据多样性,增加Batch中的目标个数,BN层能统计到更多图片的参数,所求的均值方差越接近整个训练数据集的值。
  • SPP模块(和spp-net不同)。只加了一个SPP,也有SPP3的版本。输入通道是512,输出为512*4-2048
  • 损失: IOU LOSS — GIOU LOSS — DIOU LOSS — CIOU LOSS
  • IOUloss在不相交时为0,没法梯度回传计算损失
  • focal loss(在yolov3中效果不好):减少大量简单易分负样本的loss

YOLO V4 — 2020 cvpr

比yolov3提升了10%左右,但比yolov3-spp就没有提升那么多啦。

大致的改进是,backbone改为CSP+darknet53,neck加了SPP和PAN。

  1. CSPDarknet53: CSP结构是将原输入分成两个分支,分别进行卷积操作使得通道数减半,然后一个分支进行Bottleneck * N操作,然后concat两个分支,使得BottlenneckCSP的输入与输出是一样的大小,这样是为了让模型学习到更多的特征。
  2. Mish激活函数的表达式为 Mish = x*tanh(ln(1+e^x)) ,负值不是完全截断、激活函数无边界(避免了饱和)、平滑(梯度下降效果比较好)。实验结果优于Relu。
  3. PAN,先由高层向低层融合,再有低层向高层融合。层之间用的concatenate
  4. eliminate grid censitivity消除grid敏感度 : 坐标预测x,y值会经过一个逻辑回归将预测值拉到0-1范围,所以当预测的坐标值在每一个 _grid_的边界的时候,需要预测一个非常大的值。由此将sigmoid函数映射到(-0.5,1.5)就可以避免。(但是此时x,y有可能离开这个grid?)
  5. IOU 正样本选取优化:由于4的映射到(-0.5,1.5),所以一个gt的正样本并不只在它中心所在的grid,而是有可能扩展到上下左右的某两个,只要符合(-0.5,1.5)即可。
  6. 回归定位损失: CIOU

YOLO V5

论文截至目前还没发,ultralytics的代码库。

backbone:CSP-DARKNET53,但和yolov4有些区别

NECK:把SPP换成了SPPF,并行改成串行,效果是一样的但是效率更高。

数据增强策略:mosaic,仿射变换(随机平移、缩放等),MixUp(两张图按不同透明度混合),copy paste, HSV增强(色度明度饱和度),随机翻转。

训练策略:multi-scale training(32的整数倍,0.5~1.5x),autoanchor(根据标注重新生成anchor大小),warmup和cosine学习率,EMA,mixed precision混合精度训练(需要含有tensor core的GPU)。

和yolov4一样有消除grid敏感度的操作,同时把bw和bh公式也修改了,使anchor的缩放因子从0,∞ 改为(0,4)。

YOLOX 旷视 2021CVPR

有SMLX的几个模型,对标yolov5。YOLOX-L中,backbone和neck和YOLOV5-L-5.0是一样的。

三大重点:

1. anchor free

借鉴FCOS,不同的是head在每个位置处直接预测4个目标边界框参数,这4个参数分别对应预测目标中心点相对Grid Cell左上角的偏移量,以及目标的宽度、高度因子。这些值都是相对预测特征图尺度上的,如果要映射回原图需要乘上当前特征图相对原图的步距stride。

anchor free和decoupled head其实是一体的,具体看下面的Head图。

2. Decoupled Head

【目标检测】SSD+yolo系列(v1-v7)
  1. 正负样本匹配策略SimOTA(Optimal Transport Assignment)

目标是怎样以最低的成本(cost)将GT分配给对应的样本。成本cost由分类损失和回归损失两部分组成,并且网络预测的类别越准确cost越小,网络预测的目标边界框越准确cost越小。最小化cost可以理解为让网络以最小的学习成本学习到有用的知识。

yoloV6 — 2022美团

来自美团视觉智能部研发的一款致力于工业应用的目标检测框架,精度与速度超过 YOLOv5 和 YOLOX。yoloV6基于硬件感知神经网络设计的思想,对 Backbone 和 Neck 进行了重新设计和优化,称为 EfficientRep Backbone 和 Rep-PAN Neck。总体是对基于硬件的算子优化。

YOLOV7 — 2022

从内存访问成本的特点出发,分析了 输入/输出通道比架构的分支数量以及 element-wise 操作对网络推理速度的影响。

引入高效长程注意力网络Extended-ELAN、重新参数化卷积 _(Planned re-parameterized convolution)、_设计新的标签分配等。都是没接触过的,有时间去了解一下。

Original: https://blog.csdn.net/weixin_40849121/article/details/125759025
Author: 苏不不
Title: 【目标检测】SSD+yolo系列(v1-v7)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/682661/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球