基于 Python 的 Meta AI —— SAM

简介: 基于 Python 的 Meta AI —— SAM

Segment Anything Model(SAM)是 Facebook 的一个 AI 模型,旨在推广分割技术。在我们之前的文章中,我们讨论了 SAM 的一般信息,现在让我们深入了解其技术细节。SAM 模型的结构如下图所示,图像经过编码器得到其嵌入,并且任何掩码都可以被实现。提示可以以文本、边界框或自由形式的点的形式出现。我们对提示进行编码,并将其与图像嵌入一起传递给解码器,该解码器生成我们的掩码。



SAM 最有趣的特性之一是其轻量级的编码器和解码器,可以实现实时性能。您可以使用在 GitHub 上可用的打包版本在 Python 中使用 SAM:https://github.com/kadirnar/segment-anything-video



然而,如果您在使用过程中遇到问题,您可以使用原始 GitHub 页面上提供的 Colab 文件。以下是您可以开始使用的步骤:

    using_colab = True 
    if using_colab:
        import torch
        import torchvision
        print("PyTorch version:", torch.__version__)
        print("Torchvision version:", torchvision.__version__)
        print("CUDA is available:", torch.cuda.is_available())
        import sys
        !{sys.executable} -m pip install opencv-python matplotlib
        !{sys.executable} -m pip install 'git+https://github.com/facebookresearch/segment-anything.git'
        !wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

    首先,导入 Torch 和 Torchvision,这是项目所必需的,然后使用 pip 安装 Segment Anything。

    https://github.com/facebookresearch/segment-anything#model-checkpoints 下载模型检查点,稍后我们将使用它。


    接下来,创建一个图像目录,您可以将测试图像放在其中。您还可以通过替换以下命令中的 URL 来使用自己的图像:


    !mkdir images
    !wget -O images/image.jpg https://live.staticflickr.com/65535/49894878561_14a39c6c35_b.jpg

    一旦您拥有了图像,您可以导入必要的包,包括 numpy、Torch、Matplotlib 和 OpenCV。

      import numpy as np
      import torch
      import matplotlib.pyplot as plt
      import cv2

      您可以使用以下函数绘制注释:

        def show_anns(anns):
            if len(anns) == 0:
                return
            sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)
            ax = plt.gca()
            ax.set_autoscale_on(False)
            polygons = []
            color = []
            for ann in sorted_anns:
                m = ann['segmentation']
                img = np.ones((m.shape[0], m.shape[1], 3))
                color_mask = np.random.random((1, 3)).tolist()[0]
                for i in range(3):
                    img[:,:,i] = color_mask[i]
                ax.imshow(np.dstack((img, m*0.35)))

        现在,使用 OpenCV 读取图像并将通道从 BGR 更改为 RGB。然后,使用 Matplotlib 显示图像。

          image = cv2.imread('images/image.jpg')
          image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
          plt.figure(figsize=(20,20))
          plt.imshow(image)
          plt.axis('off')
          plt.show()

          要创建您的掩码生成器,您需要定义您的 SAM 模型并使用 SamAutomaticMaskGenerator:


          import sys
          sys.path.append("..")
          from segment_anything import sam_model_registry, SamAutomaticMaskGenerator, SamPredictor
          sam_checkpoint = "sam_vit_h_4b8939.pth"
          model_type = "vit_h"
          device = "cuda"
          sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)
          sam.to(device=device)
          mask_generator = SamAutomaticMaskGenerator(sam)

          我们的 SAM 模型注册表需要检查点和模型类型以提供模型,记得将您的运行时设置为 GPU。SamAutomaticMaskGenerator 使用您的模型来制作您的掩码生成器。您所需要做的就是将您的输入传递给这个函数以获取您的掩码。


          masks = mask_generator.generate(image)

          掩码对象包含关于区域和稳定性分数的多个信息,稍后会将标签添加到此掩码对象中。让我们来看一下输出:


          plt.figure(figsize=(20,20))
          plt.imshow(image)
          show_anns(masks)
          plt.axis('off')
          plt.show()

          您还可以通过更改以下变量来调整遮罩生成器的参数:


          mask_generator_2 = SamAutomaticMaskGenerator(
          model=sam,
          points_per_side=32,
          pred_iou_thresh=0.86,
          stability_score_thresh=0.92,
          crop_n_layers=1,
          crop_n_points_downscale_factor=2,
          min_mask_region_area=100, # Requires open-cv to run post-processing
          )
          masks2 = mask_generator_2.generate(image)
          plt.figure(figsize=(20,20))
          plt.imshow(image)
          show_anns(masks2)
          plt.axis('off')
          plt.show()
          

          不同参数的另一个输出

          您可以在这里找到源代码:

          https://colab.research.google.com/github/facebookresearch/segment-anything/blob/main/notebooks/automatic_mask_generator_example.ipynb

          相关文章
          |
          人工智能 自然语言处理 数据可视化
          中国版“Manus”开源?AiPy:用Python重构AI生产力的通用智能体
          AiPy是LLM大模型+Python程序编写+Python程序运行+程序可以控制的一切。
          1026 11
          |
          11月前
          |
          人工智能 数据安全/隐私保护 Python
          小红书图文生成器,小红书AI图文生成工具,python版本软件
          Pillow库自动生成符合平台尺寸要求的配图7;3)利用Playwright实现自动化发布流程6。
          |
          9月前
          |
          人工智能 数据安全/隐私保护 异构计算
          桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
          桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
          1393 8
          桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
          |
          9月前
          |
          机器学习/深度学习 人工智能 自然语言处理
          AI Compass前沿速览:IndexTTS2–B站、HuMo、Stand-In视觉生成框架、Youtu-GraphRAG、MobileLLM-R1–Meta、PP-OCRv5
          AI Compass前沿速览:IndexTTS2–B站、HuMo、Stand-In视觉生成框架、Youtu-GraphRAG、MobileLLM-R1–Meta、PP-OCRv5
          742 10
          AI Compass前沿速览:IndexTTS2–B站、HuMo、Stand-In视觉生成框架、Youtu-GraphRAG、MobileLLM-R1–Meta、PP-OCRv5
          |
          8月前
          |
          机器学习/深度学习 人工智能 自然语言处理
          python编写AI生常用匡架及使用指令集
          本文介绍Python中常用AI框架,包括TensorFlow、PyTorch、Scikit-learn、Hugging Face、spaCy、OpenCV及XGBoost等,涵盖安装指令与基础代码示例,适用于机器学习、深度学习、自然语言处理与计算机视觉等领域,助力快速入门与应用开发。(238字)
          751 7
          |
          9月前
          |
          设计模式 人工智能 API
          AI智能体开发实战:17种核心架构模式详解与Python代码实现
          本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
          961 7
          |
          10月前
          |
          人工智能 自然语言处理 安全
          Python构建MCP服务器:从工具封装到AI集成的全流程实践
          MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
          1645 1
          |
          11月前
          |
          数据采集 人工智能 API
          推荐一款Python开源的AI自动化工具:Browser Use
          Browser Use 是一款基于 Python 的开源 AI 自动化工具,融合大型语言模型与浏览器自动化技术,支持网页导航、数据抓取、智能决策等操作,适用于测试、爬虫、信息提取等多种场景。
          1428 4
          推荐一款Python开源的AI自动化工具:Browser Use
          |
          11月前
          |
          人工智能 测试技术 编译器
          从 Python 演进探寻 AI 与云对编程语言的推动
          Python 自 2008 年发布 3.0 版本以来,经历了持续演进与革新。十六年间,从 Python 3.0 到即将发布的 3.14,语言设计、性能优化、类库生态及虚拟机技术等方面均有显著提升。字符串处理、异步编程、类型系统等核心功能不断现代化,Faster CPython 和 JIT 编译技术推动运行效率飞跃。同时,AI、云计算等新兴技术成为其发展的重要驱动力。本文全面回顾了 Python 的演进历程,并展望未来发展方向。
          325 2
          |
          11月前
          |
          机器学习/深度学习 人工智能 机器人
          Meta AI Research:虚拟/可穿戴/机器人三位一体的AI进化路径
          本文阐述了我们对具身AI代理的研究——这些代理以视觉、虚拟或物理形式存在,使其能够与用户及环境互动。这些代理包括虚拟化身、可穿戴设备和机器人,旨在感知、学习并在其周围环境中采取行动。与非具身代理相比,这种特性使它们更接近人类的学习与环境交互方式。我们认为,世界模型的构建是具身AI代理推理与规划的核心,这使代理能够理解并预测环境、解析用户意图及社会背景,从而增强其自主完成复杂任务的能力。世界建模涵盖多模态感知的整合、通过推理进行行动规划与控制,以及记忆机制,以形成对物理世界的全面认知。除物理世界外,我们还提出需学习用户的心理世界模型,以优化人机协作。
          816 3

          推荐镜像

          更多