当前位置: 首页 > news >正文

目标检测如何演变:从区域提议和 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

相关文章:

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

目录 一、说明 二、目标检测路线图 2.1 路线图(一般) 2.2 路线图(更传统的方法) 2.3 路线图(深度学习方法) 2.4 对象检测指标的改进 三、传统检测方法 3.1 维奥拉-琼斯探测器 (2001) 3.2 HOG探测器…...

聊一聊国内大模型公司,大模型面试心得、经验、感受

有着过硬的技术却无处可用是不是很苦恼呢,大家在面试时是不是也积累了一些经验呢,本文详细总结了大佬在大模型面试时的一些经验及感悟,希望对大家面试找工作有所帮助。 2023年,大模型突然国内火了起来,笔者就面了一些…...

【分布式微服务】feign 异步调用获取不到ServletRequestAttributes

公司调用接口的时候使用feign,但是服务之间还是使用了鉴权,需要通过RequestInterceptor 去传递uuid 概念 OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更简单。在使用OpenFeign进行异步调用时,你可以通过配置来实现。但是,如果你在配置或调用过程中遇…...

c#编程里面最复杂的技术问题有哪些

C#编程中最复杂的技术问题通常涉及高级主题和复杂的应用场景。以下是一些可能被认为是C#编程中最复杂的技术问题: 1. **多线程和并发编程:** 处理多线程和并发问题涉及到锁定、线程同步、死锁避免、线程安全性和性能优化等方面的知识。编写高效且线程安…...

github代码提交过程详细介绍

1、下载github上面的代码 (1)在github网站上,找到想要下载的代码仓库界面,点击Code选项就可以看到仓库的git下载地址; (2)使用命令下载:git clone 地址; 2、配置本地git…...

Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)

在linux系统上进行多gpu卡的深度学习任务 确保已安装最新的 TensorFlow GPU 版本。 import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices(GPU)))1、确保你已经正确安装了tensorflow和相关的GPU驱动,这里可以通…...

Mendix中的依赖管理:npm和Maven的应用

序言 在传统java开发项目中,我们可以利用maven来管理jar包依赖,但在mendix项目开发Custom Java Action时,由于目录结构有一些差异,我们需要自行配置。同样的,在mendix项目开发Custom JavaScript Action时,…...

自定义hooks之useLastState、useSafeState

自定义hooks之useLastState、useSafeState useLastState 在某些情况下,可能需要知道状态的历史值,例如,希望在状态变化时执行某些操作,但又需要访问上一个状态的值,以便进行比较或其他操作。自定义 React Hook 可以帮…...

前端判断: []+[], []+{}, {}+[], {}+{}

本质: 二元操作符规则 一般判断规则: 如果操作数是对象,则对象会转换为原始值如果其中一个操作数是字符串的话,另一个操作数也会转换成字符串,进行字符串拼接否则,两个操作数都将转换成数字或NaN,进行加法操作 转为原始数据类型的值的方法: Symbol.ToPrimitiveObject.protot…...

el-input-number/el-input 实现实时输入数字转换千分位(失焦时展示千分位)

el-input-number/el-input 实现实时输入数字转换千分位(失焦时展示千分位) 我把封装指令的代码放在了main.js,代码如下 // 金额展示千分位 Vue.directive("thousands", {inserted: function(el, binding) {// debugger// 获取input节点if (el.tagName.toLocaleUppe…...

一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体

目录 前言 1、结构体 1.1、结构体类型的声明 1.2、特殊的结构体类型声明 1.3、结构体的自引用 1.4、结构体的定义和初始化 1.5、结构体成员变量的调用 1.6、结构体内存对齐 1.6.1、offsetof 1.6.2、结构体大小的计算 1.6.3、为什么存在内存对齐? 1.7、…...

KongA 任意用户登录漏洞分析

