CV研究者自有出路 一文搞懂:Segment Anything

1 前言

最近被一篇论文:Segment Anything 刷屏了,本来已经好长时间不关注图像分割的前沿进展了,但是这篇论文引起的轰动太大,不得不看一看。借此也为各位小伙伴,尤其是为CV小白们客观的科普下Segment Anything到底是什么。
在本次讲解中,我将重点关注论文实现的成果以及实现思路,不涉及具体技术的讲解,努力将这篇博客作为Segment Anything论文的导读。如果大家想具体的学习还是需要去阅读原文的。
[原文传送门]

2 论文创新

论文提出了一种图像分割模型:Segment Anything Model(SAM)。
它最大的创新和优势就是:零样本分割性能优秀,几乎优于完全监督模型的结果。这是原文中作者的说法:“We evaluate its capabilities on numerous tasks and find that its zero-shot performance is impressive – often competitive with or even superior to prior fully supervised results”。
关于零样本分割性能优秀,通俗的说就是在面对一个新的任务时,SAM在不训练这个任务提供的数据集就能达到非常优秀的分割效果。
对应的深刻理解:我们都知道数据是影响一个网络模型效果的最重要因素。按常理来讲,数据中有什么特征,网络就会通过训练学习到什么特征,进而在推理阶段就会“认识”什么特征。举个CV中最简单的例子:一个只训练过猫狗分类数据的网络无论如何是不会识别出人这一类别的。因为它根本就没有学习过人的相关特征。所以对这个训练好的网络来说,人的识别是一种未知的任务。想要让这个网络能够识别人,以往CV模型中的做法就是引入关于人的数据,做一个三分类数据集(e.g),然后重新训练网络,让网络能够识别人。我们把上述过程成为迁移学习。可不可以提出了一种不进行迁移学习就能识别出人的网络? 重点来了:SAM在图像分割领域做到了这个,它实现了一种不进行任何迁移学习(不许要进行继续训练,只使用预训练模型)就可以分割一切物体的分割网络
从上述的例子我们能分析出,SAM的出现从理论上来说免除了图像分割领域中的迁移学习和针对特定任务重优化网络模型的工作。理论上来说,它的模型强大到足以应对一切分割任何和一切待分割的物体。我们都知道优化模型刷acc和特定场景下的任务迁移(或者说让模型适应多种场景——增加模型的泛化性)是目前在CV界研究的主要方向,所以从这点来看,SAM似乎做到了终结CV。这也就是网上现在铺天盖地的宣传SAM成为CV终结者的原因。对于这条宣传作者本人并不持狂热的赞同态度,具体原因下文会谈到

3 论文工作

前面谈到了SAM模型最大的贡献就是实现了不需要进行迁移学习和重新训练就能实现适应所有的分割任务的能力。所以整个工作都是为实现这一目标而展开的。下图是原文中关于这一点的讨论:

简单来说就是要任务、模型、数据三方面出发:

  1. 任务:重新定义分割这一任务,提出了一种可提示的分割任务,其目标是在给定任何分割提示的情况下返回有效的分割掩码(见下图a)
  2. 模型:从任务需求出发,需要模型满足以下三点内容:
    (1)能够支持灵活的提示信息。
    (2)能做到实时计算掩码以达到交互式使用的目的。
    (3)具备歧义意识。
    论文找到了一种满足上述三点要求的模型架构:一个强大的图像编码器计算一个图像嵌入,一个提示编码器嵌入提示,然后这两个信息源被组合在一个轻量级掩码解码器中,预测分割掩码(见下图b)
  3. 数据:为了实现图像分割有史以来最强大的泛化性能,模型需要在大量不同的数据上做训练。因此文中构建了一个“数据引擎”来解局这一问题,即:模型与数据构成环形闭合,模型的预测能产生新的训练数据,训练数据又反过来进一步训练模型。在使用中训练,在训练中使用,最后越来越强(见下图c)

4 体验SAM

