目标检测器技术演进简史

news2024/11/17 14:23:27

引言

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

我们首先回顾早期传统的目标检测方法:Viola-Jones 检测器、HOG 检测器和基于部件(Part-based)的方法。它们在目标检测领域发展之初得到了广泛应用。

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

博文的最后,我们以Zero-Shot目标检测方法结束,它允许我们在无需任何神经网络训练的情况下搜索图像中的任何对象,典型的Zero-Shot目标检测方法包括:OWL-ViT、CLIP、GLIP、Segment Anything、GVT。

在这里插入图片描述

目标检测概述

在本文中,我们将探讨目标检测的主题、含义、优势以及许多有趣的地方,我们还将尝试分析目标检测的总体趋势和演变。

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

目标检测是计算机视觉中的一项关键任务,其目标是识别和定位图像中的各种对象,例如汽车、骑自行车的人和交通灯。这是通过使用坐标( x m i n x_{min} xmin, y m i n y_{min} ymin, x m a x x_{max} xmax, y m a x y_{max} ymax)定义矩形区域并将它们与分类和概率向量( p 1 p_1 p1, p 2 p_2 p2, ⋯ \cdots , p n p_n pn)关联来实现的。目标检测在实际意义上超越了图像分类,因为它能够检测对象以进行后续分析、修改或分类。Stable Diffusion 和 Face Swap 等技术利用目标检测来操纵和替换图像中的目标或人脸。当同一类的多个目标(例如行人)重叠时,就会出现挑战。尽管各种替代方法正在兴起,但非极大值抑制(Non-Maximum Suppression,NMS)仍然是目前的通用解决方案,。

目标检测是一项极其重要的任务,在过去约 30 年中得到了发展和改进。目标检测算法的研发一直是一个活跃的研究领域,我们将持续观察该领域的新趋势和进展。目标检测技术应用广泛应用于各个行业,从视频监控和自动驾驶汽车到医药和零售,具体来说:

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

在这里插入图片描述

目标检测路线图

让我们从 Roadmap 开始。本小节包含一些论文中的图片,描述了目标检测方法的发展。让我们概述一下这些路线图,重点关注一些要点。

路线图(一般)

在这里插入图片描述
目标检测自 20 世纪 80 年代以来一直在发展。1998 年,LeCun 等人引入了 LeNet-5,这是一种用于数字识别的重要 CNN 架构。这个数据集被称为 MNIST,起源于 90 年代,此后成为评估机器学习和深度学习算法的流行基准。后来有人提出了目标检测的要求,但当时还没有足够有效的方法来做到这一点。

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

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

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

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

这些模型提供了高质量的代表性图像特征,可以很好的描述上下文并检出各种目标。

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

路线图(更传统的方法)

在这里插入图片描述
目标检测的发展主要经历了两个历史时期:“传统目标检测时期(2014年之前)”和“基于深度学习的目标检测时期(2014年后)”。

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

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

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

路线图(深度学习方法)

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

2015 年,S. Ren 等人提出了 Faster RCNN 检测器,这是第一个基于深度学习的 near-real-world 检测器。Faster-RCNN 的主要贡献是引入了Region Proposal Network (RPN),它允许人们以很小的代价获得区域 Proposal。从R-CNN到Faster RCNN,目标检测系统的大部分单独模块,例如特征提取、边界框回归等,已逐渐集成到单个最终学习框架中。

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

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

目标检测指标的改进

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

我们详细分析了 VOC07、VOC12 和 MS-COCO 数据集上目标检测 mAP 的发展和改进。
在这里插入图片描述

  • 在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),该网络在早期图像识别任务中发挥了重要作用。还采用了统计方法,包括高斯混合模型和基于正态分布的概率模型等技术。

尽管从研究的角度来看,其中一些方法很有趣,并且对于了解技术发展脉络来说可能具有价值,但它们已不再用于现代目标检测系统。相反,现代方法基于大型神经网络,可以进行高效的图像比较和目标识别。这些方法提供了更具代表性的结果。
在这里插入图片描述

