热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【目标检测YOLO】博客阅读:IntroductiontotheYOLOFamily

阅读收获本文是博客:https:pyimagesearch.com20220404introduction-to-the-yolo-family的翻译。好吧&#x

阅读收获

本文是博客:https://pyimagesearch.com/2022/04/04/introduction-to-the-yolo-family/ 的翻译。

好吧!其实在这里面并没有太多细节的信息,只是像个简单的介绍。但是,这激励我,后续会继续研究下 PP-YOLO系列(PP-YOLO,PP-YOLOv2, PP-YOLOE);Scaled-YOLOv4和Anchor-free的YOLOX。当然,本文并没有覆盖所有的YOLO模型,未来我会继续增加内容。


目录

阅读收获

介绍YOLO家族

介绍目标检测

挑战

目标检测的历史 

什么是单级目标检测器?

YOLOv1

YOLOv2

YOLOv3 

YOLOv4

YOLOv5

mosaic data augmentation

定量benchmark

YOLOv5 Nano 发布

YOLOv5n与YOLOv4-Tiny对比

PP-YOLO

PaddleDetection 

PP-YOLO性能

PP-YOLO架构

技巧和技术的选择

结果

消融研究

Scaled-YOLOv4 

什么是模型缩放?

在 YOLOv4上改进的Scaled-YOLOv4

Scaled-YOLOv4设计

CSP-ized YOLOv4

扩展 YOLOv4-Tiny 模型

扩展YOLOv4-CSP模型

数据增强

PP-YOLOv2

回顾PP-YOLO

改进的选择

YOLOX

YOLOX-Darknet53

YOLOv3-Baseline

Decoupled Head

强大的数据增强

Anchor-Free检测

Multi-Positives  

Other Backbones

Modified CSPNet in YOLOv5

Tiny and Nano Detectors

总结

引文信息

参考



介绍YOLO家族

目标检测是计算机视觉研究的重要课题之一。大多数计算机视觉问题都涉及到检测视觉对象类别,如行人、汽车、公共汽车、人脸等。这一领域不仅局限于学术界,而且在视频监控、医疗保健、车载传感和自动驾驶等领域具有潜在的现实商业用例。

许多用例,特别是自主驾驶,都要求高精度和实时推理速度。因此,选择一个对象检测器,适合的速度和准确性成为必不可少的法案。YOLO (You Only Look Once)是一个单级对象检测器,用于实现两个目标(即速度和准确性)。今天,我们将通过涵盖所有YOLO变体(如YOLOv1, YOLOv2,…,YOLOX, YOLOR)来介绍YOLO家族。

 从一开始,目标检测领域已经得到了显著的发展,最先进的体系结构在各种测试数据集上都得到了很好的泛化。但是,要理解这些当前最好的架构背后的魔力,有必要了解这一切是如何开始的,以及我们在YOLO大家庭中已经走了多远。

在目标检测中有三类算法:

  • 基于传统的计算机视觉
  • 基于两阶段深度学习的算法
  • 第三种是基于单阶段深度学习的算法

今天,我们将讨论YOLO对象检测系列,它属于单阶段深度学习算法。
我们相信这是一篇独一无二的博客文章,一篇文章涵盖了所有的YOLO变体,这将帮助你深入了解每种变体,并可能帮助你为你的项目选择最佳的YOLO版本。

这节课是我们关于YOLO对象检测器的7部分系列的第一个教程:

  1. YOLO 家族介绍(今天的教程)
  2. 了解一个实时的目标检测网络: 你只看一次(YOLOv1)
  3. 更好、更快、更强的物体探测器(YOLOv2)
  4. 使用 COCO EvaluatorMean Average Precision (mAP) 
  5. 渐进式改进(YOLOv3)
  6. 目标检测的最佳速度和精度(YOLOv4)
  7. 在 Darknet Framework 中使用 YOLOv4 训练自定义目标检测器

为了了解 YOLO 家族在检测图像中的物体方面是如何进化的,请保持阅读。



介绍目标检测

回忆一下,在图像分类中,目标是回答“图像中有什么?”,其中模型试图通过给图像指定一个特定的标签来理解整个图像。
一般来说,我们处理的是图像分类中只有一个对象的情况。如图1所示,我们有一个圣诞老人和其他一些对象,但主要对象是圣诞老人,它被正确分类的概率为98%。太好了。在某些情况下,比如这个例子,当一个图像描述了一个单一的对象,分类就足以回答我们的问题。

Figure 1: Image classified as Santa with 98% confidence (source).

然而,在很多情况下,我们无法通过一个标签来判断图像中的内容,而图像分类不足以帮助回答这个问题。例如,考虑图2,其中模型检测三个对象:两个人和一个棒球手套,不仅如此,它还识别每个对象的位置。这就是所谓的目标检测。

Figure 2: Examples of object detection using Single Shot Detectors (SSD) (source).

另一个重要的object detection 用例是自动车牌识别,如图3所示。现在问你自己一个问题,如果你不知道车牌的位置,你如何识别车牌的字母和数字?当然,首先,你需要用物体检测器来识别车牌的位置,然后应用第二种算法来识别数字。

Figure 3: An example of a real-time Automatic Number Plate Recognition system (source: Chem on Pinterest).

目标检测图像分析包括分类和定位两个任务,用于分析图像中可能存在多个对象的更真实的情况。因此,目标检测是一个两步的过程; 第一步是找到物体的位置。

第二步是把这些bounding boxes分成不同的类别,因为这个目标检测bounding boxes存在所有与图像分类相关的问题。此外,它还面临着定位和执行速度的挑战。

挑战


  • 拥挤或混乱的场景: 图像中的对象太多了(图4) ,使其非常拥挤。这给object detection模型带来了各种挑战,比如遮挡可能很大,object 可能很小,尺度可能不一致。

图4: 一大群人在体育场观看比赛 (source). 

  • 类内方差: object detection的另一个主要挑战是正确检测同一类的对象,这可能有很高的方差。例如,如图5所示,有6个品种的狗,它们都有不同的大小、颜色、皮毛长度、耳朵等,所以检测这些同一类的物体是很有挑战性的。

Figure 5: Six breeds of dogs (source). 

  • 类别不平衡: 这是一个挑战,影响几乎所有的模态,无论是图像,文本,时间序列; 更具体地说,在图像领域,图像分类有很多挣扎,目标检测也不例外。在目标检测,我们称之为 前景-背景 类不平衡,如图6所示。

为了理解类的不平衡是如何在目标检测中造成问题的,考虑一个包含很少主要目标的图像。图像的其余部分被背景填充。因此,该模型将查看图像(数据集)中的许多区域,其中大多数区域被认为是负样本的。由于这些负样本,模型没有学到任何有用的信息,并且可能会淹没整个模型的训练。

Figure 6: Many negative background examples and few positive foreground examples (source).

许多其他挑战与目标检测相关,如遮挡、变形、视点变化、光照条件和实时检测的基本速度(许多工业应用都需要)。



目标检测的历史 

