open-set对象检测器
项目描述
:sauropod: 基于地平线的DINO
官方PyTorch实现"Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection":最先进的开放集对象检测器。
:sun_with_face: 有用的教程
- :grapes: [阅读我们的arXiv论文]
- :apple: [在YouTube上观看我们的简单介绍视频]
- :rose: [尝试Colab演示]
- :sunflower: [尝试我们的官方Huggingface演示]
- :maple_leaf: [观看Robotflow AI关于GroundingDINO的逐步教程]
- :mushroom: [GroundingDINO:由Robotflow AI自动数据集标注和评估]
- :hibiscus: [由Robotflow AI加速使用SAM和GroundingDINO的图像标注]
:sparkles: 突出项目
- DetGPT:通过推理检测所需内容
- Grounded-SAM:将Grounding DINO与Segment Anything结合
- Grounding DINO与Stable Diffusion结合
- Grounding DINO与GLIGEN结合进行可控图像编辑
- OpenSeeD:一个简单而强大的开放集分割模型
- SEEM:一次分割一切
- X-GPT:由X-Decoder支持的对话式视觉代理
- GLIGEN:开放集基于地平线的文本到图像生成
- LLaVA:大型语言和视觉助手
:bulb: 突出
- 开放集检测。用语言检测一切!
- 高性能。 COCO零样本 52.5 AP(无需COCO数据训练!)。COCO微调 63.0 AP。
- 灵活。 与Stable Diffusion合作进行图像编辑。
:fire: 新闻
2023/04/15
:想了解开放集识别的读者请参阅 CV in the Wild Readings!2023/04/08
:我们发布了将 demos 与 Grounding DINO 和 GLIGEN 结合以实现更可控的图像编辑。2023/04/08
:我们发布了将 demos 与 Grounding DINO 和 Stable 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
:代码现在可用!
:star: Grounding DINO 输入和输出的说明/技巧
- Grounding DINO 接受一个
(image, text)
对作为输入。 - 它输出
900
(默认)个物体框。每个框都有所有输入词的相似度得分。(如图所示。) - 我们默认选择最高相似度高于
box_threshold
的框。 - 我们将相似度高于
text_threshold
的词提取为预测标签。 - 如果您想获得特定短语的物体,例如句子
two dogs with a stick
中的dogs
,您可以选择与dogs
相似度最高的框作为最终输出。 - 请注意,每个词可以被分割为 多个 不同分词器的标记。句子中的词数可能不等于文本标记数。
- 我们建议使用
.
将不同的类别名称分开,以便于 Grounding DINO。
: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
。
笔记本
- 我们发布了示例,以将Grounding DINO与GLIGEN结合,以便进行更可控的图像编辑。
- 我们发布了示例,以将Grounding DINO与Stable Diffusion结合,用于图像编辑。
: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目标检测结果
ODinW目标检测结果
:sauropod: 模型:Grounding DINO
包含:一个文本主干网络、一个图像主干网络、一个特征增强器、一个语言引导的查询选择和一个跨模态解码器。
:hearts: 致谢
我们还要感谢包括DETR、Deformable DETR、SMCA、Conditional DETR、Anchor DETR、Dynamic DETR、DAB-DETR、DN-DETR等在内的先前工作的贡献。更多相关工作可参考Awesome Detection Transformer。还有一个新的工具箱detrex可供使用。
感谢Stable Diffusion和GLIGEN提供的出色模型。
: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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 23de56af498b7cdcc024eb1062fc3179e3cc4dacd92adbfb625097065377700f |
|
MD5 | 59d5c4e63843e2a67ea6927267bf9e1c |
|
BLAKE2b-256 | da26af35089119098ecd9d2e174b9cfbeb0c1246d65449c718b4e57328a08c1c |