KongA 简介 KongA 介绍 KongA 是 Kong 的一个 GUI 工具。GitHub 地址是 https://github.com/pantsel/konga 。 KongA 概述 KongA 带来的一个最大的便利就是可以很好地通过UI观察到现在 Kong 的所有的配置,并且可以对于管理 Kong 节点 漏洞成因 未设置TOKEN_SECRE…...

吉力宝:智能科技鞋品牌步力宝引领传统产业创新思维

在现代经济环境下,市场经济下产品的竞争非常的激烈,如果没有营销,产品很可能不被大众认可,酒香也怕巷子深,许多传统产业不得不面临前所未有的挑战。而为了冲出这个“巷子”,许多企业需要采用创新思维&#…...

【IPC 通信】信号处理接口 Signal API(1)

收发信号思想是 Linux 程序设计特性之一,一个信号可以认为是一种软中断,通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解信号编程。 信号概述 遵循 POSIX.1,…...

使用GDIView排查GDI对象泄漏导致的程序UI界面绘制异常问题

目录 1、问题说明 2、初步分析 3、查看任务管理器,并使用GDIView工具分析 4、GDIView可能对Win10兼容性不好,显示的GDI对象个数不太准确 5、采用历史版本比对法,确定初次出现问题的时间点,并查看前一天的代码修改记录 6、将…...

蓝桥等考Python组别一级001

第一部分:选择题 1、Python L1 (15分) 下面哪个不是Python的编程环境?( ) Python在线编程IDLEPyCharmScratch正确答案:D 2、Python L1(15分) 世界上第一台通用电子计算机ENIAC是在( )诞生的。 美国英国日本德国正确答案:A 3、Python L1(20分) 关于P…...

Unity之Hololens2开发 如何接入的MRTK OpenXR Plugin

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…...

Ubuntu系统Linux内核安装和使用

安装: 检查树莓派Linux版本,我的是6.1 uname -r 内核下载链接: Raspberry Pi GitHub 找对应版本下载 导入之后,解压安装即可 unzip linux-rpi-6.1.y.zip 其他内容 treee 指令安装 sudo apt-get install tree 使用这…...

数学术语之源——群同态的“核(kernel)”

1. “kernel”这个术语在群论中的起源 Ivar Fredholm 在 1903 年的第27期Acta Math 数学学报发表的一篇关于“积分方程(INTEGRAL EQUATIONS)”的著名论文(“关于一类函数方程(Sur une classe des quations fonctionnelles)”)中使用了法语“noyau(核)”(365-390页)。 David …...

defcon-quals 2023 crackme.tscript.dso wp

将dso文件放到data/ExampleModule目录下,编辑ExampleModule.tscript文件 function ExampleModule::onCreate(%this) { trace(true); exec("./crackme"); __main("aaaaaaaa"); quit(); } 然后点击主目录下的Torque3D-debug.bat就可以在生成的c…...

前端开发 vs. 后端开发:编程之路的选择

文章目录 前端开发:用户界面的创造者1. HTML/CSS/JavaScript:2. 用户体验设计:3. 响应式设计:4. 前端框架: 后端开发:数据和逻辑的构建者1. 服务器端编程:2. 数据库:3. 安全性&#…...

算法练习4——删除有序数组中的重复项 II

LeetCode 80 删除有序数组中的重复项 II 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 …...

【C++进阶(六)】STL大法--栈和队列深度剖析优先级队列适配器原理

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 栈和队列 1. 前言2. 栈和队列的接口函数熟悉3. …...

linux opensuse使用mtk烧录工具flashtool

环境 linux发行版:opensuse leap 15.5 工具:SP_Flash_Tool_Selector_exe_Linux_v1.2316.00.100.rar 或其他版本 目标:mtk设备 下载链接 https://download.csdn.net/download/zmlovelx/88382784 或网络搜索。 使用 opensuse可直接解压后使…...

Visio如何对文本打下标、上标,以及插入公式编辑器等问题(已解决)

