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