1. 项目背景与核心价值
这个标题虽然简短,但信息量巨大。从技术角度看,它涉及三个关键组件:GroundingDINO、分割模型(Segment Anything Model,简称SAM)以及两者的集成应用。作为一名长期从事计算机视觉开发的工程师,我深知这种多模型联动的技术方案在实际业务中的价值。
GroundingDINO是一个开源的开放集目标检测模型,能够根据文本描述检测图像中的任意对象。而SAM是Meta推出的通用分割模型,可以零样本分割图像中的任何物体。将两者结合,就形成了"检测+分割"的完整pipeline——先用GroundingDINO定位目标,再用SAM进行精细分割。这种组合特别适合需要精确对象分割但标注数据稀缺的场景。
2. 环境准备与依赖安装
2.1 基础环境配置
我推荐使用Python 3.8+环境,这个版本在兼容性和性能上都有不错的表现。以下是必须的核心依赖:
pip install torch torchvision
pip install opencv-python
pip install transformers
pip install segment-anything-py
pip install groundingdino
注意:如果遇到CUDA相关错误,建议先单独安装与本地CUDA版本匹配的PyTorch。可以通过
nvcc --version查看CUDA版本。
2.2 模型权重下载
需要下载两个预训练模型:
- GroundingDINO模型(约1.2GB):
wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
- SAM模型(vit-h版本约2.4GB):
wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
建议将这些权重文件放在项目根目录下的 weights 文件夹中,方便统一管理。
3. 核心代码实现解析
3.1 初始化模型实例
首先需要初始化两个模型。这里有个技巧:先加载SAM再加载GroundingDINO,因为SAM占用显存更多,这样可以避免显存碎片化。
from segment_anything import sam_model_registry
from groundingdino.util.inference import load_model
# 初始化SAM
sam = sam_model_registry["vit_h"](checkpoint="weights/sam_vit_h_4b8939.pth").to(device)
# 初始化GroundingDINO
grounding_dino_model = load_model(
"groundingdino/config/GroundingDINO_SwinT_OGC.py",
"weights/groundingdino_swint_ogc.pth"
).


313

被折叠的 条评论
为什么被折叠?



