目标检测如何演变:从区域提议和 Haar 级联到零样本技术

目录

一、说明

二、目标检测路线图

2.1 路线图(一般)

2.2 路线图(更传统的方法)

2.3 路线图(深度学习方法)

2.4 对象检测指标的改进

三、传统检测方法

3.1 维奥拉-琼斯探测器 (2001)

3.2 HOG探测器 (2005)

3.3 基于部分的方法

四、基于深度学习的检测方法

4.1 两级和一级探测器

4.2 两级探测器

4.2.1 RCNN (2014)

4.2.2 快速 RCNN (2015)

4.2.3 更快的 RCNN (2015)

4.2.4 FPN (2017)

4.2.5 骨干

4.3 一级探测器

4.3.1 悠乐 (2015)

4.3.2 固态硬盘 (2015)

4.3.3 视网膜网 (2017)

4.3.4 中网 (2019)

4.4 物体探测器按类别

4.5 基于变压器的探测器

4.5.1 DETR (2020)

4.5.2 (2021) SWIN5.5.2 (2021)

4.6 非极大值抑制 (NMS)

五、(Zero | One | Few)- 射击物体检测

5.1 多模态

5.2 剪辑 (2021)

5.3 OWL-ViT (2022)

5.4 GLIP 格利普 (2022)

5.5 分割任何东西 (2023)

5.6 良好的视觉分词器 (2023)

六、结论


一、说明

        物体检测算法的发展已经取得了长足的进步,从早期的计算机视觉开始,通过深度学习达到了很高的准确度。在这篇文章中,我们将研究这些算法的发展阶段以及现代目标检测系统中使用的主要方法。

        我们首先回顾早期传统的目标检测方法:Viola-Jones 检测器、HOG 检测器、基于部分的方法。它们在该领域发展之初就被积极使用。

        然后,逐渐转向基于两阶段和一阶段目标检测神经网络的更现代的深度学习目标检测方法:RCNN、YOLO、SSD、CenterNet。这些方法提供了一种端到端的架构,允许算法适应任何输入数据。

        我们以零射击对象检测方法结束,它允许您搜索图像中的任何对象,甚至无需训练神经网络:OWL-ViT、GLIP、Segment Anything、GVT。

物体检测示例

        在本文中,我们将探讨对象检测主题、它的含义、对于该领域的新手来说有什么优势以及它为何有趣。进一步的讨论将致力于一般路线图,我们将在其中查看三到四个重要且有趣的图表。我们还将尝试分析目标检测的总体趋势和演变。

让我们从基础开始。对象检测任务可以非常简单地表述:什么对象位于何处?

对象检测是计算机视觉中的一项关键任务,其目标是识别和定位图像中的各种对象,例如汽车、骑自行车的人和交通灯。xmin这是通过使用坐标 ( , yminxmax, )定义矩形区域ymax并将它们与分类和概率向量 (p_1, p_2, ..., p_n)。对象检测在实际意义上超越了图像分类,因为它能够检测对象以进行后续分析、修改或分类。稳定扩散和面部交换等技术利用对象检测来操纵和替换图像中的对象或面部。当同一类的多个对象(例如行人)重叠时,就会出现挑战,促使使用非极大值抑制作为通用解决方案,尽管替代方法正在出现。

目标检测是一项极其重要的任务,在过去约 30 年中得到了发展和改进。

现实世界中的物体检测

目标检测算法的开发是一个活跃的研究领域,我们将继续观察该领域的新趋势和进展。

其应用广泛应用于各个行业,从视频监控和自动驾驶汽车到医药和零售,具体来说:

  • 视频监控:检测视频片段中的人物及其位置,监控他们之间的距离。
  • 汽车行业:利用计算机视觉来了解环境和道路安全。
  • 医学诊断:检测图像中的肿瘤和其他异常情况以进行分析。
  • 零售:自动化货物清点流程、检测盗窃行为。
  • 农业:监测植物健康、疾病检测、田间分析和其他农业任务。

二、目标检测路线图

        让我们从“路线图”开始。本节包含一些文章中的图片,描述了对象检测方法的发展。让我们概述一下这些路线图,重点关注一些要点。

2.1 路线图(一般)

(来源)

        在下图的开头,您可以看到卷积神经网络自 20 世纪 80 年代以来一直在发展。1998 年,LeCun 等人。介绍了 LeNet-5,这是一种用于数字识别的重要 CNN 架构。

        这个数据集被称为 MNIST,起源于 90 年代,此后成为评估机器学习和深度学习算法的流行基准。

        后来有人提出了物体检测的要求,但当时还没有足够有效的方法来做到这一点。

        第一个重要的方法是 Viola-Jones 或 Haar 级联,它在当时的 PC 上快速且易于使用,提供每秒几帧 (FPS) 的可接受的速度。

        几年后,HOG 检测器方法作为 Viola-Jones 的替代方法被引入,主要侧重于捕获物体形状和轮廓。

        后来,使用可变形零件模型(DPM)的方法开始发挥作用,在物体检测精度方面长期占据领先地位。

        2012 年,第一个大型深度神经网络出现,包括 AlexNet。尽管速度慢且计算量大,但 AlexNet 和后续模型(例如 MobileNet)的架构变得更加优化。

        这些模型提供了高质量的代表性图像特征,可以描述上下文并检测各种对象。

        这些方法最重要的方面之一是它们的“端到端”性质,其中输入图像经历一系列差异化操作,从而能够在单个架构内进行整体处理。

