跳转到主要内容

open-set对象检测器

项目描述

:sauropod: 基于地平线的DINO

PWC PWC
PWC PWC image

官方PyTorch实现"Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection":最先进的开放集对象检测器。

:sun_with_face: 有用的教程

:sparkles: 突出项目

:bulb: 突出

  • 开放集检测。用语言检测一切
  • 高性能。 COCO零样本 52.5 AP(无需COCO数据训练!)。COCO微调 63.0 AP
  • 灵活。 与Stable Diffusion合作进行图像编辑。

:fire: 新闻

  • 2023/04/15:想了解开放集识别的读者请参阅 CV in the Wild Readings
  • 2023/04/08:我们发布了将 demosGrounding DINOGLIGEN 结合以实现更可控的图像编辑。
  • 2023/04/08:我们发布了将 demosGrounding DINOStable Diffusion 结合进行图像编辑的演示。
  • 2023/04/06:我们通过将 GroundingDINO 与 Segment-Anything 结合创建了一个新的演示,命名为 Grounded-Segment-Anything,旨在支持 GroundingDINO 中的分割。
  • 2023/03/28:YouTube 上的关于 Grounding DINO 和基本物体检测提示工程的 视频。[SkalskiP]
  • 2023/03/28:在 Hugging Face Space 上添加了一个 demo
  • 2023/03/27:支持仅CPU模式。现在模型可以在没有GPU的机器上运行。
  • 2023/03/25:在 Colab 上提供了 Grounding DINO 的 demo。[SkalskiP]
  • 2023/03/22:代码现在可用!
描述 论文简介。ODinWGrounding DINOGLIGEN 结合gd_gligen

:star: Grounding DINO 输入和输出的说明/技巧

  • Grounding DINO 接受一个 (image, text) 对作为输入。
  • 它输出 900(默认)个物体框。每个框都有所有输入词的相似度得分。(如图所示。)
  • 我们默认选择最高相似度高于 box_threshold 的框。
  • 我们将相似度高于 text_threshold 的词提取为预测标签。
  • 如果您想获得特定短语的物体,例如句子 two dogs with a stick 中的 dogs,您可以选择与 dogs 相似度最高的框作为最终输出。
  • 请注意,每个词可以被分割为 多个 不同分词器的标记。句子中的词数可能不等于文本标记数。
  • 我们建议使用 . 将不同的类别名称分开,以便于 Grounding DINO。 model_explain1 model_explain2

:label: TODO

  • 发布推理代码和演示。
  • 发布检查点。
  • 发布 Grounding DINO 与 Stable Diffusion 和 GLIGEN 的演示。
  • 发布训练代码。

:hammer_and_wrench: 安装

注意

如果您有 CUDA 环境,请确保环境变量 CUDA_HOME 已设置。如果没有 CUDA,将仅以 CPU 模式编译。

安装

从 GitHub 克隆 GroundingDINO 仓库。

git clone https://github.com/IDEA-Research/GroundingDINO.git

将当前目录更改为 GroundingDINO 文件夹。

cd GroundingDINO/

在当前目录中安装所需的依赖项。

pip3 install -q -e .

创建一个名为 "weights" 的新目录以存储模型权重。

mkdir weights

将当前目录切换到“weights”文件夹。

cd weights

下载模型权重文件。

wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth

:arrow_forward: 示例

检查您的GPU ID(如果您正在使用GPU,则进行此操作)

nvidia-smi

在以下命令中将 {GPU ID}image_you_want_to_detect.jpg“您希望保存输出的目录” 替换为相应的值

CUDA_VISIBLE_DEVICES={GPU ID} python demo/inference_on_a_image.py \
-c /GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p /GroundingDINO/weights/groundingdino_swint_ogc.pth \
-i image_you_want_to_detect.jpg \
-o "dir you want to save the output" \
-t "chair"
 [--cpu-only] # open it for cpu mode

查看 demo/inference_on_a_image.py 以获取更多详细信息。

使用Python运行

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

model = load_model("groundingdino/config/GroundingDINO_SwinT_OGC.py", "weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = "weights/dog-3.jpeg"
TEXT_PROMPT = "chair . person . dog ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25

image_source, image = load_image(IMAGE_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_TRESHOLD,
    text_threshold=TEXT_TRESHOLD
)

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

Web UI

我们还提供了一段将Grounding DINO与Gradio Web UI集成的示例代码。有关更多详细信息,请参阅文件 demo/gradio_app.py

笔记本

:luggage: 检查点

名称 主干网络 数据 COCO上的边界框AP 检查点 配置
1 GroundingDINO-T Swin-T O365,GoldG,Cap4M 48.4 (零样本) / 57.2 (微调) GitHub链接 | HF链接 链接
2 GroundingDINO-B Swin-B COCO,O365,GoldG,Cap4M,OpenImage,ODinW-35,RefCOCO 56.7 GitHub链接 | HF链接链接

:medal_military: 结果

COCO目标检测结果 COCO
ODinW目标检测结果 ODinW
将Grounding DINO与Stable Diffusion结合进行图像编辑查看我们的示例 笔记本 以获取更多详细信息。 GD_SD
将Grounding DINO与GLIGEN结合进行更详细的图像编辑。查看我们的示例 笔记本 以获取更多详细信息。 GD_GLIGEN

:sauropod: 模型:Grounding DINO

包含:一个文本主干网络、一个图像主干网络、一个特征增强器、一个语言引导的查询选择和一个跨模态解码器。

arch

:hearts: 致谢

我们的模型与DINOGLIP有关。感谢他们的出色工作!

我们还要感谢包括DETR、Deformable DETR、SMCA、Conditional DETR、Anchor DETR、Dynamic DETR、DAB-DETR、DN-DETR等在内的先前工作的贡献。更多相关工作可参考Awesome Detection Transformer。还有一个新的工具箱detrex可供使用。

感谢Stable DiffusionGLIGEN提供的出色模型。

:black_nib: 引用

如果您觉得我们的工作对您的研究有帮助,请考虑引用以下BibTeX条目。

@article{liu2023grounding,
  title={Grounding dino: Marrying dino with grounded pre-training for open-set object detection},
  author={Liu, Shilong and Zeng, Zhaoyang and Ren, Tianhe and Li, Feng and Zhang, Hao and Yang, Jie and Li, Chunyuan and Yang, Jianwei and Su, Hang and Zhu, Jun and others},
  journal={arXiv preprint arXiv:2303.05499},
  year={2023}
}

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

groundingdino-py-0.4.0.tar.gz (82.3 kB 查看哈希值)

上传时间 源代码

支持