目标检测是计算机视觉中最关键和最具挑战性的问题之一,它的发展在过去的十年中创造了一个历史。然而,这方面的进展是显著的;每年,研究界都达到一个新的最先进的benchmark。当然,如果没有深度神经网络和NVIDIA gpu的强大计算能力,这一切都不可能实现。

在目标检测的历史上,有两个截然不同的时代:

  1. 直到2010年,传统的计算机视觉方法还在游戏中,
  2. 从2012年开始,当 AlexNet (一种图像分类网络)赢得 ImageNet 视觉识别挑战时,卷积神经网络的新时代开始了。

这两个时代之间的区别在图7中也很明显,图7显示了目标检测的路线图,从2004年的Viola-Jones检测器到2019年的EfficientDet。值得一提的是,基于深度学习的检测方法被进一步分为两级检测器和单级检测器。

Figure 7: A road map of Object Detection (inspired from source).

大多数传统的目标检测算法,如 Viola-Jones,方向梯度直方图(HOG)和可变形零件模型(DPM) ,都依赖于从图像和经典的机器学习算法中提取出边缘、角点(corners)、梯度等手工特征。例如,Viola-Jones,第一个物体探测器,只是被设计用来探测人类的正脸,并不能很好地检测侧脸和上/下脸。

然后,在2012年,一个新时代到来了。在2012年ImageNet LSVRC-2012挑战赛中,深度卷积神经网络(CNN)的架构AlexNet,的准确度达84.7%,而第二名的准确度为73.8%。

然后,这些最先进的图像分类架构开始被用作目标检测pipeline中的特征提取器,这只是一个时间问题。这两个问题是相互关联的,它们依赖于学习robust 的 high-level features。因此,Girschick 等人(2014)展示了我们如何使用卷积特征进行目标检测,引入了 R-CNN (将 CNN 应用于region proposals)。从那时起,目标检测开始以前所未有的速度发展。

如图7所示,深度学习检测方法可以分为两个阶段; 第一个阶段称为两阶段检测算法,在多个阶段进行预测,包括像 RCNN、 fast-RCNN faster-RCNN 等网络。

第二类检测器称为单级检测器,如 SSD、 YOLO、 EfficientDet 等。

在图8中,你可以看到所有的 YOLO目标检测算法以及它们是如何演化的,从2016年的YOLOv1 实现了 Pascal/VOC (20个类)数据集上的63.4 mAP 到2021年的 YOLOR 在更具挑战性的 MS/COCO (80个类)数据集上的73.3 mAP 。这就是学术界的魅力所在。通过不断的努力工作和坚韧不拔的精神,YOLO 目标检测已经取得了长足的进步!

  • Figure 8: History of YOLO (image by the author). 

什么是单级目标检测器?

单级目标检测器是一类单级的目标检测结构。他们把目标检测作为一个简单的回归问题。例如,馈入网络的输入图像直接输出类概率和bounding box坐标。

这些模型跳过了region proposal 阶段,也称为Region Proposal Network,这通常是两阶段对象探测器的一部分,这是图像中可能包含目标的区域。

图9显示了单阶段和两阶段检测器工作流。在单阶段中,我们将检测头直接应用于特征图,而在两阶段中,我们首先将region-proposal network应用于特征图。

Figure 9: Single-Stage (top) and Two-Stage Detector (bottom) (image by the author).

然后,这些区域进一步传递到第二阶段,对每个区域进行预测。Faster-RCNN 和 Mask-RCNN 是最流行的两级目标检测器。

虽然两级目标器被认为比单级目标探测器更准确,但是它们的推断速度较慢,涉及多阶段。另一方面,单级探测器比两级探测器快得多。



YOLOv1

在2016年的 CVPR 会议上,Joseph Redmon 等人发表了第一个单级目标探测器,You Only Look Once: Unified, Real-Time Object Detection。

YOLO (你只能看一次)是目检测标领域的一个突破,因为它是第一个将探测作为回归问题处理的单阶段目标检测器方法。该检测体系结构只查看一次图像,以预测目标的位置和它们的类标签。

与两阶段检测方法(Fast RCNN,Faster RCNN)不同,YOLOv1 没有proposal generator和完善(refine) 阶段; 它使用单一的神经网络预测类别概率和bounding box 坐标从整个图像一次通过。由于检测流水线本质上是一个网络,可以将其视为一个图像分类网络,因此可以进行端到端的优化。

由于这个网络被设计成端到端的训练方式,类似于图像分类,所以它的架构非常快,基本的 YOLO 模型预测图像的速度为45 FPS (帧率/秒) ,基准是 Titan x GPU。作者们还提出了一个更轻量级的 YOLO 版本,叫做 Fast YOLO,有较少的层以155 FPS 处理图像。是不是很神奇?

YOLO 实现了63.4 mAP (平均平均精度) ,如表1所示,是其他实时检测器的两倍多,使其更加特殊。我们可以看到 YOLO 和 Fast YOLO 在mean average precision(近2倍)和 FPS 方面都比 DPM 的实时目标检测器有相当大的优势。

Table 1: Real-Time Detectors Quantitative Benchmarks (source: Redmon et al., p. 6).

通过对互联网上的艺术品和自然图像的研究,测试了YOLO的泛化性。此外,它大大超过了检测方法,如变形部件模型(DPM)和Region-Based 的卷积神经网络(RCNN)。
在我们即将到来的第2课中,我们将深入研究YOLOv1,所以一定要去看看!



YOLOv2

Redmon 和 Farhadi (2017)在 CVPR 会议上发表了 YOLO9000: Better, Faster, Stronger的论文。作者在这篇论文中提出了两个最先进的 YOLO 变体: YOLOv2和 YOLO9000,它们除了在训练策略上不同,其他都是相同的。

YOLOv2是在Pascal VOC和MS COCO这样的检测数据集上训练的。同时,YOLO9000通过在MS COCO和ImageNet数据集上联合训练来预测9000多个不同的目标类别。

改进的 YOLOv2 模型使用了各种新颖的技术,在速度和准确性方面超过了诸如 Faster-RCNN 和 SSD 等最先进的方法。其中一种技术是多尺度训练,这种训练允许网络在不同的输入大小下进行预测,从而在速度和准确性之间进行权衡。

在416 × 416的输入分辨率下,YOLOv2 在2007 VOC 数据集上实现了76.8 mAP,在 Titan x GPU 上实现了67 FPS。在544 × 544输入的同一数据集上,YOLOv2 分别获得了78.6 mAP 和40 FPS。

图10显示了 YOLOv2 在 Titan x GPU 上的各种分辨率的基准测试,以及其他检测架构,如 Faster R-CNN、 YOLOv1、 SSD。我们可以观察到几乎所有的 YOLOv2 变体在速度和准确性方面都比其他的检测框架表现得更好,并且在 YOLOv2 中可以观察到accuracy (mAP)和 FPS 之间的一个尖锐的权衡。

Figure 10: Accuracy and speed on Pascal VOC 2007 (source: Redmon and Farhadi, p. 7266).

关于 YOLOv2 的详细评论,请关注我们即将到来的第三课。 



YOLOv3 

