SAM2 安装与运行问题解决方案


SAM2

昨天,Facebook发布了SAM2,支持更好的图像分割和视频分割,正好业务上存在视频分割+Mask追踪的需求,所以clone一下试试

安装方法

参考官方文档,直接将sam2作为pip包安装。

也许也可以使用python -m pip install git+https://github.com/facebookresearch/segment-anything-2.git

踩坑记录

环境说明:Win10+py3.10+pytorch2.4.0+cu12.1

1 安装时

官方环境需求python>=3.10pytorch>=2.3.1torchvision>=0.18.1

2 安装时

CUDA_HOME 环境变量问题,参考 Issue 41

OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.

尝试添加环境变量 $env:CUDA_HOME = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1 (仅为示例,请根据实际添加) 到系统环境变量中,并未生效,因此查找issues,发现需要为pip指定 --no-build-isolation 参数

完整解决方案:

  1. 安装CUDA Toolkit,如 CUDA 12.4
  2. 添加新环境变量,名称为CUDA_HOME,值为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4
  3. 执行 nvcc -V,测试nvcc是否正确安装
  4. 执行安装流程(已完成pytorch等依赖安装的话,直接从 pip install 开始)
cd \segment-anything-2
conda create -n sam2 python=3.10

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

pip install --no-build-isolation -e .
pip install --no-build-isolation -e ".[demo]"

3 安装时

VS Studio 需求问题

由于正版VS在公司电脑上需要申请,所以只安装了开发工具包,会显示需要支持的编译器,因此,为setup.py中的nvcc项目添加"-allow-unsupported-compiler"这一编译选项

在48行后(https://github.com/facebookresearch/segment-anything-2/blob/86827e2fbae8a293f61d51caa70a4b0602c04454/setup.py#L48)添加

            "-allow-unsupported-compiler",

添加完毕后应为:

    compile_args = {
        "cxx": [],
        "nvcc": [
            "-DCUDA_HAS_FP16=1",
            "-D__CUDA_NO_HALF_OPERATORS__",
            "-D__CUDA_NO_HALF_CONVERSIONS__",
            "-D__CUDA_NO_HALF2_OPERATORS__",
            "-allow-unsupported-compiler",
        ],
    }

然后重新执行上面的安装流程。

2 运行时

问题相关Issue

segment-anything-2\sam2\modeling\sam\transformer.py", line 255, in forward
out = F.scaled_dot_product_attention(q, k, v, dropout_p=dropout_p)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: No available kernel. Aborting execution.

解决方法:

禁用flash_attention

Adding some lines after L22 in sam2\modeling\sam\transformer.py

将下面的行添加到sam2\modeling\sam\transformer.py22行

USE_FLASH_ATTN = False
MATH_KERNEL_ON = True
OLD_GPU = True

声明:烈火灼冰|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - SAM2 安装与运行问题解决方案


离离沐雪踏轻尘