解决这个问题的本质问题,就是在Visio中插入公式编辑器(这不是visio的常用命令,需要添加)。 打开Visio--》文件--选项 点击选项,弹出对话框。在自定义功能区中,点击 常用命令,在下拉选项中&#…...

快速将iPhone大量照片快速传输到电脑的办法!

很多使用iPhone 的朋友要将照片传到电脑时,第一时间都只想到用iTunes 或iCloud,但这2个工具真的都非常难用,今天小编分享牛学长苹果数据管理工具的照片传输功能,他可以快速的将iPhone照片传输到电脑上,并且支持最新的i…...

TCP/IP协议簇包含的协议

应用层(Application Layer): HTTP(Hypertext Transfer Protocol):用于Web浏览器和Web服务器之间的通信。HTTPS(Hypertext Transfer Protocol Secure):安全的HTTP版本&…...

天地图绘制区域图层

背景&#xff1a; 业务方要求将 原效果图 参考效果图 最终实现效果 变更点&#xff1a; 1.将原有的高德地图改为天地图 2.呈现形式修改&#xff1a;加两层遮罩&#xff1a;半透明遮罩层mask区域覆盖物mask 实现过程&#xff1a; 1.更换地图引入源 <link rel"style…...

git权限不够:Ask a project Owner or Maintainer to create a default branch

新仓库还未创建任何分支时&#xff0c;Developer角色时首次提交代码&#xff0c;抛如下异常 remote: GitLab: remote: A default branch (e.g. master) does not yet exist for galaxy/apache-jspf-project remote: Ask a project Owner or Maintainer to cre…...

AI在材料科学中的应用

7 AI在材料科学中的应用 在这一部分&#xff0c;我们将讨论AI技术在材料科学中的应用。首先&#xff0c;我们将介绍晶体材料的概述&#xff0c;并详细定义晶体材料的物理对称性&#xff0c;具体在第7.1节中讨论。接下来&#xff0c;我们将在第7.2节和第7.3节中讨论两个常见且基…...

合肥网站建设网站模板/广告投放都有哪些平台

开发工具下载地址...

wordpress5.0.2/友联互换

ONVIF开发经验总结 ONVIF开发经验总结....................................................................................................... 1 一、 利用gsoap2.8.14生成Onvif相关源代码................................................................ 2 1. 生…...

网络营销管理方案/移动端seo关键词优化

安装rlwrap-0.37.tar.gz工具--实现SQLPLUS中记忆和上下翻页功能在rpm10g32这个路径中1、解压缩[rootoracle3 ~]# cd /u01/rpm10g32[rootoracle3 rpm10g32]# tar -zxvf rlwrap-0.37.tar.gz 2、安装[rootoracle3 rpm10g32]# cd rlwrap-0.37 --root下安装&#xff0c;安装的时候…...

广西建设教育网站/郑州网站建设优化

由于博主比较习惯笔记本开盖即用&#xff0c;合盖即走&#xff0c;不大习惯开机关机&#xff08;毕竟SSD速度杠杠滴^_^&#xff09;。可是发现笔记本长时间睡眠乃至休眠唤醒后&#xff0c;使用thinkpad热键&#xff0c;虽然可以调节&#xff0c;但屏幕不显示调节状态了。解决步…...

手机网站app制作/天津百度推广电话号码

修复此问题 禁用内核调试&#xff0c;在 Visual Studio 中调试。- 或 -使用内核调试器而不是 Visual Studio 进行调试。- 或 -在内核调试器中禁用用户模式异常。在当前会话中禁用内核调试 在命令提示处&#xff0c;键入&#xff1a; 复制代码 Kdbgctrl.exe -d对所有会话禁用内核…...

smluntan论坛wordpress/宁波网络推广软件

原标题&#xff1a;Python 中 _new__方法详解及使用 __new__ 的作用 在Python中__new__方法与__init__方法类似&#xff0c;但是如果两个都存在那么__new__先执行。 在基础类object中&#xff0c;__new__被定义成了一个静态方法&#xff0c;并且需要传递一个参数cls。Cls表示需…...