本文提出了一种名为 FastSAM 的实时分割模型,旨在解决 Segment Anything Model (SAM) 在计算效率上的瓶颈问题,同时保持与 SAM 相当的性能。以下是文章的核心内容和贡献的凝练总结:
研究背景
Segment Anything Model (SAM) 是一种强大的视觉基础模型,能够在多种提示(如点、框、文本)的引导下分割图像中的任意目标。然而,SAM 基于 Transformer 架构,计算成本高昂,限制了其在实时应用中的广泛部署。因此,本文提出了一种基于卷积神经网络(CNN)的替代方案 FastSAM,以实现高效、实时的分割能力。
FastSAM 的核心思想
FastSAM 将分割任务分解为两个阶段:
-
全实例分割(All-instance Segmentation):使用改进的 YOLOv8-seg 模型,基于 YOLACT 方法,快速生成图像中所有实例的分割掩码。
-
提示引导选择(Prompt-guided Selection):根据用户提供的提示(点、框、文本),从全实例分割结果中选择目标区域。
通过这种解耦方式,FastSAM 利用了 CNN 的高效性,显著降低了计算成本,同时保持了较高的分割精度。
技术实现
-
模型架构:FastSAM 基于 YOLOv8-seg,仅使用 SAM 数据集(SA-1B)的 2% 数据进行训练,大大减少了训练成本。
-
分割策略:采用 YOLACT 的实例分割方法,通过原型掩码和掩码系数生成分割结果。
-
提示引导选择:支持多种提示方式,包括点提示、框提示和文本提示(基于 CLIP 模型)。
实验与性能评估
-
运行效率:FastSAM 在单个 NVIDIA RTX 3090 上的运行速度比 SAM 快 50 倍以上,且不受提示数量影响。
-
分割性能:
-
在 COCO 数据集上,FastSAM 的目标提议性能(AR1000)达到 63.7,比 SAM 高出 1.2 个百分点。
-
在 LVIS 数据集上,FastSAM 的边界框提议性能优于 SAM,但在掩码生成精度上略逊一筹。
-
-
零样本任务:
-
在边缘检测任务中,FastSAM 的性能与 SAM 相当。
-
在实例分割任务中,FastSAM 的 AP 值低于 SAM,但展示了良好的分割能力。
-
在文本提示分割任务中,FastSAM 能够根据文本提示生成分割掩码,但速度有待优化。
-
实际应用
FastSAM 在多个实际场景中展示了其高效性和实用性,包括:
-
异常检测:在 MVTec AD 数据集上,FastSAM 能够快速定位缺陷区域。
-
显著目标分割:在 ReDWeb-S 数据集上,FastSAM 能够准确分割出显著目标。
-
建筑物提取:在遥感影像中,FastSAM 能够有效提取建筑物区域。
研究贡献
-
提出了一种基于 CNN 的实时分割模型 FastSAM,显著降低了计算成本,同时保持了与 SAM 相当的性能。
-
验证了 FastSAM 在多种零样本任务中的泛化能力,展示了其在工业应用中的潜力。
-
通过实验对比,揭示了 FastSAM 在边界框提议和掩码生成方面的优势与不足,为后续研究提供了方向。
尽管 FastSAM 在实时性和效率上表现出色,但其掩码生成精度仍有提升空间。未来的研究方向可能包括改进掩码生成机制、优化提示引导策略以及进一步压缩模型以适应更多应用场景。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:
官方项目地址在这里,如下所示:
摘要
最近提出的分割一切模型(Segment Anything Model,SAM)在许多计算机视觉任务中产生了重要影响。它已成为许多高级任务的基础步骤,例如图像分割、图像描述生成和图像编辑。然而,其巨大的计算成本限制了其在工业场景中的广泛应用。计算成本主要来自于其在高分辨率输入下的Transformer架构。在本文中,我们提出了一种替代方法,用于加速这一基础任务,同时保持相当的性能。通过将任务重新定义为分割生成和提示,我们发现一个普通的CNN检测器加上实例分割分支也可以很好地完成这一任务。具体而言,我们将该任务转化为研究较为透彻的实例分割任务,并仅使用SAM作者发布的SA-1B数据集的1/50进行训练。通过我们的方法,我们实现了与SAM相当的性能,但运行速度提高了50倍。我们提供了足够的实验结果来证明其有效性。
1. 引言
最近,Segment Anything Model(SAM)[19]被提出,被认为是视觉基础模型的一个里程碑。它能够在各种可能的用户交互提示的引导下,分割图像中的任何物体。SAM利用了一个在大规模SA-1B数据集上训练的Transformer模型,使其能够巧妙地处理各种场景和物体。SAM为一个名为“分割一切”的新任务打开了大门。由于其通用性和潜力,这一任务有望成为未来广泛视觉任务的基石。
然而,尽管SAM及其后续模型在处理分割一切任务方面展示了令人鼓舞的结果,其实际应用仍然面临挑战。主要问题是Transformer(ViT)模型的计算资源需求巨大,这是SAM架构的主要部分。与卷积对应物相比,ViT以其对计算资源的高需求而脱颖而出,这给其实际部署带来了障碍,尤其是在实时应用中。这一限制随后阻碍了分割一切任务的发展和潜力。
鉴于工业应用对分割一切模型的高需求,我们在本文中设计了一个实时解决方案,用于分割一切任务,即FastSAM。我们将分割一切任务分解为两个连续的阶段:全实例分割和提示引导选择。第一阶段依赖于基于卷积神经网络(CNN)的检测器实现。它生成图像中所有实例的分割掩码。然后在第二阶段,它输出与提示对应的感兴趣区域。通过利用CNN的计算效率,我们证明了在不显著降低性能质量的情况下,实现实时分割一切模型是可行的。我们希望所提出的方法能够促进分割一切这一基础任务在工业中的应用。
图1. FastSAM与SAM的比较分析。
(a) FastSAM与SAM在单个NVIDIA GeForce RTX 3090上的速度比较。
(b) 在BSDS500数据集[1, 28]上进行边缘检测的比较。
(c) 在COCO数据集[25]上对FastSAM和SAM进行目标提议的Box AR@1000评估。
SAM和FastSAM均使用PyTorch进行推理测试,FastSAM(TRT)使用TensorRT进行推理。
我们的FastSAM基于YOLOv8-seg [16],这是一个配备了实例分割分支的目标检测器,利用了YOLACT [4]方法。我们还采用了SAM发布的SA-1B数据集。通过仅在该数据集的2%(1/50)上训练这个CNN检测器,它实现了与SAM相当的性能,但大幅降低了计算和资源需求,从而实现了实时应用。我们还将其实用于多个下游分割任务,以展示其泛化性能。在MS COCO [13]上的目标提议任务中,我们实现了63.7的AR1000,比SAM高出1.2个百分点(使用32×32点提示输入),但在单个NVIDIA RTX 3090上的运行速度比SAM快50倍。实时分割一切模型对工业应用具有重要价值,它可以应用于许多场景。所提出的方法不仅为大量视觉任务提供了新的、实用的解决方案,而且速度比当前方法快数十倍甚至数百倍。它还为通用视觉任务的大型模型架构提供了新的视角。我们认为,对于特定任务,特定模型仍然具有优势,可以在效率和准确性之间获得更好的权衡。从模型压缩的角度来看,我们的方法展示了通过引入人工先验到结构中,显著减少计算工作量的可行性路径。我们的贡献可以总结如下:
-
提出了一种新颖的、基于CNN的实时解决方案,用于分割一切任务,显著降低了计算需求,同时保持了竞争力的性能。
-
这项工作是首次将CNN检测器应用于分割一切任务,为轻量级CNN模型在复杂视觉任务中的潜力提供了见解。
-
在多个基准测试中对所提出的方法与SAM进行比较评估,为分割一切领域的优缺点提供了见解。
2. 前置知识
在本节中,我们回顾了分割一切模型,并对分割一切任务进行了清晰的定义。
分割一切模型
在图像分割领域不断发展的过程中,Segment Anything Model(SAM)[19]因其提出的训练方法和在大规模视觉数据集上的性能而成为一项重大创新。SAM提供了高精度的类别无关分割性能,并在零样本任务中展现出独特能力。作为基础模型,它通过展示强大的交互式分割方法以及在各种分割任务中的卓越适应性,扩展了计算机视觉的视野。SAM是基础模型在开放世界图像理解中潜力的一个显著例子。然而,尽管该模型的性能令人满意,但值得注意的是,SAM面临一个显著的限制——缺乏实时处理能力。这一限制限制了其在需要即时分割结果的场景中的广泛应用。
分割一切任务
分割一切任务被定义为在给定任何形式的提示的情况下,生成有效的分割掩码。这些提示范围从前景/背景点集、粗略框或掩码、自由形式的文本或任何指示图像中要分割内容的信息。我们发现,在大多数实际应用中,分割一切任务可以有效地分解为两个阶段。第一阶段涉及检测和分割图像中的所有物体,类似于泛视觉分割[18]过程。第二阶段依赖于提供的提示,从分割的全景中分离出特定的感兴趣物体。这种任务的解耦显著降低了其复杂性,从而为提出实时分割一切模型提供了可能性。
3. 方法论
3.1 概述
图2给出了所提出方法FastSAM的总体框架。该方法包含两个阶段,即全实例分割(All-instance Segmentation)和提示引导选择(Prompt-guided Selection)。前者是基础,而后者本质上是面向任务的后处理。与端到端的Transformer模型[7,8,19]不同,整体方法引入了许多与视觉分割任务相匹配的人工先验,例如卷积的局部连接和与感受野相关的对象分配策略。这使得该方法更适合视觉分割任务,并且可以在较少的参数上更快地收敛。
图2. FastSAM的框架。它包含两个阶段:全实例分割(All-instance Segmentation, AIS)和提示引导选择(Prompt-guided Selection, PGS)。我们使用YOLOv8-seg [16]对图像中的所有物体或区域进行分割。然后,我们利用各种提示来识别特定的感兴趣物体。这主要涉及点提示、框提示和文本提示的使用。文本提示基于CLIP [31]。
3.2 全实例分割
模型架构
YOLOv8 [16]的架构在其前身YOLOv5 [15]的基础上发展而来,融合了近期算法的关键设计元素,例如YOLOX [10]、YOLOv6 [22]和YOLOv7 [35]。YOLOv8的骨干网络和颈部模块用C2f模块替换了YOLOv5的C3模块。更新的头部模块采用了分离式结构,将分类和检测头部分开,并从基于锚点转变为无锚点。
实例分割
YOLOv8-seg应用了YOLACT [4]的原理进行实例分割。它从图像中通过骨干网络和特征金字塔网络(FPN)[24]提取特征,整合不同尺寸的特征。输出包括检测分支和分割分支。
检测分支输出类别和边界框,而分割分支输出k个原型(在FastSAM中默认为32个)以及k个掩码系数。分割和检测任务是并行计算的。分割分支输入一个高分辨率特征图,保留空间细节,并且包含语义信息。该特征图通过一个卷积层进行处理,上采样后,再通过两个卷积层输出掩码。掩码系数类似于检测头部分类分支的输出,范围在-1到1之间。通过将掩码系数与原型相乘并求和,可以得到实例分割结果。
YOLOv8可以用于多种目标检测任务。凭借实例分割分支,YOLOv8-seg天生适合分割一切任务,该任务旨在准确检测和分割图像中的每一个物体或区域,无论物体类别如何。原型和掩码系数为提示引导提供了很大的灵活性。例如,通过简单的提示编码器和解码器结构,可以额外训练,以各种提示和图像特征嵌入作为输入,掩码系数作为输出。在FastSAM中,我们直接使用YOLOv8-seg方法进行全实例分割阶段。更人工的设计可能会带来额外的改进,但我们认为这超出了本文的范围,留待未来研究。
3.3 提示引导选择
在使用YOLOv8成功分割图像中的所有物体或区域之后,分割一切任务的第二阶段是利用各种提示来识别特定的感兴趣物体。这主要涉及点提示、框提示和文本提示的使用。
点提示
点提示包括将选定的点与第一阶段获得的各种掩码进行匹配。目标是确定点所在的掩码。与SAM类似,我们在方法中使用前景/背景点作为提示。在前景点位于多个掩码中时,可以使用背景点来过滤掉与任务无关的掩码。通过使用一组前景/背景点,我们能够在感兴趣区域内选择多个掩码。这些掩码将被合并为一个掩码,以完整地标记感兴趣物体。此外,我们还使用形态学操作来提高掩码合并的性能。
框提示
框提示涉及在选定的框和第一阶段各种掩码对应的边界框之间执行交并比(IoU)匹配。目标是识别与选定框具有最高IoU分数的掩码,从而选择感兴趣物体。
文本提示
在文本提示的情况下,使用CLIP [31]模型提取文本的文本嵌入。然后确定相应的图像嵌入,并使用相似性度量将其与每个掩码的内在特征进行匹配。与文本提示的图像嵌入具有最高相似性分数的掩码被选中。通过精心实现这些提示引导选择技术,FastSAM能够可靠地从分割后的图像中选择特定的感兴趣物体。上述方法为实现实时分割一切任务提供了一种高效的方式,从而极大地增强了YOLOv8模型在复杂图像分割任务中的实用性。更有效的提示引导选择技术留待未来探索。
4. 实验
在本节中,我们首先分析FastSAM的运行时效率。然后,我们在四个零样本任务以及实际场景中的应用、效率和部署方面进行实验。在实验的第一部分,我们的目标是测试FastSAM与SAM之间在能力上的相似性。按照SAM的设置,我们也在四个不同层次的任务上进行实验:(1)低层次:边缘检测;(2)中层次:目标提议生成;(3)高层次:实例分割;以及(4)高层次:使用自由形式文本输入分割物体。我们的实验还进一步验证了FastSAM在实际应用中的能力和速度。
4.1 运行时效率评估
SAM使用Transformer架构构建端到端算法。Transformer是一种通用架构,可以表示各种任务的多种映射函数。为了实现分割一切,SAM通过在大规模数据上的学习过程来学习面向视觉的归纳偏差。相反,FastSAM通过在结构设计中引入人工先验知识,获得了一个相对紧凑的模型。如图3所示,FastSAM能够生成相对令人满意的分割结果。在表1中,我们报告了SAM和FastSAM在单个NVIDIA GeForce RTX 3090 GPU上的运行速度。可以看出,FastSAM在所有提示数量下均优于SAM。此外,FastSAM的运行速度不受提示数量的影响,使其更适合“Everything模式”。
4.2 零样本边缘检测
方法
FastSAM在基础的低层次任务——边缘检测上进行了评估,使用的是BSDS500 [1, 28]数据集。具体来说,我们从FastSAM全实例分割阶段的结果中选择掩码概率图。然后,对所有掩码概率图应用Sobel滤波[33]以生成边缘图。最后,执行边缘非极大值抑制(NMS)[6]步骤。
结果
代表性边缘图如图4所示。从定性观察来看,尽管FastSAM的参数数量较少(仅为68M),但它生成的边缘图总体上是良好的。与BSDS500的真值相比,FastSAM和SAM都倾向于预测更多的边缘,包括一些在BSDS500中未标注的逻辑边缘。这种偏差在表2中得到了定量反映。表2显示,我们在性能上与SAM相当,具体表现为更高的R50和更低的AP。
4.3 零样本目标提议生成
背景
目标提议生成一直是许多计算机视觉任务的基本预处理步骤,包括通用目标检测、少样本目标检测和图像理解。在过去几十年中,许多著名的目标提议生成方法见证了视觉识别的演变,作为视觉识别方法的基本步骤。这些提议生成方法包括EdgeBox [38]、Geodesic [21]、Selective Search [34]和MCG [2]。近年来,许多基于深度学习的方法被提出,例如DeepMask [29]和OLN [17]。例如,RCNN系列目标检测方法[11, 12]采用了Selective Search方法,而最近提出的开放世界检测器UniDetector [36]采用了OLN方法。尽管RPN [32]被大多数现有的目标检测器使用,但它只能生成已学习类别的目标提议,限制了其在开放词汇表识别任务中的应用。因此,零样本目标提议生成非常重要。一个好的提议方法对于这些视觉识别任务的良好性能至关重要。
我们直接使用FastSAM第一阶段生成的边界框作为目标提议。为了评估性能,我们在LVIS [13]和COCO [25]数据集上进行测试,遵循现有的评估策略。此外,按照SAM的实验设置,我们还通过使用第一阶段的全实例掩码测试掩码提议的准确性。
细节
我们报告了SAM、ViTDet [23]和我们的FastSAM在LVIS数据集上的结果。由于SAM没有公开其详细的评估代码,我们使用官方的LVIS评估代码[13]重现了类别无关的掩码和边界框召回率。然而,我们未能重现SAM论文[20]中呈现的ViTDet和SAM的Mask AR结果。尽管如此,我们认为我们的评估结果仍然反映了FastSAM与SAM相比的几个特点。
结果
结果如表3、4和5所示。结果表明,我们的方法在边界框提议生成任务上具有显著优势。表3列出了在COCO验证集上各种方法的平均召回率(AR)。其中,EdgeBoxes [38]、Geodesic [21]、Sel.Search [34]和MCG [2]是不需要训练的方法,而DeepMask [29]和OLN [17]是监督方法,它们在COCO训练集内的VOC类别上进行训练,然后在所有类别上进行测试。相比之下,我们的方法和SAM [20]实现了完全的零样本迁移。从表中可以看出,我们的方法和SAM [20]在AR@10精度上不如之前的监督方法(如OLN [17])表现好。然而,在AR@1000上,我们的方法显著优于OLN [17]。原因在于,之前的方法是在COCO的某些类别上进行训练的,因此在推理过程中对这些类别的置信度更高。然而,由于我们的方法和SAM是零样本的,这导致了不同类别之间的置信度更加平衡,从而召回了更多不在COCO中的类别。更多比较见图5。在表4中,我们报告了ViTDet-H [23]、SAM [20]和我们的方法在LVIS v1数据集上的bbox AR@1000结果。我们的方法显著超过了SAM的最计算密集型模型SAM-H E64,超过5%。然而,与在LVIS数据集上训练的ViTDet-H [23]相比,我们的方法仍然有所不足。原因在于,在我们的训练过程中,我们使用了真值(gt)边界框(bbox)信息作为监督信号。而SAM [20]仅使用掩码作为监督信号,其在推理时的边界框是通过从掩码中提取外接框生成的。从表5可以看出,我们的掩码提议生成在召回率上相对较低。我们发现这主要是因为我们的分割掩码在小尺寸物体上不够精细。
4.4 零样本实例分割
方法
与SAM方法类似,我们通过使用ViTDet [23]生成的边界框作为提示来完成实例分割任务。如第3.3节所述,我们选择与边界框具有最高交并比(IoU)的掩码作为预测掩码。
结果
表6给出了评估结果。在这项任务中,我们未能实现高AP。我们推测这主要是由于分割掩码的准确性或基于边界框的掩码选择策略。第6节给出了几个例子。
4.5 零样本目标定位与文本提示
方法
最后,我们考虑一个更高层次的任务,即使用自由形式文本分割物体。这个实验是为了展示FastSAM处理文本提示的能力,类似于SAM。与SAM不同,FastSAM不需要修改训练过程。它直接将文本通过CLIP的文本编码器,然后在推理时使用生成的文本嵌入找到最相似的掩码。
结果
我们在图6中展示了定性结果。FastSAM可以根据文本提示很好地分割物体。然而,文本到掩码分割的运行速度并不令人满意,因为每个掩码区域都需要输入到CLIP特征提取器中。如何将CLIP嵌入提取器整合到FastSAM的主干网络中仍然是一个有趣的模型压缩问题。
5. 实际应用
在本节中,我们在不同的应用场景中评估FastSAM的性能,并分析其优势和局限性。我们展示了FastSAM使用点提示、框提示和“Everything模式”进行分割的可视化结果,并将其与SAM和真值进行比较。
异常检测
如[3]所述,异常检测的任务是区分制造过程中的缺陷样本和正常样本。我们在MVTec AD数据集[3]上评估FastSAM,结果如图7所示。在“Everything模式”下,FastSAM可以分割几乎所有区域,与SAM类似,但精度低于SAM。此外,背景的掩码没有完全覆盖整个背景,这是YOLACT[4]的一个固有特性。通过前景/背景点(FastSAM-point中的黄色和品红色点)或框引导选择,FastSAM可以精确地分割缺陷区域。
显著目标分割
显著目标分割的目标是从图像中分割出最引人注目的目标。这一任务是类别无关的,与语义分割不同。我们在著名的显著性数据集ReDWeb-S[27]上应用FastSAM。如图8所示,FastSAM在“Everything模式”下与SAM几乎没有差异,因为它分割了更少的与任务无关的背景目标。通过点引导选择(例如FastSAM-point中的黄色点),我们可以获得所有感兴趣目标的掩码。FastSAM-point的分割结果几乎与SAM-point和真值完全一致,只有边缘的一些细节丢失。感兴趣的物体也可以通过框提示选择(例如FastSAM-box中的绿色框)。然而,使用单个框无法选择多个物体,即使是SAM-box也无法实现。
建筑物提取
从光学遥感影像中提取建筑物在城市规划等领域有广泛的应用。我们在[14]提出的建筑物提取数据集上评估FastSAM。如图9所示,FastSAM在分割规则形状的建筑物时表现良好,但分割的阴影相关区域比SAM少。我们也可以通过点提示和框提示选择感兴趣区域,如FastSAM-point和FastSAM-box所示。值得注意的是,我们在FastSAM-point中将一个点定位在阴影区域。然而,仍然可以通过基于该点的合并获得正确的建筑物掩码。这表明我们的方法可以在一定程度上抵抗噪声的干扰。
6. 讨论
总体而言,所提出的FastSAM在性能上与SAM相当,并且比SAM-ViT-H(32×32)快50倍,比SAM(64×64)快170倍。运行速度使其成为工业应用(如道路障碍物检测、视频实例跟踪和图像编辑)的一个很好的选择。在某些图像上,FastSAM甚至为大型物体生成了更好的掩码,如图10所示。
缺点
然而,正如实验中所展示的,尽管我们在边界框生成方面具有显著优势,但我们的掩码生成性能低于SAM。我们在图11中可视化了这些示例。我们发现FastSAM具有以下特点:
-
小尺寸分割掩码的质量较低,但置信度得分较高。我们认为这是由于置信度得分被定义为YOLOv8的边界框得分,与掩码质量关系不大。修改网络以预测掩码IoU或其他质量指标是一种改进方法。
-
一些微小物体的掩码倾向于接近正方形。此外,大型物体的掩码可能在边界框的边界上有一些伪影。这是YOLACT方法的弱点。通过增强掩码原型的能力或重新制定掩码生成器,可以解决这一问题。
此外,由于我们仅使用了SA-1B数据集的1/50,模型的性能也可以通过使用更多的训练数据来进一步提升。
7. 结论
在本文中,我们重新思考了分割一切任务和模型架构的选择,并提出了一种比SAM-ViT-H(32×32)快50倍的替代解决方案。实验表明,FastSAM能够很好地解决多个下游任务。然而,FastSAM仍有一些可以改进的地方,例如评分机制和实例掩码生成范式。这些问题留待未来研究。