Redmon 和 Farhadi (2018)在arXiv上发表了  YOLOv3: An Incremental Improvement论文。作者对网络架构做了许多设计上的改变,并采用了来自 YOLOv1,特别是 YOLOv2 的大多数其他技术。

本文介绍了一种新的网络体系结构 Darknet-53。Darknet-53是一个比以前大得多的网络,更准确和更快。它在320 × 320,416 × 416等不同图像分辨率下进行训练。在320 × 320的分辨率下,YOLOv3 可以在 Titan x GPU 上以45 FPS 的速度运行,达到28.2 mAP,精度与单发探测器(SSD321)相当,但速度要快3倍(如图11所示)。

Figure 11: Quantitative Benchmark showing accuracy (COCO mAP) vs. inference time (ms) (source: Redmon and Farhadi, 2018, p. 1).

在即将到来的第五课中,我们将完全解析 YOLOv3。



YOLOv4

YOLOv4是许多实验和研究的产物,这些实验和研究结合了各种小的新技术,提高了卷积神经网络的准确性和速度。

这篇论文在不同的 GPU 体系结构上做了大量的实验,结果表明 YOLOv4在速度和准确性方面优于所有其他的 目标检测网络体系结构。

2020年,Bochkovskiy et al. (著名 GitHub Repository: Darknet 的作者)在 arXiv 上发表了  YOLOv4: Optimal Speed and Accuracy of Object Detection 。我们可以从图12中观察到,YOLOv4运行速度比 EfficientDet 快两倍,性能相当,它将 yolov3的 mAP 和 FPS 分别提高了10% 和12% 。

Figure 12: Comparison of the proposed YOLOv4 and other state-of-the-art object detectors (source: Bochkovskiy et al., p. 1).

卷积神经网络的性能在很大程度上取决于我们使用和组合的特征。例如,某些特征仅对特定的模型、特定的问题描述和特定的数据集起作用。但是batch normalization和residual connections等特性适用于大多数模型、任务和数据集。因此,这些特征可以被称为通用的。

Bochkovskiy et al. 充分利用了这一观点,并假设了一些通用的特征,包括

  • Weighted-Residual-Connections (WRC)
  • Cross Stage Partial connections (CSP)
  • Cross mini-Batch Normalization (CmBN)
  • Self-adversarial training (SAT)
  • Mish activation
  • Mosaic data augmentation
  • DropBlock regularization
  • CIoU loss

结合上述特性可以在 MS COCO 数据集上以43.5% mAP (65.7% mAP50)在 Tesla V100 GPU 上以实时速度∼65 FPS 实现最先进的结果。

Yolov4模型结合了上述和更多的特点,形成了“Bag of Freebies”,用于改进模型的训练,“Bag-of-Specials”用于提高目标检测器的准确性。

在即将到来的第6课中,我们将用代码全面介绍 YOLOv4。



YOLOv5

2020年,在 YOLOv4发布后的两个月内,Ultralytics 的创始人兼首席执行官 Glenn Jocher 在 GitHub 上发布了 YOLOv5的开源实现。YOLOv5提供了一个基于 MS COCO 数据集的目标检测架构家族。随后,公司发布了 EfficientDet 和 YOLOv4。这是唯一一个没有研究论文的 YOLO 目标检测器,这篇论文最初引起了一些争议; 然而,很快,这个概念就被打破了,因为它的能力削弱了噪音。

今天,YOLOv5是官方最先进的模型之一,拥有巨大的支持,并且更容易在生产中使用。最好的部分是,YOLOv5 是在 PyTorch 中实现的,消除了 Darknet 框架的限制(基于 c 编程语言,而不是从生产环境的角度构建的)。Darknet 框架随着时间的推移不断发展,它是一个很好的研究框架,可以使用 TensorRT 进行工作、训练、微调和推断; 所有这些在 Darknet 中都是可能的。然而,它有一个较小的社区,因此,较少的支持。

PyTorch中YOLO的巨大变化使开发人员更容易修改架构并直接导出到许多部署环境中。别忘了,YOLOv5是Torch Hub showcase 上举办的官方最先进的模型之一。

正如您在下面的 shell 代码块中看到的,您可以使用 YOLOv5和 PyTorch Hub 在五行代码中运行一个推理。是不是很神奇?

$ import torch
$ model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # or yolov5m, yolov5l
$ img = 'https://ultralytics.com/images/zidane.jpg' # or file, Path, PIL, OpenCV
$ results = model(img)
$ results.print() # or .show(), .save()

在发布的时候,YOLOv5是所有已知的YOLO实现中最先进的。自YOLOv5发布以来,这个存储库一直非常活跃,自YOLOv5-v1.0发布以来,已有超过90个贡献者。
从开发的角度来看,YOLOv5存储库提供了大量的功能,使得训练、调优、测试和部署在各种目标平台上变得非常容易。他们提供的一些现成的教程包括:

  • Training on Custom Dataset
  • Multi-GPU Training
  • Exporting the trained YOLOv5 model on TensorRT, CoreML, ONNX, and TFLite
  • Pruning the YOLOv5 architecture
  • Deployment with TensorRT

此外,他们还开发了一款名为 iDetection的iOS应用程序,提供了YOLOv5的四种变体。我们在iPhone 13 Pro上测试了这款应用程序,结果令人印象深刻;该模型的检测速度接近30FPS。
与YOLOv4一样,YOLO v5在Backbone 使用Darknet-53的Cross-Stage Partial Connections和Neck上使用 Path Aggregation Network。主要的改进包括新颖的马赛克数据增强(来自YOLOv3 PyTorch实现)和auto-learning bounding box anchors。



mosaic data augmentation

mosaic data augmentation的思想最初是由Glenn Jocher在YOLOv3 PyTorch实现中使用的,现在在YOLOv5中使用。mosaic augmentation是将四幅训练图像按照一定的比例拼接成一幅图像,如图13所示。mosaic augmentation对于流行的COCO对象检测benchmark特别有用,它帮助模型学会解决众所周知的“小目标问题”——在这个问题中,小目标的检测不如大目标准确。

使用mosaic data augmentation的好处是:

  • 网络可以在一张图像中看到更多的上下文信息,甚至可以在正常上下文之外看到更多的上下文信息。
  • 允许模型学习如何在比通常更小的比例下识别对象。
  • Batch normalization将有4倍的减少,因为它将计算激活统计数据在每一层的4个不同的图像。这将减少在训练期间对大的mini-batch的需求。

Figure 13: Mosaic represents a new method of data augmentation (source: Bochkovskiy et al., 2020).

定量benchmark

在表2中,我们展示了在Volta 100 GPU上640×640图像分辨率的MS COCO验证数据集上5个YOLOv5变体的性能(mAP)和速度(FPS)benchmarks。所有5个模型都在MS COC训练数据集上进行训练。模型基准以从YOLOv5n(即,具有最小模型的nano 变种到最大的模型YOLOv5x)开始的升序显示。
考虑YOLOv5l;当batch size = 1和67.2 mAP为0.5 IOU时,推理速度为10.1ms(或100 FPS)。相比之下,在V100上具有608分辨率的YOLOv4实现了62 FPS with 65.7 mAP at 0.5 IOU. YOLOv5显然是这里的赢家,因为它提供了最好的性能和比YOLOv4更快的速度。

