文章目录

  • YOLO系列总结:YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX
    • 前言
    • YOLO v1: You Only Look Once: Unified, Real-Time Object Detection
      • 简介
      • 网络简介
      • 优缺点
        • 优点
        • 缺点
    • YOLO v2: YOLO9000: Better, Faster, Stronger
      • 简介
      • 网络简介
      • 网络改进
        • 1. Batch Normalization
        • 2. High resolution classifier(高分辨率图像分类器)
        • 3. Convolution with anchor boxes(使用先验框)
        • 4. Dimension clusters(聚类提取先验框的尺度信息)
        • 5. Direct location prediction(约束预测边框的位置)
        • 6. Fine-Grained Features(passthrough层检测细粒度特征)
        • 7. Multi-ScaleTraining(多尺度图像训练)
        • 8. Darknet-19(backbone网络)
        • 9. Hierarchical classification(分层分类)
    • YOLOv3: An Incremental Improvement
      • 简介
      • 网络介绍
      • 网络改进
        • 简述
        • 1. Darknet-53
        • 2. 边框回归
        • 3. 多尺度预测:更好地对应不同大小的目标物体
        • 4. ResNet残差结构:更好地获取物体特征
        • 5. 替换softmax层:对应多重label分类
      • 常见问题
        • YOLOv3为什么不使用Softmax对每个框进行分类?
        • Bounding box的预测公式中,为什么使用sigmoid函数呢?
    • YOLO v4: Optimal Speed and Accuracy of Object Detection
      • 简介
      • 网络结构
      • 网络改进
        • 简述
        • 1. BackBone:CSPDarknet53
        • 2. Neck:SPP+PAN
        • 4. CutMix数据增强和马赛克(Mosaic)数据增强
        • 5. DropBlock正则化
    • YOLO v5
      • 简介
      • 优点
    • YOLO X: Exceeding YOLO Series in 2021
      • 简介
      • 网络改进
        • 简述
        • 1. Decoupled Head 解耦头
        • 2. Mosaic + Mixup 数据增强
        • 3. Anchor-free
        • 4. Multi positives
        • 5. SimOTA
        • 6. End-to-End YOLO

YOLO系列总结:YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX

前言

本文主要是对YOLO系列的网络结构总结、优缺点和改进分析,主要包括YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX6个网络

YOLO v1: You Only Look Once: Unified, Real-Time Object Detection

简介

论文下载:https://arxiv.org/abs/1506.02640

代码下载:https://github.com/pjreddie/darknet

核心思想: 将整张图作为网络的输入,直接在输出层对BBox的位置和类别进行回归。

网络简介

因为YOLO v1时间比较长了,也就不多讲网络了,大概说一下网络的主要逻辑:

(1) 给个一个输入图像,首先将图像划分成7×77 \times 77×7的网格

(2) 对于每个网格,我们都预测222个边框(包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率)

(3) 根据上一步可以预测出7×7×27 \times 7 \times 27×7×2个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可

优缺点

优点

  • 快速,pipline简单.
  • 背景误检率低。
  • 通用性强。YOLO v1对于艺术类作品中的物体检测同样适用。它对非自然图像物体的检测率远远高于DPMRCNN系列检测方法。

缺点

  • 由于输出层为全连接层,因此在检测时,YOLO v1训练模型只支持与训练图像相同的输入分辨率。
  • 虽然每个格子可以预测BBB个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是YOLO v1方法的一个缺陷。
  • YOLO v1 loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题)。因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性

YOLO v2: YOLO9000: Better, Faster, Stronger

简介

论文下载:https://arxiv.org/abs/1612.08242

代码下载:https://github.com/yjh0410/yolov2-yolov3_PyTorch

核心思想

  • 该论文使用一种新颖的多尺度训练方法YOLOv2可以在不同的尺寸下运行,在速度和精度之间提供了一个简单的权衡。在67FPS67 FPS67FPS的情况下,YOLO v2在VOC 2007上获得76.876.876.8mAP。在40FPS40 FPS40FPS的情况下,YOLO v2获得78.678.678.6 mAP。
  • 最后提出了一种目标检测与分类的联合训练方法,利用该方法在COCO检测数据集和ImageNet分类数据集上同时训练YOLO 9000,它可以预测900090009000多种不同的物体类别的检测结果

网络简介

YOLO v2相对v1版本,在继续保持处理速度的基础上,从预测更准确(Better)速度更快(Faster),**识别对象更多(Stronger)**这三个方面进行了改进。其中识别更多对象也就是扩展到能够检测900090009000种不同对象,称之为YOLO 9000

