人工智能计算机视觉深度学习基础模型AI 应用【免费下载链接】Grounded-Segment-AnythingGrounded SAM: Marrying Grounding DINO with Segment Anything Stable Diffusion Recognize Anything - Automatically Detect , Segment and Generate Anything项目地址https://gitcode.com/gh_mirrors/gr/Grounded-Segment-Anything点击查看免费下载导读本文以 EfficientSAM/README.md 为核心骨架系统讲解如何在 Grounded-Segment-Anything 仓库中将文本检测模型 Grounding DINO 与 FastSAM、MobileSAM、Light-HQSAM、Efficient-SAM、Edge-SAM、RepViT-SAM 六种高效 SAM 变体结合构建输入文本提示 → 输出检测框与分割掩码的零样本标注流水线。读完本文你将掌握每种变体的安装方式、权重下载、Demo 运行命令、关键参数含义以及各脚本背后的源码级调用链与轻量图像编码器结构。一、为什么需要 Efficient Grounded-SAMGrounded-Segment-Anything 仓库的核心思路是将 Grounding-DINO开放词汇文本检测器与 Segment Anything 系列分割模型配对Marrying实现用一句话检测并分割图像中任意目标。原始 Grounded-SAM 使用完整版 SAMViT-H 编码器约 6.32 亿参数推理开销大不适合高频标注场景。EfficientSAM 子模块即EfficientSAM/目录的目标非常明确用高效 SAM 变体替换原始 SAM换取更快的零样本检测与分割faster annotating。由于 Grounding DINO 负责找到目标在哪SAM 变体只负责把框变成精细掩码分割阶段的延迟瓶颈几乎完全取决于图像编码器。因此将编码器从 632M 参数的 ViT-H 换成几十 M 甚至几 M 的轻量网络就能在不改变整体管线的前提下大幅提速。说明仓库 README 中曾有一段被注释的组合方案Grounding-DINO × Fast-SAM最终正式路线是统一采用 GroundingDINO 与六种高效 SAM 变体的组合本文以此为准。二、环境与安装2.1 安装 Grounded-SAM 主项目EfficientSAM 的全部 Demo 都运行在 Grounded-Segment-Anything 仓库根目录下因此第一步是安装主项目。根据仓库根目录 README.md环境要求为python3.8pytorch1.7、torchvision0.8强烈建议安装带 CUDA 支持的版本在非 Docker 的本地 GPU 环境中先设置编译环境变量再以可编辑模式安装两个核心子项目export AM_I_DOCKERFalse export BUILD_WITH_CUDATrue export CUDA_HOME/path/to/cuda-11.3/ # 安装 Segment Anything python -m pip install -e segment_anything # 安装 Grounding DINO注意关闭 build isolation pip install --no-build-isolation -e GroundingDINO此外还可按需安装opencv-python pycocotools matplotlib onnxruntime onnx ipykernel等可选依赖用于掩码后处理、COCO 格式保存与 Notebook 演示。2.2 安装 Fast-SAMFastSAM Demo 基于 Ultralytics 的YOLO接口封装见 grounded_fast_sam.py 的from ultralytics import YOLO需要单独安装 Fast-SAM 及其依赖详见 FastSAM 官方安装说明仓库内对应实现位于 EfficientSAM/FastSAM/tools.py提供box_prompt、fast_process等后处理工具。2.3 下载 Grounding DINO 权重所有六个 Demo 共享同一个 Grounding DINO 配置与权重配置文件为 GroundingDINO_SwinT_OGC.py权重为groundingdino_swint_ogc.pth需下载到仓库根目录cd Grounded-Segment-Anything wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth六个脚本内部硬编码的 checkpoint 路径均为./groundingdino_swint_ogc.pth请务必放置于仓库根目录。2.4 准备演示图片各 Demo 的默认输入图EfficientSAM/LightHQSAM/example_light_hqsam.png一张含长椅的场景图是仓库专门准备的标准测试图目的是便于横向对比不同高效 SAM 变体的推理效果README 明确说明we may use the sam image as the demo image in order to compare the inference results of different efficient-sam variants。对 FastSAM 与 MobileSAM 两个可自定义输入的 DemoREADME 分别选用了 assets/demo4.jpg黑狗与 assets/demo2.jpg奔跑的狗。三、六种高效 SAM 变体一览EfficientSAM 子模块将主流轻量 SAM 方案全部接入统一管线按技术路线可分为四类变体技术路线关键点仓库对应实现FastSAMCNN 分割模型仅用 SA-1B 数据集的 2% 训练宣称与 SAM 相当的性能配合约 50 倍推理速度提升grounded_fast_sam.py、FastSAM/tools.pyMobileSAMTiny-ViT 编码器保持 SAM 原始管线仅将 632M 的 ViT-H 编码器替换为约 5M 的 Tiny-ViT单 GPU 约 12ms/图编码器 8ms 解码器 4msgrounded_mobile_sam.py、MobileSAM/setup_mobile_sam.pyLight-HQSAMHQ token 轻量编码器基于 MobileSAM 的 Tiny-ViT在掩码解码器中注入可学习的 High-Quality Output Token并先将 ViT 特征与解码器特征融合以提升掩码细节grounded_light_hqsam.py、LightHQSAM/setup_light_hqsam.pyEfficient-SAMSAMI 掩码图像预训练用 SAMI 预训练轻量图像编码器 掩码解码器再在 SA-1B 上微调实现性能与算力开销的平衡grounded_efficient_sam.pyEdge-SAM纯 CNN 编码器蒸馏将 ViT 版 SAM 图像编码器蒸馏为纯 CNN 架构更适合边缘设备并验证了任务无关的编码器蒸馏无法完整迁移 SAM 知识grounded_edge_sam.py、EdgeSAM/setup_edge_sam.pyRepViT-SAMRepViT 编码器沿用 MobileSAM 思路把重编码器替换为 RepViT 模型宣称相对 MobileSAM 有更好零样本迁移能力与约 10 倍推理速度提升grounded_repvit_sam.py、RepViTSAM/setup_repvit_sam.py表格中的性能数据如 2% SA-1B、12ms、50×、10×均转录自官方论文/项目描述README 原文本文仅如实转述论文作者声明不额外评估其真伪。四、统一推理管线文本 → 检测框 → 分割掩码除 FastSAM 外其余五个 Demo 的推理管线高度一致可抽象为四步本文以 grounded_mobile_sam.py 为例拆解Edge-SAM、RepViT-SAM、Light-HQSAM 的写法几乎逐行相同。4.1 构建 Grounding DINO 检测模型from groundingdino.util.inference import Model GROUNDING_DINO_CONFIG_PATH GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py GROUNDING_DINO_CHECKPOINT_PATH ./groundingdino_swint_ogc.pth grounding_dino_model Model( model_config_pathGROUNDING_DINO_CONFIG_PATH, model_checkpoint_pathGROUNDING_DINO_CHECKPOINT_PATH )4.2 文本提示检测detections grounding_dino_model.predict_with_classes( imageimage, classes[args.CAPTION], # 文本提示如 The running dog box_thresholdBOX_THRESHOLD, # 默认 0.25 text_thresholdTEXT_THRESHOLD # 默认 0.25 )4.3 NMS 后处理去重Grounding DINO 可能对同一目标输出多个重叠框脚本用 torchvision 的 NMS 在检测框上按置信度去重nms_idx torchvision.ops.nms( torch.from_numpy(detections.xyxy), torch.from_numpy(detections.confidence), NMS_THRESHOLD # 默认 0.8 ).numpy().tolist()4.4 框提示驱动分割将每个检测框作为 box prompt 送入 SAM 变体输出掩码后由 supervision 库sv.BoxAnnotator/sv.MaskAnnotator叠加绘制def segment(sam_predictor: SamPredictor, image: np.ndarray, xyxy: np.ndarray) - np.ndarray: sam_predictor.set_image(image) result_masks [] for box in xyxy: masks, scores, logits sam_predictor.predict(boxbox, multimask_outputTrue) index np.argmax(scores) # 取 IoU 分数最高的掩码 result_masks.append(masks[index]) return np.array(result_masks)4.5 关键超参数速查参数MobileSAM/Light-HQSAM/Edge-SAM/RepViT-SAM 默认值FastSAM 内 Grounding DINO 调用值作用BOX_THRESHOLD0.250.3检测框置信度阈值过滤低置信框TEXT_THRESHOLD0.250.25文本与视觉特征对齐分数阈值NMS_THRESHOLD0.8—非极大值抑制 IoU 阈值multimask_outputTrueMobileSAM/ FalseHQ 类—是否输出多候选掩码注意Light-HQSAM、Edge-SAM、RepViT-SAM 三个脚本在sam_predictor.predict中传入了hq_token_onlyTrue且multimask_outputFalse这是源自 LightHQSAM 与 EdgeSAM 的 HQ 分支特有接口表明只使用高质量 token 输出路径。MobileSAM 脚本则使用标准的multimask_outputTrue并取分数最高掩码。五、六个 Demo 逐个实战5.1 Run Grounded-FastSAM Demo权重准备从 FastSAM 官方 Model Checkpoints 页面下载FastSAM-x.ptREADME 中的默认路径为./FastSAM-x.pt。运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_fast_sam.py \ --model_path ./FastSAM-x.pt \ --img_path assets/demo4.jpg \ --text the black dog. \ --output ./output/源码拆解grounded_fast_sam.py此脚本与其余五个的架构不同——它先用 UltralyticsYOLO加载 FastSAM 权重并对整图做实例分割imgsz1024、iou0.9、conf0.4、max_det100、retina_masksTrue再用 Grounding DINO 检测出文本对应的框最后通过FastSAM.tools.box_prompt从 FastSAM 的整图掩码中裁剪出与框重叠的目标掩码交给fast_process渲染。可调参数参数默认值说明--model_path./FastSAM/FastSAM-x.ptFastSAM 权重路径--img_path./images/dogs.jpg输入图片路径--textthe black dog.GroundingDINO 文本提示--imgsz1024FastSAM 推理图像尺寸--iou0.9FastSAM 掩码 IoU 阈值--conf0.4目标置信度阈值--output./output/输出目录--retinaTrue是否输出高分辨率掩码--devicecuda可用时推理设备输出与已知限制结果保存于./output/命名格式为{图片名}_{框索引}_caption_{文本短语}.jpg。README 明确提示受 FastSAM 后处理限制一次只能标注一个框若 Grounding DINO 检出多个框脚本会为每个框分别保存一张标注图此行为将在后续版本中改进对应源码见 grounded_fast_sam.py 的逐框循环。5.2 Run Grounded-MobileSAM Demo权重准备从 MobileSAM 官方 weights 目录下载mobile_sam.pt至EfficientSAM/下。运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_mobile_sam.py \ --MOBILE_SAM_CHECKPOINT_PATH ./EfficientSAM/mobile_sam.pt \ --SOURCE_IMAGE_PATH ./assets/demo2.jpg \ --CAPTION the running dog源码拆解脚本通过 MobileSAM/setup_mobile_sam.py 的setup_model()构建模型——其保留原始 SAM 的 PromptEncoder 与 MaskDecoder仅将图像编码器替换为 Tiny-ViTembed_dims[64, 128, 160, 320]、depths[2, 2, 6, 2]、num_heads[2, 4, 5, 10]、window_sizes[7, 7, 14, 7]、mlp_ratio4.0随后load_state_dict(checkpoint, strictTrue)加载权重并包装为SamPredictor。输出文件均为脚本默认文件名保存于仓库根目录groundingdino_annotated_image.jpg仅含检测框的中间结果grounded_mobile_sam_annotated_image.jpg框 掩码的最终标注图grounded_mobile_sam_bin_mask.jpg第一个目标的二值掩码图。提示README 中写的是./gronded_mobile_sam_anontated_image.jpg拼写有误源码 grounded_mobile_sam.py 的实际默认输出名为grounded_mobile_sam_annotated_image.jpg以源码为准。可调参数--BOX_THRESHOLD0.25、--TEXT_THRESHOLD0.25、--NMS_THRESHOLD0.8、--OUT_FILE_BOX、--OUT_FILE_SEG、--OUT_FILE_BIN_MASK、--DEVICE。5.3 Run Grounded-Light-HQSAM Demo权重准备从 sam-hq 官方 Model Checkpoints 页面下载sam_hq_vit_tiny.pth脚本默认读取./EfficientSAM/sam_hq_vit_tiny.pth。运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_light_hqsam.py源码拆解与 MobileSAM 的关键区别在掩码解码器。LightHQSAM/setup_light_hqsam.py 使用MaskDecoderHQ来自 segment_anything/modeling/mask_decoder_hq.py替换标准MaskDecoder并通过vit_dim160将 Tiny-ViT 末层160 维特征注入解码器配合可学习 HQ token 预测高质量掩码分割时以hq_token_onlyTrue走 HQ 分支。输入图与类别在 grounded_light_hqsam.py 中硬编码为EfficientSAM/LightHQSAM/example_light_hqsam.png与[bench]。输出文件EfficientSAM/LightHQSAM/grounded_light_hqsam_annotated_image.jpg框 掩码标注图及同目录下的groundingdino_annotated_image.jpg。下图左侧为该 Demo及 Efficient-SAM/Edge-SAM/RepViT-SAM 共用的标准输入图右侧为 Light-HQSAM 的标注输出5.4 Run Grounded-Efficient-SAM Demo权重准备从 EfficientSAM 官方 Model 页面下载efficientsam_s_gpu.jit并放置于Grounded-Segment-Anything/EfficientSAM目录下脚本硬编码路径./EfficientSAM/efficientsam_s_gpu.jit。运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_efficient_sam.py源码拆解Efficient-SAM 与前面几个变体接口不同——它没有走SamPredictor而是直接加载 TorchScript 模型torch.jit.load(...)grounded_efficient_sam.py并通过自定义函数efficient_sam_box_prompt_segment以(图像张量, 检测框, 框标签[2,3])三元组调用模型前向得到 logits 后以sigmoid 0.5二值化再按预测 IoU 分数挑选最佳掩码。输出文件EfficientSAM/gronded_efficient_sam_anontated_image.jpg注意此文件名在源码中即为该拼写与 README 描述一致属于仓库现状。5.5 Run Grounded-Edge-SAM Demo权重准备按 EdgeSAM 官方 Usage 说明将两个权重下载到EfficientSAM/目录cd Grounded-Segment-Anything wget -P EfficientSAM/ https://huggingface.co/spaces/chongzhou/EdgeSAM/resolve/main/weights/edge_sam.pth wget -P EfficientSAM/ https://huggingface.co/spaces/chongzhou/EdgeSAM/resolve/main/weights/edge_sam_3x.pth运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_edge_sam.py源码拆解EdgeSAM/setup_edge_sam.py 的build_edge_sam使用RepViT(archm1, upsample_modebicubic)作为纯 CNN 图像编码器其余PromptEncoder、MaskDecoder、TwoWayTransformer与标准 SAM 保持一致Demo 脚本默认加载edge_sam_3x.pth3× 训练版本分割时同样走hq_token_onlyTrue分支。输出文件EfficientSAM/grounded_edge_sam_annotated_image.jpg。5.6 Run Grounded-RepViT-SAM Demo权重准备按 RepViT 官方安装说明下载cd Grounded-Segment-Anything wget -P EfficientSAM/ https://github.com/THU-MIG/RepViT/releases/download/v1.0/repvit_sam.pt运行命令cd Grounded-Segment-Anything python EfficientSAM/grounded_repvit_sam.py源码拆解RepViTSAM/setup_repvit_sam.py 通过timm.models.create_model(repvit)构建图像编码器对应 RepViTSAM/repvit.py其余组件为标准 SAM 配置build_sam_repvit加载./EfficientSAM/repvit_sam.pt权重并置于 eval 模式。Demo 脚本在分割时同样启用hq_token_onlyTrue。输出文件EfficientSAM/grounded_repvit_sam_annotated_image.jpg。六、源码视角轻量编码器与统一模型骨架从四个 setup 脚本可以看出一个共同规律所有变体都复用segment_anything的标准Sam骨架PromptEncoder MaskDecoder TwoWayTransformer唯一的分歧点在于图像编码器以及 Light-HQSAM 对解码器的 HQ 化改造。变体编码器类型编码器维度/结构要点解码器MobileSAMTiny-ViT4 阶段输出通道 320→256embed_dims 末位 320标准 MaskDecoderLight-HQSAMTiny-ViT同上解码器侧接入vit_dim160特征MaskDecoderHQ含 HQ tokenEdge-SAMRepViTarchm1纯 CNN上采样模式 bicubic输出 256 维标准 MaskDecoderRepViT-SAMRepViTtimmrepvit输出 256 维 prompt_embed_dim标准 MaskDecoderEfficient-SAM自研轻量编码器SAMI 预训练以 TorchScript 整体加载boxlabel 直接前向内置不暴露 SamPredictor 接口各骨架统一使用prompt_embed_dim256、image_size1024、vit_patch_size16、pixel_mean[123.675, 116.28, 103.53]、pixel_std[58.395, 57.12, 57.375]与 segment_anything/modeling/sam.py 的标准设置一致这意味着同一份 Grounding DINO 检测结果可以无缝切换到任意 SAM 变体上做分割便于批量对比实验。七、注意事项与后续工作FastSAM 的多框限制由于 FastSAM 后处理机制一次仅能标注一个检测框多框场景下脚本会为每个框单独保存一张图官方计划在后续版本中改进见 grounded_fast_sam.py。输出文件名拼写差异README 部分输出文件名存在笔误如gronded_mobile_sam_anontated_image.jpg实际以各脚本源码中的cv2.imwrite路径为准其中 Efficient-SAM 脚本的gronded_efficient_sam_anontated_image.jpg拼写沿用至今。路径硬编码Light-HQSAM、Efficient-SAM、Edge-SAM、RepViT-SAM 四个脚本的输入图、类别与权重路径均为硬编码bench/example_light_hqsam.png如需自定义输入需直接修改脚本内常量如 grounded_light_hqsam.pyFastSAM 与 MobileSAM 则提供了完整的命令行参数。演示图复用EfficientSAM/LightHQSAM/example_light_hqsam.png被多个变体用作标准输入便于在同一场景下横向对比不同模型的分割细节与速度。通过本文的六条命令与源码拆解你可以在同一套 Grounded-Segment-Anything 环境中快速搭建文本驱动、轻量分割的零样本标注方案并根据设备算力从移动端到边缘端灵活选择 FastSAM、MobileSAM、Light-HQSAM、Efficient-SAM、Edge-SAM 或 RepViT-SAM。赞分享人工智能计算机视觉深度学习基础模型AI 应用【免费下载链接】Grounded-Segment-AnythingGrounded SAM: Marrying Grounding DINO with Segment Anything Stable Diffusion Recognize Anything - Automatically Detect , Segment and Generate Anything项目地址https://gitcode.com/gh_mirrors/gr/Grounded-Segment-Anything点击查看免费下载相关推荐Segment Anything 高级用法完全指南SAM 2 视频分割、Grounded SAM 文本提示与生产级集成实战Segment Anything 高级用法完全指南SAM 2 视频分割、Grounded SAM 文本提示与生产级集成实战 本篇技术指南围绕 AI ReseaAI 技能人工智能大模型深度学习Kornia 中 Segment Anything (SAM) 的提示式分割VisualPrompter 与 Sam 模型实战指南Kornia 中 Segment Anything SAM 的提示式分割VisualPrompter 与 Sam 模型实战指南 Segment Anythin计算机视觉深度学习人工智能图像处理终极指南如何用Grounded Segment Anything实现零样本图像分割与自动标注终极指南如何用Grounded Segment Anything实现零样本图像分割与自动标注 Grounded Segment AnythingGround人工智能计算机视觉深度学习基础模型AI 应用上一篇fp-ts Semiring 模块全解析加法与乘法代数结构的类型化建模下一篇LibreChat activity-label 评测基架解析用固定语料与逐因素变体度量提示词文本质量创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考