YOLOvi(i=1,2,3,4)系列
YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf
YOLOv4源码链接:https://github.com/AlexeyAB/darknet
YOLO 系列算法是目标检测 one-stage 类的代表算法,本文将从 问题背景,创新点等方面比较,了解它们的的发展历程。
一、任务描述
目标检测是为了解决图像里的物体是什么,在哪里的问题。输入一幅图像,输出的是图像里每个物体的类别和位置,其中位置用一个包含物体的框表示。
需要注意目标,同时也是论文中常说的感兴趣的物体,指关心的类别(行人检测只检测人,交通检测只关心交通工具等),或者数据集包含的类别,并不是图像里所有的物体都是目标,比如建筑,草坪也是物体,但他们常常是背景。
从计算机视觉的角度看,目标检测是分类+定位,从机器学习的角度看,目标检测是分类+回归。
二.YOLOv4介绍
论文链接:https://arxiv.org/pdf/2004.10934.pdf
源码链接:https://github.com/AlexeyAB/darknet
有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论验证。某些功能只在某些模型上运行,某些问题只在某些模型上运行,或只在小规模数据集上运行;而某些功能(如批处理规范化和残差连接)适用于大多数模型、任务和数据集。
假设这些通用特征包括加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish激活。
新功能:WRC、CSP、CmBN、SAT、误激活、马赛克数据增强、CmBN、下降块正则化和CIoU损失,并将其中一些功能结合起来,达到以下效果:43.5%AP(65.7%AP50)的MS COCO数据集,在Tesla V100上以65 FPS的实时速度。
贡献总结如下:
1. 开发了一个高效、强大的目标检测模型。它使得每个人都可以使用1080Ti或2080Ti的GPU来训练一个超快速和精确的目标探测器。
2. 在探测器培训期间,验证了最先进的免费包和特殊包目标检测方法的影响。
3. 修改了最新的方法,使之更有效,更适合于单一GPU训练,包括CBN[89]、PAN[49]、SAM[85]等。
总之,通用的目标探测由几个部分组成:
YOLOv4主要模块:
为使得所涉及的检测器更适合于单GPU,作者还进行了其他几项额外设计与改进:
作者在现有实时网络的基础上提出了两种观点:
网路结构选择
网络结构选择是为了在输入分辨率、网络层数、参数量、输出滤波器数之间寻求折中。作者研究表明:CSPResNeXt50在分类方面优于CSPDarkNet53,而在检测方面反而表现要差。
网络主要结构确定了后,下一个目标是选择额外的模块以提升感受野、更好的特征汇聚模块(如FPN、PAN、ASFF、BiFPN)。对于分类而言最好的模型可能并不适合于检测,相反,检测模型需要具有以下特性:
更高的输入分辨率,为了更好的检测小目标;
更多的层,为了具有更大的感受野;
更多的参数,更大的模型可以同时检测不同大小的目标。
总之,选择具有更大感受野、更大参数的模型作为backbone。给出了不同backbone的上述信息对比。从中可以看到:CSPResNeXt50仅仅包含16个卷积层,其感受野为425x425,包含20.6M参数;而CSPDarkNet53包含29个卷积层,725x725的感受野,27.6M参数。这从理论与实验角度表明:CSPDarkNet53更适合作为检测模型的Backbone。
目标检测架构分为两种,一种是two-stage,一种是one-stage,区别就在于 two-stage 有region proposal 过程,类似于一种海选过程,网络会根据候选区域生成位置和类别,而 one-stage 直接从图片生成位置和类别。
今天提到的 YOLO 就是一种 one-stage 方法。
YOLO 是 You Only Look Once 的缩写,意思是神经网络只需要看一次图片,就能输出结果。
YOLO 一共发布了四个版本,其中 YOLOv1 奠定了整个系列的基础,后面的系列就是在第一版基础上的改进,只为提升性能。
YOLO的检测方法如下:
与 R-CNN 系列方法相比:
问题背景
之前 two-stage 方法如 R-CNN 把检测问题分成两部分,先生成候选区域(region proposal),再用分类器对区域分类,多阶段训练导致不易优化。
创新点
把检测当作回归问题,用一个网络输出位置和类别,实现了一个 unified system,从检测的角度是 one-stage的
训练流程
和 R-CNN 差不多
检测流程
优点
缺点
问题背景
创新点
提升性能的方法
训练流程
论文提出了一种联合训练算法,该算法可以在检测和分类数据上训练目标检测器。
利用标记的检测图像来学习精准定位,同时使用分类图像来增加其“词汇量”和健壮性。
检测数据集的标签少且普通,分类数据集的标签多且具体,如果想在两个数据集上训练,就得把它们的标签合并起来。很多分类方法都用一个 softmax layer ,但它的前提是假设所有类互斥,但的数据集类别是不都是互斥的(有可能是包含关系,例如狗和金毛犬),所以使用了一个多标签模型来组合数据集(无互斥的要求),及使用多个 softmax 。
大多数分类方法都假定标签采用扁平结构,但是对于组合数据集需要层次化的结构。
ImageNet 标签采用有向图结构。在这里,作者把数据集的结构简化为结构树(hierarchical
tree)。
通过改造图,最后得到一个 WordTree,这样每个节点/标签都有自己的概率,解决了类别之间不互斥的问题,就能在检测集和分类集上联合训练。
把检测和分类数据混合,训练过程中遇到带标签的检测图像,就基于 YOLOv2 整个损失函数进行反向传播,遇到分类图像,只反向传播网络的分类损失。
问题背景
模型改进
问题背景
框架方法
下面这幅论文中的图介绍了 YOLOv4 检测器的构成及使用的训练方法,这些是经过大量实验选出的性能最好的组合
回顾 YOLO 系列的发展,可以看出 YOLO
后期没有提出新颖的想法,更重视应用落地。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章