文章提出了一种新的训练方法–联合训练算法,这种算法可以把这两种的数据集混合到一起。使用一种分层的观点对物体进行分类,用巨量的分类数据集数据来扩充检测数据集,从而把两种不同的数据集混合起来。

联合训练算法的基本思路就是:同时在检测数据集和分类数据集上训练物体检测器(Object Detectors ),用检测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升健壮性。

YOLO9000就是使用联合训练算法训练出来的,他拥有900090009000类的分类信息,这些分类信息学习自ImageNet分类数据集,而物体位置检测则学习自COCO检测数据集。

网络改进

YOLO v2相比于 YOLO v1的改进如下:

1. Batch Normalization

mAP提升2.4%2.4\%2.4%

关于BN的详细信息,感兴趣的可以看本人专栏深度学习基础下的深度学习七 —— BN & LN & IN & GN
这里不多做讲述

2. High resolution classifier(高分辨率图像分类器)

mAP提升了3.7%3.7\%3.7%

图像分类的训练样本很多,而标注了边框的用于训练对象检测的样本相比而言就比较少了,因为标注边框的人工成本比较高。所以对象检测模型通常都先用图像分类样本训练卷积层,提取图像特征。但这引出的另一个问题是,图像分类样本的分辨率不是很高。所以YOLO v1使用ImageNet的图像分类样本采用 224×224224 \times 224224×224 作为输入,来训练CNN卷积层。然后在训练对象检测时,检测用的图像样本采用更高分辨率的 448×448448 \times 448448×448 的图像作为输入。但这样切换对模型性能有一定影响。

所以YOLO v2在采用 224×224224 \times 224224×224 图像进行分类模型预训练后,再采用 448×448448 \times 448448×448 的高分辨率样本对分类模型进行微调(101010个epoch),使网络特征逐渐适应 448×448448 \times 448448×448 的分辨率。然后再使用 448×448448 \times 448448×448 的检测样本进行训练,缓解了分辨率突然切换造成的影响。

3. Convolution with anchor boxes(使用先验框)

召回率大幅提升到88%88\%88%,同时mAP轻微下降了0.20.20.2左右。

YOLO v1包含有全连接层,从而能直接预测Bounding Boxes的坐标值。 Faster R-CNN的方法只用卷积层与Region Proposal Network来预测Anchor Box的偏移值与置信度,而不是直接预测坐标值。作者发现通过预测偏移量而不是坐标值能够简化问题,让神经网络学习起来更容易

借鉴Faster RCNN的做法,YOLO v2也尝试采用先验框(anchor)。在每个grid预先设定一组不同大小和宽高比的边框,来覆盖整个图像的不同位置和多种尺度,这些先验框作为预定义的候选区在神经网络中将检测其中是否存在对象,以及微调边框的位置。

之前YOLO v1并没有采用先验框,并且每个grid只预测222个bounding box,整个图像989898个。YOLO v2如果每个grid采用999个先验框,总共有13×13×9=152113 \times 13 \times 9=152113×13×9=1521个先验框。所以最终YOLO v2去掉了全连接层,使用Anchor Boxes来预测 Bounding Boxes。作者去掉了网络中一个Pooling层,这让卷积层的输出能有更高的分辨率。收缩网络让其运行在416×416416 \times 416416×416 而不是448×448448 \times 448448×448。

由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,所以有一个单独位于物体中心的位置用于预测这些物体。YOLO v2的卷积层采用323232这个值来下采样图片,所以通过选择416×416416 \times 416416×416用作输入尺寸最终能输出一个13×1313 \times 1313×13的Feature Map。 使用Anchor Box会让精度稍微下降,但用了它能让YOLO v2能预测出大于一千个框,同时recall从81%81\%81%达到88%88\%88%,mAP达到69.2%69.2\%69.2%。

召回率升高,mAP轻微下降的原因是: 因为YOLO v2不使用anchor boxes时,每个图像仅预测989898个边界框。但是使用anchor boxes,YOLO v2模型预测了一千多个框,由于存在很多无用的框,这就导致了mAP值的下降。但是由于预测的框多了,所以能够预测出来的属于ground truth的框就多了,所以召回率就增加了。目标检测不是只以mAP为指标的,有些应用场景下要求召回率高。

4. Dimension clusters(聚类提取先验框的尺度信息)

