【计算机视觉】最强 Zero-Shot 视觉应用:Grounding DINO + Segment Anything + Stable Diffusion

Grounded-SAM是一个集成SAM、BLIP和StableDiffusion的项目,结合多种功能如图像分割、对象检测和生成。它能通过语音指令转换图片内容,自动标注图片并生成标签,同时提供有趣的应用如更换图像元素。虽然在复杂场景中仍需优化,但其潜力在于构建强大的视觉工作流,并且各组件可与其他模型互换使用。

一、前言

在这里插入图片描述
Midjourney 花一个小时做的项目 logo 图:

在这里插入图片描述

解释一下 logo 的含义:一只坐在地上的马赛克风格的熊。

坐在地面上是因为 ground 有地面的含义,然后分割后的图片可以认为是一种马赛克风格,而且马赛克谐音 mask,之所以用熊作为 logo 主体,是因为项目主要示例的图片是熊。

Grounded-SAMSAMBLIPStable Diffusion 集成在一起,将图片「分割」、「检测」和「生成」三种能力合一,成为最强 Zero-Shot 视觉应用。

二、功能介绍

项目体验的地址为:

https://github.com/IDEA-Research/Grounded-Segment-Anything

在这里插入图片描述

2.1 功能一

这个功能主要是通过 whisper 模块对语音进行转换,直接对图片的检测对象进行替换,例如将狗替换成猴子,看图片确实是毫无违和感,这部分功能相信在不久的将来应该能实现落地使用。

在这里插入图片描述

2.2 功能二

这个功能是实现自动数据标注,包括标签信息及预测概率,有点类似于 YOLOV8 系列,借助 SAM 分割万物的思想可以直接对图片中的所有场景进行分割及分类标注。

使用 Tag2Text 直接生成标签,使用 Grounded-SAM 进行 boxmask 生成。Tag2Text 具有卓越的标记和字幕功能。使用 BLIP 生成标题,使用 chatGPT 提取标签,使用 Ground-SAM 生成框和 MASK 图片。

浅浅的谈一句,针对简单场景,确实该项目有很多过人的优势,复杂场景的实际应用还有待商榷,目前看来最大的一个问题是分割的场景会存在分割过细的情况,需要手动人工 check,而且并不是所有参数对不同图片都适用,针对训练的大量图片,实际自动标注效果还有待优化。

在这里插入图片描述
在这里插入图片描述

2.3 其他有趣的功能

其他更多有趣的功能,比如更换头发颜色、背景、交互式应用等。这些模块感觉就是抖音的下一个热点!

在这里插入图片描述

三、总结

可以想象未来只需要语音交互就能够完成所有的视觉工作流任务,这是多么奇妙的一件事情啊!

这个项目背后的核心思想是结合不同模型的优势,以构建一个非常强大的管道来解决复杂的问题。

值得一提的是,这是一个结合强大专家模型的工作流程,其中所有部分都可以单独或组合使用,并且可以替换为任何相似但不同的模型(例如用 GLIP 或其他检测器替换 Grounding DINO / 替换 Stable-ControlNetGLIGEN 的扩散/与 ChatGPT 结合)。

  • Segment Anything 是一个强大的细分模型。 但它需要提示(如框/点)来生成掩码。
  • Grounding DINO 是一种强大的 zero-shot 检测器,能够生成带有自由格式文本的高质量框和标签。
  • Grounding DINO + SAM 的组合能够通过文本输入检测和分割任何级别的所有内容!
  • BLIP + Grounding DINO + SAM 组合自动贴标系统!
  • Grounding DINO + SAM + Stable-diffusion 数据工厂的组合,生成新数据!
  • Whisper + Grounding DINO + SAM 的组合,可以检测和分割任何有语音的东西!