Table 2: Performance and Speed benchmarks of five YOLOv5 variants on the MS COCO dataset.



YOLOv5 Nano 发布

2021年10月,YOLOv5-v6.0发布,包含了许多新特性和bug修复(来自73个贡献者的465个PRs),带来了架构调整,最重要的是引入了新的P5和P6 Nano模型:YOLOv5n和YOLOv5n6。Nano型号的参数比以前的型号少了75%,从7.5M到1.9M,小到足以在移动设备和CPU上运行(如图14所示)。从下图可以看出,YOLOv5的性能明显优于EfficientDet变种。此外,即使最小的YOLOv5变种(即YOLOv5n6)也比EfficientDet 得到相当accuracy下推理更快。

Figure 14: Performance and speed benchmarks for the YOLOv5-v6.0 family of models on MS COCO dataset, Official benchmarks include YOLOv5n6 at 1666 FPS (640×640 image resolution with a batch size of 32 on a Tesla v100 GPU).



YOLOv5n与YOLOv4-Tiny对比

因为YOLOv5n是YOLOv5最小的变种,所以我们将它与YOLOv4- tiny进行比较,YOLOv4-Tiny也是YOLOv4型号中最轻的变种。图15显示,YOLOv5 nano变种在训练时间和准确性方面无疑优于YOLOv4-Tiny。

Figure 15: Benchmarks of YOLOv5n and YOLOv4-Tiny (source).



PP-YOLO

PaddleDetection 

PP-YOLO是PaddleDetection的一部分,这是一个基于PaddlePaddle框架的端到端目标检测开发工具包(如图16所示)。它提供了大量的目标检测架构i、backbones、数据增强技术、组件(如losses、feature pyramid network等),可以以不同的配置组合,以设计出最佳的目标检测网络。

简而言之,它提供了目标检测、实例分割、多目标跟踪、关键点检测等图像处理功能,使这些模型在构建、训练、优化、部署等过程中更快更好地进行目标检测。

Figure 16: Overview of the Development Kit Structure (source).

现在让我们回到 PP-YOLO 论文。

这篇文章的目的不是发布一个新颖的目标检测模型,而是一个具有相对平衡的有效性和效率的目标检测器,可以直接应用于实际的应用场景。这个目标与 PaddleDetection 开发套件的动机相呼应。因此,新颖之处在于证明这些技巧和技术更好地平衡了有效性和效率,并提供了一个关于每一技巧对检测器有多大帮助的消融研究。

与 YOLOv4类似,本文还尝试结合现有的各种技巧,不增加模型参数和 FLOPs 的数量,但尽可能提高检测器的准确性,并保证检测器的速度几乎不变。然而,与 YOLOv4不同的是,本文并没有探讨不同的backbone(Darknet-53,ressnext50)和数据增强方法,也没有使用神经结构搜索(NAS)来搜索模型超参数。



PP-YOLO性能

通过结合所有的技巧和技术, 当测试Volta 100 GPU  batch size = 1,PP-YOLO达到45.2%的mAP和推理速度为72.9 FPS(如图17所示),标志着一个更好的有效性和效率之间的平衡,超过了著名的最先进的探测器如EfficientDet,YOLOv4, RetinaNet。

Figure 17: Comparison of the proposed PP-YOLO with other state-of-the-art object detectors. PP-YOLO runs faster (x-axis) than YOLOv4 and improves mAP (y-axis) from 43.5% to 45.2%.



PP-YOLO架构

单级检测模型一般由backbone, detection neck, and detection head组成。PP-YOLO 的架构(如图18所示)与 YOLOv3和 YOLOv4检测模型非常相似。

Figure 18: PP-YOLO Architecture Diagram consisting of Backbone, Neck, and Head (source).

PP-YOLO 检测器分为三部分:

  • backbone: 目标检测器的backbone是一个全卷积网络,帮助从图像中提取特征图。它类似于一个预训练的图像分类模型。该模型没有使用 darknet-53架构(在 YOLOv3和 YOLOv4中) ,而是使用 ResNet50-vd-dcn 作为backbone。

        在所提出的backbone模型中,在架构的最后阶段,3 × 3卷积层被可变形卷积层代替。与         Darknet-53 相比,ResNet50-vd 的参数量和 FLOPs 数量明显减少。这有助于实现比         YOLOv3稍高的 mAP (39.1)。

  • 检测Neck: 特征金字塔网络(FPN)通过特征图之间的横向连接创建了一个特征金字塔。如果仔细观察下图,可以看到来自 C3、 C4和 C5阶段的特征图作为 FPN 模块的输入。
  • 检测head: 检测head用于预测bounding box(定位)和目标分类, 是目标检测流水线的最后阶段。PP-YOLO 的head和 YOLOv3 的head是一样的。预测最终的输出采用3 × 3卷积层,然后是1 × 1卷积层。

        最终输出的输出通道是 3(K+5),其中K是类的数量(MS COCO 数据集为80) ,3是每个网格上anchors的数量。对于每个anchor,第一个 K 通道是预测类概率,四个通道是bounding box坐标预测,一个通道是目标得分预测。

在上面的 PP-YOLO 结构中,钻石表示coord-conv layers,紫色三角形表示DropBlocks,红色星号表示Spatial Pyramid Pooling。



技巧和技术的选择

如果你还记得,我们讨论过这篇文章结合了各种技巧和技术来设计一个有效和高效的目标检测网络; 现在,我们将简要介绍每一个。这些技巧都已经存在,来自不同的论文。

  • 更大的Batch Size: 利用更大的批量有助于稳定训练并使模型产生更好的结果。batch size从64个改为192,并相应地更新了学习率和训练策略。
  • 指数移动平均: 作者声称,使用移动平均的训练参数产生更好的推理结果。
  • DropBlock正则化:这是一种类似于Dropout正则化的技术,用于防止过拟合。然而,在Dropout block 正则化,删除的特征点不再是随机分布,而是组合成块,并且整个块被删除。所以这是一个结构化的丢失,特征图中相邻区域的神经元一起被丢弃,如图19所示。

Figure 19: (a) input image to a convolutional neural network. The green regions in (b) and (c) include the activation units which contain semantic information in the input image (source).