之前Anchor Box的尺寸是手动选择的,所以尺寸还有优化的余地。 YOLO v2尝试统计出更符合样本中对象尺寸的先验框,这样就可以减少网络微调先验框到实际位置的难度。YOLO v2的做法是对训练集中标注的边框进行K-mean聚类分析,以寻找尽可能匹配样本的边框尺寸

关于K-Means聚类的详细内容,有需要可以看本人专栏 图像算法 中的图像算法六 —— K-Means和KNN

5. Direct location prediction(约束预测边框的位置)

借鉴Faster RCNN的先验框的方法,在训练的早期阶段,其位置预测容易不稳定。位置预测公式通常为:

x=(tx×wa)+xax = (t_x \times w_a) + x_ax=(tx​×wa​)+xa​

y=(ty×ha)+yay = (t_y \times h_a) + y_ay=(ty​×ha​)+ya​

其中,

x,yx, yx,y——预测边框的中心,

xa,yax_a, y_axa​,ya​——anchor的中心点坐标,

wa,haw_a, h_awa​,ha​——anchor的宽和高,

tx,tyt_x, t_ytx​,ty​——学习的参数。

注意YOLO中用的是x=(tx×wa)−xax = (t_x \times w_a) - x_ax=(tx​×wa​)−xa​,Fasteer RCNN中用的是+++。

由于 tx,tyt_x, t_ytx​,ty​ 的取值没有任何约束,因此预测边框的中心可能出现在任何位置,训练早期阶段不容易稳定。

YOLO v2调整了预测公式,将预测边框的中心约束在特定gird网格内,如下图所示:

其中,

bx,by,bw,bhb_x, b_y, b_w, b_hbx​,by​,bw​,bh​——预测框的中心点和宽高,

cx,cyc_x, c_ycx​,cy​——当前网格左上角到图像左上角的距离,

σ\sigmaσ——sigmoidsigmoidsigmoid函数,

tx,ty,pw,pht_x, t_y, p_w, p_htx​,ty​,pw​,ph​——学习参数,用于预测边框的中心和宽高。

因为使用了限制让数值变得参数化,也让网络更容易学习、更稳定

6. Fine-Grained Features(passthrough层检测细粒度特征)

passthrough层检测细粒度特征使mAP提升1%1\%1%。

对象检测面临的一个问题是图像中对象会有大有小,输入图像经过多层网络提取特征,最后输出的特征图中(比如YOLO v2中输入416×416416 \times 416416×416经过卷积网络下采样最后输出是13×1313 \times 1313×13),较小的对象可能特征已经不明显甚至被忽略掉了。

为了更好的检测出一些比较小的对象,最后输出的特征图需要保留一些更细节的信息

YOLO v2引入一种称为passthrough层的方法在特征图中保留一些细节信息。

具体来说,就是在最后一个pooling之前,特征图的大小是26×26×51226 \times 26 \times 51226×26×512,将其111拆444,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。

另外,根据YOLO v2的代码,特征图先用1×11 \times 11×1卷积从 26×26×51226 \times 26 \times 51226×26×512 降维到 26×26×6426 \times 26 \times 6426×26×64,再做111拆444并passthrough。

7. Multi-ScaleTraining(多尺度图像训练)

作者希望YOLO v2健壮的运行于不同尺寸的图片之上,所以把这一想法用于训练model中。

区别于之前的补全图片的尺寸的方法YOLO v2每迭代几次都会改变网络参数。每101010个Batches,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是323232,所以不同的尺寸大小也选择为323232的倍数320,352…..608{320,352…..608}320,352…..608,最小320×320320 \times 320320×320,最大608×608608 \times 608608×608,网络会自动改变尺寸,并继续训练的过程。

这一政策让网络在不同的输入尺寸上都能达到一个很好的预测效果同一网络能在不同分辨率上进行检测。当输入图片尺寸比较小的时候跑的比较快,输入图片尺寸比较大的时候精度高,所以你可以在YOLO v2的速度和精度上进行权衡。

8. Darknet-19(backbone网络)

Darknet-19有191919个卷积层和555个maxpooling层,采用全局平均池化的方法进行预测,并采用 1×11 \times 11×1 卷积来压缩 3×33 \times 33×3 卷积之间的特征表示。使用批处理归一化来稳定训练,加快收敛速度,并对模型进行规范化。

9. Hierarchical classification(分层分类)