Viola-Jones Detectors (2001)

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

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

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

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

HOG探测器 (2005)

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

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

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

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

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

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

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

基于部分的方法

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

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

基于深度学习的检测方法

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

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

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

两阶段和一阶段目标检测器

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

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

两阶段检测器

RCNN (2014)

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

Fast RCNN (2015)

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

在这里插入图片描述

Faster RCNN (2015)

另一个显著加速这一过程的改进是 Faster R-CNN。在此算法中,使用神经网络生成region proposal。这可以实现更细粒度的处理,简化训练,并促进应用各种优化技术来针对不同平台优化网络。
在这里插入图片描述

FPN (2017)

我们要讨论的下一个算法是特征金字塔网络(Feature Pyramid Networks,FPN),它是 Faster R-CNN 的改进版。尽管与 Faster R-CNN 相比,它提供了更准确的结果,但特征金字塔网络 (FPN) 保持了相似的处理速度。在 FPN 中,特征图不再像以前那样仅从网络的最后一层提取,而是从图像处理的不同阶段提取。然后,使用逐元素加法通过自上而下的路径和横向连接来聚合这些特征,并基于生成的特征金字塔,为执行目标分类和检测的另一个神经网络创建初始proposal。
在这里插入图片描述
以上是一些典型两阶段目标检测算法的概述。它们都有自己的优点,可以根据项目的需要来使用。

Backbones

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

在这里插入图片描述

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

提取器特征的准确性可以通过使用合适的损失函数在具有Groundtruth边界框的目标检测数据集上训练backbone来评估。架构的头部通常会被修改或增强额外的层以实现目标检测。

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

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

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

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

一阶段检测器

YOLO (2015)

YOLO(You Only Look Once)是一阶段检测器之一。虽然下面的简单示意图没有完全描述算法的内部工作原理,但它有助于理解一般概念。

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

主要思想是 YOLO 预测每个单元中多个目标的边界框和类概率,而无需假设每个单元中最多有 2 个目标。
在这里插入图片描述

SSD (2015)

另一种一阶段检测器是 SSD(Single Shot MultiBox Detector),它是一种单级检测器,其工作原理是将不同层的特征聚合到最终的分类器和回归器中。
在这里插入图片描述

RetinaNet (2017)

RetinaNet 是另一个重要的一阶段检测器,它聚合有关上下文和纹理特征的信息,以实现目标定位的高精度。它还利用焦点损失函数(focal loss function)和特征金字塔网络(FPN)。
在这里插入图片描述

CenterNet (2019)

2019 年发布的 CenterNet 架构是另一个值得一提的一阶段解决方案。
在这里插入图片描述

形成此类网格的最初想法面临着挑战,特别是在处理包含数千个目标的大型卫星图像时。CenterNet 没有定义边界框,而是为每个目标分配一个中心点。这允许使用中心点结合预测的偏移量进行目标检测和计数,以生成包围目标的边界框。CenterNet的一个显著特点是使用Hourglass Backbone,它能够实现多尺度信息融合并增强模型捕获上下文信息的能力。在Hourglass Backbone之后,CenterNet执行关键点评估和检测。

目标检测器按类划分

目标检测算法的统一、高效开发是计算机视觉领域的热门话题。如今,目标检测器算法有多种变体,其方法和结果各不相同。其中之一是基于anchor的两阶段检测器,它基于两个阶段的检测。该方法使用锚点来proposal区域,然后分析这些区域以识别目标。
在这里插入图片描述
另一种选择是无锚(anchor-free)检测器,它提供了一种无锚方法来进行目标检测。他们使用其他策略来识别有目标的区域。新的、有前途的领域之一是使用基于Transformer的目标检测器。这些基于 Visual Transformer 的算法于 2019 年出现,精度很高。然而,由于未针对某些平台进行优化,它们在性能和计算能力方面存在局限性。尽管如此,这些算法的积极研究和优化已经在进行中。

基于Transformer的检测器

