计算机视觉| 分割大模型Segment Anything(SAM)从0到1使用

安装anaconda

参考博文 最详细的Anaconda新手安装

pytorch 官网查找合适的版本

需要注意pytorch、CUDA、python、Anaconda的四个版本都要在相互支持的范围内,且能够满足Segment Anything的要求:

The code requires python>=3.8, as well as pytorch>=1.7 and torchvision>=0.8. Please follow the instructions here to install both PyTorch and TorchVision dependencies. Installing both PyTorch and TorchVision with CUDA support is strongly recommended.

可以在pytorch官网选择对应的版本,复制run this command对应的命令。

或者查看之前的版本 以前版本如下-whl文件

执行命令前,需要在 Anaconda Prompt 中先激活环境:

python 复制代码
conda activate 环境名

然后执行安装 pytorch 命令

选择合适的版本

  1. 根据你的 Python 版本和 CUDA 版本,选择相应的 .whl 文件。例如,我们使用的是 Python 3.11 和 CUDA 12.6,可以下载 torch-2.6.0+cu126-cp311-cp311-win_amd64.whl(Windows 系统)或 torch-2.6.0+cu126-cp311-cp311-linux_aarch64.whl(Linux 系统)。
  2. 同样,对于torchvision,根据Python版本和CUDA12.6,我们可以下载torchvision-0.21.0+cu126-cp311-cp311-win_amd64.whl(Windows 系统)或 torchvision-0.21.0+cu126-cp311-cp311-linux_x86_64.whl(Linux 系统)。
  3. 同样,对于torchaudio,根据Python版本和CUDA12.6,我们可以下载torchaudio-2.6.0+cu126-cp311-cp311-win_amd64.whl(Windows 系统)或 torchaudio-2.6.0+cu126-cp311-cp311-linux_x86_64.whl(Linux 系统)。

下载文件

点击链接下载 .whl 文件到本地。

我的python版本是3.11 ,在4090服务器上下载

所以我选择三个对应版本是

pytorch=2.1.0 torchvision=0.16.0 torchaudio=2.1.0 cp11

安装.whl文件

安装 .whl 文件:

下载完成后,打开命令提示符或终端,导航到 .whl 文件所在的目录,运行以下命令:

python 复制代码
pip install <filename>.whl

将 替换为你下载的 .whl 文件的名称。例如:

python 复制代码
pip install torch-2.6.0+cu126-cp311-cp311-win_amd64.whl

安装完成之后,检查一下本地是否能够使用PyTorch。我们通过在本地的Python文件中检查是否能够import torch来判断是否能够使用PyTorch

查看安装包
  • conda list命令除了得到当前虚拟环境下的所有已安装的包,还会显示关联环境下的已安装的包; pip
  • list命令只显示当前虚拟环境下的所有已安装的包;当关联环境下有某个包,再用conda命令在其他虚拟环境下下载该包时,就会直接关联,无需下载;
  • pip list命令得到的结果是conda list得到的结果的子集

下载Segment-anything 源码

Segment Anything github网址

选择一个方式进行下载

使用HTTPS

打开控制台,输入

python 复制代码
git clone https://github.com/facebookresearch/segment-anything.git

为项目源码安装依赖库

在下载后的源码目录下框下 输入 cmd,打开 cmd 窗口
在项目源码目录下激活虚拟环境
执行python setup.py install
python 复制代码
git clone [email protected]:facebookresearch/segment-anything.git
cd segment-anything; pip install -e .
安装必须依赖
python 复制代码
pip install opencv-python pycocotools matplotlib onnxruntime onnx

测试代码及其使用案例

下载model checkpoint

三个模型权重比较大,耐心下载

在源码根目录之下创建checkpoint文件夹,将下载好的模型文件放入文件

运行

添加测试文件夹和图片数据

在代码文件下创建一个stamps文件夹

在stamps下创建如下文件夹

在images文件夹下放入要测试的图片

运行代码

运行scripts文件夹下的amg.py文件

运行代码如下

python 复制代码
python <当前文件地址>/amg.py --checkpoint <当前文件地址>/checkpoint/sam_vit_b_01ec64.pth --model-type vit_b  --input <当前文件地址>/stamps/images --output <当前文件地址>/stamps/masks

将<当前文件地址>里的内容换成自己的绝对地址

运行后的mask文件包下有除了overlay.png文件外的其他文件。

如果想要生成overlay这样的全景文件
可在amg.py文件下添加如下代码

python 复制代码
# 手动生成 Overlay 文件
def create_mask_overlay(image_path, masks, output_path='overlay.png', alpha=0.5):
    """
    生成原始图像 + 掩模叠加的可视化结果
    Args:
        image_path: 原始图像路径
        masks: SAM 输出的掩模列表(每个掩模是二进制 0/1 数组)
        output_path: 叠加图保存路径
        alpha: 掩模透明度 (0-1)
    """
    # 读取原始图像
    image = cv2.imread(image_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 转为 RGB

    # 初始化叠加层(全黑)
    overlay = np.zeros_like(image)

    # 将所有掩模合并(逻辑或操作)
    for mask in masks:
        mask = mask.astype(np.uint8) * 255  # 0/1 → 0/255
        colored_mask = cv2.applyColorMap(mask, cv2.COLORMAP_JET)  # 伪彩色
        overlay = cv2.bitwise_or(overlay, colored_mask)

    # 叠加掩模和原始图像
    result = cv2.addWeighted(image, 1, overlay, alpha, 0)

    # 保存结果
    cv2.imwrite(output_path, cv2.cvtColor(result, cv2.COLOR_RGB2BGR))

在amg.py的main函数下添加如下代码

python 复制代码
        if output_mode == "binary_mask":
            os.makedirs(save_base, exist_ok=False)
            write_masks_to_folder(masks, save_base)
            # ourself
            binary_masks = [m['segmentation'] for m in masks]
            overlay_path = os.path.join(save_base, f"{base}_overlay.png")
            create_mask_overlay(t, binary_masks, output_path=overlay_path, alpha=0.5)
        else:
            save_file = save_base + ".json"
            with open(save_file, "w") as f:
                json.dump(masks, f)

大功告成!!!恭喜

相关推荐
成都犀牛4 分钟前
工作流和Agent 的区别与联系
人工智能·python·深度学习·神经网络·agent·工作流
集和诚JHCTECH10 分钟前
【案例分享】KMDA-7611-S001--高性能嵌入式电脑助力双臂轮式人形机器人应用
人工智能·嵌入式硬件·机器人
雪兽软件17 分钟前
网络安全中的人工智能应用
人工智能·web安全
人工智能培训咨询叶梓32 分钟前
大模型在关键社会领域的应用研究:金融、医疗和法律
人工智能·语言模型·金融·大模型实战·大模型应用·人工智能培训·大模型工具
flyair_China33 分钟前
【人工智能数学基础】测度论
人工智能
Cc192439 分钟前
13.1-13.4. 计算机视觉【1】
人工智能·计算机视觉
一个小番茄1 小时前
# AI武装大脑:技术管理者如何用人工智能重构认知与决策系统
人工智能·重构
楼台的春风1 小时前
【Linux驱动开发 ---- 2.1_深入理解 Linux 内核架构】
linux·c++·人工智能·驱动开发·嵌入式硬件·ubuntu·架构
VI8664956I262 小时前
AEO:从搜索引擎到答案引擎,AI时代搜索优化的新战场
人工智能·搜索引擎
国际云,接待2 小时前
从CentOS迁移到TencentOS:9%成功率的一键替换实操
服务器·网络·人工智能·腾讯云