2.2 路线图(更传统的方法)

        物体检测的发展主要经历了两个历史时期:“传统物体检测时期(2014年之前)”和“基于深度学习的检测时期(2014年后)”。

        在 2014 年之前,大多数目标检测算法都是基于手动创建的特征构建的。例如,2001年,P. Viola和M. Jones使用VJ检测器实现了不受任何限制的实时人脸检测。该探测器使用“滑动窗口”技术,遍历图像中所有可能的位置和比例,以查看是否有任何窗口包含人脸。

(来源)

        SIFT(尺度不变特征变换)是一种用于从图像中提取和描述独特特征的方法。使用传统的计算机视觉方法,可以计算描述图像的各种函数和特征。例如,您可以通过相邻像素的像素值之间的差异来计算图像梯度。这是特征提取的重要一步。此外,拉普拉斯算子可用于检测图像中的边缘。SIFT 将图像划分为关键点邻域或兴趣区域,从中可以提取描述这些区域的特征。通过将这些特征与表示对象的描述符进行比较,可以识别与对象最相似的区域。通过这种方式,您可以表示该对象位于该处的概率很高。

        从最简单的层面来说,这意味着找到图像中最相似的部分。还有哪些传统方法?说实话,我并没有真正研究过,因为它们几乎都不再被使用了。如果您需要快速人脸检测,唯一可能仍然使用的是 Haar 级联。

2.3 路线图(深度学习方法)

        2014年以后,随着深度学习的出现,目标检测开始以前所未有的速度发展。例如,2014 年,R. Girshick 等人。提出了具有CNN特征的区域(RCNN)方法,显着提高了目标检测的准确性。

        2015 年,S. Ren 等人继续说道。提出了 Faster RCNN 检测器,这是第一个基于深度学习的近现实世界检测器。Faster-RCNN 的主要贡献是引入了区域提议网络(RPN),它允许几乎免费获得区域提议。从R-CNN到Faster RCNN,目标检测系统的大部分单独模块,例如句子检测、特征提取、边界框回归等,已逐渐集成到单个最终学习框架中。

        2017 年,T.-Y。林等人。提出的特征金字塔网络(FPN)。FPN 在检测各种尺度的物体方面取得了显着进展。通过在主 Faster R-CNN 系统中使用 FPN,无需额外调整即可在 COCO 数据集上检测单个模型,从而获得最佳结果。

        对于单级检测器,YOLO(You Only Look Once)是由 R. Joseph 等人提出的。2015 年。YOLO 速度极快:YOLO 的快速版本运行速度为每秒 155 帧。YOLO 将单个神经网络应用于完整图像。该网络将图像划分为多个区域,并同时预测每个区域的边界框和概率。

(来源)

2.4 对象检测指标的改进

        评估对象检测算法时的一个重要方面是平均精度 (mAP) 指标。该指标衡量阈值更改时算法的精度和召回率之间的关系。在 YOLOv5 等算法中使用置信阈值可以让您丢弃低概率的预测。在精确率和召回率之间找到平衡非常重要,这反映在 mAP 指标中。

        我们详细分析了 VOC07、VOC12 和 MS-COCO 数据集上目标检测 mAP 的发展和改进。

VOC07、VOC12 和 MS-COCO 数据集上目标检测的准确性得到提高。(来源)
  • 在VOC07数据集上,物体检测的mAP从2008年(DPM方法)的21%增加到2018年(RefineDet)的83.8%。+62.8%
  • 在VOC12数据集上,mAP从2014年(R-CNN方法)的53.7%增加到2018年(RefineDet)的83.5%。+29.8%
  • 在 MS-COCO 数据集上,物体检测的 mAP 从 2015 年(Fast R-CNN 方法)的 19.7% 增加到 2021 年(Swin Transformer)的 57.7%。+38%

        这些数据证实了近年来物体检测领域取得的重大进展,特别是随着深度学习的出现及其在物体检测方法中的应用。

三、传统检测方法

        自从首次积极研究人脸识别方法以来,对象检测算法的世界已经发生了许多变化。在本文中,我们将回顾该领域自 2001 年以来的发展,当时已经对基于对象的人脸检测方法进行了多次审查。

        当时主要有两种方法:基于图像和基于特征。基于图像的方法使用 SVM(支持向量机)和线性子空间方法等方法。他们还利用了 LeNet 等卷积神经网络 (CNN),该网络在早期图像识别任务中发挥了重要作用。还采用了统计方法,包括高斯混合模型和基于正态分布的概率模型等技术。

        尽管从研究的角度来看,其中一些方法很有趣,并且对于一般熟悉来说可能具有价值,但它们在现代物体检测系统中已不再使用。相反,现代方法基于大型神经网络,可以进行高效的图像比较和对象识别。这些方法提供了更具代表性的结果。

2001 年的人脸检测方法。

3.1 维奥拉-琼斯探测器 (2001)

