号称分割一切,Meta发布segmentanything-2,可实时...

智能也得细细瞧 2024-08-01 13:30:32

前期我们分享了 meta 开源的,而最近刚刚 meta 发布了分割一切的第二代模型segment anything- 2,此模型不仅可以分割一切,还可以对视频进行实时的对象分割。

继图像分割模型(SAM) 取得成功之后,meta发布了SAM 2,这是一个用于在图像和视频中实时对象分割的统一模型。SAM 2 可以分割任何视频或图像中的任何对象 - 即使对于以前从未见过的对象和视觉域也是如此,从而无需进行自定义调整即可实现多种对象的分割。

最新模型 SAM 2 是第一个用于实时图像和视频对象分割的统一模型,它使视频分割发生了重大变化,并可在图像和视频应用程序中无缝使用。SAM 2 在图像分割精度方面超越了之前的功能,并且实现了比现有工作更好的视频分割性能,同时所需的交互时间减少了三倍。SAM 2 还可以分割任何视频或图像中的任何对象,这意味着它可以应用于以前从未见过的视觉内容,而无需进行自定义调整。

作为统一模型,SAM 2 可以无缝支持图像和视频数据中的用例,并扩展到以前未见过的视觉领域。对于人工智能研究和其他人来说,SAM 2 可以作为更大的人工智能系统的一部分,用于更广泛地理解世界的模型。在工业界,它可以为视觉数据提供更快的注释工具,以训练下一代计算机视觉系统,例如自动驾驶汽车中使用的系统。SAM 2 的快速推理能力可以激发实时或现场视频中选择和与对象交互的新方式。对于内容创建者,SAM 2 可以实现视频编辑中的创意应用,并为生成视频模型增加可控性。SAM 2 还可用于辅助科学和医学研究 - 例如,在无人机镜头中追踪濒危动物或在医疗过程中定位医学影像等。

SAM 2 架构可视为 SAM 从图像到视频领域的推广。SAM 2 可通过点击、边界框或掩码来提示模型,以定义给定视频帧中对象的范围。轻量级掩码解码器采用当前帧的图像嵌入和编码提示来输出该帧的分割掩码。在视频设置中,SAM 2 将此掩码预测传播到所有视频帧以生成掩码。然后可以在任何后续帧上迭代添加提示以优化掩码预测。

为了在所有视频帧中准确预测掩码,模型引入了一种记忆机制,由记忆编码器、记忆库和记忆注意模块组成。当应用于图像时,记忆组件为空,模型的行为类似于 SAM。对于视频,记忆组件可以存储有关该会话中对象和先前用户交互的信息,从而使 SAM 2 能够在整个视频中生成掩码预测。如果在其他帧上提供了其他提示,SAM 2 可以根据存储的对象记忆上下文有效地纠正其预测。

SAM 2 同样支持开源,代码,模型全部开源,且官方也上线了在线体验 demo,而官方也分享了SA-V 数据集,其中包括大约 51,000 个真实世界视频和超过 600,000 个 masklet(时空掩码视频),其代码分享在 GitHub 上,也可以直接使用代码进行对象的分割。

图片预测:

import torchfrom sam2.build_sam import build_sam2from sam2.sam2_image_predictor import SAM2ImagePredictorcheckpoint = "./checkpoints/sam2_hiera_large.pt"model_cfg = "sam2_hiera_l.yaml"predictor = SAM2ImagePredictor(build_sam2(model_cfg, checkpoint))with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16): predictor.set_image(<your_image>) masks, _, _ = predictor.predict(<input_prompts>)

视频预测:

import torchfrom sam2.build_sam import build_sam2_video_predictorcheckpoint = "./checkpoints/sam2_hiera_large.pt"model_cfg = "sam2_hiera_l.yaml"predictor = build_sam2_video_predictor(model_cfg, checkpoint)with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16): state = predictor.init_state(<your_video>) frame_idx, object_ids, masks = predictor.add_new_points(state, <your prompts>): for frame_idx, object_ids, masks in predictor.propagate_in_video(state): ...

而模型提供了 4 中参数的预训练模型供大家下载使用。

而 meta也提供了在线体验链接,可以直接在官方网站上面上传自己的视频,或者使用提供的 demo 视频进行体验,目前仅仅支持在线 10s的视频,上传视频后,随机点击视频中的对象,点击 track 运行,就可以看到模型预测的效果,而整个视频中,可以多次点击不同场景的对象。若对象不在一个场景中,可以多次点击,选择每个场景中的对象进行分割。

https://sam2.metademolab.com/demohttps://github.com/facebookresearch/segment-anything-2https://ai.meta.com/blog/segment-anything-2/关于详细的对象分割代码实现,我们下期分享
0 阅读:0

智能也得细细瞧

简介:感谢大家的关注