赞
踩
创作不易,点赞收藏,如有交流需要,请关注微信公众号“笔名二十七画生”!
论文名称:
MobileSAMv2: Faster Segment Anything to Everything
论文地址:
https://arxiv.org/pdf/2312.09579.pdf
代码地址:
https://github.com/ChaoningZhang/MobileSAM
前期该团队作者发布了MobileSAM模型,该模型主要是从解耦知识蒸馏(只蒸馏image encoder,mask decoder可以保持不变)的角度进行了轻量化。下面看一看这篇文章,他是从哪个角度入手的:
很多人可能没有接触过视觉大模型,下面简单介绍相关概念:
视觉大模型是指在计算机视觉任务中使用的大型深度学习模型。这些模型通常由深度神经网络构成,具有数以百万计的参数,通过在大规模数据集上进行训练来学习任务的复杂特征和表示。这些视觉大模型能够在图像分类、目标检测、语义分割等视觉任务上取得卓越性能。然而,这些模型通常需要大量的计算资源进行训练和推理,因此轻量化大模型走进了研究人员的视线。那么我同样也是由于计算资源受限,也不得不从事该方向的研究工作调研。
以经典的SAM(分割一切大模型)为例,下面介绍相关研究工作:
自从SAM于2023年4月问世以来,它在许多GitHub项目和研究文章中得到了广泛研究。其SegAny的性能在各种具有挑战性的任务中得到了研究,包括医学图像、伪装物体和透明物体。总体而言,SAM展现出强大的泛化性能,但在设置更具挑战性时可以进行改进。在对抗性设置中对其泛化性能的研究在Attack-SAM 中得到了探讨,该研究表明SAM的输出掩模可以被恶意生成的扰动轻松操纵。后续研究进一步研究了在SAM上生成的对抗扰动的性能在跨模型可迁移性和跨样本可迁移性中的表现。对SAM的全面鲁棒性评估在后续工作中得到了研究,该研究显示SAM对风格转移、常见破坏、局部遮挡具有鲁棒性,但对对抗性扰动不具备鲁棒性。SAM的多功能性在另一方面的工作中得到了展示。尽管在SAM原始论文中证明SAM与文本提示兼容作为概念验证,但这个功能并未包含在其官方代码中。Grounded SAM 项目将Grounding DINO 与SAM结合起来,实现了以文本引导的可提示分割。具体而言,Grounding DINO利用框生成边界框,可以用作SAM的提示以预测掩模。Semantic segment anything 项目引入了CLIP 来为SAM的预测掩模分配标签。SAM还被证明对于图像编辑、修复任务以及视频中的目标跟踪都非常灵活。除了2D之外,SAM还可以用于3D对象重建,即通过单个图像辅助生成3D模型。PersoanlizeSAM 为定制的SAM进行一次性个性化。建议读者参考文献[2](当然我后面有时间也会进行解读)了解SAM的最新进展。
(看完这篇文章感觉他的核心工作就是采用目标检测算法的边界框作为提示框来进行分割。)这篇文章说任何物体分割模型(SAM)解决了两个实际而具有挑战性的分割任务:分割任何物体(SegAny),它利用某个点来预测单个感兴趣目标的掩模,以及分割所有物体(SegEvery),它预测图像上所有目标的掩模。SegAny在SAM中变慢的原因是其庞大的图像编码器,MobileSAM通过解耦知识蒸馏来解决了这个问题。然而,SegEvery与SAM的效率瓶颈在于其掩模解码器,因为它需要首先使用冗余的网格搜索提示生成大量掩模,然后执行过滤以获得最终的有效掩模。文章作者提出通过直接使用仅包含有效提示的方法生成最终的掩模(检测边界框),从而提高其效率,这可以通过目标发现获得有效提示。作者提出的方法不仅能够将掩模解码器的总时间减少至少16倍,而且还能够实现卓越的性能。具体而言,在LVIS数据集上通过掩模(mask)AR@K指标实现了零样本目标提议的平均性能提升3.6%(42.5%对比38.9%)。定性结果显示,作者方法生成了细粒度的掩模,同时避免了对物体进行过度分割。这个旨在比原始SAM更快的项目被称为MobileSAMv2,以与旨在更快的SegAny的MobileSAM区分开来。此外,作者证明新提示采样也与MobileSAM中的蒸馏图像编码器兼容,为高效的SegAny和SegEvery提供了一个统一的框架。
(这段先讲了NLP领域大模型,然后讲了CV领域大模型)NLP领域已经被ChatGPT彻底改变,这在生成式人工智能(AIGC,即人工智能生成内容,这个词现在非常火!!!)的发展中构成了一个里程碑。在Web规模文本数据集上训练的GPT系列模型在其发展中起到了重要作用。在NLP的基础模型取得成功之后,通过对比学习来共同学习文本编码器的视觉基础模型如CLIP 也已经被开发出来。最近,一个被称为SAM 的视觉基础模型,全称为segment anything model,被发布,用于解决两个实际的图像分割任务:分割任何物体(SegAny)和分割所有物体(SegEvery)。这两个任务都执行无关类别的掩模分割,区别在于要分割什么。SegAny利用某个提示(如一个点或框)来分割图像中感兴趣的单个物体。相比之下,SegEvery的目标是分割图像中的所有物体。由于在这两个任务上的卓越性能,SAM已广泛用于各种应用。
(这段主要讲了作者为什么要开展提示掩模的工作研究)SAM通过两个模块按顺序工作:基于ViT的图像编码器和基于提示引导的掩模解码器(见图1)。在本文的其余部分,当不引起混淆时,它们简称为图像编码器(也就是 image encoder)和掩模解码器(也就是mask decoder)。轻量级的掩模解码器采用双向注意力,以实现图像嵌入和提示令牌之间的高效交互,用于生成细粒度的掩模[14]。导致SegAny变慢的是图像编码器,其重量超过掩模解码器100多倍。MobileSAM通过以分离的方式提炼轻量级图像编码器来解决这个问题。为了分割所有物体,SegEvery需要首先多次运行掩模解码器以生成大量的提案掩模,然后选择高质量且不重叠的提案掩模。这将计算瓶颈从图像编码转移到掩模生成和过滤。本质上,SegEvery不是一个可提示的分割任务,因此可以直接生成掩模而无需使用提示[34]。这种无提示的方法已在[41]中尝试,但生成的掩模边界不够令人满意(详见第6.1节的分析)。具有双向注意力的掩模解码器解决了这个问题,但以使SegEvery变得更慢的代价[14]。为此,我们遵循[14]中SegEvery的做法,用提示激发掩模解码器以保证生成的掩模质量,同时通过减少提示数量来解决其低速问题。
(这段主要讲了SAM不足之处以及自己改进思路)在[14]中,SegEvery通过使用前景点的网格搜索来激发图像编码器。当网格搜索稀疏时,许多小物体或有意义的物体部分可能会被漏掉。因此,[14]中的SegEvery采用了高网格密度,例如用于零样本目标提案的64×64点,这往往对大型物体产生了冗余的提示。本质上,它采用了一种策略,首先生成许多掩模,其中大多数是冗余的,然后过滤掉冗余的掩模。直观地说,通过只生成有效的掩模,可以简化这个过程,从而节省掩模生成的时间并消除对掩模过滤的需求。受到这一直觉的启发,作者提出了一种高效的提示采样方法,寻找具有目标感知的提示。幸运的是,这在现代目标检测中已经得到了很好的解决。在这项工作中,作者采用了YOLOv8,它是一种用于有效检测的最先进的架构,具有边界框。为了避免对任何特定数据集的过拟合,模型应该在一个开放世界数据集上进行训练,为此选择了SA-1B数据集的一个子集。通过生成的框,我们可以将其中心用作具有对象感知的点提示,或者直接采用框本身作为提示。点提示的一个问题是它需要每个提示预测三个输出掩模,以解决模糊性问题。边界框具有更多的信息且更少的模糊性,因此更适合在高效的SegEvery中采用。总体而言,该项目旨在使[14]中的SegEvery更快,同时实现竞争性能。作者将这个项目称为MobileSAMv2,以区分使SegAny更快的MobileSAM [34]。总体而言,本研究的贡献总结如下。
作者确定了使SAM中的SegEvery变慢的原因,并提出了具有对象感知的框提示,以替代默认的网格搜索点提示,从而显著提高了其速度,同时实现了整体上更优越的性能。
作者证明了提出的对象感知提示采样策略与MobileSAM中的蒸馏图像编码器兼容,进一步为高效的SegAny和SegEvery提供了一个统一的框架。
在[14]中提出的提示感知解决方案已经展现出对具有挑战性的SegEvery任务的卓越性能。它采用了一种先生成冗余掩模,然后对其进行过滤以获得最终有效掩模的策略。直观地说,这个过程可能过于繁琐,可以通过仅使用有效提示提示掩模解码器来简化,从而节省掩模生成的时间并且无需执行任何过滤。作者方法的核心在于用对象感知提示采样替换默认的网格搜索提示采样。这一策略的核心是确定图像上的某个区域是否存在对象。现代目标检测任务已经通过边界框定位了这些对象。生成的大多数边界框相互重叠,因此在用作有效提示之前需要进行预过滤。在没有额外先验知识的情况下,作者推断过滤后的边界框中心为前景点,假设边界框中心点位于物体上。此外,SAM的掩模解码器也接受边界框作为提示。因此,作者还尝试直接使用剩余的边界框作为提示。总体而言,我们提出的SegEvery框架包括两个阶段:对象感知提示采样和提示引导的掩模解码。第一阶段通过依赖现代目标检测网络来采样提示(说白了就是用现有的目标检测算法进行提示),第二阶段则遵循SAM [14]进行提示引导的掩模解码。
目标发现已经在一些情况下广泛使用(比如视觉语言任务),作为一种避免穷举滑动窗口搜索的预处理技术。受到它们的实践启发,作者提出利用目标发现来进行提示采样。本质上,对象发现是通过边界框来定位对象的过程,可以通过现代目标检测模型实现,但不包括其分类头(我感觉加上投)。过去十年见证了目标检测模型发展的巨大进步,YOLO家族的模型因其实时性能的优势已成为事实上的标准选择。为了防止对任何特定领域的过拟合,所选择的YOLOv8模型需要在一个开放世界数据集上进行训练,为此选择了SA-1B数据集的一个小子集[14, 34]。该模型在边界框和掩模的监督下进行训练,然后仅使用边界框损失进行微调。这种训练方法还有助于与无提示方法进行比较(参见第6.1节)。这生成了许多重叠的边界框,需要在用作提示之前进行过滤。按照标准做法,作者采用NMS(非极大值抑制)来过滤重叠的边界框。有了经过滤的边界框,我们可以将其中心用作对象感知的点提示,或者直接采用边界框本身作为提示。在实践中,出于多种原因,我们选择后者策略。即使中心点是对象感知的,但它是基于一个假设,即边界框内的对象覆盖中心点。这在大多数情况下成立,但并非所有情况都是如此。点提示的另一个问题是它需要预测三个输出掩模以解决模糊性问题,这需要额外的掩模过滤。相比之下,边界框提示更具信息量,生成具有更少模糊性的高质量掩模,减轻了需要预测三个掩模的需求,因此更有利于高效的SegEvery。
作者遵循SAM [14] 以批处理的方式执行提示引导的掩模解码。与图像编码器设置图像样本数量为批次不同,这里的批次概念是提示的数量。值得注意的是,SAM中的提示引导掩模解码器也接受边界框作为输入。因此,技术上直接使用一组边界框提示掩模解码器而省去导出中心点的过程是可行的。即使这并不是我们最初的动机,作者发现这种做法在不增加任何额外成本的情况下带来了非常显著的性能提升。换句话说,这可以看作是一种免费的技巧,用于提高任务性能。[14]中的提示感知解决方案需要进行掩模过滤。经验上,作者发现这个过程可能会非常慢,因为掩模是高维的。这与高效的框过滤不同,因为一个框只有四个维度。在作者提出的SegEvery框架中,这种繁琐的掩模过滤是可选的,因为我们可以通过仅使用有效提示来避免它。换句话说,由于提示是以对象感知的方式进行采样的,作者保留所有生成的掩模。
在[14]中,SegEvery被视为一个零样本对象提案任务,以标准的平均召回(AR)作为性能评估的度量标准。作者遵循[14]中的做法,采用AR用于K个提案的掩模(mask AR@K),其中K是最大允许的掩模数量。根据AR的定义,当允许将K设置为较大的值时,AR@K会变得更高,这构成了一种较不严格的度量标准。[14]中只报告了AR@1000,但作者选择报告K从10到1000的AR@K。为了不失一般性但节省计算资源,我们选择在从大词汇实例分割(LVIS)数据集[6]中随机抽样的100个图像上报告结果。
我比较关心效率问题:
表2中的结果显示,作者提出的提示采样策略显著提高了(提示引导的)掩模解码器的效率,至少提升了16倍。在我们的方法中,用于提示编码的计算占据了相当大的比例,因为它运行了用于提示采样的对象发现。更高效的对象发现算法将留待未来的研究。
再看一下性能比较。
作者尝试了减小网格密度和/或将多掩模选项设置为false(单掩模模式)。表3中的结果显示,通过上述两种做法中的任何一种生成较少的掩模都会导致性能下降,这表明默认的网格搜索采样策略高度依赖于生成冗余的掩模以选择最终需要的掩模。此外,通过比较SAM(默认的网格搜索提示采样)和MobileSAMv2(我们提出的对象感知提示采样),我们有多个主要观察结果。首先,在以相同类型的提示(点)提示的条件下,并将multi-mask设置为false的情况下,我们发现MobileSAMv2(最多320个点)的性能与使用4096个点的SAM相当,表明我们的提示采样策略的对象感知属性显著避免了冗余。通过将multi-mask选项设置为true,默认的64×64网格密度产生了更高的性能(59.2%),这构成了网格搜索策略的最佳设置。同样,我们还可以通过将multi-mask设置为true来提高我们的对象感知点采样的性能。值得注意的是,预测具有不同粒度的三个输出掩模的动机是为了解决点提示的模糊性问题。单个点的提示信息有限,因此会导致模糊性(读者可以在[14]的图4中查看更多细节)。相比之下,边界框提示更具信息量,并在很大程度上减少了模糊性。这得到了我们在表3中的结果的支持,即在单掩模模式下,框提示显著提高了性能。最后,值得一提的是,与网格搜索采样策略的最佳结果相比(在64×64点的多掩模模式下),我们提出的采样策略(最多320个框提示)实现了相当的性能(59.3%对59.2%)。将最大提示数限制为256时,我们的策略在相同条件下仍然实现了有竞争力的性能(58.5%),与网格搜索策略的性能(34.6%)相比。我们还在表4中报告了其他K值的AR@K。当K设置为相对较小的值时,我们发现我们提出的对象感知采样策略通过使用更少的提示大幅提高了性能。总体而言,我们提出的方法在性能上平均提升了3.6%(42.5%对38.9%)。
图2. 无提示和有提示掩模预测之间的比较。与有提示的方法相比,无提示倾向于预测具有非平滑边界的掩模。对于两种有提示的方法,SAM倾向于过度分割物体,而作者的MobileSAMv2由于其对象感知属性而对此进行了处理。最佳观看颜色并进行放大。
与MobileSAM项目使SegAny更快的方式相反,被称为MobileSAMv2的这个项目通过在提示引导的掩模解码器中提出一种新的提示采样策略,使SegEvery更快。通过用我们的对象感知提示采样替换网格搜索,我们显著提高了SegEvery的效率,同时实现了整体上更优越的性能。我们还展示了我们的对象感知提示采样与MobileSAM项目中的蒸馏图像编码器是兼容的。总体而言,我们的工作是朝着一个统一的框架迈出的一步,以实现高效的SegAny和SegEvery。未来的工作需要寻找更优越的图像编码器和对象发现模型。(话都让作者说完了,我们学习就是了)
【1】Zhang C, Han D, Zheng S, et al. MobileSAMv2: Faster Segment Anything to Everything[J]. arXiv preprint arXiv:2312.09579, 2023.
【2】Chaoning Zhang, Sheng Zheng, Chenghao Li, Yu Qiao, Taegoo Kang, Xinru Shan, Chenshuang Zhang, Caiyan Qin, Francois Rameau, Sung-Ho Bae, et al. A survey on segment anything model (sam): Vision foundation model meets prompt engineering. 2023. 1, 3
创作不易,点赞收藏,如有交流需要,请关注微信公众号“笔名二十七画生”!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。