其中一种算法是 Haar 级联,也称为 Viola-Jones 算法。

Viola-Jones 算法部分:(а) 区域组合,(b) Haar 特征,(c) 级联分类器,(d) Haar 特征应用于图像,以及 (e) LBP 特征。

        Haar 级联算法基于一个简单的想法。如果我们要检测图像中的人脸,一般来说,所有的人脸都有相似的特征,比如两只眼睛、一个鼻子、一张嘴。例如,眼睛通常有一定的形状,脸的底部因为阴影而变暗,拍照时可以突出脸颊和鼻子。

        因此,我们可以形成一组描述这些面部特征的模板。这些模板可以是小正方形或矩形的形式。卷积运算用于将这些模板与图像块进行卷积以生成特征图,随后对其进行分析以进行对象检测。

        Haar 算法的级联方法因其优点而被使用。作者使用增强方法并依次应用不同的模板,这允许检测具有很大变化性的面部,例如倾斜和照明条件。在基于级联模板顺序应用不同的分类器之后,算法在每个阶段做出决定,以确定是继续将候选区域评估为人脸还是拒绝它。

        因此,我们得到了一个可以快速工作的目标检测器,并且在考虑包括训练数据、特征选择和应用程序上下文在内的各种因素时可以显示出良好的结果。

3.2 HOG探测器 (2005)

使用HOG特征的物体检测算法。

HOG(定向梯度直方图)算法于 2005 年发明,与深度学习图像处理方法不同,它不使用神经网络。

  1. 首先,图像被分成8x8像素的小子图片。对于每个子图像,计算梯度,从而产生一组梯度值。这些值分布到具有指定数量的箱的直方图中,表示该子区域中的梯度分布。来自多个子区域的直方图被连接起来形成特征向量。

  2. 接下来,使用直方图均衡等过程对直方图进行归一化,以增强对比度并均衡图像不同部分中像素的强度幅度。这有助于改善整体视觉表现。

  3. 对直方图进行归一化后,为滑动窗口覆盖的每个区域计算描述符,该滑动窗口以多个尺度和纵横比在图像上移动。通过检查这些检测窗口并比较从它们中提取的特征向量,可以检测到面部等物体。经过训练的分类器(通常是支持向量机 (SVM))用于确定感兴趣的对象是否存在。

        虽然这种方法可以检测面部,但它在检测细粒度细节或复杂结构(例如划痕或脑肿瘤)方面可能不那么有效,从而限制了其在此类任务中的使用。

        乍一看,人们可能会建议结合考虑颜色和其他参数的更复杂的功能,事实上,进一步的研究已经探索了此类修改。例如,将 HOG 与其他特征描述符(例如颜色直方图或类似 Haar 的特征)相结合已显示出有希望的结果。此外,还存在利用部分特征进行对象检测的有效方法,例如组合多个特征描述符来查找人或脸部等对象。尽管这些方法可能更加复杂,但它们在某些情况下已经证明了准确性的提高。

        总的来说,HOG 方法是检测图像中对象的有效方法,特别是对于人脸检测等任务。通过利用数学方法和基于梯度的特征,它取得了良好的效果。尽管如此,对该方法的进一步研究和修改可以提高其效率和准确性。

3.3 基于部分的方法

  • 基于可变形零件的模型 (2010)
  • 隐式形状模型 (2004)

        基于可变形零件的模型 (DPBM),由 Felzenszwalb 等人提出。2010年,是一种基于可变形状零件概念的物体检测方法。隐式形状模型(ISM),由 Leibe 等人提出。2004 年,是一种对象检测方法,它将对象的形状表示为一组局部特征,并使用统计方法来查找图像中对象最可能的区域。这两种方法都已广泛应用于目标检测任务,有助于提高图像处理算法的准确性和可靠性。

(来源)

四、基于深度学习的检测方法

        在任何基于深度学习的对象检测过程开始时,我们都有一个输入模型的输入图像。该图像可以以其原始形式进行处理或调整为固定尺寸。然后,在每个尺度上,我们搜索对象,并对结果进行平均。这项任务有不同的方法。

普通对象检测模型的组件。

        处理一张图像或一组图像后,它们被传输到模型主干。主干网络的任务是从图像中提取各种特征,创建描述图像的特征向量。有许多不同的主干模型,例如 AlexNet、VGG、ResNet、YOLO(使用 DarkNet 的修改版本作为主干)、EfficientNet、MobileNet 和 DenseNet。

        获得的特征从主干层传递到负责特征细化的中间层,然后再传递到头部。在某些架构中,backbone和head之间可能没有中间模块,特征直接传递到head以生成最终的边界框和类预测。总体目标是确定对象的位置和类别。

4.1 两级和一级探测器

深度学习对象检测元架构。

目标检测算法可以分为两类:两阶段和一阶段。在两阶段算法中,骨干和颈部任务涉及创建区域提案。从图像中提取特征并将其传输到神经网络,该神经网络返回一组潜在的对象位置及其置信度。或者,可以使用选择性搜索算法来生成对象建议。接收到的特征以及建议被转移到算法的后续阶段/组件以进行进一步处理。

