【计算机视觉】Segment Anything 安装配置及代码测试(含源代码)

这篇具有很好参考价值的文章主要介绍了【计算机视觉】Segment Anything 安装配置及代码测试(含源代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划
目前代码已经开源!

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划
Segment Anything Model(SAM)可以从输入提示(如点或框)生成高质量的物体遮罩,并且可以用于为图像中的所有物体生成遮罩。它在一个包含1100万张图像和10亿个遮罩的数据集上进行了训练,并且在各种分割任务上表现出了强大的零样本性能。

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

二、安装

2.1 基本要求

该代码要求使用 python>=3.8,并且需要安装 pytorch>=1.7 和 torchvision>=0.8。请按照以下说明安装 PyTorch 和 TorchVision 的依赖项。强烈建议同时安装支持 CUDA 的 PyTorch 和 TorchVision。

以下是安装步骤的一般指南:

  1. 安装 Python 3.8+:确保您的系统已安装 Python 3.8 或更高版本。您可以从 Python 官方网站(https://www.python.org/downloads/)下载并安装适用于您的操作系统的 Python 版本。
  2. 安装 PyTorch 和 TorchVision:按照以下步骤安装 PyTorch 和 TorchVision:

访问 PyTorch 官方网站(https://pytorch.org/)并根据您的系统选择适当的安装选项。

根据提供的安装说明,使用 pip 或 conda 安装 PyTorch 和 TorchVision。例如,如果您使用 pip,可以执行以下命令安装 PyTorch:

pip install torch>=1.7 torchvision>=0.8
  1. 安装 CUDA(可选):如果您的系统支持 NVIDIA GPU 并且您希望使用 CUDA 加速,建议安装 CUDA 并配置 PyTorch 和 TorchVision 以支持 CUDA。您可以从 NVIDIA 官方网站(https://developer.nvidia.com/cuda-downloads)下载适用于您的系统的 CUDA 版本,并按照提供的说明进行安装。

请注意,上述步骤提供了一般的安装指南。具体的安装步骤可能因您的操作系统、Python 版本和其他依赖项而有所不同。建议参考 PyTorch 和 TorchVision 的官方文档和安装说明,以确保正确地安装和配置这些库。

2.2 Install Segment Anything

pip install git+https://github.com/facebookresearch/segment-anything.git

若是这个运行失败,选择下面的方式:

  1. 第一步:
git clone git@github.com:facebookresearch/segment-anything.git
  1. 第二步:
cd segment-anything
  1. 第三步:
pip install -e .

便可顺利安装成功!

以下是用于遮罩后处理、以 COCO 格式保存遮罩、示例笔记本和以 ONNX 格式导出模型的可选依赖项。同时,运行示例笔记本还需要安装 jupyter。

pip install opencv-python pycocotools matplotlib onnxruntime onnx
  • For mask post-processing: You may need to install additional libraries or packages depending on the specific post-processing techniques used in the code. It is recommended to refer to the code documentation or instructions for the required dependencies.
  • For saving masks in COCO format: If you intend to save the generated masks in COCO format, you will need to install the pycocotools library. You can install it using pip:
pip install pycocotools
  • For example notebooks: To run the example notebooks, you need to have Jupyter Notebook installed. Jupyter Notebook allows you to run interactive code cells and view the notebook content. You can install it using pip:
pip install jupyter
  • For exporting the model in ONNX format: If you want to export the model in ONNX format, you will need to install the onnx and onnxruntime packages. You can install them using pip:
pip install onnx onnxruntime

Please note that the specific dependencies may vary depending on the code and its requirements. It is recommended to refer to the code documentation or instructions for the complete list of dependencies and installation instructions.

三、代码使用示例

3.1 Automatically generating object masks with SAM

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

from IPython.display import display, HTML
display(HTML(
"""
<a target="_blank" href="https://colab.research.google.com/github/facebookresearch/segment-anything/blob/main/notebooks/automatic_mask_generator_example.ipynb">
  <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
</a>
"""
))

上述代码片段是用于在Jupyter Notebook或支持HTML输出的环境中显示一个带有Colab徽章的链接。当点击该链接时,它将在Colab中打开名为"automatic_mask_generator_example.ipynb"的笔记本。

要使用此代码片段,请确保已经安装并正确配置了IPython和Jupyter Notebook。将代码片段放置在代码单元格中并运行,您将在输出中看到一个带有Colab徽章的链接,点击该链接即可在Colab中打开相应的笔记本。

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

3.2 Environment Set-up

using_colab = False
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'
    
    !mkdir images
    !wget -P images https://raw.githubusercontent.com/facebookresearch/segment-anything/main/notebooks/images/dog.jpg
        
    !wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

如果在本地使用 Jupyter 运行,请首先根据存储库中的安装说明在您的环境中安装segment_anything。

如果在 Google Colab 上运行,请在下方将 using_colab=True 设置为 True 并运行该单元格。在 Colab 中,请确保在“编辑”->“笔记本设置”->“硬件加速器”下选择了“GPU”。

3.3 显示标注

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)

    img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4))
    img[:,:,3] = 0
    for ann in sorted_anns:
        m = ann['segmentation']
        color_mask = np.concatenate([np.random.random(3), [0.35]])
        img[m] = color_mask
    ax.imshow(img)

这段代码是一个用于显示标注(annotations)的函数 show_anns。下面是对代码的解读:

  1. 函数接受一个标注列表 anns 作为参数。
  2. 首先,检查标注列表的长度,如果列表为空,则直接返回。
  3. 根据标注的面积对标注进行排序,从大到小,使用 sorted 函数和 key 参数来实现排序。排序后的结果保存在 sorted_anns 列表中。
  4. 创建一个坐标轴对象 ax,并关闭其自动缩放功能。
  5. 创建一个图像数组 img,形状与最大标注的分割形状相同,并初始化为全1,表示完全透明。
  6. 遍历排序后的标注列表,对每个标注进行处理:

获取标注的分割掩码 m。

生成一个随机的颜色掩码 color_mask,由3个随机数和一个透明度值组成。

将颜色掩码应用到图像数组的相应位置上,使得标注区域显示为对应的颜色。

  1. 使用 ax.imshow 函数显示图像数组 img,即显示了带有颜色标注的图像。

总体来说,该函数的作用是根据给定的标注信息,在图像上显示带有不同颜色的标注区域。

3.4 图像示例

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

原图如下:

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

3.5 Automatic mask generation

要运行自动 mask 生成,请向 SamAutomaticMaskGenerator 类提供一个 SAM 模型。将下面的路径设置为 SAM 检查点的路径。推荐在 CUDA 上运行,并使用默认模型。

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)
masks = mask_generator.generate(image)

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