作者提出了一种在分类数据集和检测数据集上联合训练的机制。使用检测数据集的图片去学习检测相关的信息,例如bounding boxes 坐标预测,是否包含物体以及属于各个物体的概率。使用仅有类别标签的分类数据集图片去扩展可以检测的种类。

作者通过ImageNet训练分类、COCO和VOC数据集来训练检测,这是一个很有价值的思路,可以让我们达到比较优的效果。 通过将两个数据集混合训练,如果遇到来自分类集的图片则只计算分类的Loss,遇到来自检测集的图片则计算完整的Loss。

但是ImageNet对应分类有900090009000种,而COCO则只提供808080种目标检测,作者使用multi-label模型,即假定一张图片可以有多个label,并且不要求label间独立。

通过作者Paper里的图来说明,由于ImageNet的类别是从WordNet选取的,作者采用以下策略重建了一个树形结构(称为分层树):

  1. 遍历Imagenet的label,然后在WordNet中寻找该label到根节点(指向一个物理对象)的路径;
  2. 如果路径直有一条,那么就将该路径直接加入到分层树结构中;
  3. 否则,从剩余的路径中选择一条最短路径,加入到分层树。

这个分层树我们称之为 WordTree,作用就在于将两种数据集按照层级进行结合

YOLOv3: An Incremental Improvement

简介

论文下载:https://arxiv.org/abs/1804.02767

代码下载:https://github.com/yjh0410/yolov2-yolov3_PyTorch

核心思想

YOLO v3的核心思想在于多尺度的预测,也就是使用三种不同的网格来划分原始图像。其中13×1313 \times 1313×13的网格划分的每一块最大,用于预测大目标。26×2626 \times 2626×26的网格划分的每一块中等大小,用于预测中等目标。52×5252 \times 5252×52的网格划分的每一块最小,用于预测小目标。

网络介绍

由于原作者并没有给出网络图,就自己画了一个网络图,有问题请大家指正。

网络改进

简述

  • 多尺度预测 (引入FPN)。
  • 更好的基础分类网络(darknet-53, 类似于ResNet引入残差结构)。
  • 分类器不在使用Softmax,分类损失采用binary cross-entropy loss(二分类交叉损失熵)

1. Darknet-53

下图是Darknet-53的网络结构图

  • 此结构主要由535353个卷积层构成,卷积层对于分析物体特征最为有效。由于没有使用全连接层,该网络可以对应任意大小的输入图像。

  • 此外,池化层也没有出现在其中,取而代之的是将卷积层设置stride=2stride=2stride=2来达到下采样的效果,同时将尺度不变特征传送到下一层。

  • 除此之外,Darknet-53中还使用了类似ResNet的结构

2. 边框回归

一个回归框是由444个参数决定—— x,y,w,hx, y, w, hx,y,w,h 。YOLO v3是在训练的数据集上聚类产生prior boxes的一系列宽高(是在图像416×416416 \times 416416×416的坐标系里),默认999种。YOLO v3思想理论是将输入图像分成S×SS \times SS×S个格子(有三处进行检测,分别是在52×5252 \times 5252×52, 26×2626 \times 2626×26, 13×1313 \times 1313×13的feature map上,即SSS会分别为52,26,1352,26,1352,26,13),若某个物体Ground truth的中心位置的坐标落入到某个格子,那么这个格子就负责检测中心落在该栅格中的物体。
三次检测,每次对应的感受野不同:

  • 323232倍降采样的感受野最大(13×13)(13 \times 13)(13×13),适合检测大的目标,每个cell的333个anchor boxes为(116,90),(156,198),(373,326)(116 ,90),(156 ,198),(373 ,326)(116,90),(156,198),(373,326)。
  • 161616 倍 (26×26)(26 \times 26)(26×26)适合一般大小的物体,anchor boxes为(30,61),(62,45),(59,119)(30,61), (62,45),(59,119)(30,61),(62,45),(59,119)。
  • 888倍的感受野最小(52×52)(52 \times 52)(52×52),适合检测小目标,因此anchor boxes为(10,13),(16,30),(33,23)(10,13), (16,30), (33,23)(10,13),(16,30),(33,23)。

所以当输入为416×416416 \times 416416×416时,实际总共有(52×52+26×26+13×13)×3=10647(52 \times 52+26 \times 26+13 \times 13) \times 3 = 10647(52×52+26×26+13×13)×3=10647个proposal boxes。

