SAM:如何将自定义灰度蒙版转换为Meta的Segment Anything格式?

问题描述 投票:0回答:1

看看 Meta 的 Segment Anything 模型,它似乎接受低分辨率输入掩码以进一步细化其结果。

mask_input (np.ndarray, optional): A low resolution mask input to the model, typically coming from a previous prediction iteration. Has form 1xHxW, where for SAM, H=W=256.

但是,他们的文档没有提供任何有关如何将自定义灰度/二进制图转换为他们支持的格式的明确信息。

我不想重复使用他们的 logits,而是提供我自己的输入。谁能帮助我了解如何将自定义蒙版与 SAM 结合使用?如何实现灰度到SAM需要的logits之间的转换?

我尝试用不同的方法转换我的面具,类似于下面的方法 - 但最终都失败了。

def reference_mask_to_sam_mask(self, ref_mask: np.ndarray) -> np.ndarray:
        # Normalize the mask to [0, 1]
        ref_mask_norm = ref_mask / 255.0

        # Add a small constant to avoid extreme values
        epsilon = 1e-7
        ref_mask_norm = np.clip(ref_mask_norm, epsilon, 1 - epsilon)

        # Resize the mask to (256, 256)
        ref_mask_resized = resize(
            ref_mask_norm, (256, 256), mode="reflect", anti_aliasing=True
        )

        # Convert probabilities to logits
        ref_mask_logits = logit(ref_mask_resized)

        # Add an extra dimension to make the shape (1, 256, 256)
        sam_mask = ref_mask_logits[np.newaxis, :, :]

        return sam_mask

非常感谢! 💙🖖

python deep-learning pytorch computer-vision image-segmentation
1个回答
0
投票

那里似乎有一个类似的问题,并且似乎不可能或不需要解析您自己的掩码。您应该从先前的迭代中获取先前的蒙版,并添加一个框或标签来重新指定要分割的区域。

https://github.com/facebookresearch/segment-anything/issues/169

© www.soinside.com 2019 - 2024. All rights reserved.