【计算机视觉 | 目标检测 | 图像分割】Grounded Segment Anything:Grounding DINO + Segment Anything Model (SAM)介绍


集成SAM,可以通过文本提示做检测/分割等任务。

在这里插入图片描述
我们计划通过结合 Grounding DINO 和 Segment Anything 来创建一个非常有趣的演示,旨在通过文本输入检测和分割任何内容! 并且我们会在此基础上不断完善它,创造出更多有趣的demo。

我们非常愿意帮助大家分享和推广基于Segment-Anything的新项目,更多精彩的demo和作品请查看社区:亮点扩展项目。 您可以提交新问题(带有项目标签)或新拉取请求以添加新项目的链接。

在这里插入图片描述
在这里插入图片描述
该项目背后的核心思想是结合不同模型的优势,构建一个非常强大的管道来解决复杂问题。 值得一提的是,这是一个组合强专家模型的工作流程,其中所有部件都可以单独或组合使用,并且可以替换为任何相似但不同的模型(例如用 GLIP 或其他探测器替换 Grounding DINO / 替换 Stable- 使用 ControlNet 或 GLIGEN 进行扩散/与 ChatGPT 结合)。

一、Preliminary Works

在这里,我们提供了一些您在尝试演示之前可能需要了解的背景知识。

  1. Segment-Anything:

强大的基础模型旨在分割图像中的所有内容,这需要提示(如框/点/文本)来生成掩模

在这里插入图片描述
2. Grounding DINO:

强大的零样本检测器,能够生成带有自由格式文本的高质量框和标签。

在这里插入图片描述
3. OSX

一种强大而高效的单阶段运动捕捉方法,可从单目图像生成高质量的 3D 人体网格。 OSX还发布了大规模上半身数据集UBody,用于更准确地重建上半身场景。

在这里插入图片描述
4. Stable-Diffusion

超强大的开源潜在文本到图像扩散模型。

在这里插入图片描述
5. RAM

RAM is an image tagging model, which can recognize any common category with high accuracy.

  1. BLIP

A wonderful language-vision model for image understanding.

  1. Visual ChatGPT

A wonderful tool that connects ChatGPT and a series of Visual Foundation Models to enable sending and receiving images during chatting.

  1. Tag2Text

An efficient and controllable vision-language model which can simultaneously output superior image captioning and image tagging.

  1. VoxelNeXt

A clean, simple, and fully-sparse 3D object detector, which predicts objects directly upon sparse voxel features.

二、Highlighted Projects

在这里,我们提供了一些您可能会感兴趣的令人印象深刻的作品:

2.1 Semantic-SAM

通用图像分割模型,能够以任何所需的粒度分割和识别任何内容.

2.2 SEEM: Segment Everything Everywhere All at Once

强大的提示分割模型支持使用各种类型的提示(文本、点、涂鸦、引用图像等)以及提示的任意组合进行分割。

2.3 OpenSeeD

一个用于开放词汇分割和检测的简单框架,支持通过框输入生成掩模的交互式分割.

2.4 LLaVA

Visual instruction tuning with GPT-4.

三、Installation

该代码需要 python>=3.8,以及 pytorch>=1.7 和 torchvision>=0.8。 请按照此处的说明安装 PyTorch 和 TorchVision 依赖项。 强烈建议安装支持 CUDA 的 PyTorch 和 TorchVision。

3.1 Install with Docker

Open one terminal:

make build-image
make run

就是这样。

如果您想允许跨 docker 容器进行可视化,请打开另一个终端并输入:

xhost +

3.2 Install without Docker

如果您想为Grounded-SAM构建本地GPU环境,您应该手动设置环境变量,如下所示:

export AM_I_DOCKER=False
export BUILD_WITH_CUDA=True
export CUDA_HOME=/path/to/cuda-11.3/

安装Segment Anything:

python -m pip install -e segment_anything

安装 DINO 接地:

python -m pip install -e GroundingDINO

安装扩散器:

pip install --upgrade diffusers[torch]

Install osx:

git submodule update --init --recursive
cd grounded-sam-osx && bash install.sh

Install RAM & Tag2Text:

git submodule update --init --recursive
cd Tag2Text && pip install -r requirements.txt

以下可选依赖项对于掩模后处理、以 COCO 格式保存掩模、示例笔记本以及以 ONNX 格式导出模型是必需的。 运行示例笔记本还需要 jupyter。

pip install opencv-python pycocotools matplotlib onnxruntime onnx ipykernel

四、GroundingDINO: Detect Everything with Text Prompt

以下是运行 GroundingDINO 演示的分步教程:

4.1 Download the pretrained weights

cd Grounded-Segment-Anything

# download the pretrained groundingdino-swin-tiny model
wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth

4.2 Running the demo

python grounding_dino_demo.py

4.3 Running with Python

from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2

model = load_model("GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py", "./groundingdino_swint_ogc.pth")
IMAGE_PATH = "assets/demo1.jpg"
TEXT_PROMPT = "bear."
BOX_THRESHOLD = 0.35
TEXT_THRESHOLD = 0.25

image_source, image = load_image(IMAGE_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_THRESHOLD,
    text_threshold=TEXT_THRESHOLD
)

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)

如果您想使用 Grounding DINO 在一个句子中检测多个物体,我们建议用 分隔每个名称。 。 一个例子:猫。 狗 。 椅子 。

4.4 Check the annotated image

带注释的图像将保存为./annotated_image.jpg。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wzk4869/article/details/133050206
今日推荐