YoLo v3对每个bounding box预测偏移量和尺度缩放四个值 tx,ty,tw,tht_x, t_y, t_w, t_htx​,ty​,tw​,th​ (网络学习的参数),对于预测的cell(一幅图划分成S×SS \times SS×S个网格cell)根据图像左上角的偏移 (cx,cy)(cx, cy)(cx,cy) ,每个grid cell在feature map中的宽和高均为111,以及预先设的anchor box的宽和高 pw,php_w, p_hpw​,ph​ (预设聚类的宽高需要除以stridestridestride映射到feature map上)。最终得到的边框坐标值是bbb,而网络学习目标是t∗t^*t∗,用sigmodsigmodsigmod函数、指数转换。可以对bounding box按如上图的方式进行预测。

3. 多尺度预测:更好地对应不同大小的目标物体

每种尺度预测333个box, anchor的设计方式仍然使用聚类,得到999个聚类中心,将其按照大小均分给333个尺度.

  • 尺度111: 在基础网络之后添加一些卷积层再输出box信息.
  • 尺度222: 从尺度1中的倒数第二层的卷积层上采样(×2\times 2×2)再与最后一个16×1616 \times 1616×16大小的特征图相加,再次通过多个卷积后输出box信息。相比尺度111变大222倍。
  • 尺度333: 与尺度222类似,使用了32×3232 \times 3232×32大小的特征图。

之后在YOLOv3YOLO v3YOLOv3中,采用FPN层对多尺度的特征进行融合使用。

4. ResNet残差结构:更好地获取物体特征

YOLO v3中使用了ResNet结构(对应着在上面的YOLO v3结构图中的ResBlock)。ResBlock是有一系列卷基层和一条shortcut path组成。shortcut如下图所示:

图中曲线箭头代表的便是shortcut path。除此之外,此结构与普通的CNN结构并无区别。

但是,随着网络越来越深,学习特征的难度也就越来越大。但是如果我们加一条shortcut path的话,学习过程从直接学习特征,变成在之前学习的特征的基础上添加某些特征,来获得更好的特征。这样一来,一个复杂的特征H(x)H(x)H(x),之前是独立一层一层学习的,现在就变成了这样一个模型。H(x)=F(x)+xH(x)=F(x)+xH(x)=F(x)+x,其中xxx是shortcut开始时的特征,而F(x)F(x)F(x)就是对x进行的填补与增加,成为残差。因此学习的目标就从学习完整的信息,变成学习残差了。这样学习优质特征的难度就大大减小了。

5. 替换softmax层:对应多重label分类

SoftmaxSoftmaxSoftmax层被替换为一个1×11 \times 11×1的卷积层+++ logisticlogisticlogistic激活函数的结构。使用softmaxsoftmaxsoftmax层的时候其实已经假设每个输出仅对应某一个单个的classclassclass,但是在某些classclassclass存在重叠情况(例如woman和person)的数据集中,使用softmaxsoftmaxsoftmax就不能使网络对数据进行很好的拟合。

常见问题

YOLOv3为什么不使用Softmax对每个框进行分类?

主要考虑因素有两个:

  • SoftmaxSoftmaxSoftmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此SoftmaxSoftmaxSoftmax不适用于多标签分类。

  • SoftmaxSoftmaxSoftmax可被独立的多个logistic分类器替代,且准确率不会下降

分类损失采用binary cross-entropy loss

Bounding box的预测公式中,为什么使用sigmoid函数呢?

YOLO v3不预测边界框中心的绝对坐标,它预测的是偏移量,预测的结果通过一个sigmoidsigmoidsigmoid函数,迫使输出的值在000~111之间。

例如,若对中心的预测是(0.4,0.7)(0.4,0.7)(0.4,0.7),左上角坐标是(6,6)(6,6)(6,6),那么中心位于13×1313\times1313×13特征地图上的(6.4,6.7)。若预测的x,yx,yx,y坐标大于111,比如(1.2,0.7)(1.2,0.7)(1.2,0.7),则中心位于(7.2,6.7)(7.2,6.7)(7.2,6.7)。注意现在中心位于图像的第777排第888列单元格,这打破了YOLOv3YOLO v3YOLOv3背后的理论,因为如果假设原区域负责预测某个目标,目标的中心必须位于这个区域中,而不是位于此区域旁边的其他网格里

为解决这个问题,输出是通过一个sigmoidsigmoidsigmoid函数传递的,该函数在000~111的范围内缩放输出,有效地将中心保持在预测的网格中。

YOLO v4: Optimal Speed and Accuracy of Object Detection

简介