相比之下,一步算法使用一种更简单、更快的方法。直接处理图像,并提取特征来检测对象,而无需显式的建议生成步骤。

4.2 两级探测器

4.2.1 RCNN (2014)

我们要讨论的第一个算法是R-CNN(基于区域的卷积神经网络)。它通过采用多级管道和各种组件引入了基于区域的检测的概念。我们拍摄图像并生成区域提案。然后使用感兴趣区域 (RoI) 池化操作将这些建议扭曲为固定大小,该操作从建议区域中提取固定长度的特征向量。R-CNN 网络由用于特征提取的卷积神经网络 (CNN) 和全连接层组成。CNN 提取特征,后续层执行对象分类,确定对象的存在及其类别。此外,网络还结合了边界框回归来细化对象周围边界框的坐标。

RCNN 内部架构图。
4.2.2 快速 RCNN (2015)

基于区域卷积神经网络(RCNN),开发了一种称为 Fast R-CNN 的改进算法。它比其前身更快,因为它不使用整个图像来检测对象,而是利用神经网络已识别的特殊特征。与原始图像相比,这些特征的尺寸要小得多。借助这些功能,可以生成特征图,同时考虑到调整大小的地图。接下来,应用SPP(空间金字塔池化)从不同级别的特征图中提取特征。这些特征被传递到全连接层,该层执行对象分类和细化,就像以前的架构一样。

Fast RCNN 内部架构图。
4.2.3 更快的 RCNN (2015)

另一个显着加速这一过程的修改是 Faster R-CNN。在此算法中,使用神经网络生成区域建议。这可以实现更细粒度的处理,简化训练并促进各种优化技术的应用,以针对不同平台优化网络。

Faster RCNN 内部架构图。
4.2.4 FPN (2017)

        今天我们要讨论的下一个算法是特征金字塔网络(FPN),它是 Faster R-CNN 的改进版。尽管与 Faster R-CNN 相比,它提供了更准确的结果,但特征金字塔网络 (FPN) 保持了相似的处理速度。在 FPN 中,特征图不再像以前那样仅从网络的最后一层提取,而是从图像处理的不同阶段提取。然后,使用逐元素加法通过自上而下的路径和横向连接来聚合这些特征,并基于生成的特征金字塔,为执行对象分类和检测的另一个神经网络创建初始建议。

特征金字塔网络(FPN)的内部架构图。

        这是一些两阶段目标检测算法的概述。它们都有自己的优点,可以根据您的项目的需要来使用。

4.2.5 骨干

        目标检测算法的开发是一个活跃的研究领域,该领域非常关注各种架构(例如骨干网)对检测器的准确性和效率的影响。我们将研究骨干网对两级检测器的影响并讨论这个问题的重要方面。

三种检测器(Faster RCNN、R-FCN 和 SSD)在具有不同检测主干的 MS-COCO 数据集上的检测精度比较。

        为了根据特征生成准确的对象建议,必须具有高质量的特征,以便您可以在图像中找到对象。选择合适的主干架构对检测器的准确性有重大影响。例如,MobileNet、Inception 和 ResNet 等流行架构表现出不同的效率和准确性特征。

        提取器特征的准确性可以通过使用合适的损失函数在具有地面真实边界框的对象检测数据集上训练主干来评估。架构的头部通常会被修改或增强附加层以实现对象检测。

        由于与其他组件的相互依赖,在 Faster R-CNN 架构中训练主干可能具有挑战性。在这种情况下,神经网络组件,包括主干网络、区域提议网络和对象检测头,是联合训练的。

        首先,联合训练神经网络组件,包括特征提取器。特征提取器在特征提取后不会冻结,并且会与其他组件一起继续进行微调。

        Faster R-CNN 的一个有趣的特点是它的两阶段学习过程,首先训练区域提议网络(RPN),然后训练目标检测头。

        目前,训练单阶段目标检测算法,例如 YOLO(You Only Look Once)或 SSD(Single Shot MultiBox Detector),已经大大简化,因为它们是一次性训练的,但它们仍然有自己的细微差别。

4.3 一级探测器

4.3.1 悠乐 (2015)

        YOLO(You Only Look Once)是单级检测器之一。尽管下面的简单图并不能完全描述算法的内部工作原理,但它有助于理解一般概念。

        图像被划分为单元格网格,其中网格的大小是可配置的。每个单元格都包含用于对象检测的特征。

        主要思想是 YOLO 预测每个单元中多个对象的边界框和类概率,而不假设每个单元中最多有 2 个对象。

You Only Look Once (YOLO) 的内部架构图。
4.3.2 固态硬盘 (2015)

        另一种单级检测器是 SSD(Single Shot MultiBox Detector),它是一种单级检测器,其工作原理是将不同层的特征聚合到最终的分类器和回归器中。

Single Shot MultiBox Detector (SSD) 内部架构示意图。
4.3.3 视网膜网 (2017)

        RetinaNet 是另一个重要的单级检测器,它聚合有关上下文和纹理特征的信息,以实现对象定位的高精度。它还利用焦点损失函数和特征金字塔网络。

RetinaNet 内部架构图。
4.3.4 中网 (2019)

2019 年发布的 CenterNet 架构是另一个值得一提的单阶段解决方案。