在 PP-YOLO 中,DropBlock 只应用于检测head(即 FPN) ,因为将其添加到backbone会降低模型的性能。

  • Intersection over Union (IoU) Loss: 一个额外的损失(即 IoU 损失)被添加到训练模型中,而在YOLOv3中使用的是L1损失,并且大多数 YOLO 架构不会被替换。增加一个额外的分支来计算IOU损失。这是因为 mAP 评估指标严重依赖 IoU。
  • IoU Aware: 由于在最终检测置信度中没有考虑定位精度,因此增加了 IoU 预测分支来度量定位精度。而在推理过程中,预测的 IoU 得分与分类概率和objectiveness score相乘,预测最终的检测置信度。
  • 矩阵非最大值抑制(NMS) :M-NMS是 soft NMS 版本的并行实现,比传统 NMS 使用更快,并且不会带来任何效率损失。soft NMS 是按顺序工作的,不能并行实现。
  • 空间金字塔池(SPP)层: 在 YOLOv4中实现的 SPP 层也应用于 PP-YOLO,但只应用于顶部特征图。添加 SPP 增加了2% 的模型参数和1% 的 FLOPS,但这使得模型增加了特征的感受野。
  • 更好的预训练模型: 一个预训练模型具有更好的分类准确性在 ImageNet 上使用,导致更好的检测性能。一个蒸馏的ResNet50-vd 模型作为预训练模型。



结果

在介绍 PP-YOLO 之前,我们了解到 PP-YOLO 比 YOLOv4运行得更快,mean average precision score从43.5% 提高到45.2% 。PP-YOLO 的详细性能见表3。 

Table 3: Detailed comparison of the speed and accuracy of PP-YOLO with other state-of-the-art object detectors on the MS-COCO (test-dev 2017). The results with batch size = 1, with and without TensorRT are computed.

Long et al. (2020) 比较了Volta 100 GPU 上有 TensorRT 和没有 TensorRT (加速推理)的模型。从表中我们可以得出结论,与 YOLOv4相比,MS COCO 数据集上的 mAP 分值从43.5% 增加到45.2% ,FPS 从62 增加到72.9(没有 TensorRT)。

该表还显示了带有其他图像分辨率的 PP-YOLO,与其他最先进的检测器相比,PP-YOLO 在速度和精度的平衡方面似乎确实具有优势。



消融研究

作者进行的消融研究表明,技巧和技术如何影响模型的参数和性能。在表4中,PP-YOLO 从表示为 B 的第二行开始,其中检测器使用 resnet50作为可变形卷积的backbone。当您移动到下一行 C 时,技巧会添加到前一个模型体系结构中,并且贯穿始终。性能增益和参数和 FLOPS 的增加都显示在相应的列中。

我们强烈建议您查看the paper以了解更多细节。

Table 4: Ablation study of techniques and tricks on the MS-COCO minival split.



Scaled-YOLOv4 

Wang et al. (2021) 在 CVPR 会议上发表了一篇题为“ Scaled-YOLOv4: Scaling Cross Stage Partial Network”的论文。到目前为止,这篇论文已经受到了190多条引用!通过 Scaled-YOLOv4,作者通过有效地缩放网络的设计和规模,推动了 YOLOv4模型的发展,超过了谷歌研究大脑团队今年早些时候发布的EfficientDet 。

可以在这里找到 PyTorch 框架中 scaled-yolov4的实现。

提出的基于Cross-Stage Partial 方法的检测网络,在速度和准确性方面都超过了之前大的和小的目标检测模型的基准。此外,网络缩放方法修改网络的深度、宽度、分辨率和架构。

图20显示了 Scaled-YOLOv4-large 模型实现的最先进的结果:  MS COCO 数据集上55.5% AP (73.4% AP50),在 Tesla V100 GPU 上以 16 FPS 的速度。

另一方面,更轻的 Scaled-YOLOv4-tiny 版本在 RTX 2080Ti GPU 上使用 TensorRT (半精度 FP-16)优化(batch size = 4) ,以443fps 的速度达到22.0% AP (42.0% AP50)。

Figure 20: Comparison of the proposed Scaled-YOLOv4 with other state-of-the-art object detectors (source).

图20显示 scaled-yolov4与其他最先进的检测器相比获得了最好的结果。



什么是模型缩放?

卷积神经网络结构可以在三个维度上进行缩放: 深度、宽度和分辨率。网络的深度对应于网络中的层数。宽度与卷积层中滤波器或通道数量有关。最后,分辨率就是输入图像的高度和宽度。

图21给出了对这三个维度的模型缩放的更直观的理解,其中(a)是一个baseline网络示例; (b)-(d)是只增加网络宽度、深度或分辨率一维的常规缩放; (e)是一种提出的(在 EfficientDet 中)复合缩放方法,以固定比例均匀地缩放所有三个维度。

Figure 21: Model Scaling in EfficientDet (source).

传统的模型缩放方法是改变模型的深度,即增加更多的卷积层。例如,由 Simonyan 等人设计的 VGGNet 在不同的阶段堆叠了额外的卷积层,并使用这个概念来设计 vgg-16和 vgg-19架构。

下列方法通常遵循相同的模型缩放方法。首先,由 He et al. (2015) 提出的 ResNet 体系结构使用深度缩放来构建非常深的网络,如 ResNet-50,ResNet-101,它允许网络学习更复杂的特征,但遭受了消失的梯度问题。后来, Zagoruyko and Komodakis (2017) 考虑了网络的宽度,改变了卷积核的个数,实现了缩放,从而在保持相同精度的情况下实现了wide ResNet(WRN)。虽然 WRN 的参数比 ResNet 多,但推理速度要快得多。

然后近年来,复合缩放使用复合系数均匀地缩放了卷积神经网络架构的所有深度/宽度/分辨率的尺寸。与传统的任意缩放这些因素的方法不同,复合缩放方法使用一组固定的缩放系数均匀地缩放网络的宽度、深度和分辨率。

这也是 scaled-YOLOv4 试图做的,也就是说,使用优化的网络缩放技术来实现 YOLOv4-CSP-> P5-> P6-> p7 检测网络。



在 YOLOv4上改进的Scaled-YOLOv4


  • Scaled-yolov4使用优化网络缩放技术实现 YOLOv4-CSP-> P5-> P6-> p7网络。
  • 改进了宽度和高度的激活,允许更快的网络训练。??不懂什么叫激活
  • 改进的网络架构: Backbone优化和Neck(Path-Aggregation Network)使用 CSP 连接和 Mish 激活函数。
  • 在训练过程中使用指数移动平均(Exponential Moving Average(EMA))。
  • 对于网络的每个分辨率,训练一个单独的网络,而在 yolov4中,单个网络是训练在多个分辨率的。



Scaled-YOLOv4设计


CSP-ized YOLOv4

YOLOv4 是为通用 GPU 上的实时目标检测设计的。在 Scaled-YOLOv4中,YOLOv4 被重新设计为 YOLOv4-csp,以获得最佳的速度/精度折衷。

Wang et al. (2021) 在论文中提到,他们“CSP-ized”了目标检测网络的一个特定部分。这里的 CSP-ize  指的是应用 Cross Stage Partial Networks 论文中提出的概念。CSP 是构建卷积神经网络的一种新方法,它减少了各种 CNN 网络的计算量: 最多可达50% (在FLOPs 方面对于 Darknet backbone)。

在 CSP 连接中:

  • 一半的输出信号沿着主要路径传输,这有助于在一个大的感受野中产生更多的语义信息。
  • 另一半信号枢纽帮助保留更多的空间信息与一个小的感受野。

图22显示了 CSP 连接的示例。左边是标准网络,右边是 CSP 网络。