现在我想提请你注意基于Transformer的目标检测器的功能。例如,他们不使用非极大值抑制,我们稍后会讨论这种方法。
在这里插入图片描述
基于 Transformer 的目标检测器是一种使用 Visual Transformer 架构的算法。Visual Transformer 使用基于注意力机制的Transformer。注意力机制首次在2017年由 Vaswani 等人发表的Transformer 模型论文《Attention is All You Need》中引入,彻底颠覆了序列转换任务。

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

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

视觉数据的处理方法是将图像分成块,然后使用transformers处理这些块。与卷积网络相比,这种方法极大地简化了图像处理。图像块被展平并被视为向量序列,由transformers依次处理。其输出可用于各种任务,包括目标检测。为了有效地处理向量,位置嵌入用于通过添加表示元素相对位置的位置编码向量来将位置信息合并到向量中。

DETR (2020)

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

SWIN Transformer (2021)

2021年,引入SWIN(Shifted Windows)架构。SWIN Transformer背后的想法非常简单。它使用 Visual Transformer 技术,将输入图像分割成patches,但 SWIN Transformer 主干类似于特征金字塔网络。
在这里插入图片描述

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

非极大值抑制 (NMS)

在这里插入图片描述

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

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

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

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

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

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

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

(Zero|One|Few)-Shot Object Detection

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

多模态

在这里插入图片描述
这种情况下的关键概念是多模态,这意味着神经网络可以同时理解多种类型的数据。例如,可以是图像和文本、图像和声音、文本和声音的组合,甚至可以是图像、文本和声音同时存在。
请添加图片描述
在这种方法中,我们有多个输入信号,每个信号都由相应的模块处理。在我们的例子中,这包括一个用于文本处理的单独模块、一个用于图像处理的单独模块和一个用于音频处理的单独模块。这些模块形成一个从头到尾工作的单一神经网络,称为端到端架构。

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

CLIP (2021)

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

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

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

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

OWL-ViT (2022)

OWL-ViT 添加图像级patches来了解目标的位置。
在这里插入图片描述
2022 年,研究者引入了一种新的多模态架构 OWL-ViT,用于目标检测。该网络可在 Hugging Face 平台上使用,引起了研究和实践社区的极大兴趣。其基本思想是创建图像和文本的嵌入,然后比较这些嵌入。图像通过 Vision Transformer 进行处理,生成一组嵌入。然后,Vision Transformer 将自注意力和前馈网络应用于这些嵌入。尽管某些步骤可能看起来令人困惑,但实际上它们有助于提高模型的质量。

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

应该注意的是,目标检测的准确性可能是有限的。原始模型的作者使用了基于二分匹配损失在带有目标检测数据集的预训练模型进行微调的过程。此过程有助于提高检测到的边界框的质量。有关此过程的更多信息如下图所示。
请添加图片描述
现在让我们看看这个多模态模型的额外特征。除了文本之外,您还可以使用图像作为模板。例如,如果您有一张蝴蝶的照片,您可以将其用作搜索查询并查找类似的图像。该模型能够根据共同属性分析文本和图像。
请添加图片描述

GLIP (2022)

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

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

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

请添加图片描述

Segment Anything (2023)

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

该算法于 2023 年推出,不仅可以检测图像中的对象,还可以通过在像素级别应用mask来分割它们。
请添加图片描述
Segment Anything 的主要功能之一是它使用图像和提示编码器来创建整体图像嵌入,可用于根据提示分割图像。这些提示可以是空间提示、文本提示或两者的组合。例如,您可以输入“人”作为文本提示,算法将努力分割图像中与人相关的所有对象。

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

GVT (2023)

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

GVT 添加了大语言模型的使用来研究带有文本的图像。
请添加图片描述
GVT 在大型语言模型中引入了优化的visual tokenizer,可以对图像以及相关文本进行更全面的研究。虽然将这些算法应用于医学图像等特定领域可能需要额外的研究,但 GVT 已经在涉及视觉问答、image caption和细粒度视觉理解任务(例如目标计数和多类识别)的任务中展示了卓越的性能。
请添加图片描述

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