CenterNet内部架构图。

        形成此类网格的最初提议面临着挑战,特别是在处理包含数千个物体的大型卫星图像时。

        CenterNet 没有定义边界框,而是为每个对象分配一个中心点。这允许使用中心点结合预测的偏移量进行对象检测和计数,以生成包围对象的边界框。

        CenterNet的一个显着特点是使用Hourglass Backbone,它能够实现多尺度信息融合并增强模型捕获上下文信息的能力。

        在Hourglass Backbone之后,CenterNet执行关键点评估和检测。

4.4 物体探测器按类别

        目标检测算法的统一、高效开发是计算机视觉领域的热门话题。如今,目标检测器算法有多种变体,其方法和结果各不相同。其中之一是基于锚的两级检测器,它基于两个阶段的检测。该方法使用锚点来建议区域,然后分析这些区域以识别对象。

按类别划分、在顶级期刊上发表并在 MS-COCO 上进行评估的最先进物体检测器的数量。

        另一种选择是无锚检测器,它提供了一种无锚方法来进行对象检测。他们使用其他策略来识别有物体的区域。新的、有前途的领域之一是使用基于变压器的物体检测器。这些基于 Visual Transformer 的算法于 2019 年出现,精度很高。然而,由于未针对某些平台进行优化,它们在性能和计算能力方面存在局限性。尽管如此,这些算法的积极研究和优化已经在进行中。

4.5 基于变压器的探测器

        现在我想提请您注意基于变压器的目标检测器的功能。例如,他们不使用非极大值抑制,我们稍后会讨论这种方法。

模型概述。我们将图像分割成固定大小的块,线性嵌入每个块,添加位置嵌入,并将生成的向量序列馈送到标准 Transformer 编码器。为了执行分类,我们使用标准方法向序列添加额外的可学习“分类标记”。

        基于 Transformer 的对象检测器是一种使用 Visual Transformer 架构的算法。Visual Transformer 使用基于注意力机制的变压器。注意力机制首次在 Vaswani 等人发表的论文《Attention is All You Need》中在 Transformer 模型的背景下引入。2017 年,彻底改变了序列转导任务。

        Transformer 具有重复块,主要基于自注意力机制,使其能够捕获输入序列中不同位置之间的依赖关系。

        这使得转换器成为文本处理中的强大工具,例如文本理解和文本生成。在文本处理领域取得成功之后,变压器也被用于计算机视觉领域,特别是物体检测器。

        视觉数据的处理方法是将图像分成块,然后使用转换器处理这些块。与卷积网络相比,这种方法极大地简化了图像处理。

        图像块被展平并被视为向量序列,由转换器依次处理。输出可用于各种任务,包括物体检测。

        为了有效地处理向量,位置嵌入用于通过添加表示元素相对位置的位置编码向量来将位置信息合并到向量中。

4.5.1 DETR (2020)

        DETR 是一种端到端的对象检测模型,无需使用非极大值抑制即可直接预测图像中对象的边界框和类标签。训练此类算法需要使用标记的训练数据和适当的损失函数来优化模型的参数。

DETR 通过将通用 CNN 与 Transformer 架构相结合来直接(并行)预测最终的检测集。在训练过程中,二分匹配唯一地将预测与地面实况框分配。没有匹配的预测应该产生“无对象”类预测。
4.5.2 (2021) SWIN5.5.2 (2021)

        2021年,引入SWIN(Shifted Windows )架构。SWIN 变压器背后的想法非常简单。它使用 Visual Transformer 技术,将输入图像分割成补丁,但 SWIN Transformer 主干类似于特征金字塔网络。

所提出的 Swin Transformer 通过合并更深层中的图像块(以灰色显示)来构建分层特征图,并且由于仅在每个局部窗口(以红色显示)内计算自注意力,因此具有输入图像大小的线性计算复杂性。

        SWIN 转换器不是单独处理每个补丁,而是将输入图像划分为补丁网格,每个补丁都有固定的大小,并在将它们组合成一个大特征向量之前独立处理它们。这种方法增强了模型对空间关系的理解,改善了对象定位和分割结果。更新后的 SWIN Transformer 第二版展示了在各种任务(例如对象检测和实例分割)中改进的性能。

4.6 非极大值抑制 (NMS)

