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.10
,pytorch>=2.3.1
,torchvision>=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
参数
完整解决方案:
- 安装CUDA Toolkit,如 CUDA 12.4
- 添加新环境变量,名称为
CUDA_HOME
,值为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4
- 执行
nvcc -V
,测试nvcc是否正确安装 - 执行安装流程(已完成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"
这一编译选项
"-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 运行时
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.py
的22行后
USE_FLASH_ATTN = False
MATH_KERNEL_ON = True
OLD_GPU = True
Comments | NOTHING