print(len(masks))
print(masks[0].keys())

输出结果为:

dict_keys(['segmentation', 'area', 'bbox', 'predicted_iou', 'point_coords', 'stability_score', 'crop_box'])
plt.figure(figsize=(20,20))
plt.imshow(image)
show_anns(masks)
plt.axis('off')
plt.show() 

可视化结果如下:

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划

3.6 Automatic mask generation options

自动掩码生成中有几个可调参数,用于控制采样点的密度以及去除低质量或重复掩码的阈值。 此外,生成可以在图像的裁剪上自动运行以提高较小对象的性能,并且后处理可以去除杂散像素和孔洞。 以下是对更多掩码进行采样的示例配置:

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() 

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码),计算机视觉,计算机视觉,python,深度学习,SAM,原力计划文章来源地址https://www.toymoban.com/news/detail-550194.html

到了这里,关于【计算机视觉】Segment Anything 安装配置及代码测试(含源代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机视觉 | 目标检测 | 图像分割】Grounding DINO + Segment Anything Model (SAM)源代码分享(含源代码)

    在本教程中,我们将学习如何使用两个突破性的模型自动注释图像 - Grounding DINO 和 Segment Anything Model (SAM)。 然后,我们可以使用此数据集来训练实时对象检测或实例分割模型。 以传统方式使用多边形对图像进行注释极其耗时且昂贵。 借助 Grounding DINO 和 SAM,初始注释仅需几分

    2024年04月15日
    浏览(182)
  • 计算机视觉:替换万物Inpaint Anything

    目录 1 Inpaint Anything介绍 1.1 为什么我们需要Inpaint Anything 1.2 Inpaint Anything工作原理 1.3 Inpaint Anything的功能是什么 1.4 Segment Anything模型(SAM) 1.5 Inpaint Anything 1.5.1 移除任何物体 1.5.2 填充任意内容 1.5.3 替换任意内容 1.5.4 实践  1.6 实验总结  2 Inpaint Anything部署与运行 2.1 conda环境准

    2024年02月14日
    浏览(53)
  • 计算机视觉-PCV包、Vlfeat库、Graphviz库的下载安装配置及问题解决(使用anaconda3 & python 3.8.5)

    目录 一、PCV包配置 二、Vlfeat配置 三、在PCV包的sift.py文件中对路径进行修改 四、以上步骤所需注意的错误 五、Graphviz配置 1.下载PCV包,点开网址直接下载安装包(不用解压),下载之后将安装包放在任意目录位置 https://codeload.github.com/Li-Shu14/PCV/zip/master https://codeload.github.co

    2024年02月19日
    浏览(62)
  • 计算机视觉一 —— 介绍与环境安装

    傲不可长 欲不可纵 乐不可极 志不可满 研究理论和应用 - 研究如何使机器“看”的科学 - 让计算机具有人类视觉的所有功能 - 让计算机从图像中,提取有用的信息,并解释 - 重构人眼;重构视觉皮层;重构大脑剩余部分 计算机视觉学习图 学习重点 1. 各种深度神经网络模型(

    2024年02月13日
    浏览(41)
  • 【C++】OpenCV:计算机视觉库介绍及C++环境配置

    OpenCV 是一个跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 OpenCV 是用C++语言编写的,同时留有C ++(工程部署用)、Python(深度学习用)、Java和MATLAB(Matlab好多例子都调用的opencv)接口,为了学习(juan)和部署视觉类的应用,记录一

    2024年01月19日
    浏览(55)
  • 【计算机视觉 | 目标检测】Grounding DINO 深度学习环境的配置(含案例)

    “ Grounding DINO:Marrying DINO with Grounded Pre-Training for Open-Set Object Detection ”的官方 PyTorch 实现: SoTA 开放集对象检测器。 论文地址: 在 YouTube 上观看介绍视频: Try the Colab Demo: Try Official Huggingface Demo: Grounded-SAM: Marrying Grounding DINO with Segment Anything Grounding DINO with Stable Diffusion

    2024年02月07日
    浏览(77)
  • Python使用pip安装mediapipe,实现计算机视觉的应用

    近年来,计算机视觉在人工智能领域蓬勃发展,为我们提供了许多强大的工具和技术。其中,mediapipe是一个广受欢迎的开源库,它提供了一整套计算机视觉算法和应用程序接口(API),帮助开发者轻松构建各种视觉相关的项目。本文将介绍如何使用pip安装mediapipe以及一些常见

    2024年02月04日
    浏览(50)
  • C++计算机视觉库OpenCV在Visual Studio 2022的配置方法

      本文介绍在 Visual Studio 2022 中配置、编译 C++ 计算机视觉库 OpenCV 的方法。   首先,我们进行 OpenCV 库的下载与安装。作为一个开源的库,我们直接在其官方下载网站(https://opencv.org/releases/)中进行下载即可;如下图所示,我们首先选择需要下载的操作系统。   随后

    2024年02月16日
    浏览(59)
  • 【计算机视觉】手把手教你配置stable-diffusion-webui进行AI绘图(保姆级教程)

    本地部署指的是将软件应用程序或服务部署在本地计算机或本地服务器上,而不是使用云服务或远程服务器。以下是一些常见的原因,解释为什么选择本地部署: 数据隐私和安全性:对于某些敏感数据或关键业务功能,保持数据在本地环境中更有保障。本地部署可以提供更高

    2024年02月08日
    浏览(54)
  • 计算机视觉 计算机视觉识别是什么?

    计算机视觉识别(Computer Vision Recognition)是计算机科学和人工智能领域中的一个重要分支,它致力于使计算机系统能够模拟和理解人类视觉的过程,从而能够自动识别、分析和理解图像或视频中的内容。这一领域的发展旨在让计算机具备视觉感知和理解的能力,使其能够从视

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包