Grounded-SAM-2多模态应用:文本驱动的视觉理解与分割
Grounded-SAM-2是一个革命性的开源项目,它巧妙地将Grounding DINO、Florence-2和SAM 2等前沿视觉模型融合,实现了基于文本指令的图像分割与视频跟踪功能。这个强大的多模态视觉理解工具让用户能够通过简单的自然语言描述,就能精准地定位、分割和跟踪视频中的任意对象。## 🚀 项目核心功能与架构Grounded-SAM-2的核心创新在于将文本理解与视觉分割能力相
Grounded-SAM-2多模态应用:文本驱动的视觉理解与分割
Grounded-SAM-2是一个革命性的开源项目,它巧妙地将Grounding DINO、Florence-2和SAM 2等前沿视觉模型融合,实现了基于文本指令的图像分割与视频跟踪功能。这个强大的多模态视觉理解工具让用户能够通过简单的自然语言描述,就能精准地定位、分割和跟踪视频中的任意对象。
🚀 项目核心功能与架构
Grounded-SAM-2的核心创新在于将文本理解与视觉分割能力相结合。项目通过三个主要组件实现这一目标:
- Grounding DINO - 负责文本驱动的目标检测
- SAM 2 - 提供高质量的分割能力
- Florence-2 - 增强的视觉语言理解
Grounded-SAM-2多模态架构:图像编码器、记忆注意力机制和分割解码器的协同工作
项目的核心架构位于sam2/modeling/sam2_base.py,其中定义了SAM 2的基础模型类。这个架构支持记忆增强机制,能够在视频序列中保持对象跟踪的一致性。
🔧 快速安装与配置
环境准备与模型下载
首先克隆项目仓库并安装依赖:
git clone https://gitcode.com/gh_mirrors/gr/Grounded-SAM-2
cd Grounded-SAM-2
下载预训练模型权重:
# 下载SAM 2检查点
cd checkpoints
bash download_ckpts.sh
# 下载Grounding DINO检查点
cd ../gdino_checkpoints
bash download_ckpts.sh
安装依赖
项目支持两种安装方式:
Docker安装(推荐):
make build-image
make run
手动安装:
pip install -e .
pip install --no-build-isolation -e grounding_dino
🎯 文本驱动的图像分割实战
使用Grounding DINO 1.5进行目标检测与分割
Grounded-SAM-2支持多种文本驱动分割模式。以下是一个简单的示例,展示如何使用文本指令分割图像中的汽车:
python grounded_sam2_gd1.5_demo.py
在grounded_sam2_gd1.5_demo.py中,您可以配置以下参数:
TEXT_PROMPT = "car . building ."- 文本提示词IMG_PATH = "notebooks/images/cars.jpg"- 输入图像路径BOX_THRESHOLD = 0.2- 检测框阈值
高分辨率图像的分片推理
对于包含密集小对象的高分辨率图像,项目支持SAHI(切片辅助超推理)技术:
# 在grounded_sam2_gd1.5_demo.py中设置
WITH_SLICE_INFERENCE = True
SLICE_WH = (480, 480) # 切片尺寸
OVERLAP_RATIO = (0.2, 0.2) # 切片重叠比例
这种技术将大图像分割成重叠的小块,分别进行推理,然后合并结果,显著提高了小目标的检测精度。
📹 视频对象跟踪与分割
基础视频跟踪演示
Grounded-SAM-2的视频跟踪功能是其核心优势之一。运行以下命令体验完整的视频跟踪流程:
python grounded_sam2_tracking_demo.py
Grounded-SAM-2视频跟踪流程:从文本提示到稳定分割结果
自定义视频输入跟踪
项目支持用户上传自己的视频进行对象跟踪:
python grounded_sam2_tracking_demo_custom_video_input_gd1.5.py
在脚本中配置您的参数:
VIDEO_PATH = "./assets/hippopotamus.mp4"
TEXT_PROMPT = "hippopotamus."
OUTPUT_VIDEO_PATH = "./hippopotamus_tracking_demo.mp4"
连续ID跟踪功能
对于需要在整个视频中跟踪新出现对象的场景,项目提供了连续ID跟踪功能:
python grounded_sam2_tracking_demo_with_continuous_id.py
此功能能够在视频序列中动态识别新对象并为其分配唯一ID,实现更完整的对象生命周期跟踪。
🔄 三种提示策略对比
Grounded-SAM-2支持三种不同的提示策略,适用于不同的应用场景:
- 点提示策略 - 从掩码中均匀采样点作为提示
- 框提示策略 - 直接使用Grounding DINO生成的检测框
- 掩码提示策略 - 使用SAM 2生成的掩码作为提示
Grounded-SAM-2视频管道:手动点提示与掩码提示策略对比
🧠 Florence-2集成:更智能的视觉理解
多任务视觉理解
Florence-2的集成让Grounded-SAM-2具备了更强大的视觉理解能力:
# 对象检测与分割
python grounded_sam2_florence2_image_demo.py \
--pipeline object_detection_segmentation \
--image_path ./notebooks/images/cars.jpg
# 密集区域描述与分割
python grounded_sam2_florence2_image_demo.py \
--pipeline dense_region_caption_segmentation \
--image_path ./notebooks/images/cars.jpg
# 开放词汇检测与分割
python grounded_sam2_florence2_image_demo.py \
--pipeline open_vocabulary_detection_segmentation \
--image_path ./notebooks/images/cars.jpg \
--text_input "car <and> building"
自动标注流水线
Florence-2还可以作为自动图像标注器,通过级联其描述能力和定位能力:
python grounded_sam2_florence2_autolabel_pipeline.py \
--image_path ./notebooks/images/groceries.jpg \
--pipeline caption_to_phrase_grounding \
--caption_type caption
📊 实际应用场景
1. 视频监控与分析
Grounded-SAM-2可以用于智能监控系统,通过文本指令实时跟踪特定对象,如"跟踪穿红色衣服的人"或"检测所有车辆"。
2. 内容创作与编辑
视频编辑人员可以使用该项目快速分割和跟踪视频中的对象,进行特效添加、背景替换等操作。
3. 自动驾驶与机器人视觉
在自动驾驶场景中,系统可以通过文本指令识别和跟踪特定类型的障碍物或交通参与者。
4. 医学图像分析
医疗影像分析中可以用于分割特定的解剖结构或病变区域。
🛠️ 实用工具与扩展
跟踪工具函数
项目提供了丰富的工具函数,如sample_points_from_masks用于从掩码中采样点:
def sample_points_from_masks(masks, num_points):
"""从掩码中采样点并返回其绝对坐标"""
n, h, w = masks.shape
points = []
# ... 实现细节
监督库集成
Grounded-SAM-2集成了强大的supervision库,提供了丰富的可视化工具和数据处理功能。
🎨 结果输出与可视化
JSON结果导出
项目支持将分割结果导出为结构化JSON格式:
{
"image_path": "path/to/image.jpg",
"annotations": [
{
"class_name": "car",
"bbox": [x1, y1, x2, y2],
"segmentation": {
"size": [h, w],
"counts": "rle_encoded_mask"
},
"score": 0.95
}
]
}
视频输出
跟踪结果会自动生成为MP4视频文件,并保存到指定目录。项目使用OpenCV进行视频编码,确保高质量的视觉输出。
📈 性能优化建议
GPU内存优化
对于大视频处理,可以启用以下优化选项:
# 在跟踪脚本中设置
offload_video_to_cpu=True # 将视频帧卸载到CPU内存
offload_state_to_cpu=True # 将模型状态卸载到CPU内存
批处理优化
对于批量图像处理,可以使用SAM 2的批处理功能:
# 在sam2/sam2_image_predictor.py中
image_predictor.set_image_batch(image_list)
predictions = image_predictor.predict_batch(...)
🔮 未来发展方向
Grounded-SAM-2项目仍在积极开发中,未来可能的发展方向包括:
- 实时处理优化 - 进一步提升推理速度,支持实时应用
- 多语言支持 - 扩展对更多语言文本提示的支持
- 3D分割扩展 - 将2D分割能力扩展到3D场景
- 边缘设备部署 - 优化模型以适应移动设备和边缘计算
💡 使用技巧与最佳实践
-
文本提示格式化:确保文本提示以小写字母结尾并包含句点,如"car."而不是"car"
-
阈值调整:根据具体场景调整
BOX_THRESHOLD和IOU_THRESHOLD参数 -
视频预处理:对于长视频,考虑使用帧采样策略减少计算量
-
内存管理:处理大尺寸图像或长视频时,注意监控GPU内存使用
🎉 结语
Grounded-SAM-2代表了多模态视觉理解的重要进展,它将文本理解与视觉分割能力完美结合,为计算机视觉领域带来了新的可能性。无论是研究人员、开发者还是内容创作者,都可以利用这个强大的工具解决复杂的视觉任务。
通过简单的文本指令,您现在可以:
- 🎯 精准分割图像中的任意对象
- 📹 跟踪视频中的动态目标
- 🧠 理解复杂的视觉场景
- 🔄 自动化视觉标注流程
项目的模块化设计和清晰的API接口使得集成和扩展变得异常简单。无论您是想构建智能监控系统、开发创意内容工具,还是进行前沿的视觉研究,Grounded-SAM-2都为您提供了强大的基础。
开始您的多模态视觉探索之旅吧!🚀
更多推荐


所有评论(0)