1. SAM 2环境配置全流程搞AI视觉的朋友们注意了Meta开源的Segment Anything Model 2SAM 2绝对是今年最值得把玩的图像分割工具。我花了三天时间从零搭建环境到跑通第一个案例把踩过的坑和最佳实践都整理在这里。先说结论用Anaconda管理环境能避开90%的依赖冲突问题。1.1 硬件与基础软件准备我的测试机是RTX 3090显卡配Windows 11系统实测需要至少8GB显存才能流畅运行大型分割任务。首先到NVIDIA官网下载最新显卡驱动建议选择Studio驱动而非Game Ready驱动稳定性更好。安装完成后在命令行输入nvidia-smi确认CUDA版本在12.0以上SAM 2需要CUDA 11.8。接下来安装Anaconda这个Python环境管理器能让你在不同项目间快速切换。有个细节要注意安装时务必勾选Add Anaconda to PATH选项否则后面conda命令会找不到。验证安装成功的命令是conda --version1.2 创建专用虚拟环境为避免包版本冲突我们新建一个独立环境。这里有个坑Python版本不能太新也不能太旧3.10是最佳选择。执行以下命令创建环境conda create -n sam2_env python3.10 -y conda activate sam2_env激活环境后命令行前缀会变成(sam2_env)这时候所有操作都只影响当前环境。我建议在D盘创建英文路径的工作目录比如D:\AI_Projects\SAM2用以下命令进入mkdir D:\AI_Projects\SAM2 cd /d D:\AI_Projects\SAM22. 关键依赖安装指南2.1 PyTorch与CUDA匹配这是最容易翻车的环节。首先到PyTorch官网查看版本对应关系当前推荐组合是PyTorch 2.5.1 CUDA 12.1。安装命令要精确到cudatoolkit版本pip install torch2.5.1 torchvision0.16.1 torchaudio2.5.1 --index-url https://download.pytorch.org/whl/cu121验证安装是否成功import torch print(torch.__version__) # 应输出2.5.1 print(torch.cuda.is_available()) # 应输出True2.2 SAM 2源码部署从GitHub克隆项目时建议使用镜像加速国内用户可以用这个命令git clone https://ghproxy.com/https://github.com/facebookresearch/sam2.git cd sam2安装依赖时有个技巧先装基础依赖再装可选组件。执行以下命令pip install -e .[all]如果遇到CUDA扩展编译失败常见于Windows系统可以尝试先安装VC Build Tools然后重新运行安装命令。不过根据我的测试即使编译失败基础分割功能仍可使用。3. 图像分割实战演示3.1 准备测试数据在项目根目录创建test_images文件夹放入待分割的JPEG图片。我建议先用简单的物体图片测试比如单个水果或车辆。创建如下Python脚本demo.pyimport torch from sam2.build_sam import build_sam2 from sam2.sam2_image_predictor import SAM2ImagePredictor from PIL import Image import matplotlib.pyplot as plt # 初始化模型 checkpoint ./checkpoints/sam2.1_hiera_large.pt model_cfg configs/sam2.1/sam2.1_hiera_l.yaml model build_sam2(model_cfg, checkpoint).cuda() predictor SAM2ImagePredictor(model) # 加载图像 image Image.open(test_images/apple.jpg).convert(RGB) # 执行分割 with torch.no_grad(), torch.autocast(cuda): predictor.set_image(image) masks, scores, _ predictor.predict( point_coords[[image.width//2, image.height//2]], # 中心点提示 point_labels[1], # 前景标签 multimask_outputTrue ) # 可视化结果 plt.figure(figsize(10, 5)) plt.subplot(1, 2, 1) plt.imshow(image) plt.title(Original) plt.axis(off) plt.subplot(1, 2, 2) plt.imshow(image) plt.imshow(masks[0], alpha0.5) # 显示得分最高的mask plt.title(fSegmentation (Score: {scores[0]:.2f})) plt.axis(off) plt.savefig(result.jpg, bbox_inchestight)3.2 高级交互技巧SAM 2支持多种提示方式实测下来组合使用效果最好。修改预测部分代码如下# 矩形框提示左上x,左上y,右下x,右下y box [100, 100, 400, 400] # 多点提示支持正负样本 points [[200, 200], [300, 300]] # 坐标列表 labels [1, 0] # 1前景, 0背景 masks, _, _ predictor.predict( point_coordspoints, point_labelslabels, boxbox, multimask_outputFalse )4. 性能优化与常见问题4.1 加速推理技巧启用半精度和自动混合精度能显著提升速度with torch.inference_mode(), torch.autocast(cuda, dtypetorch.float16): # 推理代码对于批量处理建议先resize图像到1024x1024左右的分辨率。大尺寸图像可以使用tile分割策略predictor.set_image(image, image_size1024) # 控制处理尺寸4.2 典型错误排查遇到CUDA out of memory时可以尝试以下方案减小输入图像尺寸添加torch.cuda.empty_cache()使用predictor.reset_image()清除缓存如果出现No module named sam2检查是否在项目根目录执行代码使用pip install -e .安装了项目激活了正确的conda环境内存不足时可以修改模型加载方式model build_sam2(model_cfg, checkpoint).half().cuda() # 半精度加载