从 1994 年到 2021 年,目标检测中非极大值抑制 (NMS) 技术的演变:1) 贪婪选择,2) 边界框聚合,3) 学习 NMS,4) 无 NMS 检测。

        目标检测的关键步骤之一是非极大值抑制(NMS)算法,该算法用于组合重叠的边界框并获得一个最终结果。

        让我们想象一下我们使用 YOLO 算法进行物体检测的情况。处理图像后,YOLO 返回 4 个边界框。然而,事实证明所有这些边界框都是重叠的。当选择这些边界框中的哪一个应该被认为是正确的时,就会出现问题。每个边界框只能覆盖对象的某个部分,但我们对整个对象及其确切位置感兴趣。

        目标检测算法的发展经历了几个阶段。Viola Jones 和 Haar 检测器使用了一种称为“贪婪选择”的方法,但它并不是非极大值抑制 (NMS) 算法的具体组成部分。这种方法的想法是选择所有重叠边界框中最大的作为正确结果。然而,这种方法在检测精度方面存在局限性。

        另一种常见的技术是“边界框聚合”。在此阶段,所有边界框根据特定原则进行组合,例如对边界框中心的坐标进行平均或选择最大或最小覆盖值。特定方法的选择取决于手头的任务。

        一般来说,目标是使用所有边界框,同时通过聚合它们来保留信息。然而,应该记住,这种方法也有其缺点,特别是在使用不准确的边界框时,可能会影响最终结果。

        非极大值抑制 (NMS) 是在对象检测模型生成边界框预测后作为后处理步骤执行的。NMS 过滤掉多余的边界框,仅选择最有信心且不重叠的框作为最终输出。

        还有一些不依赖于最大抑制的无 NMS 检测器,例如 DETR。这些检测器立即返回每个单独对象的边界框,从而减少检测后额外步骤的需要。例如,CenterNet 是一个返回关键点的简单架构,无需 NMS。每个对象都由一个关键点和定义边界矩形的距离宽度表示。

五、(Zero | One | Few)五、

        在目标检测算法的开发中,我们正在慢慢转向【少、一、零】样本目标检测的主题。在本节中,我们将较少关注技术细节,而更多地关注更高层次,提供如何执行零样本目标检测的想法的简单描述。

5.1 多模态

典型多式联运的工作流程。三个单模态神经网络独立编码不同的输入模态。特征提取后,融合模块组合不同的模态(可选成对),最后将融合的特征插入分类网络中。

        这种情况下的关键概念是多模态,这意味着神经网络可以同时理解多种类型的数据。例如,可以是图像和文本、图像和声音、文本和声音的组合,甚至可以是图像、文本和声音同时存在。

(来源)

        在这种方法中,我们有多个输入信号,每个信号都由相应的模块处理。在我们的例子中,这包括一个用于文本处理的单独模块、一个用于图像处理的单独模块和一个用于音频处理的单独模块。这些模块形成一个从头到尾工作的单一神经网络,称为端到端架构。

        接下来,使用融合模块。它们可能有不同的名称,但它们执行相同的功能——它们组合图像、文本和音频特征并对它们执行某些操作。例如,他们可能会寻找与文本特征向量最相似的图像特征向量。这和CLIP架构的原理类似,我们稍后会讲到。

5.2 剪辑 (2021)

        CLIP增加了图文连接,以了解图像的内容。

OpenAI 的 CLIP。

        CLIP 是一项革命性的发展。CLIP 背后的主要思想是它在图像和文本之间建立联系,以更好地理解图像的上下文。CLIP 使用两种模型 - TextEncoder 和 ImageEncoder。这些模型中的每一个都将数据转换为矢量格式。

        CLIP 在由文本-图像对组成的数据集上进行训练,每对都包含文本描述和相应的图像。在训练过程中,模型尝试找到 TextEncoder 和 ImageEncoder 参数,以便为文本和图像获得的向量彼此相似。目标是让其他文本描述的向量与目标图像向量不同。

        当使用 CLIP 进行零样本对象检测时,我们可以提供图像以及与我们想要在图像中查找的对象相关的单词或短语列表。例如,如果我们有一张狗的图像,我们可以使用 TextEncoder 创建一个带有文本“狗的照片”的向量。然后,我们将该向量与为单词或短语列表中的每个文本获得的向量进行比较。与图像向量距离最小的文本表示与图像对应的对象。

        因此,我们可以使用 CLIP 对图像中的对象进行分类,即使无需在包含对象的特定数据集上单独训练模型。这种方法为在对象检测领域应用 CLIP 开辟了广泛的可能性,我们可以利用文本和图像之间的关系来查找图像中的对象。

5.3 OWL-ViT (2022)

        OWL-ViT 添加图像级补丁来了解对象的位置。

OWL-ViT:图像级对比预训练。

        2022 年,引入了一种新的多模态架构 OWL-ViT,用于对象检测。该网络可在 Hugging Face 平台上使用,引起了研究和实践社区的极大兴趣。让我告诉你更多相关信息。

        基本思想是创建图像和文本的嵌入,然后比较这些嵌入。图像通过 Vision Transformer 进行处理,生成一组嵌入。然后,Vision Transformer 将自注意力和前馈网络应用于这些嵌入。尽管某些步骤可能看起来令人困惑,但实际上它们有助于提高模型的质量。

        最后,在训练阶段,使用对比损失函数来鼓励对应的图像文本对具有相似的嵌入,以及非对应的图像文本对具有不同的嵌入。该模型预测边界框以及特定文本嵌入应用于特定对象的概率。

        应该注意的是,物体检测的准确性可能是有限的。原始模型的作者使用了使用二分匹配损失对带有对象检测数据集的预训练模型进行微调的过程。此过程有助于提高检测到的边界框的质量。有关此过程的更多信息如下图所示。

OWL-ViT:转移到开放词汇检测。

        现在让我们看看这个多式联运模型的附加功能。除了文本之外,您还可以使用图像作为模板。例如,如果您有一张蝴蝶的照片,您可以将其用作搜索查询并查找类似的图像。该模型能够根据共同属性分析文本和图像。