论文下载:https://arxiv.org/abs/2004.10934

代码下载:https://github.com/AlexeyAB/darknet

核心思想

从本质上,YOLO v4就是筛选了一些从YOLO v3发布至今,被用在各式各样检测器上,能够提高检测精度tricks,并以YOLO v3基础进行改进的目标检测模型。YOLO v4在保证速度的同时,大幅提高模型的检测精度(相较于YOLO v3)。

网络结构

由于YOLO v4实在是综合了太多的技巧,就从知乎一个大佬那借图一展,我主要从下一节的网络改进来详细讲

网络改进

简述

YOLO v4由于结合了太多的技巧,所以就大概列一部分主要的,如下:

  1. 相较于YOLO v3的DarkNet53,YOLO v4用了CSPDarkNet53
  2. 相较于YOLO v3的FPN,YOLO v4用了SPP+PAN
  3. CutMix数据增强和马赛克(Mosaic)数据增强
  4. DropBlock正则化
  5. 等等

1. BackBone:CSPDarknet53

作者在选在BackBone的时候选择了CSPDarknet53,原因也很简单,在论文中也有提到,当时在目标检测领域,该网络精度最好。

有兴趣的可以去看CSPDarknet53的原文,不多讲述:CSPNet: A New Backbone that can Enhance Learning Capability of CNN

2. Neck:SPP+PAN

SSP不多讲,有兴趣看何凯明大神的论文

SSP:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition

SSP+PAN借鉴的是18年CVPR的PANet,当时主要应用于图像分割领域,作者将其拆分应用到YOLO v4中,进一步提高特征提取的能力。

YOLO v4在FPN层的后面还添加了一个自底向上的特征金字塔, 其中包含两个PAN结构。

这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合

4. CutMix数据增强和马赛克(Mosaic)数据增强

  • CutMix数据增强:就是将一部分区域cut掉但不填充000像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配

  • Mosaic数据增强:核心思想是随机444张图拼合成一张送入网络

5. DropBlock正则化

Dropout 被广泛地用作全连接层的正则化技术,但是对于卷积层,通常不太有效。Dropout 在卷积层不 work 的原因可能是由于卷积层的特征图中相邻位置元素在空间上共享语义信息, 所以尽管某个单元被 dropout 掉,但与其相邻的元素依然可以保有该位置的语义信息,信息仍然可以在卷积网络中流通。

因此,针对卷积神经网络就需要一种结构形式的dropout 来正则化,即按块来丢弃
DropBlock是一种结构化的 dropout 形式,它将 feature map 相邻区域中的单元放在一起 drop 掉。除了卷积层外,在跳跃连接中应用 DropBlock 可以提高精度。

此外,在训练过程中,逐渐增加 dropped unit 的数量会有更好的准确性和对超参数选择的鲁棒性。

YOLO v5

简介

2020年2月YOLO之父Joseph Redmon宣布退出计算机视觉研究领域,2020 年 4 月 23 日YOLOv4 发布,2020 年 6 月 10 日YOLO v5发布,但是两个版本的改进都属于多种技术堆积版本,且两个版本差异不大。

YOLO v5性能与YOLO v4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强。

论文下载:YOLO v5目前暂无论文

代码下载:https://github.com/ultralytics/yoloV5

优点

  • 使用Pytorch框架,对用户非常友好,能够方便地训练自己的数据集,相对于YOLO v4采用的Darknet框架,Pytorch框架更容易投入生产。
  • 代码易读,整合了大量的计算机视觉技术,非常有利于学习和借鉴。
  • 不仅易于配置环境,模型训练也非常快速,并且批处理推理产生实时结果。
  • 能够直接对单个图像,批处理图像,视频甚至网络摄像头端口输入进行有效推理。
  • 能够轻松的将Pytorch权重文件转化为安卓使用的ONXX格式,然后可以转换为OpenCV的使用格式,或者通过CoreML转化为IOS格式,直接部署到手机应用端。
  • 有非常轻量级的模型大小, YOLO v5 的大小仅有 27MB27MB27MB , 使用 Darknet 架构的 YOLO v4 有 244MB244MB244MB
  • 最后YOLO v5高达140FPS140FPS140FPS的对象识别速度令人印象非常深刻,使用体验非常棒。

YOLO X: Exceeding YOLO Series in 2021

简介

