1.引言
随着OpenAI公司ChatGPT的火爆,国内外科技公司都陆续发布自然语言通用领域大模型。而图像领域AI,一时间没了热度。转机出现在上个月,Meta发布了分割万物的视觉通大模型Segment Anything Model(SAM)。关注图像或者遥感语义分割的同事可能知道,语义分割作为计算机视觉的核心任务,应用广泛,但最大的限制就是需要大量的标注数据,并且针对不同的任务需要重新训练或微调,试想,如果出现一个适用所有场景的通用分割模型,数据不用标注了,模型也不用训练了,开包即用,多是一件美事。
SAM的愿景就是这样,不仅遥感领域,他要把所有目之所及的图像都纳入他的分割能力之内。早前几年,大家会觉得这样的想法很不现实,但在GPT大模型智能“涌现”的今天,好像也不是不可能。最近实验室经过本地部署和测试,为大家带来SAM在GIS领域的效果测评。
2.SAM介绍
SAM被誉为图片领域中的ChatGPT,可以对图片中的所有对象进行分割。以大家熟知的PS抠图功能类比,过去实现抠图大体上有两种打法:1.经过大量训练,分割出特定对象,比如抠人的模型,抠衣服的模型,抠动物的模型等;2.分割时尽可能的通用,分割后再进行微调。实际应用中,这两种方案混合出现,进而实现自动抠图的效果。
但SAM依赖庞大的参数量和海量训练数据在视觉角度理解了万物,按Meta的原话来说「SAM 已经学会了关于物体的一般概念,可以为任何图像或视频中的任何物体生成 mask,甚至包括在训练过程中没有遇到过的物体和图像类型。SAM 足够通用,可以涵盖广泛的用例,并且可以在新的图像『领域』即开即用,无需额外的训练。」即一个模型可以对图片的任何对象进行圈定,如下图所示。
3.SAM测试
3.1 SAM相关参数
训练数据名称 | 图片数量 | Mask数量 | 图像平均分辨率 |
SA-1B V1.0 | 1100万 | 11亿 | 1500×2250px |
训练硬件 | 硬件数量 | 训练时间 | 模型参数 |
NVIDIA A100 GPU | 256 | 3-5天 | ViT-B:91M |
ViT-L:308M | |||
ViT-H:636M | |||
推理硬件 | 推理时间 | 是否生成语义标签 | 是否可用于视频 |
NVIDIA A100 GPU | 0.15秒 | 仅生成MASK | 仅支持视频中的图像或单个帧 |
3.2 SAM官网demo测试
SAM可以自动分割图像上所有的对象,此外SAM还可以接受用户的提示进行指定分割,可接受的提示有:(1)前景/背景点;(2)边界框;(3)文本。同时SAM还可以为模棱两可的提示生成多个有效分割结果。
Meta AI提供了SAM的在线demo,供使用者测试相关功能。SAM在线演示地址:Segment Anything | Meta AI。
(1)自动分割所有对象
官网提供了示例图像,用户还可以自己上传图像,目前还不支持TIF影像的上传。上传之后使用Everything就可以对图像进行自动分割,如下图,SAM能自动分割出上传遥感影像中的对象,对于前景中的建筑物都能完整的分割出来,但对于背景中的道路并没有分割出来。
分割一切
(2)指定位置分割
除了全部自动分割,还可以通过鼠标悬浮和点击的方式来指定前景点,分割前景点所在区域的单个对象。如下图,可以通过鼠标点击来分割单个飞机的对象。
悬浮加点击
通过指定前景点分割结果有误的时候,还可以用鼠标右键将错误分割部分指定为背景点,去掉有误的部分,只保留正确的飞机对象,如下图。
右键点击
当单个指定前景点不满足需求的时候,还可以指定多个前景点,更好的提取同一类分割对象。
多点击提示
SAM还提供了Multi-mask的功能,对指定位置的分割结果输出不同置信度的分割结果,如下图提取影像中的道路,得到两个不同置信度的结果。
多个分数
(3)框选分割
第二种提示的方案是框选指定区域,分割出区域内的对象,如下图,将飞机所在区域框选,分割出其中的单个飞机。
框选
同时,框选部分区域与指定区域点可以配合使用,对特定对象进行分割提取。
框选加点击
(4)文本提示分割
目前文本提示分割仅在Meta AI的论文中提到(https://ai.facebook.com/research/publications/segment-anything/),具体的功能并没有开放,不过在SAM发布不久,已经有研究者结合在SAM的基础上实现了文本提示的功能,在后文的SAM相关新技术进展中会详细介绍。
3.3本地部署测试
(1)部署环境
表格中是在本地部署测试时的软硬件环境配置,括号中是SAM项目的软件最低版本要求。
硬件 | 系统 | Windows10 |
GPU | NVIDIA RTX 2060 12G | |
软件 | CUDA | 11.1 |
Python | 3.8(>=3.8) | |
pytorch | 1.8(>=1.7) | |
torchvision | 0.9(>=0.8) |
(2)推理过程与结果
SAM提供了三个参数最不同的模型,从小到大分别是 VIT-B、VIT-L、VIT-H,模型开箱即用,根据硬件配置选择合适参数的模型,将图像输入到模型中,输出的结果包括下图中的信息,包含图像中每个实例的区域、面积、边界框以及对应的分割iou分数等。
a. ViT-B模型
ViT-B模型在推理时显存占用4.8G,在NVIDIA RTX 2060的显卡上推理1000*1000px的影像平均用时9秒左右。
使用参数最小的的ViT-B模型对测试图像进行分割,在自然图像和遥感影像中均存在未被识别分割的区域,如自然图像中的人物、草坪、桥墩;遥感影像中的部分裸地、草地、建筑物等。
b. ViT-L模型
ViT-L模型在推理时显存占用6.5G,在NVIDIA RTX 2060的显卡上推理1000*1000px的影像平均用时不到1分钟。
ViT-L是中等参数量的模型,对于自然图像和遥感影像中的实例对象基本都能分割出来,相比于VIT-B的结果未分割的区域更少。但是存在将一个实例分割成多个实例的情况,比如自然图像中的草坪、大楼。
c. ViT-H模型
ViT-H模型在推理时显存占用7.9G,在NVIDIA RTX 2060的显卡上推理1000*1000px的影像平均用时超过1分钟。
使用最大参数量的ViT-H模型对同样的测试图像进行分割,分割效果是三个模型中最好的,几乎不存在未分割的区域,自然图像中的实例也分割的很完整。而对于遥感影像,影像上的地块、树木都能完整的分割识别,边界清晰。经过测试发现,对于遥感影像,模型更容易识别前景中的实例,比如影像中的建筑物屋顶和树木等,而把道路当做背景部分。
4.总结展望
SAM的发布让CV迎来了ChatGPT时刻,正如Meta AI自己声称的那样:“这是史上首个图像分割基础模型”。通过测评我们看到,对于常见遥感影像,SAM中等参数以上模型基本完全能够胜任常见遥感影像的分割任务,轮廓边缘特别不清晰的地方通过鼠标点击提示(Prompt)去细分也基本没问题,加之最近SEEM等模型的出现,解决了语义缺失的问题,可以说在遥感领域是非常有潜力的一个技术。
SAM不仅有强大的分割能力,同时还拥有广泛的通用性,一方面,它具有零样本迁移的能力,涵盖各种图像,不需要额外训练就可以开箱即用地用于新的图像领域,无论是自然图像,还是遥感影像、医疗影像等专业领域。另一方面,SAM既可以单独使用,也可以与其他功能模型组合使用,组建出强大的视觉工作流模型,来提升视觉工作中的各任务整体的能力。更重要的是,作为图像分割基础模型,SAM是开源的,不像OpenAI那样抠抠搜搜的。Meta一小步,CV一大步。
然而,尽管SAM这种基础模型在标准数据集上具有很强的性能,但类似遥感数据等专业领域的数据拥有独特影像特征,如不同的颜色通道和视图,因此,为特定领域设计下游模块是SAM在各个专业领域应用的新方向。
「未来GIS实验室」作为超图研究院上游科研机构,致力于洞见未来GIS行业发展方向,验证前沿技术落地可行性,以及快速转化最新研究成果到关键产品。部门注重科研和创新功底,团队气氛自由融洽,科研氛围相对浓厚,每个人都有机会深耕自己感兴趣的前沿方向。