你的问题核心是: > **我的 CUDA 版本是 11.3,无法运行 Grounding DINO + SAM(因为 PyTorch 官方预编译包不再支持 CUDA 11.3)** --- ### ✅ 回答:你 **不需要升级显卡或驱动**,也不需要重装系统! 即使你的 **CUDA Toolkit 是 11.3**,只要你的 **NVIDIA 驱动足够新**,就可以直接安装支持 **CUDA 11.8 或 12.1 的 PyTorch**。 👉 **CUDA Toolkit 版本 ≠ 驱动支持的最高 CUDA 版本!** --- ## 🔍 问题原因分析 - PyTorch 自 `1.13` 起停止为 **CUDA 11.3** 提供官方预编译包。 - 当前 PyTorch(2.0+)只提供: - `cu118`(CUDA 11.8) - `cu121`(CUDA 12.1) 但这 **不代表你必须安装对应版本的 CUDA Toolkit**! > ⚠️ 关键点:PyTorch 使用的是 **CUDA Runtime API**,它向后兼容。只要你系统的 NVIDIA 驱动支持 CUDA 11.8/12.1,就能运行这些 PyTorch 包。 --- ## ✅ 解决方案:绕过本地 CUDA Toolkit 限制 ### ✅ 方法一:使用 Conda 安装 PyTorch + cu118(推荐) Conda 会自带一个独立的 CUDA 运行时环境(不依赖系统 CUDA Toolkit),完美解决版本冲突。 ```python # 创建虚拟环境 os.system("conda create -n gdino-sam python=3.9 -y") os.system("conda activate gdino-sam") # 使用 conda 安装 PyTorch + CUDA 11.8(自带 runtime,无需系统支持) os.system("conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y") ``` ✅ 即使你本地是 CUDA 11.3,也能正常运行! 验证是否成功: ```python import torch print(torch.__version__) # 应输出类似 2.3.0 print(torch.cuda.is_available()) # 应返回 True ``` --- ### ✅ 方法二:升级到 CUDA 11.8(可选) 如果你希望与 PyTorch 更好兼容,可以单独升级 CUDA Toolkit 到 11.8: #### 步骤: 1. 检查当前驱动支持的最高 CUDA 版本: ```bash nvidia-smi ``` 查看右上角显示的 `CUDA Version: xx.x`,如果是 `11.6` 或更高,说明你可以安装 CUDA 11.8。 2. 下载并安装 CUDA 11.8 Toolkit: 👉 https://developer.nvidia.com/cuda-11-8-0-download-archive 3. 安装后设置环境变量(Linux 示例): ```bash export PATH=/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH ``` 4. 再用 pip 安装 PyTorch: ```python os.system("pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118") ``` --- ### ✅ 方法三:使用 Docker(最干净) 避免任何环境冲突,直接使用官方镜像: ```bash # 启动包含 PyTorch + CUDA 11.8 的容器 docker run --gpus all -it --rm -v $(pwd):/workspace pytorch/pytorch:2.3.0-cuda11.8-devel # 在容器内安装依赖 pip install segment-anything pip install git+https://github.com/IDEA-Research/GroundingDINO.git ``` --- ## 🧪 验证你的系统是否支持 CUDA 11.8 运行以下命令: ```bash nvidia-smi ``` 输出示例: ``` +-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.60.13 Driver Version: 525.60.13 CUDA Version: 12.0 | +-----------------------------------------------------------------------------+ ``` ✅ 只要 `CUDA Version >= 11.8`,你就可以运行 `pytorch-cuda=11.8`! ❌ 如果显示 `CUDA Version: 11.3`,说明驱动太旧,需升级: ```bash # Ubuntu 用户升级驱动 sudo ubuntu-drivers autoinstall ``` 或手动下载最新驱动:https://www.nvidia.com/Download/index.aspx --- ## ✅ 总结:你现在该怎么做? | 条件 | 推荐做法 | |------|----------| | `nvidia-smi` 显示 CUDA ≥ 11.8 | 直接用 `conda` 安装 `pytorch-cuda=11.8` | | `nvidia-smi` 显示 CUDA < 11.8 | 先升级 NVIDIA 驱动 | | 不想改环境 | 使用 **Docker** 镜像隔离运行 | --- ## 💡 最简可行路径(推荐) ```bash # 1. 创建环境 conda create -n sam-env python=3.9 -y conda activate sam-env # 2. 安装带 CUDA 11.8 的 PyTorch conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y # 3. 安装 SAM 和 Grounding DINO pip install segment-anything pip install git+https://github.com/IDEA-Research/GroundingDINO.git # 4. 测试 CUDA python -c "import torch; print(torch.cuda.is_available())" # 输出 True 即成功 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值