YOLO X是旷视科技在目标检测方面的最新技术总结,同时也是CVPR2021自动驾驶竞赛冠军方案的技术总结。其将近两年来目标检测领域的各个角度的优秀进展与YOLO进行了巧妙地集成组合(比如解耦头、数据增广、标签分配、Anchor-free机制等)得到了YOLO X,性能取得了大幅地提升,同时仍保持了YOLO系列一贯地高效推理。

论文下载:https://arxiv.org/abs/2107.08430

代码下载:https://github.com/Megvii-BaseDetection/YOLOX

网络改进

简述

作者将YOLO检测器调整为了Anchor-Free形式并集成了其他先进检测技术(比如decoupled head、label assignment SimOTA)取得了SOTA性能,比如:

  • 对于YOLO-Nano,所提方法仅需0.91M0.91M0.91M参数+1.08G+1.08G+1.08G FLOPs取得了25.3%25.3\%25.3%AP指标,以1.8%1.8\%1.8%超越了NanoDet;
  • 对于YOLO v3,所提方法将指标提升到了47.3%47.3\%47.3%,以3%3\%3%超越了当前最佳;
  • 具有与YOLOv4-CSPYOLOv5-L相当的参数量,YOLOX-L取得了50.0%50.0\%50.0%AP指标同事具有68.9fps68.9fps68.9fps推理速度(Tesla V100),指标超过YOLOv5-L 1.8%1.8\%1.8%;
  • YOLOX-L凭借单模型取得了Streaming Perception(Workshop on Autonomous Driving at CVPR 2021)竞赛冠军。

值得一提的是,作者使用的baselineYOLO v3 + DarkNet53(所谓的YOLO v3-SSP

1. Decoupled Head 解耦头

作者研究发现,检测头耦合会影响模型性能。采用解耦头替换YOLO的检测头可以显著改善模型收敛速度。因此,作者将YOLO的检测头替换为轻量解耦头:它包含一个1×11\times 11×1卷积进行通道降维,后接两个并行分支(均为3×33 \times 33×3卷积)。注:轻量头可以带来1.1ms1.1ms1.1ms的推理耗时。

2. Mosaic + Mixup 数据增强

  • Mosaic数据增强
  • Mixup数据增强: 对图像进行混类增强的算法,它将不同类之间的图像进行混合,从而扩充训练数据集

3. Anchor-free

YOLO v4YOLO v5均采用了YOLO v3原始的anchor设置。然而anchor机制存在诸多问题:

  • (1) 为获得最优检测性能,需要在训练之前进行聚类分析以确定最佳anchor集合,这些anchor集合存在数据相关性,泛化性能较差;
  • (2) anchor机制提升了检测头的复杂度。

Anchor-free检测器在过去两年得到了长足发展并取得了与anchor检测器相当的性能。

将YOLO转换为anchor-free形式非常简单,我们将每个位置的预测从3下降为1并直接预测四个值:即两个offset以及高宽。这种改进可以降低检测器的参数量于GFLOPs进而取得更快更优的性能:42.9%AP

4. Multi positives

为确保与YOLOv3的一致性,前述anchor-free版本仅仅对每个目标赋予一个正样本,而忽视了其他高质量预测。参考FCOS,我们简单的赋予中心3×3区域为正样本。此时模型性能提升到45.0%,超过了当前最佳U版YOLOv3的44.3%

5. SimOTA

OTA从全局角度分析了标签分配并将其转化为最优运输问题取得了SOTA性能。

然而,作者发现:最优运输问题优化会带来25%25\%25%的额外训练耗时。因此,我们将其简化为动态top−ktop-ktop−k策略以得到一个近似解(SimOTA)。SimOTA不仅可以降低训练时间,同时可以避免额外的超参问题。SimOTA的引入可以将模型的性能从45.0%45.0\%45.0%提升到47.3%47.3\%47.3%,大幅超越U版YOLOv的44.3%44.3\%44.3%

6. End-to-End YOLO

YOLO X参考PSS添加了两个额外的卷积层,one-to-one标签分配以及stop gradient。这些改进使得目标检测器进化成了端到端形式,但会轻微降低性能与推理速度。

因此,我们将该改进作为可选模块,并未包含在最终模型中。

YOLO系列总结:YOLOv1, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOX相关推荐

  1. YOLO系列:YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5简介

    原文链接: https://zhuanlan.zhihu.com/p/136382095 YOLO系列:YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5简介 YOLO系列是基于深度 ...

  2. 目标检测——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

    文章目录 目标检测概述 目标检测概述 基础知识和术语 YOLOv1 YOLOv2 YOLOv3 YOLOv4 YOLOv5 YOLOx YOLOv6 YOLOv7 YOLOv8 对比 目标检测概述 目 ...

  3. 目标检测之Yolo学习之路-Yolov1,Yolov2,Yolov3

    目标检测之Yolo学习之路-Yolov1,Yolov2,Yolov3 前言: 计算机视觉在我们一般业务场景中主要分为图像分类,目标检测,语义分割,实例分割.众所周知图像分类仅仅是将图像分出类别,常用于 ...

  4. 【YOLO系列】--YOLOv1超详细解读/总结

    文章目录 前言 摘要 一.Introduction-介绍 二. Unified Detection-统一检测 三.Comparison to Other Detection Systems-与其他目标 ...

  5. 腾讯优图:开源 YOLO 系列代码(含 YOLOv3 以及各种 Backbone)

    Summary:腾讯优图:开源YOLO系列代码(含YOLOv3以及各种backbone) Author:Amusi Date:2019-01-017 微信公众号:CVer https://github ...

  6. 死磕YOLO系列,YOLOv1 的大脑、躯干和手脚

    系列文章: 死磕YOLO系列,YOLOv2的自我修养 YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题. 这就是 YOLO 的目标检测效果.它定 ...

  7. YOLO系列专题——YOLOv1理论篇

    近期工作上基于YOLOv3做项目并且需要测试TI开发板对OD模型的友好程度,所以想写个YOLO系列的专题,本文就从2015年的v1版本<You Only Look Once: Unified, ...

  8. 【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)

    前言 从这篇开始,我们将进入YOLO的学习.YOLO是目前比较流行的目标检测算法,速度快且结构简单,其他的目标检测算法如RCNN系列,以后有时间的话再介绍. 本文主要介绍的是YOLOV1,这是由以Jo ...

  9. YOLO系列专题——YOLOv1实践篇

    YOLOv1理论篇 YOLOv1实践篇 工程框架: 在YOLOv1理论篇中我们简要介绍了YOLO的基本原理,本篇从代码角度进一步给出解析.工程结构如下: config作为参数文件用于保存训练参数.测试 ...