Figure 22: Example of a CSP connection (source).



扩展 YOLOv4-Tiny 模型

YOLOv4-tiny  模型与 Scaled-YOLOv4模型有不同的考虑,因为在边缘侧,各种约束会发挥作用,比如内存带宽和内存访问。对于 YOLOv4-tiny 的浅层 CNN,作者指望 OSANet 在很小的深度上具有良好的计算复杂性。 

表5显示了 YOLOv4-tiny 与其他tiny目标检测器的性能比较。同样,YOLOv4-tiny 实现了与其他tiny模型相比的最佳性能。

 Table 5: Comparison of state-of-the-art tiny models.

表6显示了 YOLOv4-tiny 的结果时,测试不同的嵌入式 gpu,包括 Xavier AGX,Xavier NX,Jetson TX2,Jetson NANO。如果采用 fp16和batch size = 4 对 Xavier AGX 和 Xavier NX 进行测试,帧率分别可达到290fps 和118fps。

另外,当batch size分别为1和4时,用TensorRT FP16 在通用 GPU RTX 2080ti 上运行 YOLOv4-tiny,分别可以达到773fps 和1774fps,速度极快。

YOLOv4-tiny 无论使用何种设备都能实现实时性能。



扩展YOLOv4-CSP模型

为了检测大图像中的大型物体,作者发现增加 CNN  backbone和neck的深度和 stages 数是必要的(据报道增加宽度几乎没有效果)。这允许他们首先放大input size和stages 数,并根据实时推理速度要求动态调整宽度和深度。除了这些比例因子之外,作者还在论文中改变了他们的模型架构的配置。

YOLOv4-large 是为云计算 GPU 设计的,主要目的是实现目标检测的高精度。此外,还开发了一个完全CSP-ized  的模型 YOLOv4-P5,并将其放大到 YOLOv4-P6 和 YOLOv4-P7,如图23所示。

Figure 23: Architecture of YOLOv4-large, including YOLOv4-P5, YOLOv4-P6, and YOLOv4-P7.

当宽度比例因子等于1时,YOLOv4-P6 可以达到30 FPS 的视频实时性能。当宽度比例因子等于1.25时,YOLOv4-P7可以实现16 FPS 的视频实时性能。



数据增强

YOLOv4 中的数据增强是 YOLOv4 令人印象深刻的性能的关键贡献之一。在 Scaled-YOLOv4中,作者首先在一个较少增强的数据集上进行训练,然后在训练结束时打开增强以进行微调。他们还使用“测试时间增强”,其中有几个增强应用于测试集。预测是在这些测试增强中取平均值,以进一步提高其非实时结果。

最后,作者展示了基于 CSP 方法的 YOLOv4 目标检测神经网络可以上下扩展,适用于大小网络; 因此,他们称之为 Scaled-YOLOv4。此外,所提出的模型(YOLOv4-large)在MS COCO 数据集的test-dev 上获得了56.0% 的最高 AP 准确率,使用 TensorRT-FP16 实现了 YOLOv4-tiny RTX 2080Ti 的极高的1774 FPS 速度,以及其他 YOLOv4模型的最优速度和准确度。

到目前为止,我们已经覆盖了7个 YOLO 目标探测器,我们可以说2020年是到目前为止最好的一年,对 YOLO 家族来说更是如此。我们了解到,YOLOv4、 YOLOv5、 PP-YOLO 和 Scaled-YOLOv4在目标检测一个接一个地达到了最先进的水平。

现在让我们进入下一个 YOLO 检测器,看看2021年会发生什么!



PP-YOLOv2

2021年,百度发布了 PP-YOLO 的第二个版本,称为 PP-YOLOv2: A Practical Object Detector,由 Xing Huang 等人发布在 arXiv 上,在目标检测域中达到了新的高度。

从这篇论文的标题可以很容易地推断出,这篇论文背后的动机是开发一个目标检测器,它可以达到很好的准确性,并且以更快的速度执行推理。因此,是一个实用的物体检测器。此外,由于本文是前期工作(即 PP-YOLO)的后续,作者希望开发一种能够在有效性和有效性之间达到完美平衡的检测器,为了实现这一目标,类似的集成技巧和技术被跟踪,并且重点放在消融研究上。

通过结合多种有效改进,PP-YOLOv2 显著提高了性能(即在 MS coco2017测试集上从45.9% mAP 提高到49.5% mAP)。此外,在速度方面,PP-YOLOv2 以68.9 FPS 运行,分辨率为640 × 640,如图24所示。此外,PP-YOLOv2 采用了两种不同的 backbone 架构: resnet-50和 ResNet-101,而 PPYOLOv1 只使用 resnet-50 backbone架构发布。

Figure 24: Comparison of the proposed PP-YOLOv2 and other object detectors.

在 TensorRT 引擎的支持下,半精度(FP16,batch size = 1)进一步提高了 PP-YOLOv2-ResNet50  推理速度到106.5 FPS,超过了其他最先进的对象检测器,如 YOLOv4-CSP 和 YOLOv5l,其模型参数大致相同。

当检测器的backbone 从 resnet50更换为 resnet101时,PP-YOLOv2 在 MS co2017测试集上获得了50.3% 的 mAP,与 YOLOv5x 在速度上显著地超过了 YOLOv5x 近16% ,达到了类似的性能。

所以现在你知道了,如果你的老板让你处理一个涉及到目标检测的问题,你需要选择哪个探测器。当然,如果 KPI 要以更快的速度实现良好的性能,那么答案应该是 PP-YOLOv2:) !



回顾PP-YOLO

 到目前为止,我们知道 PP-YOLOv2 是在 PP-YOLO 论文的研究进展的基础上建立起来的,该论文充当了 PP-YOLOv2 的 baseline 模型。

PP-YOLO 是 YOLOv3 的一个增强版本,YOLOv3的backbone darknet-53 被 ResNet50-vd 所取代。许多其他的改进是通过严格的消融研究利用共10个技巧,如

  • DropBlock regularization
  • Deformable Convolutions
  • CoordConv
  • Spatial Pyramid Pooling
  • IoU loss and branch
  • Grid Sensitivity
  • Matrix NMS



改进的选择


  • Path Aggregation Network (PAN): 为了检测不同尺度的目标,作者在目标检测网络的neck使用了 PAN。在 PP-YOLO 中,利用 Feature Pyramid Network 组成自底向上的路径。与 YOLOv4类似,在 PP-YOLOv2 中,作者遵循 PAN 的设计来聚合自顶向下的信息。
  • Mish Activation Function: 由于 PP-YOLOv2 使用了预训练好的参数,因为它在 ImageNet 分类数据集上具有82.4% 的top-1 精度,因此在检测网络的 neck 采用了 mish activation function。在各种实际目标检测器的backbone中,如 YOLOv4 和 YOLOv5,证明了这种方法的有效性。
  • Larger Input Size: 检测较小的目标通常是一个挑战,当图像穿过网络时,小尺度物体的信息就会丢失。因此,在 PP-YOLOv2中, input size 增加,扩大了目标的面积。因此,性能将得到提高。最大的input size,608,增加到768。由于更大的输入分辨率占用更多的内存,因此,batch size 从每个 GPU 24张图像减少到每个 GPU 在不同输入大小[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768]上均匀绘制的12张图像。
  • IoU Aware 分支:在 PP-YOLO,IoU aware loss 是以一种与初衷不符的软权重格式计算的。因此,在 PP-YOLOv2中,软标签格式更好地调整了 PP-YOLO 的loss function,并使其更好地意识到bounding boxes之间的重叠。

