0. 简介
MetaAI提出的能够“分割一切”的视觉基础大模型SAM提供了很好的分割效果,为探索视觉大模型提供了一个新的方向。虽然SAM的效果很好,但由于SAM的backbone使用了ViT,导致推理时显存的占用较多,推理速度偏慢,对硬件的要求较高,在项目应用上有很大的限制。
中科院自动化所近期提出了《Fast Segment Anything》,本文提出了一种具有可比性能的加速替代方法。通过将该任务重新定义为分割生成和提示,作者发现一个常规的CNN检测器结合实例分割分支也可以很好地完成这个任务。论文结果显示最快比SAM快出50倍,同时参数更少,显存占用减少,适合应用部署。
1. 主要贡献
实时的segment anything模型对于工业应用非常有价值。它可以应用于许多场景。所提出的方法不仅为大量视觉任务提供了新的实用解决方案,而且速度非常快,比当前方法快几十倍或几百倍。此外,它还为通用视觉任务的大型模型架构提供了新的视角。对于特定任务来说,特定的模型仍然可以利用优势来获得更好的效率-准确性平衡。
在模型压缩的角度上,本文方法通过引入人工先验结构,展示了显著减少计算量的可行路径。本文贡献可总结如下:
- 引入了一种新颖的实时基于CNN的Segment Anything任务解决方案,显著降低了计算需求同时保持竞争性能。
- 本研究首次提出了将CNN检测器应用于segment anything任务,并提供了在复杂视觉任务中轻量级CNN模型潜力的见解。
- 通过在多个基准测试上对所提出的方法和SAM进行比较评估,揭示了该方法在segment anything领域的优势和劣势。
2. 概述
图2展示了提出的方法FastSAM的概述。该方法由两个阶段组成,即全实例分割和提示引导选择。 前一个阶段是基础阶段,而第二个阶段实质上是面向任务的后处理。与端到端的Transformer[7,8,19]不同,整体方法引入了许多与视觉分割任务相匹配的人类先验知识,例如卷积的局部连接和感受野相关的对象分配策略。这使得它更适合于视觉分割任务,并且可以在较少的参数数量下更快地收敛。
3. 全实例分割模型架构
YOLOv8 [16] 的架构是基于其前身YOLOv5 [15] 的发展而来的,集成了最近算法(如YOLOX [10]、YOLOv6 [22] 和YOLOv7 [35])的关键设计方面。YOLOv8的主干网络和颈部模块用C2f模块替代了YOLOv5的C3模块。更新后的头部模块采用了解耦结构,将分类和检测头部分开,并从基于锚点的方法转变为无锚点的方法。
实例分割:YOLOv8-seg采用了YOLACT [4] 的实例分割原理。它通过主干网络和特征金字塔网络(FPN)[24]从图像中提取特征,集成了不同尺寸的特征。输出包括检测分支和分割分支。检测分支输出类别和边界框,而分割分支输出k个原型(默认为32个)以及k个掩码系数。分割和检测任务并行计算。分割分支输入高分辨率特征图,保留空间细节,并包含语义信息。该特征图经过卷积层处理,上采样,然后通过另外两个卷积层输出掩码。掩码系数与检测头部的分类分支类似,取值范围在-1到1之间。实例分割结果通过将掩码系数与原型相乘并求和得到。
YOLOv8可以用于各种目标检测任务。通过实例分割分支,YOLOv8-Seg适用于分割任何物体的任务,旨在准确检测和分割图像中的每个对象或区域,无论对象的类别如何。原型和掩模系数为快速引导提供了很多可扩展性。举个简单的例子,我们额外训练了一个简单的提示编码器和解码器结构,以各种提示和图像特征嵌入作为输入,以掩模系数作为输出。在FastSAM中,我们直接使用YOLOv8-Seg方法进行全实例分割阶段。更多的人工设计可能会带来额外的改进,但我们认为这超出了本研究的范围,将其留待未来研究。
4. 提示引导的选择
在使用YOLOv8成功对图像中的所有对象或区域进行分割之后,分割任何物体任务的第二阶段是使用各种提示来识别感兴趣的特定对象。它主要涉及使用点提示、框提示和文本提示。
点提示:点提示包括将选定的点与从第一阶段获得的各种掩模进行匹配。目标是确定点所在的掩模。与SAM类似,我们在我们的方法中使用前景/背景点作为提示。在前景点位于多个掩模的情况下,可以利用背景点来过滤与当前任务无关的掩模。通过使用一组前景/背景点,我们能够在感兴趣区域内选择多个掩模。这些掩模将合并为一个单一的掩模,以完全标记感兴趣的对象。此外,我们利用形态学操作来提高掩模合并的性能。
框提示:框提示涉及在第一阶段对应的边界框和各种掩模之间执行交并比(IoU)匹配。目标是确定与选定框具有最高IoU得分的掩模,从而选择感兴趣的对象。