最新文章

  1. 图片/容器/字体 透明度[opacity:0.4; filter:alpha(opacity=40)]
  2. phpnow升级mysql版本_PHPnow 升级后 PHP不支持GD、MySQL 枫
  3. [gic]-linux和optee的中断处理流程举例(gicv3举例)
  4. 川教版计算机三年级下册教案,川教版小学三年级下册信息技术教案(全册)
  5. 使用PaddleFluid和TensorFlow训练序列标注模型
  6. android 访问https服务器
  7. html5遍历集合数据,HTMLCollection集合能打印出来值,但是无法获取每一个值。
  8. linux发指令给网络设备,Linux学习笔记五(网络命令)
  9. c++如何禁用指定的键盘布局_Karabiner Elements for Mac 键盘键位自定义改键工具
  10. 句柄与指针的区别(二)
  11. 全国信息技术水平计算机程序设计c,2010年(上)全国信息技术水平考试计算机程序设计技术水平证书(C语言)考试试卷...
  12. vue 基于网易云API的短信验证码登录(axios封装)
  13. docker pxc mysql_docker安装pxc集群的详细教程
  14. 防止其他域名指向你的服务器的一种方法
  15. 【数据结构】最小瓶颈路 加强版(Kruskal重构树RMQ求LCA)
  16. 【Unity Shader】关于Stencil的理解小记
  17. ACM-ICPC 2018 南京赛区网络预赛 K. The Great Nim Game(博弈)
  18. 【Python】爬取理想论坛单帖爬虫
  19. javaweb学习笔记(佟刚老师笔记)
  20. python复利代码_使用Python进行复利

热门文章

  1. android swf 播放器代码,Android Flash swf播放器源码(2019)
  2. BZOJ1798 【AHOI2009】 seq维护序列 线段树
  3. 【冰爪游戏】MC教程 —— PCL启动器
  4. 前端:运用js和jquery实现风琴图
  5. 千年虫病毒是不是计算机病毒,求助,千年虫是病毒吗?
  6. 如果把微信和支付宝比作钱包,那么数字人民币对应的是钱包中的内容
  7. win7无法打开设备和打印机解决
  8. 国产监控摄像头占领英国市场 专家怕言行被掌控
  9. jquery在IE下卡死问题解决方法
  10. TRIZ创新方法——功能搜索导向