表7显示了使用Volta 100 GPU,在MS COCO mini validation split 上改进的消融研究。在表中,A 指的是基准 PP-YOLO 模型。然后,在B中,PAN 和 Mish 被添加到 A中,有了 2 mAP 的显著提高; 虽然 B 比 A 慢,但是精度提升是值得的。

Table 7: Ablation Study in PP-YOLOv2 on MS COCO Dataset. “†” indicates the result includes bounding box decode time (1~2 ms).

Yolov4和 YOLOv5 在640图像分辨率上进行了评估, PP-YOLOv2 的输入大小增加到640,用于训练和评估以进行公平的比较(如 C 所示)。

D (larger input size)和 E (IoU Aware 分支)中的 提升了 mAP ,都没有增加推理时间,这是一个好迹象。

要了解更多关于 PP-YOLOv2 与其他最先进的目标检测器的速度和准确性比较的详细信息,请查看 paper on arXiv 中的表2。



YOLOX

2021年,Ge等人在arXiv上发表了一份名为YOLOX: Exceeding YOLO Series in 2021的技术报告。到目前为止,我们了解到的唯一一个 anchor-free 的YOLO目标检测器是YOLOv1,但是YOLOX也以 anchor-free 的方式检测目标。此外,它还采用了其他先进的检测技术,如decoupled head、利用鲁棒数据增强技术和领先的标签分配策略SimOTA,以实现最先进的结果。

YOLOX 使用单一的 YOLOX-L 模型赢得了Streaming Perception Challenge的第一名。

如图25(右)所示,只有0.91m 参数的 YOLOX-Nano 在 MS COCO 数据集上获得了25.3% 的 AP,超过 NanoDet 1.8% 的 AP。对 YOLOv3 进行各种修改,使 COCO 上的 AP 准确率从44.3% 提高到47.3% 。

Figure 25: Speed-accuracy trade-off (left) and Size-accuracy curve of lite models (right) for YOLOX and other state-of-the-art object detectors.

YOLOX-L 在 Tesla v100上以68.9 FPS 的速度在 COCO 上获得50.0% AP,其参数与 YOLOv4-CSP,YOLOv5-L 大致相同,超过 YOLOv5-L 1.8% AP。

YOLOX 是在 PyTorch 框架中实现的,在设计时考虑到了开发人员和研究人员的实际使用。因此,YOLOX 部署版本也可以在 ONNX、 TensorRT 和 OpenVino 框架中使用。

在过去的两年里,目标检测学术界在 anchor-free 检测器、高级标签分配策略和端到端(NMS-free)检测器方面取得了重大进展。然而,这些技术还没有应用到 YOLO目标检测架构中,包括最近的模型: YOLOv4、 YOLOv5和 PP-YOLO。它们中的大多数仍然是 anchor-based 的检测器,并且手工制定了用于训练的分配规则。这就是发布 YOLOX 的动机!



YOLOX-Darknet53

选用带有Darknet-53 backbone 的YOLOv3作为baseline。然后,对 base 模型进行了一系列的改进。
从baseline到最终的YOLOX模型,训练设置基本上相似。所有模型在MS COCO train2017数据集上进行300个epoch的训练,batch size 为128。 input size 均匀地从448 到832,有32个strides。在一台Tesla Volta 100 GPU上,使用FP16精度(半精度)和 size = 1 来测量FPS和延迟。



YOLOv3-Baseline

它使用DarkNet-53 backbone 和一个被称为YOLOv3-SPP 的SPP层。一些训练策略相对于原来的实现进行了修改,如

  • 指数移动平均权重更新
  • 余弦学习率策略
  • BCE Loss for classification and objectness branch
  • IoU Loss for regression branch

通过这些增强,YOLOv3 baseline  在MS COCO验证集上实现了38.5%的AP,如表8所示。所有型号均在Tesla V100上以640×640分辨率、FP16-precision和batch size = 1进行测试。下表中的延迟和FPS是在没有post-processing的情况下测量的。

Table 8: YOLOX-Darknet53 in terms of AP (%) on MS COCO val. 



Decoupled Head

图26显示了 YOLOv3 到 YOLOv5 模型中使用的coupled head(上部)和 YOLOX 的decoupled head(下部)。这里的head是指不同尺度下的输出预测。例如,在coupled head中,我们有一个预测张量 H*W*(Cls+Reg+Obj) (详细的解释见下图)。而这种方法的问题在于,在训练过程中,我们通常将分类和定位任务放在同一个head里,在训练过程中这两个head之间经常会相互竞争因此,模型很难对图像中的每个目标进行正确的分类和定位。

因此,YOLOX 使用了用于分类和定位的decoupled head,如图26所示(下)。对于 FPN 特征的每个层次,首先采用一个1 × 1的连续层,将特征通道减少到256个。然后带有两个 3×3 conv的两个并行分支被加入,分别完成分类和定位任务。最后,向定位分支添加一个额外的 IoU 分支。

Figure 26: Illustration of the difference between YOLOv3 head and the proposed decoupled head. 

decoupled head使得YOLOX模型比coupled head收敛更快,如图27所示。此外,在x轴上,我们可以观察到decoupled head的COCO AP分数如何比YOLOv3 head提高得更快。

Figure 27: Training curves for detectors with YOLOv3 coupled and YOLOX decoupled head.



强大的数据增强

加入了类似YOLOv4的Mosaic和MixUp数据增强技术,以提高YOLOX的性能。Mosaic是ultralytics-YOLOv3 提出的一种有效的增强策略。
使用上述两种增强技术,作者发现在ImageNet数据集上对backbone 进行预训练并没有什么好处,所以他们从头开始训练模型。



Anchor-Free检测

为了开发一种高速目标检测器,YOLOX 采用了一种 anchor-free 机制,减少了设计参数的数量,因为现在我们不再需要处理anchor boxes,这大大增加了预测的数量。因此,对于预测head中的每个位置或网格,我们现在只有一个预测,而不是预测三个不同anchor boxes的输出。每个目标的中心位置被认为是一个正样本,并有一个预定义的比例范围。

简单地说,在 anchor-free 检测中,每个网格的预测值从3减少到1,它直接预测四个值,它们是 相对网格的左上角的两个偏移量 和 预测框的高度和宽度。

使用这种方法,减少了网络参数和检测器的 GFLOPs,使检测器更快,甚至性能提高到42.9% AP,如表8所示。



Multi-Positives  