总结一下零样本目标检测:

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

结论

总之,从计算机视觉的早期到当前最先进的深度学习技术,目标检测算法的演变是一段非凡的旅程。我们已经从 Viola-Jones 检测器和 HOG 检测器等传统方法过渡到 RCNN、YOLO、SSD 和 CenterNet 等更先进的方法,这些方法引入了端到端架构以提高适应性。然而,最具突破性的飞跃是零样本目标检测方法,如 OWL-ViT、GLIP、Segment Anything 和 GVT。这些创新技术使我们能够检测图像中的物体,而无需进行大量的神经网络训练,从而开启了物体检测领域的新时代。

本博文译自Andrii Polukhin 的系列博文。

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

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

相关文章

服务器端模板注入 (SSTI) 漏洞实战与技巧,网络高级工具透明代理的几种实现方式

服务器端模板注入 (SSTI) 漏洞实战与技巧,网络高级工具透明代理的几种实现方式。 SSTI(Server-Side Template Injection)从名字可以看出即是服务器端模板注入。比如python的flask、php的thinkphp、java的spring等框架一般都采用MVC的模式,用户的输入先进入Controller控制器,…

内网渗透基础

内网 内网指的是内部局域网,常说的LAN(local area network)。常见家庭wifi网络和小型的企业网络,通常内部计算机直接访问路由器设备,路由器设备接入移动电信的光纤实现上网。 内部局域网可以通过交换机/防火墙组成多个…

华清远见嵌入式学习——QT——作业2

作业要求&#xff1a; 代码运行效果图&#xff1a; 登录失败 和 最小化 和 取消登录 登录成功 和 X号退出 代码&#xff1a; ①&#xff1a;头文件 #ifndef LOGIN_H #define LOGIN_H#include <QMainWindow> #include <QLineEdit> //行编辑器类 #include…

《深入理解计算机系统》学习笔记 - 第四课 - 机器级别的程序

