# SAM2 ## 项目简介 Segment Anything Model 2 (SAM 2)是一个用于解决图像和视频中可提示视觉分割问题的基础模型。将 SAM 扩展到视频领域,将图像视为单帧视频。该模型采用简单的 Transformer 架构,并利用流式内存实现实时视频处理。 --- ## 环境部署 ### 1. 拉取镜像 ```bash docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.5.1-ubuntu22.04-dtk25.04.2-py3.10 ``` ### 2. 创建容器 ```bash docker run -it \ --network=host \ --hostname=localhost \ --name=sam2 \ -v /opt/hyhal:/opt/hyhal:ro \ -v $PWD:/workspace \ --ipc=host \ --device=/dev/kfd \ --device=/dev/mkfd \ --device=/dev/dri \ --shm-size=512G \ --privileged \ --group-add video \ --cap-add=SYS_PTRACE \ -u root \ --security-opt seccomp=unconfined \ image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.5.1-ubuntu22.04-dtk25.04.2-py3.10 \ /bin/bash ``` --- ## 测试步骤 ### 1. 拉取代码 ```bash git clone http://developer.sourcefind.cn/codes/bw-bestperf/sam2.git cd sam2 ``` ### 2. 安装依赖 ```bash python setup.py install pip install hydra-core iopath -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 修改代码: ```bash vim /usr/local/lib/python3.10/dist-packages/sam2/modeling/sam2_base.py # 在第20行添加: MaskDecoder = torch.compile(MaskDecoder, mode="max-autotune-no-cudagraphs") PromptEncoder = torch.compile(PromptEncoder, mode="max-autotune-no-cudagraphs") TwoWayTransformer = torch.compile(TwoWayTransformer, mode="max-autotune-no-cudagraphs") ``` ### 3. 下载模型 ```bash cd checkpoints bash download_ckpts.sh cd .. ``` --- ## 测试代码示例(单卡测试) 修改sam2/sam2/benchmark_image-warmup.py中的权重、yaml文件、数据集路径: ```bash cd sam2 vim benchmark_image-warmup.py # 将以下变量修改为本地路径 sam2_checkpoint = "/path/sam2/checkpoints/sam2.1_hiera_large.pt" model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml" images_dir = "/path/sam2/coco_mini/images/val2017" ``` 运行单卡推理: ```bash python benchmark_image-warmup.py ``` --- ## 贡献指南 欢迎对 SAM2 项目进行贡献!请遵循以下步骤: 1. Fork 本仓库,并新建分支进行功能开发或问题修复。 2. 提交规范的 commit 信息,描述清晰。 3. 提交 Pull Request,简述修改内容及目的。 4. 遵守项目代码规范和测试标准。 5. 参与代码评审,积极沟通改进方案。 --- ## 许可证 本项目遵循 MIT 许可证,详见 [LICENSE](./LICENSE) 文件。 --- 感谢您的关注与支持!如有问题,欢迎提交 Issue 或联系维护团队。