关注公众号,发现CV技术之美
本月初,Meta推出的一款可以【分割一切】的模型Segment Anything Model (SAM) 已经引起了广泛的关注。今天,我们很荣幸向大家介绍一款名为“Segment Any RGBD(SAD)”的机器学习模型。与以往所有使用SAM的工具的不同之处在于,SAD读入的图片可以是经过渲染之后的深度图,让SAM直接根据几何信息来分割图像。该项目是由Visual Intelligence Lab@HKUST, HUST, MMLab@NTU, Smiles Lab@XJTU和 NUS的同学完成的。如果大家觉得这个项目有意思的话,请大家多多star~
演示程序链接:
https://huggingface.co/spaces/jcenaa/Semantic_Segment_AnyRGBD
代码链接:https://github.com/Jun-CEN/SegmentAnyRGBD
▌简介
我们发现人类可以从深度图的可视化中自然地识别物体,所以我们首先通过颜色映射函数将深度图([H,W])映射到RGB空间([H,W,3]),然后将渲染的深度图像输入 SAM。与RGB图像相比,渲染后的深度图像忽略了纹理信息,而侧重于几何信息。以往基于 SAM 的项目里SAM 的输入图像都是 RGB 图像, 我们是第一个使用 SAM 直接利用渲染后的深度图提取几何信息的。下图显示了具有不同颜色图函数的深度图具有不同的 SAM 结果。
我们的模型流程图如下图所示。我们提供了两种选择,包括将 RGB 图像或渲染的深度图像输入到 SAM进行分割。在每种模式下,用户都可以获得Semantic Mask(一种颜色代表一个类别)和带有类别的 SAM Mask。
以输入为深度图为例子进行说明。我们首先通过颜色映射函数将深度图([H,W])映射到RGB空间([H,W,3]),然后将渲染后的深度图送入SAM进行分割。同时我们使用 OVSeg 对RGB图进行zero-shot语义分割,我们只需要输入一系列候选类别的名称即可完成类别识别。然后每一个SAM的mask的类别会根据当前mask里面的点的语义分割结果进行投票,选择点数最多的类别当成当前mask的类别。最终输出可视化有两种形式,一种是Semantic mask,即一种颜色对应一种类别;另一种是SAM mask with classes,即输出的mask仍然是SAM的mask,并且每一个mask都有类别。并且我们可以根据深度图将2D的结果投影到3D space进行可视化。
▌对比效果
我们将RGB送入SAM进行分割与将渲染后的深度图送入SAM进行分割进行了对比。
◆ RGB图像主要表示纹理信息,而深度图像包含几何信息,因此RGB图像比渲染的深度图像色彩更丰富。在这种情况下,SAM 为 RGB 输入提供的掩码比深度输入多得多,如下图所示。
◆ 渲染的深度图像减轻了 SAM 的过分割。例如,桌子在RGB图像上被分割成四个部分,其中一个在语义结果中被分类为椅子(下图中的黄色圆圈)。相比之下,桌子在深度图像上被视为一个整体对象并被正确分类。人的头部的一部分在RGB图像上被分类为墙壁(下图中的蓝色圆圈),但在深度图像上却被很好地分类。
◆ 距离很近的两个物体在深度图上可能被分割为一个物体,比如红圈中的椅子。在这种情况下,RGB 图像中的纹理信息对于找出对象比较关键。
▌Demo
这些demo其实都是动态图,大家可以进入我们的github仓库https://github.com/Jun-CEN/SegmentAnyRGBD 进行更完整的观看。
▌尝试我们的Demo
大家可以在Huggingface上尝试我们的demo,也可以使用我们的github仓库https://github.com/Jun-CEN/SegmentAnyRGBD 进行本地demo的尝试。我们也会在Modelscope社区上搭建demo,请大家关注我们的github仓库多多期待。
我们希望SAD模型能够为您带来更多的启发和创新,也期待着您的反馈和建议。让我们一起探索这个神奇的机器学习世界吧!
END
欢迎加入「图像分割」交流群👇备注:Seg