OWL-ViT:一次性图像条件检测的示例。

5.4 GLIP 格利普 (2022)

GLIP 添加了单词级别的理解,以根据提示的语义查找对象。

通过将感兴趣的类别写入文本提示,GLIP 零样本转移到各种检测任务。

        GLIP (2022) 更进一步,提供对图像的洞察以区分其语义。让我们用一个例子来说明这一点。假设我们有一个关于一个拿着吹风机、戴着眼镜的女人的句子。与此同时,我们看到一张图像,显示该女子戴着吹风机和眼镜。GLIP 将对象检测重新表述为短语基础。通过接受图像和文本提示作为输入,它可以识别诸如人、吹风机等实体。

我们通过将每个区域/框与文本提示中的短语对齐来将检测重新制定为基础任务。我们将跨模态深度融合添加到来自两种模态的早期融合信息中,并学习语言感知的视觉表示。

        该技术提供了一种根据图像与文本提示的语义对应关系来查找图像中的对象的新方法。现在,我们不仅要识别对象,还要将文本的各个部分与图像的组成部分相关联。

        即使您只提供对象的名称,例如“Stingray”,GLIP 也能够找到它,但精度可能较低。但是,如果您添加描述,例如“比目鱼”,它将提供额外的上下文并帮助您了解您正在寻找的内容。值得注意的是,在使用 ChatGPT 和现代零样本目标检测方法时,“即时工程”非常重要。

来自 OdinW 中的 Aquarium 数据集的手动提示调整示例。给定一个富有表现力的提示(“扁平和圆形”),零样本 GLIP 可以更好地检测新实体“黄貂鱼”。

5.5 分割任何东西 (2023)

        Segment Anything (SAM) 添加遮罩来查看对象的像素级位置。

该算法于 2023 年推出,不仅可以检测图像中的对象,还可以通过在像素级别应用掩模来分割它们。

(来源)

        Segment Anything 的主要功能之一是它使用图像和提示编码器来创建整体图像嵌入,可用于根据提示分割图像。这些提示可以是空间提示、文本提示或两者的组合。例如,您可以输入“人”作为文本提示,算法将努力分割图像中与人相关的所有对象。

        这不仅可以让您分割图像中的不同区域,还可以了解场景的布局和内容。使用算法生成的分割掩码,在适当的后处理步骤的情况下,人们可以潜在地执行诸如计算对象实例数量之类的任务。

(来源)

5.6 良好的视觉分词器 (2023)

        Good Visual Tokenizers (GVT) 是一种新的多模态大型语言模型 (MLLM),涉及视觉分词器,并通过适当的预训练方法进行了优化。该分词器有助于理解视觉数据的语义和细粒度方面。

        GVT 添加了大语言模型的使用研究带有文本的图像。

不同的任务需要不同视角的视觉理解。主流视觉语言任务,例如(a)VQA和(b)图像字幕主要关注图像的语义理解。在这项工作中,我们还研究了两个细粒度的视觉理解任务:(c)对象计数(OC)和(d)多类识别(MCI)。

        GVT 在大型语言模型中引入了优化的视觉分词器,可以对图像以及相关文本进行更全面的研究。虽然将这些算法应用于医学图像等特定领域可能需要额外的研究,但 GVT 已经在涉及视觉问答、图像字幕和细粒度视觉理解任务(例如对象计数和多类识别)的任务中展示了卓越的性能。

GVT 框架。首先通过平滑的 L1 损失提取预训练 CLIP 的特征。然后,使用它将图像编码为一组标记,这些标记作为软提示输入到感知器重采样器中。这些提示与语言指令一起被输入 LLM 以生成响应。在此过程中仅优化感知器重采样器。

        将文本和图像集成到一个模型中可以扩展您的数据理解和处理能力。通过使用上述算法,可以在解决以前需要复杂算法和大量数据的各种任务方面取得重大进展。

总结一下零样本目标检测

  1. CLIP增加了图文连接,以了解图像的内容。
  2. OWL-ViT 添加图像级补丁来了解对象的位置。
  3. GLIP 添加了单词级别的理解,以根据提示的语义查找对象。
  4. SAM 添加掩模来查看对象的像素级位置。
  5. GVT 添加了大语言模型的使用研究带有文本的图像。

六、结论

        从计算机视觉的早期到当前最先进的深度学习技术,对象检测算法的发展是一段非凡的旅程。从 Viola-Jones 检测器和 HOG 检测器等传统方法开始,我们见证了向 RCNN、YOLO、SSD 和 CenterNet 等更先进方法的过渡,这些方法引入了端到端架构以提高适应性。然而,最具突破性的飞跃是零射击目标检测方法,如 OWL-ViT、GLIP、Segment Anything 和 GVT,使我们能够检测图像中的目标,而无需进行大量的神经网络训练!

How Object Detection Evolved: From Region Proposals and Haar Cascades to Zero-Shot Techniques | Andrii Polukhin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-table实现穿梭功能

第一种 <template><el-row :gutter"20"><el-col :span"10"><!-- 搜索 --><div class"search-bg"><YcSearchInput title"手机号" v-model"search.phone" /><div class"search-s…

EasyX趣味化编程note2,绘制基本图形