SAM在github上公布了自己的源码和预训练模型,如果对本地部署SAM感兴趣的小伙伴们可以在下面这个链接下载代码并进行:
[github代码传送门]
此外,SAM还提供了一个线上体验的Demo:
[传送门]
下面我们以Demo程序为例看下SAM的分割效果:

进入网页,选择Demo。我们看到SAM提供了一些样例图像,同时也可以上传自己需要分割的图像。

我们选择上传图片,上传一张自己拍摄或者想要验证的图片。
在上传图片后网页会弹出一个对话框显示如何使用selection tool。这个功能就是之前讲到的论文提出的给定分割提示下的分割。

在Demo中提供了三种分割方法:

  1. 点击选择物体分割。只分割点击的这个物体 。在下图中点击选择了轮胎,网络成功的把轮胎分割出来。
  1. 框线物体分割,分割这个框中的物体。下图中我们用box框选了煤气罐,网络成功的分割出煤气罐。
  1. 全部分割。下图中选择了全部分割,最后网络将整张图片进行了分割。值得注意的是,我发现网络是先确定图像中的所有提示点,然后根据这些点进行分割。

下面我们看一个SAM网站上的样例展示:

5 客观评价

SAM模型作为人类在图像分割领域取得的最新(也是目前最高)科研成果,它的性能无疑是可圈可点的,同时它提供了一个有史以来最大的图像分割数据集,这对于后续研究的贡献价值是巨大的。它开启了CV界的大模型时代——用一个模型、一次预训练去应对所有可能出现的任务场景。这是我们开启强人工智能时代的必经之路,我们应该感到开心
但同时我们应该清醒的认识到,我们距离真正的人工智能时代还差的很远,SAM的解决方案并不是划时代的改革。我们在第二部份论文工作中提到了,为了实现SAM的功能,作者们重新定义了task、model和data。其中将图像分割限定为了一个基于提示点的分割任务,并且提出了“数据引擎”式的环状“data——model”模式。这两个操作构建其了一个闭环的自监督分割网络模型。虽然在结构上看,这就是一个完美的具备自学习能力的分割模型,但是作者在文章讲到“虽然我们的模型是使用自监督技术初始化的,但其绝大多数功能都来自大规模的监督训练。”简单来说就是:构建一个几乎可以包含已知世界中的所有物体的数据集,然后让网络去学习,在学到了一定的分割能力后进行自监督继续学习并完善。苛刻的讲(站在完美主义的角度),在方法模式上,SAM仍旧套用了目前主流的自监督搭建模型的方式;在取得的成果上也是采用了大量数据集实现的,有点大力出奇迹的味道

6 CV研究者自有出路

自SAM出世之日,很多人就在讨论研究图像分割的前景何在?许多人都持悲观态度(包括我身边的一些大佬们),导致身边出现很多关于图像分割甚至整个CV研究的负面消息,有些XX号开始贩卖焦虑,甚至出现了“CV已亡”的言论。但是我想说CV研究者自有出路。别的大道理我不谈,就说这篇论文。作者在其中也总结了很多不足和需要改进的地方:

  • SAM在使用大型图像编码器时,无法保证实时性
  • 文中对对text-to-mask 任务的尝试是探索性的,并不完全可靠
  • 虽然 SAM可以执行许多任务,但尚不清楚如何设计实现语义和全景分割的简单提示

而且作者也明确表示,SAM只是一个通用的骨干网络。那么对于其执行的下游任务仍需根据情况适时改进。 即:针对特定任务场景或特殊数据的图像分割仍是一个值得探索的研究方向

7 总结

最后,我想说SAM的提出是人类在CV领域的一大成果,但绝不最后一项成果。正如上世纪初在所有人都认为物理学已经完善的时候,突然又出现了两朵乌云一样。科学的发展是永无尽头的,CV的发展也是如此。希望大家能够理性的看待和评价SAM。

猜你喜欢

转载自blog.csdn.net/qq_44949041/article/details/130043623