Lecture 05 Machine Level Programming I Basics 机器级别的程序 文章目录 Lecture 05 Machine Level Programming I Basics 机器级别的程序intel 处理器的历史和体系结构芯片的构成AMD 公司(Advanced Micro Devices&#xff0c;先进的微型设备) C, 汇编, 机器代码定义汇编/机器…

MDK官网如何下载stm32支持包

网站&#xff1a;https://www.keil.com/demo/eval/arm.htm 1 2 3点这个下载

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序&#xff0c;乔拓云模板平台助力商家抢占先机&#xff01;该平台涵盖全行业小程序模板&#xff0c;一键复制即可上线。 想要快速创建高效实用的小程序&#xff0c;乔拓云小程序模板开发平台为您提供了解决方案&#xff01;我们为您提供一系列精心设计的小程序模板…

智汇恒星科技|控乐屋.全宅智能冠军代言来啦, 智慧家居千亿蓝海

随着5G、大数据、云计算、物联网等技术的发展&#xff0c;智能化正覆盖人们生活的方方面面&#xff0c;全屋智能的出现为“一键式”智能家居生活享受提供无限可能。近年来智能家居行业总体规模增长迅速&#xff0c;数据显示&#xff0c;2022年中国智能家居行业市场规模约为6200…

flstudio21破解汉化版2024最新水果编曲使用教程

​ 如果你一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这…

vue3移动端脚手架(纯净,集成丰富)

概述 一个纯净的移动端框架 &#xff0c;用到了 Vue3 vuex Vite3 Vant3 sass eslint stylelint htmlhint husky commitlint axios axios-adapter VConsole 自定义全局 loading &#xff0c;自定义函数式 dialog &#xff08;api模仿微信小程序&#xff09;&#x…

选自《洛谷深入浅出进阶篇》——欧拉函数+欧拉定理+扩展欧拉定理

欧拉函数&#xff1a; 欧拉函数定义&#xff1a; 1~n中与n互质的数的个数。 比如 欧拉函数是积性函数&#xff1a;&#xff08;也就是&#xff09;当 n与m互质的时候&#xff1a; 由算术基本定理&#xff0c;我们可以设n&#xff0c;那么我们只要计算出的取值就能求出的取…

【后端学前端学习记录】学习计划

1、个人背景 写了足够久的后端了&#xff0c;常用的语言基本上都接触过&#xff0c;没有在工作中写过前端 一直想做一些前端的工作&#xff0c;但是前端技能不足加上自己审美不行&#xff0c;写出的界面总是很丑 所以一直对前端做不好&#xff0c;也没有真正下手。 2、动机 种…

C# Solidworks二次开发:选择管理器相关的API介绍

今天在讲述主要内容之前&#xff0c;先说一个不太相关的问题。 我之前在其他文章中看到有一些朋友在问为什么获取到的点位数据需要乘以1000进行单位转换&#xff0c;其实原因是这样的&#xff0c;在所有使用的API中如果没有特殊说明&#xff0c;所有的长度单位都是米&#xff…

Langchain-Chatchat大语言模型本地知识库的踩坑、部署、使用

Langchain-Chatchat的部署 Langchain-Chatchat概述实现原理 开发环境准备软件要求硬件要求 部署拉取仓库创建虚拟环境安装全部依赖初始化配置文件初始化知识库模型下载启动项目启动API服务启动Web UI服务使用对话功能知识库管理文件对话搜索引擎问答 异常集合异常1异常2异常3 L…

Linux——web网站服务(一)

一、安装httpd服务器Apache网站服务 1、准备工作 为了避免发送端口冲突&#xff0c;程序冲突等现象&#xff0c;卸载使用rpm方式安装的httpd #使用命令检查是否下载了httpd [rootserver ~]# rpm -qa httpd #如果有则使用 [rootserver ~]# rpm -e httpd --nodeps Apache的配置…

AGI 时代,小红书邀您一起复盘年度 100 件值得学习的好案例

2023 年&#xff0c;由 ChatGPT 引爆新一轮人工智能热潮&#xff0c;开启了由大模型驱动的 AGI 时代。随着 AIGC 的快速崛起&#xff0c;传统的研发模式是否会被 AI 颠覆也成为了巨大的未知数。面对不同规模团队与不同业务场景&#xff0c;企业想要找到可靠、可行、可落地的转型…

temu日本站在哪里入驻

在跨境电商领域中&#xff0c;Temu是拼多多推出的一款备受瞩目的平台。如今&#xff0c;越来越多的商家希望将自己的业务扩展到日本市场&#xff0c;而在Temu日本站上入驻就成为了一个不可忽视的机遇。本文将为您介绍如何在Temu日本站上入驻&#xff0c;并提供一些有用的技巧和…

Swing程序设计(9)复选框,下拉框

文章目录 前言一、复选框二、下拉框总结 前言 该篇文章简单介绍了Java中Swing组件里的复选框组件、列表框组件、下拉框组件&#xff0c;这些在系统中都是常用的组件。 一、复选框 复选框&#xff08;JCheckBox&#xff09;在Swing组件中的使用也非常广泛&#xff0c;一个方形方…

【MATLAB源码-第98期】基于matlab的能量谷优化算法(EVO)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 能量谷优化算法&#xff08;Energy Valley Optimization, EVO&#xff09;是一种启发式优化算法&#xff0c;灵感来源于物理学中的“能量谷”概念。它试图模拟能量在不同能量谷中的转移过程&#xff0c;以寻找最优解。 在EVO…

Spring boot各种Date时间相差8小时出现的问题及其解决方法!

数据库中存的是2019-07-22 22:00:00 但是页面展示2019-07-22 14:00:00 查看数据时区是08:00导致的,数据库是Oracle&#xff0c;生成数据库没办法改时区 一&#xff1a;Spring boot ResponseBody转换JSON 时 Date 时间相差8小时 一描述&#xff1a;当使用jackson时&#xff0c;…

什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 目录 一、JVM基本介绍 二、JVM内存模型 2.0 概述 2.1 类加载子系统 2.2 运行时数据区 2.2.0 基本…