为了与YOLOv3的分配规则一致,anchor-free 版本只为每个目标选择一个正样本(中心位置),而忽略其他高质量的预测。然而,优化这些高质量的预测也可能带来有益的梯度,这可能会缓解训练中正/负采样的极端不平衡。在YOLOX中,中心3×3区域被分配为正样本,在FCOS paper中也被称为“中心采样”。因此,检测器的性能提高到45.0% AP,如表8所示。



Other Backbones


Modified CSPNet in YOLOv5

为了进行公平的比较,YOLOX用YOLOv5改良的带有SiLU激活函数的 CSP v5 backbone 取代了Darknet-53 backbone 并且使用 PAN head。通过利用其缩放规则,YOLOX-S、YOLOX-M、YOLOX-L和YOLOX-X模型被生产出来。
表9为YOLOv5模型与YOLOX产生的模型对比。所有YOLOX变种的AP均有~ 3.0% ~ 1.0%的持续改善,使用 decoupled head 只增加了少量的时间。下面的模型在一个 Tesla Volta 100 GPU上, FP16-precision(半精度)和batch size = 1,在640×640图像分辨率下测试。

Table 9: Comparison of produced YOLOX variants with existing YOLOv5 variants in terms of AP (%) on MS COCO dataset along with Parameters, GFLOPs, and Latency factors. 

Tiny and Nano Detectors

我们将 YOLOX 模型与 YOLOv5模型进行了比较,后者在尺寸上分为小型、中型、大型和特大型(更多的参数)。作者进一步缩小了 YOLOX 模型,使其参数低于 YOLOX-s 变体,从而生产 YOLOX-tiny 和 YOLOX-nano。YOLOX-Nano 是专门为移动设备设计的。该模型采用深度卷积方法,模型参数为0.91M,1.08G FLOPs。

如表10所示,YOLOX-Tiny 与 YOLOv4-Tiny 和 PPYOLO-Tiny 相比较。同样的,YOLOX 在更小的模型size上表现良好。

Table 10: Comparison of YOLOX-Tiny and YOLOX-Nano and the counterparts in terms of AP (%) on MS COCO validate dataset. 

总结

恭喜你能走到这一步。如果你能够轻松地跟进,甚至稍微努力一点,做得好!所以让我们快速总结一下:

  1. 我们通过介绍目标检测探测器开始本教程: 目标检测器与图像分类的区别,检测方面的挑战,以及什么是单级和双级目标检测器。
  2. 然后向您介绍了第一个单级探测器 YOLOv1。
  3. 然后我们简要介绍了 YOLOv2、 YOLOv3和 YOLOv4。
  4. 接下来,我们讨论了 Ultralytics 开发的 YOLOv5,它是继 YOLOv4之后在 PyTorch 中实现的第一个 YOLO 模型。
  5. 然后是百度在 PaddlePaddle 框架中实现的 PP-YOLO,它显示了比 YOLOv4和 EfficientDet 更有前途的结果。
  6. 然后讨论了 YOLOv4的扩展叫做 Scaled-YOLOv4,该扩展基于Cross-Stage Partial 方法,可以同时向上和向下扩展,在速度和准确性方面超越了之前大小目标检测模型的基准测试,如 EfficientDet、 YOLOv4和 PP-YOLO。
  7. 然后我们讨论了 PP-YOLO 的第二个版本,即 PP-YOLOv2,它对 PP-YOLO 进行了各种改进,从而显著提高了 MS coco2017测试集的性能(即从45.9% mAP 提高到49.5% mAP)。
  8. 然后我们讨论了 YOLOX,一个继 YOLOv1 之后的 Anchor-Free 目标检测网络。YOLOX 在 CVPR 研讨会上赢得了Streaming Perception Challenge 的第一名,并且在精度和速度上都超过了 YOLOv5 large and nano 模型。

引文信息

Sharma, A. “Introduction to the YOLO Family,” PyImageSearch, D. Chakraborty, P. Chugh, A. R. Gosthipaty, J. Haase, S. Huot, K. Kidriavsteva, R. Raha, and A. Thanki, eds., 2022, https://pyimg.co/3cpmz

@incollection{Sharma_2022_YOLO_Intro,author = {Aditya Sharma},title = {Introduction to the {YOLO} Family},booktitle = {PyImageSearch},editor = {Devjyoti Chakraborty and Puneet Chugh and Aritra Roy Gosthipaty and Jon Haase and Susan Huot and Kseniia Kidriavsteva and Ritwik Raha and Abhishek Thanki},year = {2022},note = {https://pyimg.co/3cpmz},
}

参考
  1. https://alexeyab84.medium.com/scaled-yolo-v4-is-the-best-neural-network-for-object-detection-on-ms-coco-dataset-39dfa22fa982​​​​​​
  2. ​​​​Scaled-YOLOv4 is Now the Best Model for Object Detection

注意:这里的翻译并没有寻求作者的授权!所以我选了原创......我不知道是否恰当!


推荐阅读
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 深入解析 Unity URP/SRP 渲染管线:匠心打造的全面指南
    本文深入探讨了Unity中的URP、SRP和HDRP渲染管线,详细解析了它们之间的关系及各自的特点。首先介绍了SRP的基本概念及其在Unity渲染架构中的作用,随后重点阐述了URP和HDRP的设计理念与应用场景。文章还分析了SRP诞生的背景,解释了为何Unity需要引入这一灵活的渲染框架,以满足不同项目的需求。通过对比URP和HDRP,读者可以更好地理解如何选择合适的渲染管线,以优化项目的性能和视觉效果。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 在上篇文章的基础上,本文将继续探讨 Linux 设备驱动中的设备模型与 `devicedriverbus` 机制。在将设备注册到总线之前,需要先创建 `device` 对象。可以通过静态定义 `device` 结构体变量,并调用 `device_register` 函数来完成这一过程。此外,文章还将详细解析设备模型的内部工作机制,以及 `devicedriverbus` 机制如何实现设备与驱动的自动匹配和管理。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 在探讨 AS3 中的数据深度复制技术时,本文详细介绍了实现数据深度克隆的有效方法。通过对比多种方案,最终确定了一种高效且可靠的实现方式,所有代码均来源于公开资源,确保了方法的实用性和可操作性。 ... [详细]
  • 在Windows命令行中,通过Conda工具可以高效地管理和操作虚拟环境。具体步骤包括:1. 列出现有虚拟环境:`conda env list`;2. 创建新虚拟环境:`conda create --name 环境名`;3. 删除虚拟环境:`conda env remove --name 环境名`。这些命令不仅简化了环境管理流程,还提高了开发效率。此外,Conda还支持环境文件导出和导入,方便在不同机器间迁移配置。 ... [详细]
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • 如何提升Python处理约1GB数据集时的运行效率?
    如何提升Python处理约1GB数据集时的运行效率?本文探讨了在后端开发中使用Python处理大规模数据集的优化方法。通过分析常见的性能瓶颈,介绍了多种提高数据处理速度的技术,包括使用高效的数据结构、并行计算、内存管理和代码优化策略。此外,文章还提供了在Ubuntu环境下配置和测试这些优化方案的具体步骤,适用于从事推荐系统等领域的开发者。 ... [详细]
author-avatar
信步老街
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有