SAM(Segment Anything Model)让CV走到尽头?学CV的研究生还能正常毕业吗?怎么使用SAM?
1. 引言
最近无论是在B站、知乎还是论坛、微博,都看了一些有关SAM的讨论。这个号称“CV界ChatGPT”的模型从出生起就备受各界关注。ChatGPT的开放使用一方面让大众深切体会到了顶尖团队的人工智能与“某某同学”、“小某小某”等“人工智障”的区别,另一方面也让公众对AI融入生活的期待值空前高涨。SAM恰巧诞生在这个CV界也正在寻求突破的时机,自然从出生起就伴随着争议。首先必须明确我的两个个人观点:
-
SAM强吗?——强,很强。无论是否诞生在这个时机,SAM本身的价值都是毋庸置疑的。
-
SAM会让CV走到尽头吗?学CV的研究生还能正常毕业吗?——SAM绝不会让CV走到尽头,学CV的研究生一样具有很多可能性。
2. SAM到底是什么
SAM是Facebook AI Research开发的一种计算机视觉模型。实现的功能是计CV中最常见的需求之一——分割(Segment)。分割的本质是:判断图像中的某个像素属于哪一个具体的对象。
在较新版本的PS中,已经引入了一些图像分割的应用,例如“选择主体”功能。
PS可以轻松地选中图中的两条狗,但是当我放大图片尝试选择木棍时,PS显得有些乏力。
事实上,在具体的细分领域中,完成同SAM相同效果的图像分割是工程中最基础的任务之一。而SAM之所以产生了如此大的影响力,是因为SAM实现了不需要任何标注就可以完成(几乎)所有目标的分割。这也是模型的名字叫做Segment ANYTHING Model的原因。
SAM官方提供了Demo测试,演示了其强大的分割功能。我做了加个简单的测试,直接上图。
首先点击了模特的脸部,SAM分割出了男模特,精度整体可以接受。再右击男模特的身体部分(右击表示该像素点不在需要的目标内),SAM随即只选择了模特的头部。
除了基础的Segment之外,SAM的Demo还提供了一些进阶的功能。包括框选范围选择(BOX)、自动分割整张图片(EVERYTHOING)的模式,在官方提供的数据中都能达到不错的效果。再上图。
分割线以上都是我使用官方提供的图片做的测试。SAM在一些偏激的使用场景下会有怎样的表现呢?我使用一张自己的图片做了测试。
图片是我之前做过的一个试验,图像中有一条亮度较高的激光线,以及若干条鱼。SAM的识别能力明显弱于在其官方数据中的表现。尤其是在边缘的识别上。点选的方式选中像素时,需要经过2-3次的调整,才能选中亮度较低的目标。使用Every Thing模式时,目标的边缘出现了较大的偏差。当然,这里所谓的”偏差“是跟”标准答案作对比的,客观地说,没有经过任何标签,能够做到这种精度的分割已经很了不起了。我同时简单标注了一些图片,使用Yolov7-segmentation标注,使用默认参数训练300 Epoch的效果与SAM零标签的效果类似。
所以,SAM是一个强大的图像分割模型,能够在不进一步标注任何数据的情况下完成各种目标的分割。功能的实现除了归功于结构外,也无法忽视大数据发挥的重要作用,大力出奇迹在DL中格外适用。
PS:因为各种原因无法使用官方网站Demo的,也可以从github下载源码和模型,在本地跑测试。有需要的话我可以上传到度盘供下载。
3. 讨论:SAM真的会引发CV的巨变吗?
一些自媒体说SAM是CV界的ChatGPT,那就先让ChatGPT来回答一下这个问题吧:
每当一个新技术被提出时,总是会有一些人赶着热度唱衰整个行业。其实,SAM的出现只会将CV向前推进一步,而远不会使CV走到尽头。无论对从业者还是研究生,SAM带来的机遇都会大于挑战。
对于从业者来说:
-
SAM将Engineering的开箱即用做到了极致,SAM的生产力工具属性远远超过了其潜在的危险属性。在SAM问世之前,对于中下游的从业者来说,完成一个几乎没有学术意义的分割任务至少需要:1. 大量的图像标注工作 2. 算力说得过去的机器。而在SAM问世之后,几乎可以以零标注甚至是零代码的方式实现最基础的分割任务。
-
可能会带来工作岗位的流失?一个真正伟大的扩时代的技术(且不论SAM有没有达到这个高度),带来的一定的工作岗位的增加,至少也该是更多应用的落地。SAM缩小了大厂、小厂之间的差距,让数据、算力都无法与大厂相比的中小型企业也有了站上CV顶端的可能性。只要思维够开阔,SAM可以带来很多便利。
对于CV研究生来说:CV很卷是事实,有一些人开始跑路也是事实。但是如果因为听信了一些自媒体鼓吹的SAM使CV走到了尽头,CV的研究生将无法毕业,那实在是过于悲观了。
-
虽然SAM的作者们在朝着Segment Everything 的方向努力,但是真正的Segment Everything时代还没有来临(即使来临了,CV也不会走到尽头)。这是因为CV语义几乎可以无限细分,一些特定领域的分割语义是罕见、冷门甚至是自定义的。这些语义之间的逻辑关系错综复杂,目前的环境下很难通过一张图片来分割出所谓的Everything。
-
CV具有语义稀疏性、域间差异性和无限粒度性等天然的难题。例如,当前的图像识别、分割研究存在的一个问题是,当识别的粒度增加时,识别的确定性必然下降,也就是说,粒度和确定性是冲突的。举例说,在ImageNet中,存在着“家具”和“电器”两个大类;显然“椅子”属于“家具”,而“电视机”属于“家电”,但是“按摩椅”属于“家具”还是“家电”,就很难判断——这就是语义粒度的增加引发的确定性的下降。这还仅仅是继续针对分割而言的,即使今天Meta已经将分割做到了无懈可击,CV也不至于走到了尽头。
-
不指望在任何分支领域做出突破,只想安安心心混个毕业?那SAM是否问世就更没有关系了。趁着SAM的热度还在,蹭一波热度应用到自己的领域中发几篇文章他不香吗?
4. SAM还能怎么用?
- 与自动标签工具结合。SAM强大的分割功能最先让人想到打标签时的窒息。将SAM与标签工具结合,可以大大提高生产力。我已经在github上看到一些类似思路的工具,不过还没有试用,有需要可以自行检索。如果能够加上团队协作的功能就更完美了~。
- 与AI绘画结合。前段时间很火的Stable Diffusion可以跟SAM做一个比较好的融合,尤其是在重绘功能的绘制蒙版时,可以进一步提高自动化的程度。
- 给Idol换件衣服是不是也不错哈哈哈,这也是基于SAM的一个开源库,叫做Grounded-Segment-Anything
更多用法欢迎交流~~