创意化编程&#xff0c;让编程更有趣 今天介绍的仍为比较简单的效果&#xff0c;由浅入深来进行学习 介绍每个函数都会附上代码和运行结果&#xff0c;感兴趣的大家可以复制粘贴运行一下看看效果&#xff0c;也可以自己进行改动&#xff0c;非常好玩且加深印象。 上节课的知识…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

机器学习笔记:Huber Loss smooth L1 loss

1 Huber loss 1.1 介绍 Huber Loss是回归问题中的一种损失函数&#xff0c;它结合了均方误差MSE和绝对误差MAE的特点。 Huber Loss在误差较小的时候是平方损失&#xff0c;而在误差较大的时候是线性损失。因此&#xff0c;它在处理有噪声的数据时&#xff0c;尤其是存在离群点…

手机搜狗输入法,输入拼音时如何分割拼音,调出“分词“功能,如何微信或QQ使用发送按钮而不是换行?

背景 有时候打字&#xff0c;输入 “xian” 的时候我们的意图是 “xi’an” &#xff08;西安&#xff09;&#xff0c;或者输入 “yue” 的时候希望是 “yu’e”&#xff08;余额&#xff09; 如何输入这个分隔符 ’ 呢&#xff1f; 设置方法 默认页面如图 希望设置成 点…

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司&#xff0c;以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商&#xff0c;Miele的经营范围覆盖了厨房、洗衣和清洁领域&#xff0c;致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中&#xff0c;聚合函数是一组强大的工具&#xff0c;用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户&#xff0c;了解聚合函数都是非常重要…

CSS详细基础(四)显示模式

本帖开始介绍CSS中更复杂的内容 目录 一.显示模式 1.行内元素 2.块级元素 3.行内块元素 二.背景样式 一.显示模式 顾名思义&#xff0c;在CSS中&#xff0c;元素主要有3种显示模式&#xff1a;行内元素、块级元素、行内块元素~ 所谓块级元素&#xff0c;指的是该元素在…

ChatGPT AIGC 非常实用的AI工具集合大全

实战AI 工具箱 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu

GD32工程创建

1.创建空工程 在任意路径下创建空的test文件夹。打开keil5空工程创建空工程 选择对应的芯片型号&#xff1a; 然后把空工程保存到test文件夹下。会自动生成如下文件。 2. 添加组 下载GD32F10X的固件库&#xff1a;在百度里搜索GD32进入官网。 下载下来对应的文件如下&#xff…

MYSQL常用命令

一.数据类型 MySQL中有多种数据类型&#xff0c;每种类型用于存储不同类型的数据。以下是MySQL中常见的数据类型&#xff1a; 数值类型&#xff1a; INT&#xff1a;整数类型&#xff0c;存储范围为-2,147,483,648到2,147,483,647。BIGINT&#xff1a;大整数类型&#xff0c;存…

【蓝桥杯选拔赛真题63】Scratch云朵降雨 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch云朵降雨 一、题目要求 编程实现 二、案例分析 1、角色分析

AHH HackerHouse @Move大理站完美谢幕

Antalpha HackerHouse Move 大理站于2023年9月23日在面包树举办了Final DemoDay&#xff0c;这也代表着为期21天的 HackerHouse 活动完美谢幕。 自从9月3日开始&#xff0c;整整21天的共居时间里&#xff0c;我们从个体逐渐融汇成小团队&#xff0c;最终成为了一个紧密团结的大…

UI自动化测试 | Jenkins配置优化

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

软件测试之单元测试自动化入门基础

单元测试自动化 所谓的单元测试(Unit Test)是根据特定的输入数据&#xff0c;针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构&#xff1a;函数&#xff0c;类&#xff0c;模块等。在Python中比较知名…

OpenHarmony自定义组件介绍

一、创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑…

安装ipfs-swarm-key-gen

安装ipfs-swarm-key-gen Linux安装go解释器安装ipfs-swarm-key-gen Linux安装go解释器 https://blog.csdn.net/omaidb/article/details/133180749 安装ipfs-swarm-key-gen # 编译ipfs-swarm-key-gen二进制文件 go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm…

Redis代码实践总结(二)

使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而&#xff0c;为了使使用 Redis 进行黑客攻击变得更简单&#xff0c;Redis 提供了一个命令行实用程序&#xff0c;可用于向 Redis 发送命令…

odoo16 取消“系统各功能状态日报”的邮件

odoo16默认情况下每周都会发送一个“系统各功能状态日报”的邮件&#xff0c;而且是所有人都发&#xff0c; 这个功能在哪配置呢&#xff1f; 今天研究了一下&#xff0c; 线索是“系统各功能状态日报”&#xff0c;先全文检索吧 #. module: digest #: model:digest.digest,na…

KUKA机器人通过3点法设置工作台基坐标系的具体方法

KUKA机器人通过3点法设置工作台基坐标系的具体方法 具体方法和步骤可参考以下内容: 进入主菜单界面,依次选择“投入运行”—“测量”—基坐标,选择“3点法”, 在系统弹出的基坐标编辑界面,给基座标编号为3,命名为table1,然后单击“继续”按钮,进行下一步操作, 在弹出的…